- Potrebni materiali
- Shema vezja
- Merilna enota
- Računska in prikazovalna enota
- Programiranje Arduina
- Kako izmeriti z večjo natančnostjo?
- Delo in preizkušanje
Kot elektronski inženirji smo za merjenje in analizo delovanja vezja vedno odvisni od števcev / instrumentov. Začenši s preprostim multimetrom do kompleksnih analizatorjev kakovosti električne energije ali sistemov distribucije omrežij, ima vse svoje edinstvene aplikacije. Večina teh števcev je na voljo in jih je mogoče kupiti na podlagi parametrov, ki jih je treba izmeriti, in njihove natančnosti. Toda včasih lahko pridemo v situacijo, ko moramo zgraditi lastne števce. Recimo, da na primer delate na solarnem PV projektu in bi radi izračunali porabo energije svoje obremenitve, v takih scenarijih lahko z uporabo preproste mikrokrmilniške platforme, kot je Arduino, izdelamo svoj vatmeter.
Izdelava lastnih števcev ne samo, da zniža stroške testiranja, ampak nam daje tudi prostor za lažji postopek testiranja. Tako lahko vatmeter, zgrajen z uporabo Arduina, enostavno prilagodite za spremljanje rezultatov na serijskem monitorju in risanje grafa na serijski risalnik ali dodajanje kartice SD za samodejno beleženje vrednosti napetosti, toka in moči v vnaprej določenih intervalih. Sliši se zanimivo, kajne !? Začnimo torej…
Potrebni materiali
- Arduino Nano
- LM358 Op
- 7805 Napetostni regulator
- 16 * 2 LCD zaslon
- 0,22 ohmski uporni upor 2W
- 10k lonec za obrezovanje
- 10k, 20k, 2,2k, 1k upori
- 0,1uF kondenzatorji
- Preskusna obremenitev
- Perf deska ali plošča
- Komplet za spajkanje (neobvezno)
Shema vezja
Popoln diagram vezja projekta arduino vatmetra je podan spodaj.
Za lažje razumevanje je vezje arduino vatmetra razdeljeno na dve enoti. Zgornji del vezja je merilna enota, spodnji del vezja pa je računska in prikazovalna enota. Za ljudi, ki so tovrstna vezja nova, so sledili oznakam. Primer + 5V je nalepka, kar pomeni, da je treba upoštevati vse zatiče, na katere je nalepka povezana, saj so povezani skupaj. Oznake se običajno uporabljajo za to, da je vezje videti lepo.
Vezje je zasnovano tako, da se prilega sistemom, ki delujejo med 0-24V in trenutnim območjem 0-1A, pri čemer je treba upoštevati specifikacije sončne PV. Ko pa razumete delovanje vezja, lahko območje enostavno razširite. Temeljno načelo, ki stoji za vezjem, je merjenje napetosti na obremenitvi in toka skozi to, da se izračuna porabljena moč. Vse izmerjene vrednosti bodo prikazane na 16 * 2 alfanumeričnem LCD-prikazovalniku.
Nadalje spodaj razdelimo vezje na majhne segmente, da bomo lahko dobili jasno sliko o tem, kako vezje deluje zamaknjeno.
Merilna enota
Merilna enota je sestavljena iz potencialnega delilnika, ki nam pomaga izmeriti napetost, in zaporni upor z neinvertirajočim opcijskim ojačevalnikom se uporablja za merjenje toka skozi vezje. Del potencialnega delilnika iz zgornjega vezja je prikazan spodaj
Tu vhodno napetost predstavlja Vcc, kot smo že povedali, načrtujemo vezje za napetostno območje od 0V do 24V. Toda mikrokrmilnik, kot je Arduino, ne more izmeriti tako visokih vrednosti napetosti; lahko meri le napetost od 0-5V. Torej moramo preslikati (pretvoriti) napetostno območje od 0-24V do 0-5V. To lahko enostavno storite z uporabo potencialnega delilnega vezja, kot je prikazano spodaj. Upor 10k in 2.2k skupaj tvorita potencialno delilno vezje. Izhodno napetost delilnika potenciala lahko izračunamo po spodnjih formulah. Na enak način lahko določite vrednost uporov. Z našim spletnim kalkulatorjem lahko izračunate vrednost upora, če preoblikujete vezje.
Vout = (Vin × R2) / (R1 + R2)
Kartirano 0-5V lahko dobite iz srednjega dela, ki je označen kot napetost. To preslikano napetost lahko nato napajate na analogni pin Arduino pozneje.
Nato moramo izmeriti tok skozi obremenitev. Kot vemo, lahko mikrokrmilniki berejo samo analogno napetost, zato moramo nekako spremeniti vrednost toka v napetost. To lahko storite tako, da na pot preprosto dodate upor (ranžirni upor), ki bo po Ohmovem zakonu spustil vrednost napetosti, ki je sorazmerna s tokom, ki teče skozi njega. Vrednost tega padca napetosti bo zelo manjša, zato za ojačanje uporabljamo opcijski ojačevalnik. Vezje za isto je prikazano spodaj
Tu je vrednost ranžirnega upora (SR1) 0,22 Ohma. Kot že rečeno, načrtujemo vezje za 0-1A, tako da lahko na podlagi Ohmovega zakona izračunamo padec napetosti na tem uporu, ki bo približno 0,2 V, ko skozi obremenitev prehaja največ 1A toka. Ta napetost je za branje mikrokrmilnika zelo majhna, za optični ojačevalnik v načinu neinvertiranega ojačevalnika pa uporabimo Op-Amp za povečanje napetosti z 0,2 V na višjo raven za branje Arduina.
Op-ojačevalnik v neinvertirnem načinu je prikazan zgoraj. Ojačevalnik je zasnovan tako, da ima ojačanje 21, tako da je 0,2 * 21 = 4,2V. Formule za izračun ojačenja Op-amp-a so podane spodaj. S pomočjo tega spletnega kalkulatorja dobička lahko dobite vrednost vašega upora, če preoblikujete vezje.
Dobiček = Vout / Vin = 1 + (Rf / Rin)
Tukaj je v našem primeru vrednost Rf 20k in vrednost Rin 1k, kar nam daje gian vrednost 21. Ojačana napetost iz op-amp se nato da RC filtru z uporom 1k in kondenzatorjem 0,1uF do filtrirajte morebitni hrup, ki je povezan. Na koncu se napetost napaja na analogni zatič Arduino.
Zadnji del, ki ostane v merilni enoti, je del regulatorja napetosti. Ker bomo dali spremenljivo vhodno napetost, potrebujemo reguliran + 5V volt za delovanje Arduina in Op-amp. To regulirano napetost bo zagotavljal regulator napetosti 7805. Na izhodu je dodan kondenzator za filtriranje šuma.
Računska in prikazovalna enota
V merski enoti smo zasnovali vezje za pretvorbo napetostnih in tokovnih parametrov v 0-5V, ki se lahko napajajo na analogne zatiče Arduino. Zdaj bomo v tem delu vezja te napetostne signale povezali z Arduinom in na Arduino povezali tudi alfanumerični zaslon 16 × 2, da bomo lahko videli rezultate. Vezje za isto je prikazano spodaj
Kot lahko vidite, je napetostni zatič povezan z analognim zatičem A3, trenutni zatič pa z analognim zatičem A4. LCD se napaja iz + 5V iz 7805 in je povezan z digitalnimi zatiči Arduino za delovanje v 4-bitnem načinu. Za spreminjanje kontrasta LCD smo uporabili tudi potenciometer (10k), priključen na Con pin.
Programiranje Arduina
Zdaj, ko dobro razumemo strojno opremo, odprimo Arduino in začnimo s programiranjem. Namen kode je odčitati analogno napetost na zatičih A3 in A4, izračunati vrednost napetosti, toka in moči ter jo na koncu prikazati na LCD zaslonu. Celoten program, ki naredi enako, je podan na koncu strani, ki se lahko kot taka uporablja za zgoraj obravnavano strojno opremo. Nadalje je koda razdeljena na majhne delčke in razložena.
Kot vsi programi začnemo z definiranjem nožic, ki smo jih uporabili. V izhodnem projektu se za merjenje napetosti in toka uporabljata zatiča A3 in A4, digitalni zatiči 3,4,8,9,10 in 11 pa za povezovanje LCD-ja z Arduinom
int Read_Voltage = A3; int Read_Current = A4; const int rs = 3, en = 4, d4 = 8, d5 = 9, d6 = 10, d7 = 11; // Omenite številko zatiča za LCD povezavo LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
Vključili smo tudi datoteko z glavo, imenovano tekoči kristal, za povezavo LCD-ja z Arduinom. Nato znotraj nastavitvene funkcije inicializiramo LCD zaslon in prikažemo uvodno besedilo kot »Arduino Wattmeter« in počakamo dve sekundi, preden ga počistimo. Koda za isto je prikazana spodaj.
void setup () { lcd.begin (16, 2); // Inicializiramo 16 * 2 LCD lcd.print ("Arduino Wattmeter"); // Uvodna vrstica sporočila 1 lcd.setCursor (0, 1); lcd.print ("- Circuitdigest"); // Zakasnitev uvodne vrstice sporočila 2 (2000); lcd.clear (); }
Znotraj funkcije glavne zanke uporabljamo analogno funkcijo branja za odčitavanje vrednosti napetosti s pinov A3 in A4. Kot poznamo izhodno vrednost Arduino ADC od 0-1203, saj ima 10-bitni ADC. Nato je treba to vrednost pretvoriti v 0-5V, kar lahko storite tako, da pomnožite s (5/1023). Nato smo že prej v strojni opremi preslikali dejansko vrednost napetosti od 0-24V do 0-5V in dejansko vrednost trenutne oblike od 0-1A do 0-5V. Zdaj moramo uporabiti multiplikator, da vrnemo te vrednosti nazaj na dejansko vrednost. To lahko storite tako, da ga pomnožite z multiplikacijsko vrednostjo. Vrednost multiplikatorja lahko bodisi teoretično izračunamo s pomočjo formul iz oddelka o strojni opremi, ali če imamo znan nabor vrednosti napetosti in toka, ga lahko izračunamo praktično.Slednji možnosti sem sledil, ker je v realnem času ponavadi natančnejša. Torej je vrednost multiplikatorjev 6,46 in 0,239. Zato je koda videti spodaj
float Voltage_Value = analogRead (Read_Voltage); float Current_Value = analogRead (Read_Current); Vrednost_napetosti = Vrednost_napetosti * (5,0 / 1023,0) * 6,46; Current_Value = Current_Value * (5.0 / 1023.0) * 0.239;
Kako izmeriti z večjo natančnostjo?
Zgornji način izračuna vrednosti dejanske napetosti in toka bo deloval povsem v redu. Toda trpi zaradi ene pomanjkljivosti, to je razmerje med izmerjeno napetostjo ADC in dejansko napetostjo ne bo linearno, zato en sam množitelj ne bo dal zelo natančnih rezultatov, enako velja tudi za tok.
Za izboljšanje natančnosti lahko narišemo nabor izmerjenih vrednosti ADC z dejanskimi vali z uporabo znanega nabora vrednosti in nato te podatke uporabimo za risanje grafa in izpeljavo multiplikacijske enačbe z uporabo metode linearne regresije. Lahko se sklicujete na Arduino dB meter, pri katerem sem uporabil podobno metodo.
Na koncu, ko izračunamo vrednost dejanske napetosti in dejanskega toka skozi obremenitev, lahko moč izračunamo po formulah (P = V * I). Nato na LCD-prikazovalniku s pomočjo spodnje kode prikažemo vse tri vrednosti.
lcd.setCursor (0, 0); lcd.print ("V ="); lcd.print (Voltage_Value); lcd.print (""); lcd.print ("I ="); lcd.print (Current_Value); float Power_Value = Voltage_Value * Current_Value; lcd.setCursor (0, 1); lcd.print ("Moč ="); lcd.print (Power_Value);
Delo in preizkušanje
Zaradi vadnice sem uporabil perf ploščo za spajkanje vseh komponent, kot je prikazano v vezju. Za priključitev tovora sem uporabil vijačni priključek Phoenix, za priključitev navadnega enosmernega toka. Plošča Arduino Nano in LCD sta nameščena na ženski Bergstik, tako da jih je mogoče pozneje ponovno uporabiti.
Po pripravi strojne opreme naložite kodo Arduino na ploščo Nano. Prilagodite lonček za obrezovanje, da nadzorujete stopnjo kontrasta LCD-ja, dokler ne vidite jasnega uvodnega besedila. Če želite preizkusiti ploščo, tovor priključite na vijačni priključek, vir pa na vtičnico Barrel. Da bi ta projekt lahko deloval, mora biti napetost vira več kot 6V, saj je Arduino za delovanje potreboval + 5V. ČE vse deluje v redu, bi morali v prvi vrstici LCD-ja prikazati vrednost napetosti na obremenitvi in tok skozi to vrednost, izračunano moč pa v drugi vrstici LCD-ja, kot je prikazano spodaj.
Zabaven del gradnje nečesa je v preizkušanju in preverjanju, kako daleč bo delovalo pravilno. Da bi to naredil, sem uporabil 12V avtomobilske kazalke kot obremenitev in RPS kot vir. Ker lahko RPS sam meri in prikazuje vrednost toka in napetosti, bomo lahko enostavno preverili natančnost in delovanje našega vezja. In ja, tudi s svojim RPS sem umerjal svojo multiplikatorsko vrednost, tako da sem se približal natančni vrednosti.
Celotno delo najdete v videoposnetku na koncu te strani. Upam, da ste razumeli vezje in program ter se naučili nekaj koristnega. Če imate kakršne koli težave, da to začne delovati, ga objavite v spodnjem oddelku za komentarje ali pišite na naših forumih za večjo tehnično pomoč.
Ta projekt Wattmeter, ki temelji na Arduinu, ima še veliko nadgradenj, ki jih je mogoče dodati za povečanje učinkovitosti samodejnega beleženja podatkov, načrtovanja grafa, obveščanja o napetosti ali trenutnih situacijah itd. Zato bodite radovedni in mi sporočite, za kaj bi to uporabili.