- Materiale necesare
- Diagrama circuitului
- Unitate de măsurare
- Unitate de calcul și afișare
- Programarea Arduino
- Cum se măsoară cu mai multă acuratețe?
- Lucrul și testarea
Ca ingineri electronici, depindem întotdeauna de contoare / instrumente pentru a măsura și analiza funcționarea unui circuit. Începând cu un multimetru simplu până la un analizor complex de calitate a energiei sau DSO, totul are propriile aplicații unice. Majoritatea acestor contoare sunt ușor disponibile și pot fi achiziționate pe baza parametrilor care trebuie măsurați și a preciziei lor. Dar uneori am putea ajunge într-o situație în care trebuie să ne construim propriile contoare. Spuneți, de exemplu, că lucrați la un proiect solar fotovoltaic și doriți să calculați consumul de energie al încărcării dvs., în astfel de scenarii ne putem construi propriul wattmetru folosind o platformă simplă de microcontroler precum Arduino.
Construirea propriilor contoare nu numai că reduce costurile testării, ci ne oferă și spațiu pentru a ușura procesul de testare. La fel, un wattmetru construit folosind Arduino poate fi modificat cu ușurință pentru a monitoriza rezultatele pe monitorul serial și pentru a grafica un grafic pe plotterul serial sau pentru a adăuga un card SD pentru a înregistra automat valorile tensiunii, curentului și puterii la intervale predefinite. Sună interesant nu !? Deci sa începem…
Materiale necesare
- Arduino Nano
- LM358 Op-Amp
- 7805 Regulator de tensiune
- Afisaj LCD 16 * 2
- Rezistor de șunt de 0,22 ohm 2Watt
- Oală de tuns 10k
- Rezistoare 10k, 20k, 2.2k, 1k
- Condensatori 0.1uF
- Testarea încărcării
- Panou de perfecționare sau panou de măsurare
- Set de lipit (opțional)
Diagrama circuitului
Schema completă a circuitului proiectului arduino wattmetru este prezentată mai jos.
Pentru o mai ușoară înțelegere, circuitul wattmetrului arduino este împărțit în două unități. Partea superioară a circuitului este unitatea de măsurare, iar partea inferioară a circuitului este unitatea de calcul și afișare. Pentru persoanele care sunt noi la acest tip de circuite au urmat etichetele. Exemplul + 5V este etichetă, ceea ce înseamnă că toți pinii la care este conectată eticheta ar trebui să fie considerați așa cum sunt conectați împreună. Etichetele sunt utilizate în mod normal pentru a face schema circuitului să arate îngrijită.
Circuitul este conceput pentru a se potrivi în sisteme care funcționează între 0-24V cu un domeniu de curent de 0-1A ținând cont de specificațiile unui Solar PV. Dar puteți extinde cu ușurință gama după ce înțelegeți funcționarea circuitului. Principiul de bază din spatele circuitului este de a măsura tensiunea pe sarcină și curentul prin el pentru a calcula puterea consumată de acesta. Toate valorile măsurate vor fi afișate pe un ecran LCD alfanumeric de 16 * 2.
Mai jos vom împărți circuitul în segmente mici, astfel încât să putem obține o imagine clară a modului în care circuitul este indentat să funcționeze.
Unitate de măsurare
Unitatea de măsurare constă dintr-un divizor de potențial care ne ajută să măsurăm tensiunea și un rezistor de închidere cu un amplificator opțional fără inversare este folosit pentru a ne ajuta să măsurăm curentul prin circuit. Partea divizorului potențial din circuitul de mai sus este prezentată mai jos
Aici tensiunea de intrare este reprezentată de Vcc, așa cum am spus mai devreme, proiectăm circuitul pentru o gamă de tensiune de la 0V la 24V. Dar un microcontroler precum Arduino nu poate măsura valori de tensiune atât de mari; poate măsura doar tensiunea de la 0-5V. Deci, trebuie să mapăm (să convertim) intervalul de tensiune de la 0-24V la 0-5V. Acest lucru se poate face cu ușurință utilizând un circuit divizor de potențial așa cum se arată mai jos. Rezistorul 10k și 2.2k formează împreună circuitul divizor de potențial. Tensiunea de ieșire a unui divizor de potențial poate fi calculată folosind formulele de mai jos. Același lucru va fi folosit pentru a decide valoarea rezistențelor dvs., puteți utiliza calculatorul nostru online pentru a calcula valoarea rezistorului dacă proiectați din nou circuitul.
Vout = (Vin × R2) / (R1 + R2)
0-5V mapat poate fi obținut din partea de mijloc care este etichetată ca tensiune. Această tensiune mapată poate fi alimentată ulterior către pinul Arduino Analog.
Apoi trebuie să măsurăm curentul prin LOAD. După cum știm, microcontrolerele pot citi numai tensiunea analogică, deci trebuie să convertim cumva valoarea curentului în tensiune. Se poate face prin simpla adăugare a unei rezistențe (rezistență de șunt) în cale, care, conform legii lui Ohm, va scădea o valoare a tensiunii peste ea, care este proporțională cu curentul care curge prin ea. Valoarea acestei căderi de tensiune va fi foarte mică, așa că folosim un amplificator op pentru a o amplifica. Circuitul pentru același lucru este prezentat mai jos
Aici valoarea rezistenței de șunt (SR1) este de 0,22 Ohmi. Așa cum am spus mai devreme, proiectăm circuitul pentru 0-1A, astfel încât, pe baza legii lui Ohms, putem calcula căderea de tensiune pe acest rezistor, care va fi în jur de 0,2V atunci când un curent maxim de 1A trece prin sarcină. Această tensiune este foarte mică pentru citirea unui microcontroler, folosim un Op-Amp în modul Amplificator fără inversare pentru a crește tensiunea de la 0,2V la un nivel mai mare pentru ca Arduino să citească.
Op-Amp în modul fără inversare este prezentat mai sus. Amplificatorul este proiectat pentru a avea un câștig de 21, astfel încât 0,2 * 21 = 4,2V. Formulele pentru calcularea câștigului amplificatorului de operare sunt date mai jos, puteți utiliza și acest calculator de câștig online pentru a obține valoarea rezistorului dvs. dacă proiectați din nou circuitul.
Câștig = Vout / Vin = 1 + (Rf / Rin)
Aici, în cazul nostru, valoarea lui Rf este de 20k, iar valoarea lui Rin este de 1k, ceea ce ne oferă o valoare giană de 21. Tensiunea amplificată din amplificatorul Op este apoi dată unui filtru RC cu rezistor 1k și un condensator de 0.1uF la filtrează orice zgomot care este cuplat. În cele din urmă, tensiunea este apoi alimentată la pinul analogic Arduino.
Ultima parte care rămâne în unitatea de măsurare este partea regulatorului de tensiune. Deoarece vom oferi o tensiune de intrare variabilă, avem nevoie de un reglat + 5V volt pentru ca Arduino și Op-amp să funcționeze. Această tensiune reglată va fi furnizată de regulatorul de tensiune 7805. La ieșire se adaugă un condensator pentru a filtra zgomotul.
Unitate de calcul și afișare
În unitatea de măsurare am proiectat circuitul pentru a converti parametrii de tensiune și curent în 0-5V care pot fi alimentați la pinii Arduino Analog. Acum, în această parte a circuitului, vom conecta aceste semnale de tensiune la Arduino și, de asemenea, vom interfața un afișaj alfanumeric 16 × 2 la Arduino, astfel încât să putem vizualiza rezultatele. Circuitul pentru același lucru este prezentat mai jos
După cum puteți vedea, pinul de tensiune este conectat la pinul analogic A3, iar pinul curent este conectat la pinul analogic A4. LCD-ul este alimentat de la + 5V de la 7805 și este conectat la pinii digitali ai Arduino pentru a funcționa în modul pe 4 biți. De asemenea, am folosit un potențiometru (10k) conectat la pinul Con pentru a varia contrastul LCD-ului.
Programarea Arduino
Acum, că avem o bună înțelegere a hardware-ului, permiteți-ne să deschidem Arduino și să începem programarea. Scopul codului este de a citi tensiunea analogică pe pinii A3 și A4 și de a calcula valoarea tensiunii, curentului și puterii și, în cele din urmă, să o afișeze pe ecranul LCD. Programul complet pentru a face același lucru este dat la sfârșitul paginii, care poate fi folosit ca atare pentru hardware-ul discutat mai sus. Mai departe, codul este împărțit în fragmente mici și explicat.
Ca toate programele, începem, definind pinii pe care i-am folosit. În proiectul extern pinii A3 și A4 sunt utilizați pentru a măsura tensiunea și respectiv curentul, iar pinii digitali 3,4,8,9,10 și 11 sunt utilizați pentru interfața LCD-ului cu Arduino
int Read_Voltage = A3; int Read_Current = A4; const int rs = 3, en = 4, d4 = 8, d5 = 9, d6 = 10, d7 = 11; // Menționați numărul pinului pentru conexiunea LCD LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
De asemenea, am inclus un fișier antet numit cristal lichid pentru a interfața LCD-ul cu Arduino. Apoi, în interiorul funcției de configurare, inițializăm afișajul LCD și afișăm un text introductiv ca „Arduino Wattmeter” și așteptăm două secunde înainte de a-l șterge. Codul pentru același lucru este prezentat mai jos.
void setup () { lcd.begin (16, 2); // Inițializați 16 * 2 LCD lprint.print ("Arduino Wattmeter"); // Intro Mesaj linia 1 lcd.setCursor (0, 1); lcd.print ("- Circuitdigest"); // Intro mesaj linie 2 întârziere (2000); lcd.clear (); }
În interiorul funcției buclei principale, folosim funcția de citire analogică pentru a citi valoarea tensiunii de la pinii A3 și A4. După cum știm, valoarea de ieșire Arduino ADC de la 0-1203, deoarece are un ADC de 10 biți. Această valoare trebuie apoi convertită la 0-5V, ceea ce se poate face prin înmulțirea cu (5/1023). Apoi, din nou mai devreme, în hardware, am mapat valoarea reală a tensiunii de la 0-24V la 0-5V și valoarea reală a formei curente 0-1A la 0-5V. Deci, acum trebuie să folosim un multiplicator pentru a readuce aceste valori la valoarea reală. Acest lucru se poate face prin multiplicarea acestuia cu o valoare multiplicatoare. Valoarea multiplicatorului poate fi calculată teoretic folosind formulele furnizate în secțiunea hardware sau dacă aveți un set cunoscut de valori de tensiune și curent, îl puteți calcula practic.Am urmat ultima variantă, deoarece tinde să fie mai precisă în timp real. Deci aici valoarea multiplicatorilor este 6,46 și 0,239. Prin urmare, codul arată ca mai jos
float Voltage_Value = analogRead (Read_Voltage); float Current_Value = analogRead (Read_Current); Voltage_Value = Voltage_Value * (5.0 / 1023.0) * 6,46; Current_Value = Current_Value * (5.0 / 1023.0) * 0.239;
Cum se măsoară cu mai multă acuratețe?
Modul de mai sus de a calcula valoarea tensiunii reale și a curentului va funcționa foarte bine. Dar suferă de un dezavantaj, adică relația dintre tensiunea ADC măsurată și tensiunea reală nu va fi liniară, prin urmare, un singur multiplicator nu va da rezultate foarte precise, la fel și pentru curent.
Deci, pentru a îmbunătăți acuratețea, putem trasa un set de valori ADC măsurate cu valori reale folosind un set de valori cunoscut și apoi folosim acele date pentru a trasa un grafic și pentru a obține ecuația multiplicatorului folosind metoda de regresie liniară. Puteți consulta contorul Arduino dB în care am folosit o metodă similară.
În cele din urmă, odată ce am calculat valoarea tensiunii reale și a curentului real prin sarcină, putem calcula puterea folosind formulele (P = V * I). Apoi afișăm toate cele trei valori pe ecranul LCD folosind codul de mai jos.
lcd.setCursor (0, 0); lcd.print ("V ="); lcd.print (Voltage_Value); lcd.print (""); lcd.print ("I ="); lcd.print (Valoare_Curentă); float Power_Value = Voltage_Value * Current_Value; lcd.setCursor (0, 1); lcd.print ("Putere ="); lcd.print (Power_Value);
Lucrul și testarea
De dragul tutorialului am folosit o placă de perfecționare pentru a lipi toate componentele așa cum se arată în circuit. Am folosit un terminal cu șurub Phoenix pentru a conecta sarcina și Jack normal cu butoi DC pentru a conecta sursa mea de alimentare. Placa Arduino Nano și ecranul LCD sunt montate pe un Bergstik feminin, astfel încât să poată fi refolosite dacă este necesar ulterior.
După ce ați pregătit hardware-ul, încărcați codul Arduino pe placa dvs. Nano. Reglați potul de tundere pentru a controla nivelul de contrast al ecranului LCD până când vedeți un text introductiv clar. Pentru a testa placa, conectați sarcina la conectorul terminalului cu șurub și sursa la mufa Barrel. Tensiunea sursei ar trebui să fie mai mare de 6V pentru ca acest proiect să funcționeze, deoarece Arduino a necesitat + 5V pentru a funcționa. DACĂ totul funcționează bine, ar trebui să vedeți valoarea tensiunii peste sarcină și curentul prin aceasta afișate în prima linie a ecranului LCD și puterea calculată afișată pe a doua linie a ecranului LCD, așa cum se arată mai jos.
Partea distractivă a construirii a ceva constă în testarea acestuia pentru a verifica cât de mult va funcționa corect. Pentru a face acest lucru, am folosit 12V ca indicatori auto pentru încărcare și RPS ca sursă. Deoarece RPS în sine poate măsura și afișa valoarea curentului și tensiunii, ne va fi ușor să verificăm exactitatea și performanța circuitului nostru. Și da, mi-am folosit și RPS-ul pentru a-mi calibra valoarea multiplicatorului, astfel încât să ajung aproape de valoarea exactă.
Lucrarea completă poate fi găsită la videoclipul prezentat la sfârșitul acestei pagini. Sper că ați înțeles circuitul și programul și ați învățat ceva util. Dacă aveți vreo problemă în a face acest lucru, postați-l în secțiunea de comentarii de mai jos sau scrieți pe forumurile noastre pentru mai mult ajutor tehnic.
Acest proiect Wattmeter bazat pe Arduino are multe mai multe actualizări care pot fi adăugate pentru a crește performanța la înregistrarea automată a datelor, graficarea graficului, notificarea de supratensiune sau de situații curente etc.