Bariera de lumină cu infraroșu cu Arduino pentru citirea contorului de energie electrică

Contoare electromagnetice Ferraris sunt încă utilizate în multe gospodării pentru a măsura consumul. Nu au o interfață directă pentru achiziția electronică de date. Pe de altă parte, însă, o înregistrare precisă minut cu minut a consumului de energie ajută la economisirea energiei, întrucât consumul de așteptare și vârfurile de încărcare pot fi mai bine analizate. O posibilitate de a obține aceste date oricum este scanarea optoelectronică a discului de numărare. Achiziționarea semnalului se face de către un Arduino Nano.
Contorul Ferrari
Contorul Ferraris funcționează pe principiul unui motor. Fluxul de curent prin mai multe bobine stabilește un disc de numărare rotativ, care, la rândul său, acționează un contor mecanic. Numărul de rotații ale discului este proporțional cu munca electrică efectuată, care este de obicei măsurată și facturată în kilowați-oră (kWh). De exemplu, contorul meu spune 75 U/kWh, ceea ce înseamnă că 75 de rotații ale discului de numărare înseamnă un consum de 1 kWh.
Există un semn roșu pe discul de numărare. Trecerea acestui marcaj prin fereastra de vizionare poate fi detectată și procesată electronic prin intermediul unei bariere reflexice la lumină.
Comutator fotoelectric Arduino
Bariera de lumină reală constă dintr-o diodă cu emisie de lumină în infraroșu SFH 409 (alternativ: SFH 4346) și un fototranzistor în infraroșu SFH 309 FA (Fig. 1). Este controlat cu un Arduino Nano. În principiu, desigur, sunt potrivite și alte modele de Arduino, Nano este utilizat în principal din cauza dimensiunilor sale reduse. Denumirile conexiunii din Fig. 1 se referă direct la etichetarea plăcii Arduino.
Utilizarea unui microcontroler oferă multe avantaje față de o structură „convențională” a unei bariere de lumină cu circuite de declanșare analogice sau chiar tranzistoare discrete. În plus față de cele două componente cu infraroșu, sunt necesare doar alte două componente pasive: un rezistor de 120 Ω este utilizat pentru a limita curentul prin dioda emițătoare de lumină, iar rezistorul de 2,2 kΩ convertește curentul care trece prin fototranzistor într-o tensiune. Merge direct la intrarea analogică A7 al Arduino.
Anodul diodei emițătoare de lumină nu este conectat direct la tensiunea de funcționare V5V, dar cu ieșirea digitală D2 conectat. O suprimare eficientă a radiației ambientale perturbatoare poate fi realizată în acest fel. Programul de măsurare comută foarte repede D2 dioda emitentă de lumină este activată și oprită și măsoară fiecare A7 tensiunea rezultată. Formarea diferenței ulterioare elimină lumina ambientală care lovește senzorul, rezultatul conține doar lumina generată de dioda emițătoare de lumină. Acest principiu de măsurare nu poate fi implementat decât cu un efort mare, fără un microcontroler.
Celelalte două componente, LED verde și rezistor de 560 Ω, nu sunt necesare pentru funcționarea efectivă a barierei de lumină. Acestea sunt utilizate doar pentru feedback vizual cu privire la funcționarea corectă a dispozitivului. Veți căuta în zadar rezistențe de echilibrare sau potențiometre în circuit. Nivelul de declanșare pentru adaptarea barierei de lumină la diferite medii este stabilit utilizând software-ul.
Prețul pentru un Arduino Nano variază între 8 USD pentru o „clonă a Chinei” și 50 EUR. Prin urmare, o comparație de preț merită atunci când faceți cumpărături! Nu trebuie să iei un nano, dacă ai suficient spațiu, poți folosi cu siguranță un alt model.
constructie
Componentele, inclusiv Arduino Nano, sunt lipite pe o placă universală. Dimensiunea sa a fost selectată astfel încât să se potrivească „aspirării” într-o carcasă standard din plastic fără elemente de fixare suplimentare (Fig. 2). Arduino este poziționat în așa fel încât conexiunea sa mini-USB să fie ulterior accesibilă din exterior chiar și atunci când carcasa este închisă.
Diodele cu lumină infraroșie și fototranzistorul sunt montate din partea inferioară a plăcii (Fig. 2 din stânga), astfel încât lumina cu infraroșu să poată ajunge în exterior prin două găuri găurite în carcasa inferioară a carcasei. Partea superioară a componentelor se va afla ulterior exact pe suprafața carcasei contorului direct deasupra discului de numărare (Fig. 4). Marcajul, care se aplică cu un marker permanent și se extinde pe părțile laterale ale carcasei, facilitează poziționarea pe contor (Fig. 3). Pentru ca bariera de lumină reflexă să funcționeze, dioda emițătoare de lumină și fototranzistorul trebuie să stea cât mai aproape posibil, dar fără ca lumina directă din diodă să poată lovi tranzistorul.
Dioda emițătoare de lumină verde este montată în mod normal de sus, astfel încât să poată fi vizualizată ulterior pe partea orientată spre distanță de contor (Fig. 2 în dreapta jos). Lungimea sa este aleasă astfel încât să fie la același nivel cu partea superioară a carcasei.
software
Un Arduino este potrivit pentru controlul barierei de lumină și a achiziției de date în timp real, dar își are limitele atunci când vine vorba de stocarea și vizualizarea pe termen lung a datelor. Din acest motiv, software-ul este format din două părți. O parte rulează pe Arduino și se ocupă de achiziționarea datelor. A doua parte poate fi instalată pe orice computer (de preferință Linux) care are un dispozitiv permanent de stocare în masă (de exemplu un hard disk sau o cartelă de memorie SD), precum și o interfață USB și de rețea. O alegere bună este Raspberry Pi. Deoarece există deja un RasPi în subsolul meu pentru măsurarea consumului de gaz, l-am folosit imediat. Arduino și computerul de control sunt conectate printr-un cablu USB. Pe de o parte, acest lucru asigură alimentarea cu energie a Arduino și, pe de altă parte, comunicarea între cele două părți ale software-ului are loc utilizând un protocol serial simplu.
Software-ul complet se află pe Github în depozit emeir (electric pe mineter cu eunfrarbariera de lumină ed) este disponibilă. O copie este trimisă prin
în directorul de lucru local.
Fișierul arduino_sketch/ReflectorLightBarrier.ino conține schița Arduino. Acesta trebuie să fie compilat folosind Arduino IDE și încărcat în memoria programului Arduino.
După pornire, software-ul Arduino este în Modul de declanșare a datelor. Este mai potrivit pentru un prim test funcțional Mod date brute, în care software-ul transmite continuu tensiunea diferențială măsurată la fototranzistor pe interfața serială. Diferitele moduri sunt comutate prin trimiterea de comenzi de la computerul de control la Arduino. Puteți utiliza monitorul serial al IDE Arduino sau un program de tip terminal minicom utilizare.
Trimiterea semnului C. către Arduino îl face să intre în modul de comandă. Acum reacționează la diferite comenzi de control:
în Mod date brute Arduino transmite constant valori măsurate pe interfața serială. Aceasta este valoarea diferenței pe care software-ul o calculează așa cum este descris mai sus, scăzând tensiunile atunci când dioda cu emisie de lumină IR este pornită și oprită. Acesta este modul în care puteți testa dacă totul a decurs fără probleme la configurarea hardware-ului: dacă țineți o bucată de hârtie în fața barierei reflexice, schimbarea distanței sale ar trebui să provoace diferențe semnificative în valorile măsurate.
Secțiunea de program relevantă pentru achiziționarea valorii măsurate este:
Asamblare și reglare
Bariera de lumină este atașată la carcasa contorului cu două benzi de bandă adezivă pe două fețe (vezi imaginea de la începutul articolului). Dioda emițătoare de lumină IR și fototranzistorul trebuie să stea exact peste discul de numărare. Marcajul de pe carcasă ajută la poziționarea precisă (Fig. 3).
Când contorul de electricitate funcționează, datele de măsurare sunt înregistrate inițial în Mod date brute. Un program terminal, cum ar fi, de exemplu, este util aici minicom, care poate scrie datele care rulează prin interfața serială într-un fișier text. După importul acestui fișier într-un program de foaie de calcul (de exemplu LibreOffice Calc) puteți genera un grafic similar cu Fig. 5, care ajută la determinarea pragurilor de declanșare: În secvența cronologică a datelor de măsurare (albastru), cele două treceri ale marcajului de numărare pot fi identificate clar, deoarece culoarea lor roșie duce la o scădere semnificativă a luminii reflectate . Acest lucru are ca rezultat definirea celor două praguri de declanșare la 85 (scăzut, roșu în Fig. 5) și 90 (înalt, galben).
Comanda S 85 90 scrie valorile pentru pragurile de declanșare în EEPROM a Arduino. Supraviețuiți deconectării sursei de alimentare și repornirii programului.
De acum înainte operați software-ul Arduino în Modul de declanșare a datelor. Aici o ieșire pe interfața serială are loc numai în cazul unui eveniment de declanșare: Când scăzut Nivel declanșator, programul dă caracterului 0 și când înalt Niveluri 1 de reducere. În plus, dioda emițătoare de lumină verde este comutată corespunzător, ceea ce este extrem de util pentru o verificare vizuală a funcției: starea declanșatorului este „0”, iar dioda emițătoare de lumină este oprită numai atunci când semnul roșu al contorului este în fața barierei luminii, altfel este aprins:
Înregistrarea citirii și consumului contorului
Scriptul Python emeir.py rulează pe computerul de control și primește datele furnizate de Arduino prin interfața serială USB. în Modul de declanșare a datelor acestea sunt doar zerouri și unele, a căror comutare semnalează trecerea marcajului de numărare. Deoarece raportul dintre numărul de rotații al contorului și consumul de energie este cunoscut, este posibil să se deducă direct cantitatea de energie consumată:
Când declanșatorul este declanșat, programul scrie citirea noului contor și energia consumată de la ultimul declanșator trigger_step = 1/75 (rotații per kWh) într-o bază de date round robin. Acest principiu este similar cu procedura descrisă în Citirea contoarelor de gaz cu magnetometrul HMC5883 și Raspberry Pi.
Programul preia și crearea bazei de date emeir.rrd, care se află în același director cu scriptul Python. Pentru a face acest lucru, trebuie să-l porniți o dată cu opțiunea -c:
O bază de date nou creată începe în mod natural cu citirea contorului 0. Pentru a o sincroniza cu contorul mecanic, rețineți citirea contorului mecanic (de exemplu 132290.0) și scrieți-o cât mai curând posibil în baza de date:
Apoi reporniți emeir.py. Citește valoarea contorului salvat din baza de date și continuă numărarea. Pentru o funcționare continuă, emeir.py ar trebui instalat ca un serviciu de fundal, astfel încât să supraviețuiască deconectării și repornirii sistemului. Serviciul de blog arată posibilități pentru acest lucru în fundal.
Grafica atrăgătoare poate fi generată din baza de date round robin folosind rrdtool. Următoarele comenzi generează graficele prezentate în Fig. 6 pentru citirea și consumul contorului în ultimele trei zile:
Un server web subțire precum lighttpd «lighty», împreună cu câteva pagini HTML și scripturi Perl, oferă grafică de consum disponibilă convenabil pe intranet. Principiul este descris în articolele privind înregistrarea consumului de gaz și măsurarea temperaturii.
Concluzie
Micul dispozitiv auto-fabricat funcționează fără probleme de peste un an și a oferit deja descoperiri interesante. De exemplu, diferența dintre concediul de odihnă și timpul de participare este semnificativă. De aceea ar trebui să fiți foarte atenți atunci când decideți cui să furnizați datele dvs. de consum în timp real! În plus față de vârfurile de consum, pentru care aragazul de bucătărie acționat electric și prepararea apei calde sunt în principal responsabile, sarcina de bază ușor ondulată este vizibilă. Acest lucru se datorează funcționării frigiderului sau congelatorului, care se pornește și se oprește periodic. Dacă scăpați acest lucru, rămâne un consum de bază de aproximativ 60 W, care este cauzat de funcționarea diferitelor dispozitive electronice, cum ar fi routerele DSL, radiourile cu ceas și, bineînțeles, Arduino și Raspberry Pi (!) Utilizate pentru măsurarea consumului. O altă limitare necesită apoi utilizarea unui contor portabil al costului energiei care este conectat la liniile de alimentare ale dispozitivelor individuale. Există ceva de genul acesta pentru cei ambițioși de a face singuri, ca un kit de la ELV.