Obsah:

Presný a presný voltmetr Arduino (0-90V DC): 3 kroky
Presný a presný voltmetr Arduino (0-90V DC): 3 kroky

Video: Presný a presný voltmetr Arduino (0-90V DC): 3 kroky

Video: Presný a presný voltmetr Arduino (0-90V DC): 3 kroky
Video: Переделываем DC-DC преобразователь для управления с Arduino 2024, Júl
Anonim

V tomto návode som postavil voltmetr na meranie vysokého napätia DC (0-90 V) s relatívnou presnosťou a presnosťou pomocou Arduino Nano.

Testovacie merania, ktoré som vykonal, boli dostatočne presné, väčšinou v rozmedzí 0,3 V od skutočného napätia nameraného štandardným voltmetrom (použil som Astro AI DM6000AR). To je dosť blízko na moje zamýšľané použitie zariadenia.

Na archiváciu som použil referenciu napätia (4,096 V) a delič napätia.

Na strane kódu som samozrejme použil možnosť „externá referencia“pre Arduino Nano a príklad „Smoothing“v návodoch pre Arduino.

Zásoby

1 x Arduino Nano - odkaz

1 x Oled Display (SSD 1306) - Link

1 x 1/4W 1% rezistory - 1 k ohm - prepojenie

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

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

1 x 4,096v LM4040DIZ -4.1 referenčné napätie - odkaz

Breadboard a drôty - odkaz

Astro AI DM6000AR - odkaz

USB power banka - prepojenie

9V batérie - prepojenie

CanadianWinters je účastníkom programu Amazon Services LLC Associates Program, programu pridruženej reklamy, ktorého cieľom je poskytovať webom prostriedky na získavanie poplatkov prepojením na Amazon.com a pridružené stránky. Použitím týchto odkazov ako Amazon Associate zarobím na kvalifikovaných nákupoch, aj keď si kúpite niečo iné-a nič vás to nebude stáť.

Krok 1: Schémy

Schémy
Schémy
Schémy
Schémy

Pripojil som všetky diely podľa vyššie uvedených schém. Zvlášť som zvolil referenciu napätia 4,096, aby som zostal čo najbližšie k značke 5v, aby som sa vyhnul strate rozlíšenia.

Podľa údajového listu som pre referenciu napätia vybral odpor 1 K ohm, aj keď by sa dala použiť iná hodnota. Napätie pre referenciu je napájané z pinu Nano 5v.

Myšlienka obvodu je taká, že merané jednosmerné napätie prechádza napäťovým odporom. Zmenšené napätie a potom sa dostane do analógového kolíka Arduina, kde sa majú odoberať vzorky, vyhladzovať, meniť stupnice a zobrazovať na displeji OLed.

Snažil som sa udržať veci jednoduché:)

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

Hodnoty rezistorov boli zvolené tak, ako je to vhodné (ak sa nemýlim, je to v technickom liste Arduino/Atmega), aby sa impedancia udržala pod 10 k ohm.

Aby som to zjednodušil, vytvoril som tabuľku, ktorá automatizuje výpočty v prípade, že chcete použiť rôzne hodnoty odporu: Odkaz na Tabuľku Google

Tu je kód, ktorý som použil pre tento projekt:

#zahrnúť

#include U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (otáčanie, [reset]) plávajúce napätie = 0; // slúži na ukladanie hodnoty napätia float Radjust = 0,043459459; // činiteľ deliča napätia (R2 /R1+R2) float vbat = 0; // konečné napätie po výpočtoch- napätie plaváka batérie Vref = 4,113; // Referencia napätia - nameraná skutočná hodnota. Nominálna hodnota 4,096v const int numReadings = 50; // počet vzoriek čítania - zvýšenie pre ďalšie vyhladenie. Znížením dosiahnete rýchlejšie čítanie. int čítania [numReadings]; // hodnoty z analógového vstupu int readIndex = 0; // index aktuálneho čítania bez znamienka dlhý súčet = 0; // priebežný súčet int average = 0; // premenné na obnovenie obrazovky bez použitia oneskorenia bez znamienka dlhé previousMillis = 0; // uloží sa pri poslednej aktualizácii obrazovky // konštanty sa nezmenia: const dlhý interval = 50; // interval, v ktorom sa obnoví obrazovka (milisekundy) void setup (void) {analogReference (EXTERNAL); // použite AREF pre referenčné napätie 4,096. Moje referenčné skutočné napätie je 4,113v u8g2.begin (); for (int thisReading = 0; thisReading = numReadings) {// … zaokrúhlite na začiatok: readIndex = 0; } // vypočítať priemer: priemer = (celkom / početČítaní); napätie = priemer * (Vref / 1023,0); //4.113 je Vref vbat = napätie/Radjust; // Nastavenie oneskorenia obnovenia obrazovky pomocou Millis if (currentMillis - previousMillis> = interval) {// uloženie poslednej aktualizácie obrazovky previousMillis = currentMillis; u8g2.clearBuffer (); // vymazanie internej menory // zobrazenie napatia balenia u8g2.setFont (u8g2_font_fub20_tr); // 20px font u8g2.setCursor (1, 20); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // 10 px font u8g2.setCursor (76, 20); u8g2.print („volty“); u8g2.setCursor (1, 40); u8g2.print („CanadianWinters“); u8g2.setCursor (1, 60); u8g2.print („Presné napätie“); } u8g2.sendBuffer (); // prenos internej pamäte na oneskorenie zobrazenia (1); }

Upozorňujeme, že som trochu hrdzavý s kódovaním Arduino, takže ak nájdete akúkoľvek chybu alebo spôsob, ako vylepšiť kód, som otvorený návrhom:)

Krok 3: Vyskúšajme to

Vyskúšame to!
Vyskúšame to!
Vyskúšame to!
Vyskúšame to!
Vyskúšame to!
Vyskúšame to!

Na testovanie tohto voltmetra som použil 8x 9v batérie, ktoré som dostal v miestnom obchode. Plánujem použiť tento voltmetr na meranie napätia na batériách mojich elektrických bicyklov (majú napätie od 24 do 60 V s príležitostnými 72 V).

Akonáhle je elektronika zabalená do dosky plošných spojov a malej škatule, bude to pekný a prenosný merač batériových zdrojov. Grafiku a písma na OLED je možné prispôsobiť tak, aby vyhovovali vašim potrebám (napr. Väčšie písmo pre ľahké čítanie).

Mojím cieľom bolo odčítať napätie na merači Oled/Arduino nie príliš ďaleko od môjho digitálneho multimetra. Mieril som na +/- 0, 3v max delta. Ako vidíte z videa, podarilo sa mi to archivovať okrem horného konca meraní.

Dúfam, že sa vám tento návod páčil a dajte mi vedieť svoje myšlienky!

Odporúča: