Sadržaj:

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

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

Video: Arduino precizni i tačni voltmetar (0-90V DC): 3 koraka
Video: THE BEST Multimeter tutorial (HD) 2024, Juli
Anonim

U ovom uputstvu sam izgradio voltmetar za mjerenje visokog napona DC (0-90v) sa relativnom preciznošću i tač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). Ovo 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.

Supplies

1 x Arduino Nano - veza

1 x Oled ekran (SSD 1306) - veza

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

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

1 x 1/4W 1% otpornici - 10 k ohm - veza

1 x 4.096v LM4040DIZ -4.1 Referenca napona - veza

Oglasna ploča i žice - veza

Astro AI DM6000AR - Link

USB Power Bank - veza

9V baterije - veza

CanadianWinters je učesnik programa Amazon Services LLC Associates, programa za oglašavanje partnera koji je osmišljen kako bi web lokacijama omogućio zaradu putem povezivanja na Amazon.com i pridružene web stranice. Korištenjem ovih veza, kao Amazon saradnik, zarađujem od kvalificiranih kupovina, č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.

Slijedeći tablicu s podacima, odabrao sam otpornik od 1K ohma za referentni napon, iako se mogla koristiti druga vrijednost. Referentni napon se napaja sa Nano 5v pina.

Ideja kola 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 su odabrane prema preporuci (ako se ne varam, ovo je na Arduino/Atmega podatkovnom listu) da impedancija bude ispod 10 k ohma.

Da pojednostavim stvari, napravio sam proračunsku tablicu koja automatizira proračune u slučaju da želite koristiti različite vrijednosti otpornika: Veza do Google tablice

Evo koda koji sam koristio za ovaj projekat:

#include

#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 akumulatora Vref = 4.113; // Referenca napona - izmjerena stvarna vrijednost. Nominalna vrijednost 4.096v const int numReadings = 50; // broj uzoraka za čitanje - povećanje radi boljeg ujednačavanja. Umanji za brže čitanje. int očitanja [numReadings]; // očitavanja sa analognog ulaza int readIndex = 0; // indeks trenutnog očitanja unsigned long total = 0; // tekući ukupni int prosjek = 0; // varijable za osvježavanje ekrana bez upotrebe kašnjenja unsigned long previousMillis = 0; // pohranit će se zadnji put kada je ekran ažuriran // konstante se neće promijeniti: const long interval = 50; // interval u kojem se osvježava ekran (u milisekundama) void setup (void) {analogReference (EXTERNAL); // koristite 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čunaj prosjek: average = (total / numReadings); napon = prosjek * (Vref / 1023,0); //4.113 je Vref vbat = napon/Radjust; // Postavljanje kašnjenja za osvježavanje ekrana pomoću Millisa if (currentMillis - previousMillis> = interval) {// spremanje posljednjeg ažuriranja ekrana previousMillis = currentMillis; u8g2.clearBuffer (); // brisanje unutarnjeg izbornika // Prikaz napona paketa u8g2.setFont (u8g2_font_fub20_tr); // 20px font u8g2.setCursor (1, 20); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // font od 10 px u8g2.setCursor (76, 20); u8g2.print ("Volti"); u8g2.setCursor (1, 40); u8g2.print ("CanadianWinters '"); u8g2.setCursor (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 grešku ili način da poboljšate kôd, otvoren sam za prijedloge:)

Korak 3: Hajde da testiramo

Hajde da ga isprobamo!
Hajde da ga isprobamo!
Hajde da ga isprobamo!
Hajde da ga isprobamo!
Hajde da ga isprobamo!
Hajde da ga isprobamo!

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 upakuje u štampanu ploču i malu kutiju, ovo će biti lijepo i prenosivo mjerilo 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 Oled/Arduino mjeraču 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čuje se: