luni, 15 mai 2017

Senzor de masurare tensiune si curent INA219

   Am achizitionat de curand, de la colaboratorii mei de la ArduShop.ro, un modul cu senzor INA219, care poate masura tensiuni pana la 26V, curent maxim de +3,2A, cu o rezolutie de 12biti (4096 trepte), dupa cum regasin in fisa tehnica (datasheet).
   Fizic modulul arata asa:
 
    Dupa lipirea conectorilor, am realizat schema de conectare la o placa Arduino Nano pentru a determina adresa alocata cu comunicatie i2c, folosind programul i2c_scanner:
obtinand:
    Deoarece nu-mi place sa pierd tipul reinventand roata, am folosint informatiile din articolul INA219 Arduino Current Sensor Voltmeter Tutorial: Quick Start unde este indicata schema de test:
doar ca eu am alimentat ledul la 5V din care se alimenta si placa Arduino Nano:

   Am adaugat un afisaj LCD1602 cu interfata i2c si am aflat adresa acestuia pe i2c, cunoscand ca INA219 are 0x40 (folosindu-ma de acelasi program i2c_scanner)
   Schema de conectare a modulelor este urmatoarea:
   Mai precis:
   Am modificat sketch-ul de la  Henry's Bench folosit inainte, adaugandu-i partea de afisare, rezultandu-mi programul INA219_lcd1602_i2c_0.ino si pe ecram am, pe randul de sus, tensiunea in volti, iar curentul pe randul de jos, in mA timp de o secunda si in amperi o secunda.
   Am facut si 2 filmulete in care se vede modul de afisare:
   Pentru a verifica rapid precizia, am alimentat un bec cu leduri la 12V de la o sursa reglabila si am pus in paralel un aparat de masura, in cazul meu un multimetru cu osciloscop EM125 (prezentat in articolul de AICI)
 
 
 
 
   Am facut si acum 2 filmulete:
    Avand in vedere ca schema de conectare este simpla, se poate realiza un aparat de masura pentru panou de sursa de tensiune reglabila, cu Arduino Micro Pro sau cu un Arduino Nano.

Sistem de automatizare incubator oua

ultima modificare: 12.04.2020

    Fata de sistemele clasice pentru incubatoare care regleaza doar temperatura, la solicitarea lui Viorel Sosa, un roman plecat peste mari si tari, am modificat proiectul de termostat cu higrostat prezentat AICI, pentru a fi folosit ca automatizare pentru un incubator cu termostatare (mentinere temperatura in domeniul dorit, mentinere umiditate in domeniul dorit, rotire oua la anumita perioada de timp si un anumit timp, avertizare neincadrare in domeniul dorit pentru temperatura si umiditate, indicare numar zile ramas pana la eclozare oua, etc.
   Schema de testare deriva din cea din articolul mentionat la inceput, Termostat cu control umiditate (higrostat) - partea a 2-a, adaugandu-i un led pentru a-mi indica cand este alimentat motorul si un led cand temperatura sau umiditatea sunt mult in afara domeniului dorit.
   Pentru inceput am adaptat sketch-ul pentru a roti motorasul periodic (in mod normal de la o ora la 24 re, in teste al pus de la 1 minut la 24 minute), timp reglabil de la 3 secunde la 60 secunde, asta se intampla daca se incarca sketch-ul eggincubator_1c.ino.
   In filmuletele urmatoare se vede modul de functionare si reglare parametrii:
termostat incubator cu Arduino
egg incubator with Arduino
  Daca incarc sketch-ul eggincubator_1d.ino am si partea de indicare a erorii de temperatura sau umiditate (apare o si steluta in dreptul temperaturii sau umiditatii).
  In filmuletele urmatoare se vede modul de functionare si reglare parametrii:
termostat incubator cu Arduino (2)
egg incubator with Arduino (2)
   Tot Viorel mi-a atras atentia ca trebuie ca intrarea in meniul de reglare parametrii sa se faca doar daca se apasa lung butonul MENIU (MENU)  deoarece in cazul meniu, automatul pastreaza starile si nu mai functioneaza ca un termoastat, asa ca am introdus aceasta facilitate, adaugand si aceea de a iesi din meniu dupa un anumit timp, pentru a elimina problema asta.
   Sketch-ul eggincubator_1e.ino are modificari, dupa cum se vede si in filmuletele urmatoare:
incubator cu Arduino (3)
egg incubator with Arduino (3)
    Am mai adaugat si partea de a elimina alarma sonora daca se apasa unul din butoanele fara retinere, de scade sau crestere. Dupa revenirea in parametrii si aparitia unori diferente mari de temperatura sau umiditate alarma acustica reapare, putand fi iar oprita temporar...
   In mod normal pe ecran avem indicatia:
    Daca este depasita temperatura se stinge ledul corespunzator (in cazul meu verde), iar daca depasirea temperaturii e prea mare (la fel si daca este prea scazuta temepratura) apare o steluta dupa temperatura si se aprinde un led rosu (pinul corespunzatro actioneaza un avertizor acustic, sirena)
   Daca se apasa pe butonul de - sau + dispare avertizarea sonora (se stinge ledul rosu), dar pe ecran ramane steluta pana temperatura revine in parametrii:
   Daca s-a depasit pragul de temperatura, se aprinde ledul galben, care indica depasirea umiditatii, in acelsi timp se comanda un releu care deschide o ferestra, un orificiu pentru elimnare umiditate excesiva, dar daca se depaseste prea mult umiditatea sau scade prea mult, se aprind eledul rosu, avand si avertizare acustica, care poate fi intrerupta prin apasarea unuia din butoanele - sau +, pe ecran ramane o steluta care dispare doar cand umiditatea este normala.
 
   Pentru a intra in meniu se apasa butonul MENIU/MENU mai multe secunde, daca se apasa prea putin apare un semnul ! intre indicatiile de temperatura si umiditate:
iar daca apasarea este sufinet de lunga apare scurt un punct
 si apoi intra in reglajul temperaturii
   Aceasta se poate regla din butoane + si -, apoi se apasa butonul MENIU/MENIU pentru a trece la histerezisul de temperatura (intervalul de temeperatura acceptat sa scada temepratura dorita)
  Urmeaza reglaj umiditate si histerezis umiditate
   Urmeaza intervalul intre rotiri ale oualelor (intre o ora si 24 ore)
si timpul de rotire (intre 3 secunde si 1 minut):
  Se regleaza intervalul acceptat de temperatura (sau extremele temperaturii, fata de  cea reglata, dorita):
apoi intervalul de la umiditatea;
   Dupa apasare buton MENIU/MENU se revine la functionarea normala sau daca au trecut 60 secunde de la intrarea in meniul de reglaj.
   Toate acestea se  realizeaza datorita versiunii imbunatatite de program (sketch) eggincubator_1f.ino dupa cum se vede in filmuletele

16.05.2017
   Am modificat un pic, dupa ce am mai discutat cu Viorel si acum apare timpul pana la o urmatoarea rotirea oualelor, in loc de timpul scurs de la pornire:
   Acest lucru apare cand incarcam programul eggincubator_1g.ino si sistemul de automatizare functioneaza ca in filmuletele urmatoare:

17.05.2017
   Am mai testat la ultimuls sketch (eggincubator_1g.ino) sa vad la partea de rotire oua si am mai facut un filmulet numit incubator cu Arduino (6) unde se observa ca e ok (pentru teste in loc de ore de asteptat intre rotiri am pus minute):
  Deoarece eu testez pe afisaj LCD1602 cu interfata i2c, iar Viorel cu una paralela, cum e in schema de mai sus, am zis sa fie programul mai universal si sunt 2 zone care trebuie activate sau comentate (ignorate), una in partea de definire si una in cea de setup:
1) pentru afisaj i2c:
2) pentru afisaj legat paralel (clasic):
   Viorel a folosit o placa Arduino Uno, punand si partea de comanda, pentru rezistenta de incalzire, avertizor acustic, etc:

