Съдържание:

Волтметър Arduino (0-100V DC) - Версия 2 (по -добра): 3 стъпки
Волтметър Arduino (0-100V DC) - Версия 2 (по -добра): 3 стъпки

Видео: Волтметър Arduino (0-100V DC) - Версия 2 (по -добра): 3 стъпки

Видео: Волтметър Arduino (0-100V DC) - Версия 2 (по -добра): 3 стъпки
Видео: FM Modulator $ Voltmetru *Made in China* 2024, Юни
Anonim
Image
Image
Стъпка 1: Схемите
Стъпка 1: Схемите

В тази инструкция съм построил волтметър за измерване на високо напрежение DC (0-100v) с относителна прецизност и точност, използвайки Arduino Nano и ADS 1115 ADC.

Това е втора версия на волтметъра, използвана от предишните ми инструкции тук:

Тестовите измервания, които направих, бяха точни, най -вече в рамките на 0,1v от действителното напрежение, измерено със стандартен волтметър (използвах Astro AI DM6000AR).

Това е много по -добре и по -лесно според мен, отколкото да използвате външна справка за напрежение на Arduino.

Консумативи

1 x Arduino Nano - Връзка

1 x Oled дисплей (SSD 1306) - Връзка

1 x ADS 1115 - 16 битов ADC - Link

1 x 1/4W (все пак предлагам да се използват 1W резистори) 1% резистори - 220k ohm - Връзка

1 x 1/4W (все пак предлагам да се използват 1W резистори) 1% резистори - 10k ohm - Връзка

Платформа и проводници - Връзка

Astro AI DM6000AR - Връзка

USB Power Bank - Връзка

9V батерии - Връзка

CanadianWinters е участник в програмата на Amazon Services LLC Associates, програма за партньорско рекламиране, предназначена да осигури средства за сайтовете да печелят такси чрез свързване към Amazon.com и свързани сайтове. Използвайки тези връзки, като асоцииран с Amazon печеля от квалифицирани покупки, дори ако купувате нещо друго-и това няма да ви струва нищо.

Стъпка 1: Стъпка 1: Схемите

Стъпка 1: Схемите
Стъпка 1: Схемите

Свързах всички части съгласно схемите по -горе.

Завързах щифта ADDR на ADC1115 към земята. Това задава адреса на ADC на 0x48.

Стъпка 2: Стъпка 2: Изчисленията на кода и резистора

Стъпка 2: Изчисленията на кода и резистора
Стъпка 2: Изчисленията на кода и резистора

Както в предишните инструкции, идеята на веригата е, че постояннотоковото напрежение, което ще се измерва, преминава през резистор на напрежение. Мащабираното напрежение и след това попада в аналоговия щифт на ADC конвертора, за да бъде прочетено, след това се предава на Arduino чрез I2C и след това се мащабира отново и се показва на OLed дисплея.

В този случай не използвах никакво усредняване или изглаждане в кода, тъй като показанията изглеждат доста точни и точни. За да намалите шума, може да искате да добавите малък кондензатор между A0 (на ADC) и земята. Това обаче не беше необходимо за моя тест.

Едно нещо, което забелязах, беше малко шум, когато нямаше свързана батерия (0 волта). Използвах серийния монитор на Arduino, за да покажа стойността на ADC и да я коригирам/коригирам чрез код.

Както и в предишните инструкции, направих електронна таблица, която автоматизира изчисленията в случай, че искате да използвате различни стойности на резистора в делителя на напрежението: Връзка към Google Sheet

Ето кода, който използвах за този проект:

#включва

#include #include #include Adafruit_ADS1115 реклами (0x48); // Адрес на ADC U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (въртене, [нулиране]) int calib = 7; // Стойност на калибриране на ADS1115 за намаляване на грешката плаващо напрежение = 0; // използва се за съхраняване на стойност на напрежението float Radjust = 0.043421905; // Коефициент на делител на напрежение (R2 / R1+R2) поплавък vbat = 0; // крайно напрежение след изчисляване- напрежение на батерията // променливи за опресняване на екрана без използване на закъснение unsigned long previousMillis = 0; // ще се съхранява последния път, когато екранът е бил опресняван // константи няма да се променят: const long interval = 250; // интервал, в който да се опреснява екрана (милисекунди) void setup (void) {Serial.begin (9600); u8g2.begin (); ads.begin (); } void loop (void) {int16_t adc0; // 16 бита ADC четене на вход A0 adc0 = ads.readADC_SingleEnded (0); напрежение = ((adc0 + calib) * 0,1875)/1000; без знак дълъг токMillis = millis (); vbat = напрежение/Radjust; // Предотвратяване на показването на отрицателно напрежение, когато батерията е изключена, ако (vbat = интервал) {previousMillis = currentMillis; u8g2.clearBuffer (); // изчистване на вътрешното меню // Дисплей на Pack Voltage - Шрифтове на тази страница: https://github.com/olikraus/u8g2/wiki/fntlistall //u8g2.setFont(u8g2_font_fub20_tr); // шрифт 20px u8g2.setFont (u8g2_font_fub35_tr); // 35px шрифт u8g2.setCursor (1, 42); u8g2.принт (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // шрифт 10 px u8g2.setCursor (1, 60); u8g2.print ("Волта"); } u8g2.sendBuffer (); // прехвърляне на вътрешна памет към забавяне на дисплея (1); }

Стъпка 3: Стъпка 3: Нека го тестваме

Стъпка 3: Нека го тестваме!
Стъпка 3: Нека го тестваме!

За да тествам този волтметър използвах 10x 9v батерии, които получих в местен магазин. Този път можех да измервам до 97 волта! Планирам да използвам този волтметър за измерване на напрежението на батериите на моите електрически велосипеди (те имат напрежение в диапазона от 24-60v с от време на време 72v).

След като електрониката бъде опакована в печатна платка и малка кутия, това ще направи хубав и преносим глюкомер. Графиките и шрифтовете на OLED могат да бъдат персонализирани според вашите нужди (напр. По -голям шрифт за лесно четене). Целта ми беше да имам отчитане на напрежението на измервателния уред Oled/Arduino недалеч от моя цифров мултиметър. Имах за цел +/- 0, 3v max делта.

Както можете да видите от видеото в началото на Instructable, успях да архивирам това! Повечето четения бяха на място!

Надявам се да ви е харесал този Instructable и да ме уведомите за вашите мисли!

Препоръчано: