Съдържание:

Прецизен и точен измервателен уред Arduino (0-90V DC): 3 стъпки
Прецизен и точен измервателен уред Arduino (0-90V DC): 3 стъпки

Видео: Прецизен и точен измервателен уред Arduino (0-90V DC): 3 стъпки

Видео: Прецизен и точен измервателен уред Arduino (0-90V DC): 3 стъпки
Видео: Бесконтактный датчик температуры дальнего действия MLX90614-DCI с Arduino 2024, Юли
Anonim

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

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

За да архивирам това, използвах справка за напрежение (4.096v) и делител на напрежение.

От страна на кода, използвах, разбира се, опцията „външна справка“за Arduino Nano и примера „Smoothing“в уроците по Arduino.

Консумативи

1 x Arduino Nano - Връзка

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

1 x 1/4W 1% резистори - 1k ohm - Връзка

1 x 1/4W 1% резистори - 220k ohm - Връзка

1 x 1/4W 1% резистори - 10k ohm - Връзка

1 x 4.096v LM4040DIZ -4.1 Напрежение Справка - Връзка

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

Astro AI DM6000AR - Връзка

USB Power Bank - Връзка

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

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

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

Схемите
Схемите
Схемите
Схемите

Свързах всички части съгласно схемите по -горе. По -специално избрах референтното напрежение 4.096 да остане възможно най -близо до марката 5v, за да избегна загуба на разделителна способност.

Следвайки листа с данни, избрах 1K ом резистор за справка за напрежението, въпреки че може да се използва различна стойност. Напрежението за справка се подава от Nano 5v щифт.

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

Опитах се да направя нещата прости:)

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

Стойностите на резисторите бяха избрани така, както е препоръчително (ако не греша, това е в листа с данни на Arduino/Atmega), за да се поддържа импедансът под 10 k ома.

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

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

#включва

#include U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (въртене, [нулиране]) плаващо напрежение = 0; // използва се за съхраняване на стойност на напрежението float Radjust = 0.043459459; // Коефициент на делител на напрежение (R2 /R1+R2) поплавък vbat = 0; // крайно напрежение след изчисляване- напрежение на поплавъка на батерията Vref = 4.113; // Еталон на напрежение - измерена реална стойност. Номинална стойност 4.096v const int numReadings = 50; // брой проби за четене - увеличаване за по -изглаждане. Намалете за по -бързо четене. int показания [numReadings]; // показанията от аналоговия вход int readIndex = 0; // индексът на текущото отчитане unsigned long total = 0; // текущото общо int средно = 0; // променливи за опресняване на екрана без използване на забавяне unsigned 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; } // изчисляване на средната стойност: average = (total / numReadings); напрежение = средно * (Vref / 1023.0); //4.113 е Vref vbat = напрежение/Radjust; // Задаване на забавяне за опресняване на екрана с помощта на Millis if (currentMillis - previousMillis> = interval) {// запазване на последното актуализиране на екрана previousMillis = currentMillis; u8g2.clearBuffer (); // изчистване на вътрешното меню // Дисплей на Pack Voltage u8g2.setFont (u8g2_font_fub20_tr); // шрифт 20px u8g2.setCursor (1, 20); u8g2.принт (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // шрифт 10 px u8g2.setCursor (76, 20); u8g2.print ("Волта"); u8g2.setCursor (1, 40); u8g2.print ("CanadianWinters '"); u8g2.setCursor (1, 60); u8g2.print ("Точно напрежение"); } u8g2.sendBuffer (); // прехвърляне на вътрешна памет към забавяне на дисплея (1); }

Моля, обърнете внимание, че съм малко ръждясал с кодирането на Arduino, така че ако откриете някаква грешка или начин да подобрите кода, съм отворен за предложения:)

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

Нека го тестваме!
Нека го тестваме!
Нека го тестваме!
Нека го тестваме!
Нека го тестваме!
Нека го тестваме!

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

След като електрониката бъде опакована в печатна платка и малка кутия, това ще направи хубав и преносим глюкомер. Графиките и шрифтовете на OLED могат да бъдат персонализирани според вашите нужди (напр. По -голям шрифт за лесно четене).

Целта ми беше да имам отчитане на напрежението на измервателния уред Oled/Arduino недалеч от моя цифров мултиметър. Имах за цел +/- 0, 3v max делта. Както можете да видите от видеото, успях да архивирам това, освен в горния край на измерванията.

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

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