اطلاعیه

Collapse
No announcement yet.

طراحی ولت متر به زبان بیسیک برای atmega8-16

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

    طراحی ولت متر به زبان بیسیک برای atmega8-16

    سلام اگه میتونید منا تو نوشتن این برنامه کمک کنید.
    ممنون
    $regfile = "m8def.dat"

    $crystal = 8000000

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

    Config Lcd = 16 * 2

    Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5

    Start Adc

    Dim W As Word

    Do

    W = 0

    W = Getadc(0) / 204.5

    Lcd W

    Waitms 50

    Cls

    Loop

    End

    مشکل من اینه که:
    این ولت متر فقط ولتازهای بین 0 تا 5 ولت را اندازه میگیره و فقط هم اعداد 0 1 2 3 4 5 رانشون میده من میخوام مثلا عدد 3.342 را هم نشون بده
    :question:من نفهمیدم منظورتون از این که (گفتید :چه جوری میخوای بیاده سازی کنی ؟) چیه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
    **همیشه به این فکر کن که خداوند با توست**

    #2
    پاسخ : طراحی ولت متر به زبان بیسیک برای atmega8-16

    سلام
    دوست عزیز می خوای ولت با میکرو بسازی میشه بگی چطوری می خوای اینو پیاده کنی؟؟ چون شما برنامه رو گذاشتی ولی توضیح ندادی که مشکل شما چیه؟؟
    در زمینه ADC مشکل داری؟؟
    مشکلات را به همراه اینکه می خوای چطوری ولت متر بسازی را بگو فکر کنم اینطوری دوستان بهتر بتونند کمک کنند.

    موفق باشی

    دیدگاه


      #3
      پاسخ : طراحی ولت متر به زبان بیسیک برای atmega8-16

      با این برنامه ببین درست میشه ؟
      $regfile = "m8def.dat"

      $crystal = 8000000

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

      Config Lcd = 16 * 2

      Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5

      Start Adc

      Dim W As Word
      Dim L As Word
      Do

      W = 0
      L=0
      W = Getadc(0) / 204.5
      L = Getadc(0) MOD 204.5
      Lcd W;L

      Waitms 50

      Cls

      Loop

      End

      دیدگاه


        #4
        پاسخ : طراحی ولت متر به زبان بیسیک برای atmega8-16

        این برنامه آقا مجید هم جواب نمیده . چون تمامی متغیرها صحیح هستند و نه اعشاری . اما برای اینکه جواب بگیری این چند خطو بخون:

        میکروهای AVR اغلب 10 بیتی هستند . یعنی 1023 بیشترین مقداریه که میشه از اونها دریافت کرد . در واقع اگه فرض کنیم ولتاژ 5 ولت عددی معادل 1023 میده ، پس برای دریافت ولتاژهای دقیق تر نباید اون تقسیم بر 204 یا هر عددی رو قرار بدی .
        یه تناسب ساده داری . 1023 معادل 5ولته ؛ W معادل چه ولتاژیه؟

        Voltage = ( W * 5 ) / 1023

        پس کافیه این طوری عمل کنی :


        W =Getadc(0)
        Volt = W * 5
        Volt = Volt / 1023


        و دقت کن که Volt باید به صورت Single تعریف بشه .

        دیدگاه


          #5
          پاسخ : طراحی ولت متر به زبان بیسیک برای atmega8-16

          سلام آقا حامد من برنامه آقا مجید را اجرا کردم و جواب داد!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!
          **همیشه به این فکر کن که خداوند با توست**

          دیدگاه


            #6
            پاسخ : طراحی ولت متر به زبان بیسیک برای atmega8-16

            سلام

            خواب قربون دستت w رو از جنس single تعریف کن تا اعداد اعشاری رو بتونه بگیره اینجوری انگار داری جز صحیح ازش میگیری
            به وبلاگم سر بزنید

            دیدگاه


              #7
              پاسخ : طراحی ولت متر به زبان بیسیک برای atmega8-16

              با تشکر از حامد عزیز

              حق با شماست

              2 تا نکته : 1- متغیری که به GetADC میدید نمیتونه Single باشه . در واقع میشه اونو word تعریف کنید .

              2- متغیری که باید حاصل تقسیم در اون قرار بگیره باید Single باشه . برنامه اینجوری میشه


              $regfile = "m8def.dat"

              $crystal = 8000000

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

              Config Lcd = 16 * 2

              Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5

              Start Adc

              Dim W As Word
              Dim L As Single
              Do

              W = Getadc(0)
              L = W / 204.5
              Cls
              Lcd L

              Waitms 50

              Loop


              موفق باشید

              دیدگاه


                #8
                پاسخ : طراحی ولت متر به زبان بیسیک برای atmega8-16

                نوشته اصلی توسط alitaroosheh
                سلام

                خواب قربون دستت w رو از جنس single تعریف کن تا اعداد اعشاری رو بتونه بگیره اینجوری انگار داری جز صحیح ازش میگیری
                متغیری که به GetADC میدید نمیتونه Single باشه

                دیدگاه


                  #9
                  پاسخ : طراحی ولت متر به زبان بیسیک برای atmega8-16

                  نوشته اصلی توسط مجید نصراله زاده


                  متغیری که به GetADC میدید نمیتونه Single باشه
                  این جمله امری بود نقلی بود یا سوالی؟؟؟ oo: :mrgreen:
                  به وبلاگم سر بزنید

                  دیدگاه


                    #10
                    پاسخ : طراحی ولت متر به زبان بیسیک برای atmega8-16

                    نوشته اصلی توسط alitaroosheh

                    این جمله امری بود نقلی بود یا سوالی؟؟؟ oo: :mrgreen:
                    ما مخلصیم !!!!

                    جنبه اطلاع رسانی داشت !!

                    دیدگاه


                      #11
                      پاسخ : طراحی ولت متر به زبان بیسیک برای atmega8-16

                      خوب با زیاد و کم کردن # میتونی تعداد اعشار رو در نمایش روی LCD مشخص کنی:

                      $regfile = "M8DEF.dat" : $crystal = 2000000

                      Config Lcdpin = Pin , Db4 = Pinb.3 , Db5 = Pinb.2 , Db6 = Pinb.1 , Db7 = Pinb.0 , E = Pinb.4 , Rs = Pinb.5
                      Config Lcd = 16 * 2 : Cursor Off : Cls
                      Dim A As Word , B As Word , V As Single ,
                      Config Adc = Single , Prescaler = Auto , Reference = Avcc

                      Start Adc
                      Do


                      B = Getadc(1)
                      V = B
                      V = V / 1024
                      V = V * 5

                      Cls
                      Lcd "V=" ; Fusing(v , "#.##&quot ; " volt"


                      Waitms 500
                      Loop
                      هنوز وقت برای پیشرفت باقیست!

                      دیدگاه

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