Sadržaj:

Arduino precizni i točni voltmetar (0-90V DC): 3 koraka
Arduino precizni i točni voltmetar (0-90V DC): 3 koraka

Video: Arduino precizni i točni voltmetar (0-90V DC): 3 koraka

Video: Arduino precizni i točni voltmetar (0-90V DC): 3 koraka
Video: How to use TP5100 2A 8.4/4.2V 1S and 2S Lithium Battery Charger DIY 2024, Srpanj
Anonim

U ovoj instrukciji sam izgradio voltmetar za mjerenje visokog napona DC (0-90v) s relativnom preciznošću i točnošću koristeći Arduino Nano.

Testna mjerenja koja sam obavila bila su dovoljno točna, uglavnom unutar 0,3v od stvarnog napona izmjerenog standardnim voltmetrom (koristio sam Astro AI DM6000AR). To je dovoljno blizu za namjeravanu upotrebu uređaja.

Za arhiviranje sam upotrijebio referentnu vrijednost napona (4.096v) i razdjelnik napona.

Sa strane koda, naravno, koristio sam opciju "vanjske reference" za Arduino Nano i primjer "Smoothing" u Arduino vodičima.

Pribor

1 x Arduino Nano - veza

1 x Oled zaslon (SSD 1306) - veza

1 x 1/4W 1% otpornika - 1 k ohm - veza

1 x 1/4W 1% otpornici - 220 k ohm - Veza

1 x 1/4W 1% otpornika - 10 k ohma - veza

1 x 4.096v LM4040DIZ -4.1 Referenca napona - veza

Oglasna ploča i žice - veza

Astro AI DM6000AR - veza

USB Power Bank - veza

9V baterije - veza

CanadianWinters sudionik je programa Amazon Services LLC Associates Program, programa za oglašavanje povezanih osoba osmišljen kako bi web stranicama omogućio zaradu povezivanjem na Amazon.com i pridružena web mjesta. Korištenjem ovih veza, kao suradnik Amazona, zarađujem od kvalificiranih kupnji, čak i ako kupite nešto drugo-i to vas neće ništa koštati.

Korak 1: Sheme

Sheme
Sheme
Sheme
Sheme

Spojio sam sve dijelove prema gornjoj shemi. Konkretno, odabrao sam referentnu vrijednost napona 4.096 da ostane što je moguće bliže oznaci 5v kako bih izbjegao gubitak rezolucije.

Slijedom podatkovnog lista, za referentni napon odabrao sam otpornik od 1K ohma, iako se mogla koristiti druga vrijednost. Referentni napon napaja se iz Nano 5v pina.

Ideja kruga je da istosmjerni napon koji se mjeri prolazi kroz naponski otpornik. Skalirani napon zatim ulazi u analogni pin Arduina radi uzorkovanja, zaglađivanja, ponovnog skaliranja i prikaza na OLed zaslonu.

Pokušao sam pojednostaviti stvari:)

Korak 2: Izračun koda i otpornika

Vrijednosti otpornika odabrane su prema preporuci (ako se ne varam, ovo je na Arduino/Atmega podatkovnom listu) kako bi impedancija bila ispod 10 k ohma.

Da bih pojednostavio stvari, napravio sam proračunsku tablicu koja automatizira izračune u slučaju da želite koristiti različite vrijednosti otpornika: Veza na Google tablicu

Evo koda koji sam koristio za ovaj projekt:

#uključi

#include U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (rotacija, [reset]) plivajući napon = 0; // koristi se za spremanje vrijednosti napona plovak Radjust = 0,043459459; // Faktor razdjelnika napona (R2 /R1+R2) plovak vbat = 0; // konačni napon nakon kalcija- napon plovka baterije Vref = 4.113; // Referenca napona - izmjerena stvarna vrijednost. Nominalna vrijednost 4.096v const int numReadings = 50; // broj uzoraka za čitanje - povećanje radi boljeg zaglađivanja. Umanji za brže čitanje. int očitanja [numReadings]; // očitanja s analognog ulaza int readIndex = 0; // indeks trenutnog očitanja unsigned long total = 0; // tekući ukupni int prosjek = 0; // varijable za osvježavanje zaslona bez korištenja kašnjenja unsigned long previousMillis = 0; // pohranit će se zadnji put kad je zaslon ažuriran // konstante se neće promijeniti: const long interval = 50; // interval u kojem se osvježava zaslon (u milisekundama) void setup (void) {analogReference (EXTERNAL); // upotrijebite AREF za referentni napon 4.096. Moj referentni stvarni napon je 4.113v u8g2.begin (); for (int thisReading = 0; thisReading = numReadings) {//… premotavanje na početak: readIndex = 0; } // izračunati prosjek: average = (total / numReadings); napon = prosjek * (Vref / 1023,0); //4.113 je Vref vbat = napon/Radjust; // Postavljanje kašnjenja za osvježavanje zaslona pomoću Millisa if (currentMillis - previousMillis> = interval) {// spremanje posljednjeg ažuriranja zaslona previousMillis = currentMillis; u8g2.clearBuffer (); // brisanje unutarnjeg izbornika // Pack Voltage display u8g2.setFont (u8g2_font_fub20_tr); // font 20px u8g2.setCursor (1, 20); u8g2.tisak (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // font od 10 px u8g2.setCursor (76, 20); u8g2.print ("Volti"); u8g2.setKursor (1, 40); u8g2.print ("CanadianWinters '"); u8g2.setKursor (1, 60); u8g2.print ("Precizan napon"); } u8g2.sendBuffer (); // prijenos interne memorije na kašnjenje prikaza (1); }

Imajte na umu da sam pomalo zahrđao s Arduino kodiranjem, pa ako pronađete bilo kakvu pogrešku ili način za poboljšanje koda, otvoren sam za prijedloge:)

Korak 3: Isprobajmo

Isprobajmo!
Isprobajmo!
Isprobajmo!
Isprobajmo!
Isprobajmo!
Isprobajmo!

Za testiranje ovog voltmetra koristio sam 8x 9v baterije koje sam nabavio u lokalnoj trgovini. Planiram koristiti ovaj voltmetar za mjerenje napona na baterijama električnih bicikala (imaju napone u rasponu od 24-60v s povremenim 72v).

Nakon što se elektronika zapakira u tiskanu ploču i malu kutiju, ovo će biti lijepo i prijenosno mjerač baterije. Grafika i fontovi na OLED -u mogu se prilagoditi vašim potrebama (npr. Veći font za lakše čitanje).

Moj cilj je bio očitavanje napona na mjeraču Oled/Arduino nedaleko od mog digitalnog multimetra. Ciljao sam na +/- 0, 3v max deltu. Kao što možete vidjeti iz videa, uspio sam to arhivirati osim na gornjem kraju mjerenja.

Nadam se da vam se svidio ovaj Instructable i javite mi svoja razmišljanja!

Preporučeni: