De data asta, aplicatia este una practica, aceea de a prezenta pe ecranul telefonului (sau calculatorului) temperaturile din mai multe zone, mai precis 6, masurate cu senzori DS18B20 (conectati in paralel), apoi temperatura si umiditatea relativa, masurate cu un senzor DHT22 (AM2302) si, in plus, se pot comanda 4 consumatori prin intermediul unor relee. Toate acestea au fost realizate de amicul meu Dan pentru a avea o sera supravegheata si comandata de la distanta.
Ca placa de dezvoltare folosesc una WeMos D1 ca are un microcontroler ESP8266 si are forma unui Arduino Uno
de aceea, Dan a folosit o placa tip shield cu 4 relee (Relay Shield v3.0), care are pinii de comanda D4, D5, D6 si D7, care corespund placii WeMos D1 la GPIO4, GPIO14, GPIO12 si GPIO13.
ce are schema
si aranjamentul componentelor si conexiunilor
Senzorul DHT22 (AM2302) este conectat la D9 ce corespunde la GPIO2, iar senzorii DS18B20 la pinul D3 ce corespunde la GPIO5.
In completarea schemei de control pozitie ferestre de aerisiere pentru o sera in functie de temperatura (prezentata in articloul de AICI, am introdus si partea de comanda manuala.
Partea de comutare de pe automat pe manual a fost gandita ca AICI, doar ca beneficiarul lucrarii mi-a adus un alt tip de comutator
care are in pozitia de mijloc pozitia de repaus (OFF) si pe stanga, respectiv dreapta contacte, asa ca am modificat schema, care devine
Programul de simulare (Livewire) este dintr-o generatie veche si nu are acest comutator, dar l-am adaptat ca fiind 2 comutatoare, ca in schema...
Daca comutatorul este pe pozita OFF (SW2 deschis, din simulare), schema functioneaza ca si ce am prezentat in materialele anterioare:
- ambele intrari in 0 logic, motor in repaus (stare nefolosita in cazul de fata, deoarece modulele de relee lucreaza cu logica inversa)
- comanda 0 logic pe primul canal, al doilea e in 1 logic, motorul se invarte in sens trigonometric (invers acelor de ceasornic, dupa cum se va vedea in simularea video)
- comanda 0 logic pe al doilea canal, primul in 1 logic, motorul se invarte in sensul acelor de ceasornic
- comenzi de 1 logic pe ambele canale, pozitie de repaus
Dupa cum se observa, prin ledurile din optocuploare, cat si pe iesirile placii Arduino sunt cca 3mA (R1 inseriat cu R3 = 1k51 sau R2 inseriat cu R4 = 1k51).
Daca motorul ajunge la capat de cursa, este atacat fie limitatorul LIM1, fie limitatorul LIM2, si si crcuitul de comanda se intrerupe.si indiferent ce comenzi da placa Arduino (saiu orice alt sistem de comanda) motorul ramane in repaus.
Daca se trece comutatorul in stanga, de exemplu, ce ar corespunde inchiderii intrerupatorului SW2 si trecerea comutatorului SW1 in partea de jos, comanda logica catre relee e similara, doar ca curentul prin ledul din optocuplor este 4,3mA (in circuit ledului doar R1 = 510 ohmi, respectiv R2 = 510 ohmi).
Similar, daca se trece comutoatorul in dreapta, cea ce corespunde in simulare inchiderii intrerupatorului SW2 si trecerea comutatorului SW1 in partea de sus, motorul se invarte in sensul acelor de ceasorinic.
Rolul limitatoarelor de cursa este acelasi ca si in cazul comenzii pe automat, de aceea, daca se doreste deschiderea fortata sau inchiderea fortata, indiferent de temperatura din incinta, se trece comutatorul pe stanga sau dreapta. Pentru reglajul automat, se trece comutatorul pe pozitia OFF.
Dupa cum se observa, pe schema am conectat 4 ampermetre, deoarece la trecerea pe pozitia de comanda manuala, curentii de pe iesirile placii arduino sunt diferiti de cei prin optocuploare.
Dupa cum am scris mai sus, curentul prin optocuplor este de cca 4,3mA circuitul fiind: +5V - led - rezistenta R1 (sau R2) - masa (GND).
La placa Arduino, functie de comanda logica 1 (+5V) sau 0 logic (0V, GND), in circuit este doar R1 sau R2 de 50 ohmi, curentul avand valori de -9,6mA, 0mA sau +9,6mA.Valoarea curentului nu e periculoasa pentru iesirile digitale ale placii Arduino.
Cel mai bine se vede in filmuletele realizate ca o captura de ecran: