Cuprins:

Arduino Volt Meter (0-100V DC) - Versiunea 2 (mai bună): 3 pași
Arduino Volt Meter (0-100V DC) - Versiunea 2 (mai bună): 3 pași

Video: Arduino Volt Meter (0-100V DC) - Versiunea 2 (mai bună): 3 pași

Video: Arduino Volt Meter (0-100V DC) - Versiunea 2 (mai bună): 3 pași
Video: Cum se măsoară orice tensiune continuă cu Arduino ARDVC-01 2024, Noiembrie
Anonim
Image
Image
Pasul 1: schemele
Pasul 1: schemele

În acest instructable, am construit un voltmetru pentru a măsura tensiuni ridicate DC (0-100v) cu o precizie relativă și precizie folosind un Arduino Nano și un ADS 1115 ADC.

Aceasta este a doua versiune a voltmetrului folosit aici anterior instructabil:

Măsurătorile de testare pe care le-am făcut au fost exacte, mai ales la 0,1v de tensiunea reală măsurată cu un voltmetru standard (am folosit un Astro AI DM6000AR).

Acest lucru este mult mai bun și mai ușor în opinia mea decât utilizarea unei referințe de tensiune externă pe Arduino.

Provizii

1 x Arduino Nano - Link

1 x Afișaj Oled (SSD 1306) - Link

1 x ADS 1115 - ADC pe 16 biți - Link

1 x 1 / 4W (sugerez totuși utilizarea rezistențelor de 1W) Rezistențe 1% - 220k ohm - Link

1 x 1 / 4W (sugerez totuși utilizarea rezistențelor de 1W) Rezistențe 1% - 10k ohm - Link

Plăci și fire - Link

Astro AI DM6000AR - Link

USB Power Bank - Link

Baterii de 9V - Link

CanadianWinters este participant la Programul Asociaților Amazon Services LLC, un program de publicitate afiliat conceput pentru a oferi site-urilor un mijloc de a câștiga taxe prin conectarea la Amazon.com și site-uri afiliate. Prin utilizarea acestor link-uri, în calitate de asociat Amazon câștig din achiziții eligibile, chiar dacă cumpărați altceva - și nu vă va costa nimic.

Pasul 1: Pasul 1: schemele

Pasul 1: schemele
Pasul 1: schemele

Am conectat toate piesele conform schemelor de mai sus.

Am legat pinul ADDR al ADC1115 la sol. Aceasta setează adresa ADC la 0x48.

Pasul 2: Pasul 2: calculele codului și rezistenței

Pasul 2: calculul codului și rezistenței
Pasul 2: calculul codului și rezistenței

Ca și în instrucțiunile anterioare, ideea circuitului este că tensiunea continuă care trebuie măsurată trece printr-un rezistor de tensiune. Tensiunea scalată și apoi intră în pinul analogic al convertorului ADC pentru a fi citită, apoi trecută către Arduino prin I2C și apoi redimensionată și afișată pe afișajul OLed.

Nu am folosit nicio medie sau netezire în cod în acest caz, deoarece citirile par destul de precise și precise. Pentru a reduce zgomotul, poate doriți să adăugați un condensator mic între A0 (pe ADC) și masă. Totuși, nu a fost necesar pentru testul meu.

Un lucru pe care l-am observat a fost un pic de zgomot când nu era atașată bateria (0 volți). Am folosit monitorul serial al Arduino pentru a afișa valoarea ADC și pentru a o corecta / regla prin cod.

La fel ca în instructajul anterior, am realizat o foaie de calcul care automatizează calculele în cazul în care doriți să utilizați diferite valori ale rezistorului în divizorul de tensiune: Link către foaia Google

Iată codul pe care l-am folosit pentru acest proiect:

#include

#include #include #include anunțuri Adafruit_ADS1115 (0x48); // Adresa ADC U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (rotație, [resetare]) int calib = 7; // Valoarea calibrării ADS1115 pentru a reduce tensiunea de plutire de eroare = 0; // folosit pentru a stoca valoarea tensiunii float Radjust = 0,043421905; // Factor divizor de tensiune (R2 / R1 + R2) floare vbat = 0; // tensiunea finală după calcuri- tensiunea bateriei // variabile pentru reîmprospătarea ecranului fără utilizarea întârzierii nesemnate mult timp anterior Millis = 0; // va stoca ultima dată când ecranul a fost reîmprospătat // constantele nu se vor schimba: const long interval = 250; // interval la care să reîmprospătați ecranul (milisecunde) void setup (void) {Serial.begin (9600); u8g2.begin (); ads.begin (); } void loop (void) {int16_t adc0; // 16 biți ADC citit de intrare A0 adc0 = ads.readADC_SingleEnded (0); tensiune = ((adc0 + calib) * 0,1875) / 1000; curent lung nesemnat Millis = millis (); vbat = tensiune / Radjust; // Evitați afișarea tensiunii negative atunci când bateria este deconectată dacă (vbat = interval) {previousMillis = currentMillis; u8g2.clearBuffer (); // ștergeți meniul intern // Afișare tensiune pachet - Fonturi pe această pagină: https://github.com/olikraus/u8g2/wiki/fntlistall //u8g2.setFont(u8g2_font_fub20_tr); // font 20px u8g2.setFont (u8g2_font_fub35_tr); // font 35px u8g2.setCursor (1, 42); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // font 10 px u8g2.setCursor (1, 60); u8g2.print („Volți”); } u8g2.sendBuffer (); // transferați memoria internă la întârzierea afișajului (1); }

Pasul 3: Pasul 3: Să testăm

Pasul 3: Să-l testăm!
Pasul 3: Să-l testăm!

Pentru a testa acest voltmetru am folosit baterii de 10x 9v pe care le-am obținut la un magazin local. De data aceasta am putut măsura până la 97 de volți! Plănuiesc să folosesc acest voltmetru pentru a măsura tensiunea de pe pachetele de baterii ale bicicletelor mele electrice (au tensiuni cuprinse între 24-60v cu cele ocazionale de 72v).

Odată ce dispozitivele electronice sunt ambalate într-un pcb și o cutie mică, acest lucru va face un contor de baterii frumos și portabil. Grafica și fonturile de pe OLED pot fi personalizate pentru a se potrivi nevoilor dvs. (de exemplu, font mai mare pentru o citire ușoară). Scopul meu a fost să citesc tensiunea pe contorul Oled / Arduino nu prea departe de multimetrul meu digital. Îmi propuneam +/- 0, 3v max delta.

După cum puteți vedea din videoclipul de la începutul Instructable, am putut arhiva acest lucru! Cele mai multe lecturi au fost la fața locului!

Sper că ți-a plăcut acest Instructable și să-mi spui gândurile!

Recomandat: