فهرست مطالب:

ولت متر دقیق و دقیق آردوینو (0-90V DC): 3 مرحله
ولت متر دقیق و دقیق آردوینو (0-90V DC): 3 مرحله

تصویری: ولت متر دقیق و دقیق آردوینو (0-90V DC): 3 مرحله

تصویری: ولت متر دقیق و دقیق آردوینو (0-90V DC): 3 مرحله
تصویری: How measure DC Voltage and Current and build Energy meter with LCD Display | Lesson 104 2024, جولای
Anonim

در این دستورالعمل ، من یک ولت متر برای اندازه گیری ولتاژهای بالا DC (0-90v) با دقت و دقت نسبی با استفاده از آردوینو نانو ساخته ام.

اندازه گیری های آزمایشی که من انجام دادم به اندازه کافی دقیق بود ، بیشتر در 0.3 ولت از ولتاژ واقعی اندازه گیری شده با ولت متر استاندارد (من از Astro AI DM6000AR استفاده کردم). این به اندازه کافی برای استفاده مورد نظر من از دستگاه نزدیک است.

برای بایگانی این مورد از یک منبع ولتاژ (4.096v) و تقسیم ولتاژ استفاده کردم.

در قسمت کد ، البته ، از گزینه "مرجع خارجی" برای Arduino Nano و مثال "Smoothing" در آموزشهای آردوینو استفاده کردم.

تدارکات

1 x آردوینو نانو - پیوند

1 نمایشگر Oled (SSD 1306) - پیوند

1 x 1/4W 1٪ مقاومت - 1k اهم - پیوند

1 x 1/4W 1٪ مقاومت - 220k اهم - پیوند

1 x 1/4W 1٪ مقاومت - 10k اهم - پیوند

1 مرجع ولتاژ 4.096v LM4040DIZ -4.1 - پیوند

تخته نان و سیم - پیوند

Astro AI DM6000AR - پیوند

USB پاور بانک - پیوند

باتری های 9 ولت - پیوند

CanadianWinters یک شرکت کننده در برنامه Amazon Services LLC Associates Program است ، یک برنامه تبلیغاتی وابسته که به منظور ایجاد هزینه ای برای سایتها با پیوند به Amazon.com و سایتهای وابسته طراحی شده است. با استفاده از این پیوندها ، من به عنوان یک همکار آمازون از خریدهای واجد شرایط ، حتی اگر چیز دیگری خریداری می کنید-و هیچ هزینه ای برای شما ندارد.

مرحله 1: طرحواره ها

طرحواره ها
طرحواره ها
طرحواره ها
طرحواره ها

من تمام قسمتها را مطابق نمودارهای بالا متصل کردم. به ویژه من مرجع ولتاژ 4.096 را انتخاب کردم تا جایی که ممکن است به علامت 5 ولت نزدیک بمانم تا از دست دادن وضوح جلوگیری شود.

پس از برگه اطلاعات ، یک مقاومت 1K اهم را برای مرجع ولتاژ انتخاب کردم ، حتی اگر از مقدار متفاوتی استفاده شود. ولتاژ مرجع از پین Nano 5v تامین می شود.

ایده مدار این است که ولتاژ DC مورد اندازه گیری از طریق مقاومت ولتاژ عبور می کند. ولتاژ مقیاس بندی شده و سپس وارد پین آنالوگ آردوینو می شود تا نمونه برداری شود ، صاف شود ، دوباره مقیاس بندی شود و بر روی صفحه نمایش OLed نمایش داده شود.

سعی کردم همه چیز ساده باشه:)

مرحله 2: محاسبات کد و مقاومت

مقادیر مقاومتها همانطور که توصیه می شود (اگر اشتباه نکنم این در برگه اطلاعات Arduino/Atmega است) انتخاب شده است تا امپدانس زیر 10 کیلو اهم حفظ شود.

برای ساده تر کردن کارها ، من یک صفحه گسترده ایجاد کردم که در صورت تمایل به استفاده از مقادیر مختلف مقاومت ، محاسبات را خودکار می کند: پیوند به Google Sheet

در اینجا کدی است که برای این پروژه استفاده کردم:

#عبارتند از

