Microcontrolelere ESP8266 si, implicit, placile de dezvoltare echipate cu ele, gen WeMos, NodeMCU au doar o intrare de masura analogica, care are maxim 1,0V in cazul microcontrolerului si 3,3V pentru placile de dezvoltare datorita unui divizor (uzual 220k/100k). A se vedea ce am scris in articolul
Ceas matriceal animat cu ESP8266 si RTC (DS3231) cu informatii despre temperatura si umiditate (3)
Aceste informatii sunt din articolul
NodeMCU ADC with Arduino IDE
Pentru a monitoriza, de exemplu, un panou solar de cca 300W, vom folosi un divizor rezistiv R2 = 43k cu R1 = 1k1, respectiv un senzor de curent cu ACS712-20 (sau ACS712-30)... in caz extrem se poate folosi si un senzor ACS712-05B, deoarece senzorul permite un supracurent de pana la 12-13A. De asemenea, vom folosi un divizor rezistiv R4 = 3k3 cu R3 = 1k1.
Dupa cum se observa, sunt 2 iesiri, care nu se pot masura direct cu ESP8266, asa ca vom folosi un comutator CMOS, eu alegand comutatorul cvadruplu CD4066,
din care voi folosi 2 comutatoare (A si B)
Deoarece placile de dezvoltare cu ESP8266 lucreaza cu tensiunea de 3,3V se alimenteza integratul cu aceea tensiune. Cand se masoara tensiunea de pe A'0 se comanda pinul 13 pentru a coneca pinul 1 cu 2, iar daca se masoara tensiunea de la iesirea senzorului ACS712 se comanda pinul 5 pentru a conecta pinul 3 cu 4. Pinii 2 si 4 sunt conectati impreuna, deci acolo vom lega pinul de masura analogic ADC0 sau AN0 (A0) al placii.
Senzorii de curent ACS712 i-am prezentat in articolele
Senzorul de curent ACS712 (I) si
Senzorul de curent ACS712 (II)
care au in repaus pe ieisire 2,5V crescand aceasta tensiune (sau scazand, functie de sensul de conectare) cu 0,185V/A pentru sensorul de 5A, 0,1V/A pentru senzorul de 20A, respectiv 0.066V/A la cel de 30A
Folosind divizorul nostru, vom avea pentru 3,3V la intrarea lui
De test, daca nu s-ar conecta senzorul de curent si am lega iesirea divizorului R4-R3 la un voltmetru, am avea urmatoarele valori:
Daca am conecta un pinul ce ar corespunde ieisirii senzorui de curent de 5A (ACS712-05B) pentru tensiunile de test (3,3V si 0V) am avea corespondenta curentilor
asta trebuie sa obtinem daca incarcam un sketch de test.
Pentru a testa functionarea partii de masura curent, ne folosim de informatiile din articolul
The ACS712 Current Sensor with an Arduino doar ca am adaptat ptrogramul pentru cazul meu, cand am acel divizor 3k3-1k1 si tensiunea de referinta de 3,3V (de fapt e tensiunea maxima pe intrarea placilor cu ESP8266). Programul de test este
test_ACS712_esp8266.ino si in ecranul de monitorizare seriala vom observa ceva de genul (test cu 4,9V la intrare)
Cu valorile din schema, pentru conectarea pinului de masura la 3,3V vom obtine la intrarea pinului A0 de pe placa de dezvoltare cu ESP8266:
De test, daca am lega iesirea divizorului R2-R1 la un voltmetru, am avea urmatoarele valori:
Pentru testarea partii de divizor la partea de masura tensiune, se folosesc informatiile din articolul
Arduino 25V Voltage Sensor Module User Manual, programul de test fiind
test_voltagedivider_esp8266.ino.
In ecranul de monitorizare seriala, vom gasi ceva de genul
Pentru teste reale, impreuna cu amicul Alex, incepem si niste teste reale...
Pasul urmator este cel de testare a masuratorilor de tensiune si curent conform schemei indicate la inceputul articolului si pentru asta am adaugat comanda pe rand a comutatoarelor din CD4066, dupa cum se vede in programul
test_VA_esp8266.ino.
Pentru valorile lui si o calibrare bruta, Alex a obtinut:
23.05.2019
Deoarece initial ma gandisem sa testeam pe un ESP8266 "chior", am dimensionat divizoarele pentru tensiunea maxima pe intrarea analogica de 1,0V, apoi testele au fost facute pe placa cu ESP8266 cu tensiune maxima de 3,3V, asa ca tensiunile maxime sunt