اطلاعیه

Collapse
No announcement yet.

ساخت ولتمتر دیجیتال قابل اتصال به کامپیوتر

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    ساخت ولتمتر دیجیتال قابل اتصال به کامپیوتر

    :wow:
    سلام
    پروژه من ساخت ولتمتر دیجیتال قابل اتصال با کامپیوتر است در قسمت برنامه نویسی مشکل داشتم
    البته زیاد هم بلد نیستم :sad:
    بایداز A/D خوانده و به یکی از پورت ها بفرستد لطف کنید یک توضیح کلی از نحوه این کار برایم بدهید. نمی دانم که به یک پایه از پورت A/D باید آنالوگ را بدهم چه جوری از یک پورت دیگر خروجی اش را بگیرم ؟ از وقفه هم نیاز است استفاده کنم ؟
    ضمنا میکرو MEGA32 باید استفاده کنم. پیشاپیش ممنونم
    من آن گلبرگ مغرورم که می میرم ز بی آبی ولی با خفت و خواری پی شبنم نمی گردم.

    #2
    پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

    سلام :
    اگر فقط یک ولتمتر بخواهی و چیز دیگری مد نظر نباشه که کار ساده ای است !
    فقط باید بدانی چه رنجی از ولتاژ را می خواهی تبدیل کنی !
    توصیه می کنم که اگر رنجی که می خواهی اندازه بگیری بیش از 5-6 ولته یا از یک adc استفاده کن و یا با تقسیم مقاومت مقدار آن را کاهش بده
    برای ارسال به کامپیوتر هم که هیچ کاری نداره .
    توصیه می کنم با BASCOM اینکار را انجام بده
    ضمناً MEGA32 برای اینکار خیلی زیاده با یک MEGA8 هم به راحتی اینکار رو می تونی انجام بدی !
    تو شروع کن ما همگی بهت کمک می کنیم .
    ضمناً سوالاتت رو واضح و جدا جدا بپرس ، چون مطرح کردن سوال کلی معمولاً جواب کلی در پی خواهد داشت :agree:

    موفق باشی

    دیدگاه


      #3
      پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

      سلام بله فقط یک ولتمتر می خوام بسازم خوب خداروشکر که ساده هست .
      رنج دقیقس رو می پرسم اما گمونم تا 100 یا 250 ولت را در تقسیم بندی هاش نهایتا بخواد اندازه بگیره . حالا می پرسم رنج هاش رو و می گم.
      بله منم Bascom را انتخاب کردم . MEGA32 هم استاد راهنما گفت باید ازش استفاده کنم . فکر می کنم چون داخلش ADC داره . نه؟
      سوال ها هم بله حتما جدا می پرسم.
      الان مشکلم اینه که بعد از اینکه یک آنالوگ به یکی از کانالهای A/D دادم و بعد نتیجه رو در یک متغیر WORd ذخیره کردم حالا چطوری این متغیر را به عنوان خروجی از یک پورت دیگر نمایش بدم؟
      خیلی ممنون از راهنمایی هاتون.
      موفق باشید
      من آن گلبرگ مغرورم که می میرم ز بی آبی ولی با خفت و خواری پی شبنم نمی گردم.

      دیدگاه


        #4
        پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

        سلام :

        دوست عزیز ، تقریباً تمام avr ها ADC دارند !! حتی Mega8 !!!!!!!!!! فقط با این تفاوت که mega32 تقریباً 3 برابر mega8 قیمتشه !!!! من هم برای همین می گفتم !

        شما با mega8 شروع کن که اگر آی سی مشکلی پیدا کرد زیاد برات گرون تموم نشه ! در انتها برنامه رو بر اساس mega32 تغییر می دهیم که کار بسیار ساده ایی است !

        شما رنج رو بپرس و کارت رو شروع کن .

        من هنوز متوجه خروجی در پورت دیگر نشدم !؟ :mrgreen:
        انواع و اقسام خروجی ها برای یک میکرو کنترلر وجود داره :

        Serial ( RS232) , SPI , I2C , software serial , parallel , .........
        حالا شما باید ببینی برای چی می خواهی .

        اگر برای اتصال به کامپیوتر می خواهی باید از ارتباط سریال استفاده کنی RS232 که به UART معروفه !

        کار سختی نیست شما کارت رو شروع کن برنامه رو یه اسارتی بزن ما هم هستیم .
        ضمناً یک سرچی هم تو نت بکن . میدونم تو اینترنت حتماً ساخته شده این پروژه به همراه سورس آن وجود داره .
        البته ارزش کار آدم رو کم می کنه . اما اگر جایی گیر کردی می شه که راهنمات باشه :agree:

        موفق باشی

        دیدگاه


          #5
          پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

          سلام
          ممنونم از راهنمایی هاتون
          عجب پس چرا یعنی استاد پروژه گفته از Mega32 استفاده کنم؟ یعنی... ؟
          رنج هایی که باید اندازه بگیره
          0- 100 میلی ولت
          0-5 ولت
          0 - 50 ولت
          0 - 250 ولت
          است.
          ببینید باید برنامه ای بنویسم که از A/D میکرو خوانده و روی یکی از پورت ها بفرستد همینجا مشکل دارم می گم چه جوری ؟ یعنی باید بیام مقادیری که A/D می ده رو بریزم توی یک متغیر و بعد اون متغیر (W)رو مساویه یک پورت قرار بدم ؟ (ببینید من توی برنامه نویسی کاملا مبتدی ام) یعنی اینجوری درسته :
          portb=W
          برای اتصال و ارسال به کامپیوتر هم باید از پورت سریال استفاده کنم یعنی مرحله بعدش نوشتن برنامه ایه که مثلا یک عدد خاصی را برای پورت سریال بفرسته.
          در اینترنت هم چیز خاصی هنوز پیدا نکردم حالا شما هم اگر چیزی به چشمتون خورد لطفا برام آدرسش رو بگین. خیلی ممنونم
          شما هم موفق باشین :icon_razz:
          من آن گلبرگ مغرورم که می میرم ز بی آبی ولی با خفت و خواری پی شبنم نمی گردم.

          دیدگاه


            #6
            پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

            سلام :

            فعلاً این چندتا لینک رو نگاه کنید :
            http://www.qsl.net/zl1bpu/MICRO/DVM/AVRDVM.htm
            http://www.springerlink.com/index/vm83537714878131.pdf
            http://wiredworld.tripod.com/tronics/dvm.html

            دیدگاه


              #7
              پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

              سلام . عزیزم برو کتاب بسکام کاهه را بگیر بخون تا کار با پورت سریال و کار با مبدل آنالوگ به دیجیتال را یاد بگیری. یه چیزی هم واسم سواله . آخه وقتی استاد شما فرق مگا 8 و مگا 32 رو برای شما نگفته چه شکلی پروژه داده؟
              از چارلی چاپلین پرسیدند خوشبخنی چیست ؟
              گفت : فاصله این بد بختی تا بد بختی دیگر !

              دیدگاه


                #8
                پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

                من هنوز avr رو نگذروندم.و تازه این ترم واحدشو گرفتم .خودم شروع به خوندن از کتاب کاهه کردم.ولی فکر می کنم اون کتاب برا کسی خوب باشه که حداقل یه آشنایی مختصر داشته باشه که من همونش هم ندارم. به همین دلیل با کتابه در گیرم.
                ببین من برای adc یه برنامه نوشتم .ولی این برنامه مشکلش اینه که یه بار از سیگنالی که به پورت adc رفته نمونه می گیره و اونو رو یه پورت دیگه نشون می ده.من اگه بخوام از یه سیگنال متغییر با زمان نمونه برداری کنه باید از تایمر استفاده کنم؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
                که مدام نمونه برداری کنه.
                در مرحله بعد می خوام روی پورت سریال بفرستم.از کتاب کاهه این قسمتشو خوندم ولی یکو گیج زدم.
                شروع به نوشتن این هم کنم اشکالامو می پرسم. :redface: :redface:
                من آن گلبرگ مغرورم که می میرم ز بی آبی ولی با خفت و خواری پی شبنم نمی گردم.

                دیدگاه


                  #9
                  پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

                  آره - برای نمونه گیری از سیگنال متغیر با زمان باید از تایمر استفاده کنی. بهترم هست که از وقفه استفاده کنی. البته چون ارتباط سریال هم با وقفه کار می کنه حواست به اولویت وقفه ها باشه. که البته فکر نکنم مشکلی پیش بیاد.
                  از چارلی چاپلین پرسیدند خوشبخنی چیست ؟
                  گفت : فاصله این بد بختی تا بد بختی دیگر !

                  دیدگاه


                    #10
                    پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

                    سلام
                    یا من خیلی گیجم، یا من خیلی گیجم!!
                    اگر سوال رو درست فهمیده باشم:
                    اگر می خوای ولتاژ رو بخونی باید ولتاژهای مرجع رو به ترتیبی که در کتاب کاهه هست به avcc و aref و agnd بدی. اگر بخوای یک مقداری رو با adc میکرو بخونی ولتاژش باید بین avcc و agnd باشه. از طرفی هر مقداری رو نمیتونی به agnd و avcc بدی و حتما باید در محدوده ای از ولتاژ تغذیه و زمین تغذیه میکروت باشه. پس اولین نکته اینه که طبق اون چیزی که دوستمون گفت باید یا ولتاژی رو که میخوای اندازه بگیری بین دو تا مقدار مرجع نرمالایز کنی(با تقسیم مقاومتی و روشهای دیگه) که البته دقت اندازه گیریت رو هم به همون نسبت میاره پایین یا باید از یک adc خارجی استفاده کنی که محدوده مراجعش اونی باشه که شما میخوای و نتیجه دیتای دیجیتال را با میکروت بخونی. برای یه پروژه دانشجویی من اولی رو پیشنهاد میکنم.
                    حالا باید مقداری رو که با adc میکروت اندازه گرفتی روش پردازش انجام بدی و هر کاری خواستی بکنی و نتیجه رو نمایش بدی.
                    دقت داشته باش که:
                    مقدار خروجی adc یک مقدار 10 بیتی بین دوتا ولتاژ مرجع هست. یعنی اگر ورودی adc که داری اندازه اش میگیری ولتاژی برابر avcc داشته باشه حاصل خروجی adc عدد 1023 است و اگر مقدار برابر agnd داشته باشه مقدار خروجی adc صفر هست. چون عدد 10 بیتیه حتما بریزش توی یک متغیر از نوع word
                    حالا یه عدد ده بیتی داری که متناسب با ولتاژیه که در ورودی adc داشتی. این عدد رو هر کاری می خوای بکن و نتیجه رو نمایش بده.
                    این روال رو بذار توی یه حلقه و مقدار اول رو که نمایش دادی خودش بره اول حلقه همین روال رو ادامه بده. این دفعه مقدار جدید خونده میشه.
                    حالا تایمر این وسط می خوای چیکار من نفهمیدم.
                    امیدوارم درست فهمیده باشم و درست توضیح داده باشم.

                    حسین خواجه جعفری
                    اللهم صل علی فاطمة و ابیها، و بعلها و بنیها، و سر المستودع فیها،
                    بعدد ما احاط به علمک...

                    دیدگاه


                      #11
                      پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

                      سلام
                      آقای خواجه جعفری ببخشید که با سوالای پیش پا افتاده باعث شدم Confused بشین
                      عذر می خوام.
                      از راهنمایی هاتون هم خیلی خیلی ممنونم خیلی به دردم خورد و استفاده کردم.
                      در مورد تایمر یا حلقه هم از استاد پروژه پرسیدم گفتن که فعلا با حلقه بنویسم تا ساده تر باشه ولی بعد نیاز هست که با تایمرش کنم. البته من الان هر دو برنامه رو نوشتم ولی هنوز تست نکردم عملا.
                      ان شا ا... شروع می کنم به ساخت و پروگرام کردن اگر باز هم سوالی داشتم مزاحم شما دوستای خوبم خواهم شد.
                      ممنون
                      من آن گلبرگ مغرورم که می میرم ز بی آبی ولی با خفت و خواری پی شبنم نمی گردم.

                      دیدگاه


                        #12
                        پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

                        سلام در مورد پورت سریال و ارتباطش با میکرو و قسمت SPIمیکرو اطلاعات میخواستم. ممنون
                        دوستان! مدتی کمتر به سایت میام ..

                        دیدگاه


                          #13
                          پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

                          سلام
                          من برای برنامه ADC با LED برنامه زیر رو نوشتم اما توی پروتئوس وقتی شبیه سازیش می کنم جواب نمی ده :sad: :cry:

                          $regfile = "M32def.dat"
                          $crystal = 16000000
                          Config Portb = Output
                          Config Adc = Single , Prescaler = Auto , Reference = Avcc
                          Do
                          Stop Adc
                          Start Adc
                          Dim W As Byte , A As Byte
                          A = 0
                          (W = Getadc(a
                          Portb = W
                          Loop
                          End

                          LED ها رو که وصل می کنم خاموش میمونن . هدفم نوشتن برنامه ایه که از A/D میکرو خوانده و روی پورت B بفرستد هم با LED هم با LCD .
                          اولا توی دادن یک سیگنال آنالوگ متغیر به ADC میکرو در پروتئوس مشکل دارم از قسمت DeVICES یک POT رو انتخاب کردم و به POWER و GND وصلش کردم و سر وسطش رو دادم به ADC0 اما نمیدونم این پتانسیومتر رو چه جوری باید تغییر برم مقدارش رو که ولتاژ متغیر تولید کنه.
                          دیگه هم اینکه ولتاژ پین های پورت B همه FLT رو نشون می دن این یعنی چی؟ بهرحال هرچی که هست LED ها ولتاژشون 0 است و همه خاموش.
                          نمیدونم اشکال کارم کجاست که جواب نمی گیرم در برنامه است یا در اتصالات سخت افزاری؟؟؟ لطفا هرچه زودتر بهم کمک کنین.ممنون

                          برنامه برای نمایش روی LCD رو هم به صورت زیر نوشتم لطفا اگه اینم اشکالی توش می بینین بهم بگین:

                          $regfile = "m32def.dat"
                          $crystal = 16000000
                          Config Portb = Output
                          Config Lcd = 16 * 2
                          Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = _
                          Portb.4 , E = Portb.5 , Rs = Portb.6
                          Config Adc = Single , Prescaler = Auto , Reference = Avcc
                          Do
                          Stop Adc
                          Start Adc
                          Dim W As Word , A As Byte
                          A = 0
                          W = Getadc(a)
                          W = Makedec(w)
                          Cls
                          Lcd W
                          Wait 1
                          Loop
                          End

                          من آن گلبرگ مغرورم که می میرم ز بی آبی ولی با خفت و خواری پی شبنم نمی گردم.

                          دیدگاه


                            #14
                            پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

                            اناهیتا جون مگه بهمون نگفتن خروجی adc هگز است.پس آخر برنامه باید این طوری باشه دیگه
                            A = 0
                            W = Getadc(a)
                            W=makebcd(w)
                            W = Makedec(w)
                            Cls
                            ...
                            حالا لطفا اصلاحش کنید
                            ممنون می شیم
                            گاهی دلم برای چوپان دروغگو خیلی می سوزد.بیچاره 2 بار بیشتر دروغ نگفت انگشت
                            نماشد... ولی ما هنوز صادق ترینیم

                            دیدگاه


                              #15
                              پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

                              می دونی چرا جواب نمی گیری؟
                              چون ADC تو میکروهای AVR 10 بیتیه. یعنی رنج ولتاژ 5 ولت رو به 2 به توان 10 حالت تقسیم می کنه.
                              یعنی حداکثر عددی که از ADC می گیری 1023 هست. پس متغیری که برای دریافت ADC تعریف کردی باید از نوع Word تعریف کنی.
                              با توجه به توضیحاتی که دادم من برنامه رو این طوری می نویسم:
                              Regfile="m32def.dat"
                              $crystal=8000000

                              Config Portb = Output
                              Config Adc = Single , Prescaler = Auto , Reference = Avcc

                              dim w as word
                              dim a as byte
                              start adc
                              Do
                              w=getadc(0)
                              a=low(w)
                              portb=a
                              loop


                              دیدگاه

                              لطفا صبر کنید...
                              X