#شامل U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0) ؛ // (چرخش ، [بازنشانی]) ولتاژ شناور = 0 ؛ // برای ذخیره مقدار ولتاژ float Radjust = 0.043459459 ؛ // ضریب تقسیم ولتاژ (R2 /R1+R2) float vbat = 0؛ // ولتاژ نهایی پس از محاسبه- ولتاژ شناور باتری Vref = 4.113 ؛ // مرجع ولتاژ - مقدار واقعی اندازه گیری شده. مقدار اسمی 4.096v const int numReadings = 50؛ // تعداد نمونه های خواندن - برای هموارتر شدن بیشتر. برای خواندن سریعتر کاهش دهید. int خواندن [numReadings] ؛ // خوانش های ورودی آنالوگ int readIndex = 0؛ // شاخص خواندن فعلی بدون علامت کل = 0؛ // مجموع در حال اجرا int int = 0؛ // متغیرهایی برای بازسازی صفحه بدون استفاده از تاخیر بدون امضا long previousMillis = 0؛ // آخرین باری که صفحه به روز شد ذخیره می شود // ثابت ها تغییر نمی کنند: const long interval = 50؛ // فاصله زمانی که صفحه را تازه می کند (میلی ثانیه) void setup (void) {analogReference (EXTERNAL)؛ // از AREF برای ولتاژ مرجع 4.096 استفاده کنید. ولتاژ مرجع واقعی من 4.113v u8g2.begin () است؛ for (int thisReading = 0؛ thisReading = numReadings) {// … تا انتها بپیچید: readIndex = 0؛ } // محاسبه میانگین: متوسط = (مجموع / numReadings) ؛ ولتاژ = متوسط * (Vref / 1023.0) ؛ //4.113 Vref vbat = voltage/Radjust است؛ // تنظیم تاخیر برای بازسازی صفحه با استفاده از Millis if (currentMillis - previousMillis> = فاصله) {// آخرین باری که صفحه به روز شد را ذخیره کنید previousMillis = currentMillis؛ u8g2.clearBuffer ()؛ // پاک کردن حافظه داخلی // صفحه نمایش ولتاژ بسته u8g2.setFont (u8g2_font_fub20_tr) ؛ // فونت 20px u8g2.setCursor (1 ، 20) ؛ u8g2.print (vbat، 2) ؛ u8g2.setFont (u8g2_font_8x13B_mr) ؛ // فونت 10 پیکسل u8g2.setCursor (76 ، 20) ؛ u8g2.print ("ولت") ؛ u8g2.setCursor (1 ، 40) ؛ u8g2.print ("CanadianWinters") ؛ u8g2.setCursor (1 ، 60) ؛ u8g2.print ("ولتاژ دقیق") ؛ } u8g2.sendBuffer ()؛ // انتقال حافظه داخلی به تأخیر نمایش (1) ؛ }

لطفاً توجه داشته باشید که من در برنامه نویسی آردوینو کمی زنگ زده ام ، بنابراین اگر اشتباهی یا راهی برای بهبود کد پیدا کردید ، من آماده پیشنهادات هستم:)

مرحله 3: بیایید آن را آزمایش کنیم

بیایید آن را آزمایش کنیم!
بیایید آن را آزمایش کنیم!
بیایید آن را آزمایش کنیم!
بیایید آن را آزمایش کنیم!
بیایید آن را آزمایش کنیم!
بیایید آن را آزمایش کنیم!

برای آزمایش این ولت متر از باتری های 8x 9v استفاده کردم که در یک فروشگاه محلی تهیه کردم. من قصد دارم از این ولت متر برای اندازه گیری ولتاژ بسته باتری دوچرخه های برقی استفاده کنم (ولتاژ آنها بین 24-60 ولت و گاهی اوقات 72 ولت).

هنگامی که وسایل الکترونیکی در یک PCB و یک جعبه کوچک بسته بندی می شوند ، این یک متر سنج باتری خوب و قابل حمل می شود. گرافیک و فونت های OLED می توانند متناسب با نیاز شما سفارشی شوند (به عنوان مثال فونت بزرگتر برای خواندن آسان).

هدف من این بود که یک ولتاژ بر روی متر Oled/Arduino که چندان دورتر از چند متر دیجیتال من نیست ، اندازه گیری کنم. من برای +/- 0 ، 3v max delta هدف داشتم. همانطور که از فیلم مشاهده می کنید ، من توانستم این مورد را بایگانی کنم مگر در انتهای بالای اندازه گیری.

امیدوارم از این برنامه آموزشی لذت برده باشید و نظرات خود را به من اطلاع دهید!

توصیه شده: