اطلاعیه

Collapse
No announcement yet.

ساخت ولتمتر با اردوینو خیلی سریع نیاز دارم

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

    ساخت ولتمتر با اردوینو خیلی سریع نیاز دارم

    1_سلام میخواستم یه ولتمتر با اردوینو اونو بسازم .باتری رو به یکی از ورودی های analog in وصل میکنم اما با چه کدی باید مقدار ولتاژ خوانده شده توسط analog read رو وارد سریال مانیتور کنم که مقدار رو برام نمایش بده .
    2_پایه های مثبت و منفی باتری رو چجوری به analog in وصل کنم.
    اگر کسی میدونه خیلی سریع لطفا راهنمایی ام کند.

    #2
    پاسخ : ساخت ولتمتر با اردوینو خیلی سریع نیاز دارم

    درود بر شما
    بفرمایید چه دقتی و چه بازه ولتاژی مد نظرتون هست تا بهتر بشه راهنمایی کرد.
    ولی بطور خیلی ابتدایی اگر نهایت ولتاژ مد نظرتون از 5 ولت تجاوز نمیکنه:
    منفی به gnd و مثبت به یکی از پایه های آنالوگ مثلا A0 و با کد زیر میتوند در سریال مانیتور ولتاژ رو بخونید:
    val=analogRead(A0)
    Voltage=(val*5)/1024
    Serial.println(Voltage)
    ***************************
    برای اینکه دقیق تر باشه هم اول با مولتی متر ولتاژ دقیق بین پایه های 5v و gnd آردوینو رو بخونید بعد اون ولتاژ رو که مثلا 4.8 هست در رابطه voltage قرار دهید یعنی : voltage=(val*4.8)/1024

    دلیل: ادغام دو پست برای جلوگیری از اسپم

    اگر بازه اندازه گیری ولتاژ بیشتر مقدار ذکر شده بود میتونید از یک voltage divider استفاده کنید بصورت زیر:

    مقدار ولتاژ هم بصورت زیر حساب میشه:
    val=analogRead(A0)
    voltage=((val*5/1024)/(r2/r2+r1))
    ****************************************
    مثلا اگر r1=100k و r2=10k در نظر بگیرد در اینصورت می تونید تا حدود 55 ولت رو بخونید.پس بسته به بازه ای که میخواید بخونید r1 و r2 رو انتخاب کنید با این شرط که ولتاژ r2 در حالت full scale از 5 ولت بیشتر نشود.
    باز برای دقت بالا تر باید مقدار دقیق r1 وr2 و ,ولتاژ بین پایه های 5v وgnd آردوینو را با مولتی متر بخونید و در رابطه استفاده کنید + از مقاومت های 1% بهتر هست استفاده بشه .
    جدیدترین ویرایش توسط behnam18; ۲۰:۱۸ ۱۳۹۷/۰۶/۲۲.

    دیدگاه


      #3
      پاسخ : ساخت ولتمتر با اردوینو خیلی سریع نیاز دارم

      ممنون از راهنمایی شما حداکثر ولتاژ همون 5 ولت هست

      دیدگاه


        #4
        پاسخ : ساخت ولتمتر با اردوینو خیلی سریع نیاز دارم

        سلام این کد رو نوشتم اما عدد حاصل فقط 1 بود
        int val ;
        int voltpin = A0;
        void setup() {
        pinMode(voltpin, INPUT);
        Serial.begin(9600);
        val = analogRead(A0);
        int Voltage;
        Voltage = (val+5)/1024;
        Serial.println(Voltage);




        }


        void loop() {



        }

        دیدگاه


          #5
          پاسخ : ساخت ولتمتر با اردوینو خیلی سریع نیاز دارم

          متغیر val ضرب در ۵ میشه ، نه جمع ،
          کل برنامه رو داخل لوپ بذارید ، توی ستاپ فقط دستورات pinmode و serial begin رو بذارید

          دیدگاه


            #6
            پاسخ : ساخت ولتمتر با اردوینو خیلی سریع نیاز دارم

            int voltpin =A0 هم اشتباه هست، int یعنی عدد...درستش :

            دیدگاه


              #7
              پاسخ : ساخت ولتمتر با اردوینو خیلی سریع نیاز دارم

              با این کد کار میکنه اما مقدار دقیق رو نشون نمیده مثلا ۴.۵ رو ۴ و ۳.۸۵ رو ۳ نشون میده.
              باتری ۱.۵ ولت رو ۱ نشون میده .
              چه کار کنم دقیق شه یعنی تا یک رقم اعشار رو نشون بده

              دیدگاه


                #8
                پاسخ : ساخت ولتمتر با اردوینو خیلی سریع نیاز دارم

                نوع متغیر ها یعنی Val voltage رو float کنید . عدد صحیح اعشار نداره برای همین رند نشون میده

                دیدگاه


                  #9
                  پاسخ : ساخت ولتمتر با اردوینو خیلی سریع نیاز دارم

                  خیلی خیلی ممنون به خاطر کمک هاتون درست شد خیلی هم عالی کار میکنه دست هر دوی شما درد نکنه که من رو راهنمایی کردید
                  اما فقط سه چیزی رو نفهمیدم اگر توضیح بدید ممنون میشم.
                  ۱.چرا مقدار خوانده شده از پایه A0 رو ابتدا در ۵ و سپس تقسیم بر ۱۰۲۴ کردین.
                  ۲. این دو عدد ۵ و ۱۰۲۳ چی هستن که شما ان ها را استفاده کردید.
                  ۳.float چیست و فرقش با int و define چی هست.
                  لطفا توضیح دهید که از گمراهی خارج شم باز هم ممنون
                  جدیدترین ویرایش توسط Saman1381; ۰۱:۴۱ ۱۳۹۷/۰۶/۲۳.

                  دیدگاه


                    #10
                    پاسخ : ساخت ولتمتر با اردوینو خیلی سریع نیاز دارم

                    نوشته اصلی توسط Saman1381 نمایش پست ها
                    خیلی خیلی ممنون به خاطر کمک هاتون درست شد خیلی هم عالی کار میکنه دست هر دوی شما درد نکنه که من رو راهنمایی کردید
                    اما فقط سه چیزی رو نفهمیدم اگر توضیح بدید ممنون میشم.
                    ۱.چرا مقدار خوانده شده از پایه A0 رو ابتدا در ۵ و سپس تقسیم بر ۱۰۲۴ کردین.
                    ۲. این دو عدد ۵ و ۱۰۲۳ چی هستن که شما ان ها را استفاده کردید.
                    ۳.float چیست و فرقش با int و define چی هست.
                    لطفا توضیح دهید که از گمراهی خارج شم باز هم ممنون
                    1و2- آردوینو یک واحد ADC داخلی داره با رزولوشن 10 بیت که میشه 1024 قسمت.از 0 برای مقدار 0 ولت تا 1023 برای 5 ولت و ولتاژ بین 0 تا 5 بهش عدد متناظر در بازه 0 تا 1023 داده میشه که با همون معادله ساده بدست میاد.
                    3- float و int برای تعریف متغیر عددی هستند.همونطور که آقا مسعود گفتند int برای تعریف عدد صحیح مثبت و منفی و float برای اعداد اعشاری مثبت و منفی هست.ولی define فقط یک دستور C برای اختصاص یک مقدار به یک نام ثابت هست تا کامپایلر هر جا اون نام رو دید مقدار اختصاص داده شده رو جایگزین کنه.
                    define برا خلاف float و int که حداکثر تا 32 بیت از حافظه رو اشغال میکنن، فضایی رو اشغال نمیکنه ولی از طرف دیگه ممکنه باعث اختلال در برنامه بشه( باید دقت کنید تا هیچ جای غیر مرتبط در برنامه از اون نام ثابت استفاده نکرده باشید در غیر اینصورت با مقدار مشخص شده جایگزین میشه) برای همین توصیه میشه در حالت کلی از دستور const به جای define استفاده بشه. این دو تا لینک رو بخون :
                    The Arduino programming language Reference, organized into Functions, Variable and Constant, and Structure keywords.

                    دیدگاه


                      #11
                      پاسخ : ساخت ولتمتر با اردوینو خیلی سریع نیاز دارم

                      درود . ۱: عدد خوانده شده از آنالوگ ، بین صفر تا ۱۰۲۴ هست . از اونجا که ورودی شما بین صفر تا پنج ولت هست باید تناسب ببندید . این ضرب پنج و تقسیم ۱۰۲۴ اون تناسب هست .
                      ما در اردو تابع map داریم که دقیقا این کار رو انجام میده . تبدیل یک عدد که بین بازه ای هست به عددی در بازه جدید دلخواه . سرچ کنید اون رو هم یاد بگیرید بد نیست .

                      ۲: همون توضیح ۱
                      ۳: دستور define تعریفی هست . میگه توی برنامه هرجا voltpin هست یعنی A0
                      رint برای تعریف متغیر از نوع عدد صحیح استفاده میشه و بسیار پر مصرف هست . جایی که اعداد یا شمارش مورد استفاده ست .
                      رfloat برای تعریف متغیر از نوع اعشاری هست که حافظه بیشتری نسبت به int میگیره و برای مثال های این چنینی که باید اعداد اعشاری باشند استفاده میشه .
                      سایت arduino.ir رو وقت بذارید بخونید مرجع آموزشی هست همه این ها توضیح داده شده

                      دیدگاه


                        #12
                        پاسخ : ساخت ولتمتر با اردوینو خیلی سریع نیاز دارم

                        سلام میکرو من از یه باطری تغذیه میشه میخوام ولتاژ دو سر باتری که تغذیه خود میکرو هست و بخونم برا شارژ باتری مشکل اینجاست که در هر صورت شارژ و دشارژ باطری یه ولتاژ ثابت نشون میده فک کنم باید پایه avcc تغذیشو جدا کنم لطفا راهنمایی کنید؟؟؟؟؟؟؟؟؟؟؟؟؟

                        دیدگاه

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