09/04/2020
   Am refacut montajul pentru controlul termostatului si am inceput teste cu partea de memorare a timpului de pornire a incubarii folosind un modul RTC, pentru a nu se pierde informatia daca se intrerupe alimentarea modulului.
   Am facut si niste filmulete cu partea de indicare timp pana la sfarsit de perioada:
- romana
- engleza


    Detalii, in curand, momentan monitorizez "clepsidra" sa vad daca functioneaza corect si o sa pun si o lista la ce vreau sa implementez pentru proiect... vedeti articolul Indicare timp pana la un eveniment.
    In mare vreau sa implementez urmatoarele:
- memorarea in EEPROM si/sau in modulul RTC a timpului pana la terminarea perioadei de eclozare
- rotirea sa se faca din a 3-a zi pana cu 3 zile inainte (ziua 18).
- rotirea sa poate fi facuta cu un motor cu timpi si mecanism (ca acum),  motor de curent continuu cu schimbare de sens (punte H cu L298, cum e cel prezentat in articolul Scurta prezentare si testare a unui modul de comanda motoare cu L298)

sau servomotor MG9xx.
- pornirea numaratorii timpului si a functionarii doar din meniu, la fel si oprirea.

12/04/2020
    Am lucrat destul de mult zilele astea, multe ore pe zi, si am reusit sa rezolv cam ce imi propusesem, introducand si reglaj zile de incubare.
    Vedeti in filmele urmatoare ce am implementat, deoarece in ele se prezinta modul de functionare:
- versiunea in romana
- versiunea in engleza
    Schema sistemului de control a unui sistem de incubare automatizat este:
    Partea de comanda a rezistentei de incalzire se poate face cu releu sau mai bine cu optocuplor si triac. 
 respectiv 
   Comanda electrovalvei de evacuare umiditate poate fi facuta cu un releu.
   Comanda motorului de curent continuu se face cu o punte H realizata:
- cu relee (cum am prezentat in articolul Sistem de comanda automata sau manuala sens rotatie motor de c.c.
sau
- cu L298 (cum este prezentat in articolul Scurta prezentare si testare a unui modul de comanda motoare cu L298)
   Programul modificat este eggincubator_2.ino si cu el avem la inceput prezentarea sistemului:

Nota: ultima versiune are un articol separat, vedeti Sistem de automatizare incubator oua (2) !
   Sunt explicate mai multe detalii... si comentariile versiunii 2 tot acolo le postati, va rog, pentru a nu pierde din ele...22.4.2020