luni, 15 mai 2017

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

luni, 1 mai 2017

Indicator treapta de viteza (GEAR SHIFT INDICATOR)

   Un indicator de treapta de viteze se poate face cu contacte, niste diode si un mic afisaj cu 7 segmente, cum prezentasem intr-un articol pe site-ul de baza in articolul afisaj stare lift
dar pentru a putea face si altceva, in viitor, de exemplu indicarea supraturari sau subturarii motorului, trebuie un microcontroler sau, cum prefer eu, o placa de dezvoltare Arduino.
  Deorece nu prea dispun de timp liber, am facut acest proiect la dorinta lui George, care o s-o si monteze pe masina, nu doar teste pe masa... el sugerandu-mi folosirea unor senzor magnetici, asa ca o schema de GEAR SHIFT cu Arduino Uno arata asa:

   Dupa incarcare sketch-ului GearShift_1.ino pe afisaj apar urmatoarele situatii: P in repaus, 1, 2, 3, 4, si 5 penru treptele de viteza 1, 2, 3, 4 si 5, respectiv ), 0 intermitenta pentru inapoi, iar pentru o stare nedefinita afisajul este stins (la teste s-a folosit Arduino Nano, care functioneaza identic):
   Tot George a facut un filmulet, numit Gear Shift Indicator in care se vad totate starile:

marți, 25 aprilie 2017

Ceas pe afisaj cu TM1637

    Fata de articolul Afisaj cu 4 cifre controlate de TM1637 si Arduino unde am testat afisajul, am pus un senzor de umiditate si temperatura DHT11 si am modficat o librarie pentru a afisa si niste litere, de data asta am conectat un modul de ceas de timp real cu DS3231 obtinand un simplu ceas, in prima faza.
dupa cum se vede si in primele filmulete:

   Schema de conectare este extrem de simpla:
iar sketch-ul folosit este TM1637_DS3231_clock0.ino.
   Modul obisnuit de afisare, ararata pentru ore dintr-o cifra 09, lucru, care pe mine ma deranjeaza asa ca imi afiseaza 9 cu un spatiu in loc de 0, dupa ce am modificat sketch-ul, care devine TM1637_DS3231_cloc0a.ino, partea impotrtanta fiind asta, ca se "traduce"asa: daca cifra zecilor de la ore e zero, nu se afiseaza nimic (caracterul nr. 17 din libraria modificata TM1637).
   In filmuletele
am prezentat diferentele intre aceste doua moduri de functionare.

   Dupa asta am conectat un encoder KY-040, dupa cum se vede in schema de mai jos:
montajul aratand asa (se vede si un difuzor/buzzer dintr-un calculator conectat intre pinul D7 si GND)
si am modificat sketch-ul, pentru a putea schimba ora si minutele, se apasa mai lung pe butonul encoderului pentru a intra in modul de modificare, intai se modifica ora, rotind in sensul acelor de ceasornic pentru cresterea valorii, respectiv se roteste in sens trigonometric pentru scaderea valorii orei, dupa care care se apasa pe butonul encoderului pentru a trece la modificarea minutelor, dupa modificare, se apasa iar pe buton pentru a reveni la functionarea normala.
 
   Sketch-ul care face toate acestea este TM1637_DS3231_clock1.ino iar filmuletele in care se vede modul de functionare sunt:


26.05.29017
   Dupa ce am vazut un comentariu de la un pasionat avizat de Arduino, Vlad Gheorghe, ca functioneaza si cu DS1307 in loc de DS3231 prin inlocuirea liniei RTC_DS3231 rtc; cu RTC_DS1307 rtc; mi-am adus aminte ca eu tastam inainte asa, doar ca merge foarte bine si cu DS3231 si cu DS1307, fara alte modificari.
Am facut si eu modifcarea asta si, in plus, am facut ca la reglaj orele sub 10 sa fie afisate fara 0 in fata.
Dupa incarcarea sketch-ului TM1637_DS3231_clock1a.ino se observa ca merge ok:

marți, 14 martie 2017

Alimentator stabilizat cu integratul L200 avand si reglaj al curentului la iesire

   Acum ceva timp am gasit articolul STABILIZED REGULATED POWER SUPPLY CIRCUIT WITH L200CV 0-30V postat pe site-ul 320volt.com, care prezinta o schema a unui alimentator reglabil de la 0 la 30V si reglaj al curentului la iesire de la 10mA la 1A. Din testele mele curentul maxim este de 1,8-2,1A (prin injumatatirea rezistentei de masurare curent R7, de la valoarea de 1 ohm la 0,44 ohmi obtinuta prin inseriarea a 2 rezistente de putere de 0,22 ohmi fiecare), ceea ce e e suficient pentru experimentele uzuale.
   Articolul de pe site-ul turces este preluat stil copy-paste de pe unul cehesc, dupa cum veti observa daca urmariti articolul Napájecí stabilizovaný regulovatelný zdroj s obvodem L200.
   Schema acestui alimentator reglabil este:
  Autorul, Michal Slánský, a prezentat si o varianta de cablaj/montaj:
   Aceast alimentator se bazeaza pe integratul specializat L200 (vedeti datashhet-ul, dar si documentatia A DESIGNER’S GUIDE TO THE L200 VOLTAGE REGULATOR).
   Eu am redesenat schema cu ajutorul programului Eagle PCB software:
pentru a face un cablaj mai mic:
    Dupa realizarea cablajului, am inceput sa asamblez montajul:
   Am facut mai multe teste, pe diferite transformatoare, cu diversi consumatori (bec de semnalizare, bec cu leduri, etc) iar rezistenta R7 am injumatatit-o (in loc de 1 ohm are 0,44 ohmi, realizata din inseriarea a doua rezistente de 0,22 ohmi)
pana la urma punand ansamblul intr-o cutie metalica cu un transformator de 18V/1,85A si un indicator de panou digital WR-005 (ampermetru-voltmetru pentru 3,2-30V si 0-5A, sunt de 0,1 ohmi), care se conecteaza simplu:
   Dupa cum se observa, am optat pentru un radiator micut racit fortat cu ajutorul unui ventilator (cooler) de 12V, alimentat impreuna cu indicatorul de panou din secundarul al doilea de 9V/0,4A.
   In timpul testelor initiale, am facut si niste filmultele, in care aveam o problema cu sistemul de indicare al limitarii, datorita unei atingeri intre 2 trasee)
alimentator stabilizat cu L200 cu reglaj al curentului la iesire
alimentator stabilizat cu L200 cu reglaj al curentului la iesire (2)