Obsah:

Přesný a přesný voltmetr Arduino (0-90V DC): 3 kroky
Přesný a přesný voltmetr Arduino (0-90V DC): 3 kroky

Video: Přesný a přesný voltmetr Arduino (0-90V DC): 3 kroky

Video: Přesný a přesný voltmetr Arduino (0-90V DC): 3 kroky
Video: Переделываем DC-DC преобразователь для управления с Arduino 2024, Červenec
Anonim

V tomto pokynu jsem postavil voltmetr pro měření vysokých napětí DC (0-90v) s relativní přesností a přesností pomocí Arduino Nano.

Testovací měření, která jsem provedl, byla dostatečně přesná, většinou do 0,3 V skutečného napětí naměřeného standardním voltmetrem (použil jsem Astro AI DM6000AR). To je dost blízko pro mé zamýšlené použití zařízení.

K archivaci jsem použil referenční napětí (4,096 V) a dělič napětí.

Na straně kódu jsem samozřejmě použil možnost „externí reference“pro Arduino Nano a příklad „Smoothing“v návodech k Arduinu.

Zásoby

1 x Arduino Nano - odkaz

1 x Oled Display (SSD 1306) - Link

1 x 1/4W 1% odpory - 1 k ohm - Link

1 x 1/4W 1% rezistory - 220 k ohm - Link

1 x 1/4W 1% rezistory - 10 kOhm - Link

1 x 4,096 V referenční napětí LM4040DIZ -4.1 - odkaz

Breadboard a dráty - Link

Astro AI DM6000AR - odkaz

USB power banka - odkaz

9V baterie - propojení

CanadianWinters je účastníkem programu Amazon Services LLC Associates Program, programu affiliate reklamy, jehož cílem je poskytnout webům prostředky k vydělávání poplatků propojením s Amazon.com a přidruženými stránkami. Používáním těchto odkazů získávám jako Amazonský spolupracovník kvalifikované nákupy, i když si koupíte něco jiného-a nebude vás to nic stát.

Krok 1: Schémata

Schémata
Schémata
Schémata
Schémata

Všechny části jsem připojil podle schémat výše. Zejména jsem zvolil referenci napětí 4,096, abych zůstal co nejblíže značce 5v, aby nedošlo ke ztrátě rozlišení.

Podle datového listu jsem pro referenci napětí vybral odpor 1K ohm, i když by mohla být použita jiná hodnota. Napětí pro referenci je napájeno z pinu Nano 5v.

Myšlenka obvodu je, že stejnosměrné napětí, které má být měřeno, prochází napěťovým odporem. Měřítko napětí a poté se dostane do analogového pinu Arduina, kde bude vzorkován, vyhlazován, znovu upravován a zobrazován na OLed displeji.

Snažil jsem se udržet věci jednoduché:)

Krok 2: Výpočty kódu a odporu

Hodnoty odporů byly zvoleny tak, jak je to vhodné (pokud se nepletu, je to v datovém listu Arduino/Atmega), aby byla impedance pod 10 k ohm.

Pro zjednodušení jsem vytvořil tabulku, která automatizuje výpočty v případě, že chcete použít různé hodnoty odporu: Odkaz na list Google

Zde je kód, který jsem použil pro tento projekt:

#zahrnout

#include U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (otáčení, [reset]) plovoucí napětí = 0; // slouží k ukládání hodnoty napětí float Radjust = 0,043459459; // Faktor děliče napětí (R2 /R1+R2) float vbat = 0; // konečné napětí po výpočtech- napětí plováku baterie Vref = 4,113; // Referenční napětí - naměřená skutečná hodnota. Jmenovitá hodnota 4,096v const int numReadings = 50; // počet vzorků čtení - zvýšení pro větší vyhlazení. Snížit pro rychlejší čtení. int čtení [numReadings]; // hodnoty z analogového vstupu int readIndex = 0; // index aktuálního čtení bez znaménka dlouhý celkem = 0; // průběžný součet int průměr = 0; // proměnné pro obnovení obrazovky bez použití zpoždění bez znaménka dlouhé previousMillis = 0; // uloží se při poslední aktualizaci obrazovky // konstanty se nezmění: konst dlouhý interval = 50; // interval, ve kterém se obnovuje obrazovka (milisekundy) void setup (void) {analogReference (EXTERNAL); // použijte AREF pro referenční napětí 4.096. Moje referenční skutečné napětí je 4,113v u8g2.begin (); for (int thisReading = 0; thisReading = numReadings) {//… zaokrouhlit na začátek: readIndex = 0; } // vypočítat průměr: průměr = (celkem / početČtení); napětí = průměr * (Vref / 1023,0); //4.113 je Vref vbat = napětí/Radjust; // Nastavení zpoždění pro aktualizaci obrazovky pomocí Millis if (currentMillis - previousMillis> = interval) {// uložení poslední aktualizace obrazovky previousMillis = currentMillis; u8g2.clearBuffer (); // vymazání interní nabídky // Zobrazení napětí balení u8g2.setFont (u8g2_font_fub20_tr); // 20px písmo u8g2.setCursor (1, 20); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // 10 px písmo u8g2.setCursor (76, 20); u8g2.print („Volty“); u8g2.setCursor (1, 40); u8g2.print („CanadianWinters“); u8g2.setCursor (1, 60); u8g2.print („Přesné napětí“); } u8g2.sendBuffer (); // přenos interní paměti na zpoždění zobrazení (1); }

Vezměte prosím na vědomí, že jsem trochu rezavý s kódováním Arduino, takže pokud najdete nějakou chybu nebo způsob, jak zlepšit kód, jsem otevřený návrhům:)

Krok 3: Vyzkoušíme to

Pojďme to vyzkoušet!
Pojďme to vyzkoušet!
Pojďme to vyzkoušet!
Pojďme to vyzkoušet!
Pojďme to vyzkoušet!
Pojďme to vyzkoušet!

K testování tohoto voltmetru jsem použil 8x 9v baterie, které jsem dostal v místním obchodě. Plánuji použít tento voltmetr k měření napětí na bateriových soupravách mých elektrických jízdních kol (mají napětí v rozmezí od 24 do 60 V s příležitostnými 72 V).

Jakmile je elektronika zabalena do desky plošných spojů a malé krabice, bude to pěkný a přenosný měřič baterií. Grafiku a písma na OLED lze přizpůsobit vašim potřebám (např. Větší písmo pro snadné čtení).

Mým cílem bylo odečíst napětí na měřiči Oled/Arduino ne příliš daleko od mého digitálního multimetru. Mířil jsem na +/- 0, 3v max delta. Jak vidíte z videa, podařilo se mi to archivovat, kromě horního konce měření.

Doufám, že se vám tento Instructable líbil a dáte mi vědět své myšlenky!

Doporučuje: