În capitolul 4 avem ilustrații cu datele experimentale provenite de la senzorii plasați în interiorul serei. [302249]

Introducere

Condiții adecvate ale mediului sunt necesare pentru creșterea optimă a plantelor, culturi îmbunătățite și folosirea eficientă a apei și a resurselor. Majoritatea sistemelor existente necesită un PC sau folosesc o alertă prins SMS care informează constant utilizatorul despre condițiile existente în seră. [anonimizat].

Obiectivul acestui proiect este de a [anonimizat], bazat pe microcontroler pentru monitorizarea și reglarea temperaturii și umidității aerului cât și umiditatea solului pentru a obține o creștere maximă a plantelor. [anonimizat]. El comunică în timp real cu senzorii disponibili pentru a [anonimizat], servomotoare și alte dispozitive în funcție de necesitate pentru a maximiza recolta. Afișarea în timp real se face cu ajutorul unul Liquid Crystal Display (LCD) [anonimizat]. [anonimizat]. [anonimizat].

[anonimizat], [anonimizat].

[anonimizat]. [anonimizat].

Al doilea capitol conține schema bloc a sistemului, prezentarea fiecărei piese folosite în realizarea automatizării și rolul îndeplinit de acestea în proces.

Capitolul 3 [anonimizat].

În capitolul 4 avem ilustrații cu datele experimentale provenite de la senzorii plasați în interiorul serei.

Capitolul 1

Noțiuni generale și teoretice privind serele

Utilitatea automatizării unei sere

Punctul de start pentru o seră automatizată este creșterea productivității și îmbunatațirea calității recoltei. [anonimizat] (atât a solului cât și a aerului), luminii, este posibil să obținem productivitate maximă. [anonimizat]:

45% mai puține pesticide;

65% mai puțini angajați;

65% mai puține costuri generale.

[anonimizat][4] ne oferă informații despre avantajele automatizării unei sere:

20% mai puțin consum de electricitate;

30% mai puțin consum de combustibil;

Între 30%-75% mai puțin consum de apă.

Așteptările clientului

Tipurile de plante ce vor fi crescute într-o [anonimizat] a pieței. Prin urmare, o [anonimizat], de la ciuperci până la plante tropicale.

[anonimizat]. [anonimizat]ă și ușor de folosit.

Costul automatizării este un factor important care poate schimba viziunea fermierului, deoarece fară automatizare sera îi aduce un anumit venit, adăugând automatizarea, venitul trebuie să crească. Altfel, implementarea unui astfel de sistem ar părea ilogică.

1.3. Tehnologia curentă

Sunt multe companii pe această piață. Toate aceste firme oferă soluții de automatizare asemănătoare. Toate aceste companii folosesc aceeași soluție pentru diferitele nevoi ale clienților.

Ventilație, irigație, incălzire, răcire, umbrire, iluminat, etc. Aceste funcții fiind îndeplinite cu ajutorul diferitelor unități de control. Toate acestea cresc prețul final al automatizării.

Un sistem care controlează cât mai multi parametrii va avea întotdeauna cererea cea mai mare, dacă și costul este redus.

1.4. Tipuri de structuri

O seră poate fi atașată unei case sau unui garaj, sau poate fi de sine stătătoare. Există avantaje și dezavantaje pentru fiecare tip de structură.

1.4.1. Structuri atașate

Sprijinite

O seră sprijinită (Figura 1.1) este o jumătate de seră, ce se rezeamă de o clădire. Acestea sunt utile atunci când spațiul este limitat. Deși este aproape de electricitate, caldură și apă are și dezavantaje, cum ar fi:

înălțimea zidului de care este sprijinită limitează spațiul;

peretele pe care este rezemată poate absorbi căldura;

apa de ploaie, zăpada și gheața va ajunge de pe acoperis pe structura serei.

Figura 1.1. Sere sprijinite[10][14]

Atașate

O seră atașată este o seră intreagă ce are un capăt atașat de o altă clădire. Este mai mare dar și mai costisitoare. Sera atașată are o formă mai bună decât sera rezemată pentru că circulația aerului menține temperatura uniformă pe toată suprafața.

Figura 1.2. Seră atașată[10][14]

1.4.2. Structuri de sine stătătoare

Structurile de sine stătătoare sunt structuri separate, departe de alte clădiri, pentru a avea mai mult soare și pot fi construite cât de mari sau de mici se dorește. Când se alege mărimea trebuie să avem în vedere că in cele mici temperatura fluctuează mai mult.

Figura 1.3. Structuri de sine stătătoare[10][14]

1.5. Tipuri de cadru

Un cadru, poate fi simplu sau complex, în funcție de imaginația constructorului și cerințele inginerești.

Figura 1.4. Tipuri de cadru[10][14]

Semicerc

Cadrul tip semicerc este simplu și eficient, dar are înălțimea pereților laterali mică . Este acoperit de obicei cu folie de plastic.

Gotic

Cadrul gotic este asemănător cu cel de tip semicerc dar are formă gotică. Forma gotică are pereții laterali mai înalți.

Cadru rigid

Cadrul rigid are pereți laterali verticali și nu are stâlpi pentru a susține acoperișul. Acesta este lipit sau bătut în cuie de pereții laterali.

Cadru tip A si cadru montat cu grindă

Cadrul montat cu grindă este simplu de construit dar necesită mai mult lemn sau metal decât celelalte tipuri de cadre.

Cadrul tip A este asemănător cu cadrul montat cu grindă cu excepția faptului că înălțimea pereților laterali este mult mai mică.

1.6. Acoperire

Acoperirea serelor se poate face cu sticlă, folie de plastic, zid dublu de plastic rigid (plexiglas), cu o perioadă de viață de la 1 la 3 ani. Tipul de cadru și de acoperire trebuie ales să se potrivească în mod corect.

1.7. Principiile reglării automate

Sistemele automate sunt sisteme tehnice cu ajutorul cărora se realizează supravegherea și comanda proceselor și instalațiilor tehnologice, fără intervenția directă a omului.[]

Există două componente din care este compus un sistem automat: procesul de automatizat și dispozitivul de automatizare. Dispozitivul de automatizare îndeplinește trei funcții:

-măsurare: prin intermediul traductoarelor;

-comandă: prin intermediul regulatoarelor;

-execuție: prin intermediul elemetelor de execuție.

Mărimile fizice care caracterizează un sistem sunt: mărimi de intrare, mărimi de stare și mărimi de ieșire.

Reglarea automată constă în aducerea și menținerea stării procesului în vecinătatea unei stări de referință, în condițiile modificării în timp a stării de referință și a acțiunii perturbațiilor asupra procesului reglat.[6]

1.7.1. Principiul reglării după cauză

Principiul reglării după cauză presupune intervenția asupra procesului reglat pe baza valorilor curente ale intrărilor sistemului de reglare (perturbații luate în considerare și referința). [6]

Acest principiu realizează evaluarea valorii curente a perturbației, estimează efectul acesteia asupra mărimii reglare și intervine asupra procesului pentru a compensa efectul produs de perturbație.

Avantajul acestui principiu este faptul că sistemul de reglare poate să prevină modificarea mărimii reglate de către perturbație deoarece acțiunea perturbației are loc în același timp cu acțiunea compensatorului. Pe de altă parte, există și dezavantaje. Unul dintre acestea este faptul că este necesară cunoașterea exactă a modelului matematic dinamic al părții fixate (proces+element de execuție+traductor) a sistemului pentru a realiza o reglare ideală.

Figura 1.5. Schema bloc a unui SRA după perturbație și după referință[6]

T- Traductor m- Măsură

R- Regulator c- Comandă

E- Element de execuție u- Agent de reglare

P- Proces y- Mărime reglată

v1,v2- Perturbații

Figura 1.6. Schema de reglare automată după perturbație[3]

C- compensator U- mărime de execuție

P- proces V1, V2- perturbații

R- referință Y- mărime reglată

Modelul I-S-E al compensatorului liniar C, care realizează reglarea dinamică după perturbația V1 și referința R este:

(1.1)

Pentru a urmări numai reglarea staționară directă după perturbația V1 și referința R, compensatorul C va fi de tip static, modelul liniar fiind:

(1.2)

Modelul staționar, dacă procesul P se consideră liniar, este:

Y= (1.3)

Parametrii compensatorului, K1 și K2, au următoarele relații:

(1.4)

1.7.2. Principiul reglării după efect

Principiul reglării după efect presupune intervenția asupra procesului reglat, pe baza informației obținute prin măsurarea mărimii reglate a procesului, în scopul menținerii acesteia la o valoare cât mai apropiată de valoarea referinței, în condițiile acțiunii perturbațiilor asupra procesului și a variației în timp a referinței. [6]

În continuare este prezentată schema bloc a unui sistem de reglare automată după efect.

Figura 1.7. Schema bloc a unui sistem de reglare automată după efect[6]

yᵢ=mărimea de referință v=perturbații

i=referința P=proces

c=comanda regulatorului E=element de execuție

u=agent de reglare R=regulator

y=mărime reglată T=traductor

m=măsura Ti=traductor de intrare

Stabilirea erorii va determina sensul regulatorului:

e=i-m (sensul este invers)

e=-i+m (sensul este direct)

În momentul producerii unei erori, acțiunea de reducere a acesteia începe imediat, fară a conta care este cauza producerii erorii. Cu toate acestea, apariția unei erori nu poate fi prevenită.

Regulatorul generează comanda c prin prelucrarea erorii e cu ajutorul algoritmului de reglare PID.

Forma idealizată a acestui algoritm este:

(1.5)

Kp=factor de proporționalitate

Tᵢ=constanta de timp integrală

Td=constanta de timp derivativă

cₒ=comanda în absența erorii

Expresia componentei:

– proporționale P:(1.6)

-integratoare I:(1.7)

-derivatoare D:(1.8)

Referința R este urmărită de compensatorul liniar C, iar modelul acestuia are forma I-S-E:

(1.9)

R=referința, iar E reprezintă eroarea de reglare și are formula: E=R-Y, Y=mărimea reglată

Este utilizat și algoritmul cu două grade de libertate, în detrimentul celui cu un singur grad de libertate din relația:

(1.10)

Compensatorul liniar ce utilizează principiile de reglare după cauză și după efect are următorul model:

(1.11)

1.8. Proiectarea sistemelor pentru reglarea automată a temperaturii

Figura 1.8. Schema bloc a unui sistem simplu[5]

Considerăm sistemul ca în figura 1.8 și funcția de transfer a părții fixate dată:

(1.12)

rezultată prin conexiunea în serie a componentelor sitemului (traductor, element de execuție) și procesului a cărui funcție de transfer este dată:

(1.13)

Constanta de întârziere a elementului de execuție este semnificativă, iar întârzierea senzorului nu este neglijabilă față de întârzierea procesului. În capitolul doi va fi explicat cum funcționează senzorul (traductorul) pentru o mai bună înțelegere.

Rezultă pentru calculul de proiectare forma:

(1.14)

De obicei, în aplicațiile practice, constantele de întârziere sunt destul de mari deoarece procesele cu transfer termic sunt lente. De aceea este necesar să se impună un efect anticipativ, deci recomandarea unui algoritm PID.

Capitolul 2

Proiectarea sistemului automat de reglare și monitorizare

2.1. Funcționarea sistemului

Sera va fi de sine stătătoare, iar cadrul ales este cel montat cu grindă datorită rezistenței acestuia. Cadrul va fi reazlizat din lemn. Pentru acoperișul serei va fi folosit plexiglas pentru că este mai rezistent decât folia de plastic, dar mai usor de montat decât sticla, iar pentru pereții laterali am ales folia de plastic. După realizara cadrului se vor monta piesele necesare reglării și monitorizării parametrilor.

În centrul sistemului se află microcontrolerul la care vor fi conectate următoarele componente: senzorul de temperatură și umiditate a aerului (DHT22), senzorul pentru măsurarea umidității solului (higrometru), un modul cu două relee la care va fi legată pompa de apă, două servomotoare și un afișaj LCD.

Arduino se alimentează de la un alimentator de 9V pentru a putea la rândul lui să alimenteze cei doi senzori și cele două servomotoare. Pompa de apă va fi alimentată de la o sursă de 12V.

Senzorul DHT22 va înregistra și trimite valorile temperaturii și umidității aerului la microcontroler pentru a fi afișate pe PC și pe LCD. Dacă temperatura este mai mare decât cea scrisă în program, arduino va acționa cele două servomotoare iar folia de plastic ce acoperă pereții laterali se va ridica. Atunci când temperatura ajunge la valorile dorite, cele două servomotoare vor fi acționate, în sens invers de această dată, iar folia de plastic o să fie coborâtă.

Pentru a menține umiditatea solului, arduino va trimite un semnal 1 către releu, acesta o să închidă circuitul iar pompa de apă va fi alimentată. Dacă umiditatea solului este în limitele impuse, arduino trimite un semnal 0 iar circuitul rămâne deschis și pompa nu va fi alimentată. Aceaste comenzi au la bază valoarea umidității solului înregistrată de higrometru. Și această valoare va fi afișată pe LCD dar și pe calculator.

Afișarea în fereastra de monitorizare serială a calculatorului este doar pentru calibrarea sistemului.

2.2. Schema bloc a sistemului

Figura 2.1. Schema bloc

2.2. Descriere hardware

2.2.1. Traductoare

Traductorul, este un dispozitiv care convertește o mărime de o anumită natură fizică în altă mărime de o altă natură fizică. Mărimile fizice investigate (parametri de proces) se împart în șase clase:

– electrice – optice

– mecanice – magnetice

– termice – chimice

În figura următoare este o reprezentare generală a traductorului:

Figura 2.2. Reprezentarea generală a traductorului

În practică, traductoarele au ca semnal de ieșire un semnal electric. Deci, putem spune că traductorul este dispozitivul care primește la intrare o mărime fizică de o anumită natură numită parametru de proces, și oferă la ieșire un semnal electric calibrat corespunzător unei anumite stări sau situații de măsurat, ce poate fi citit de către un observator uman sau de către un instrument.

Monitorizarea si controlul mediului într-o seră, implică stabilirea schimbărilor care pot influența creșterea plantelor.

Umiditatea solului, temperatura si umiditatea aerului, lumina, sunt parametrii care influențează fotosinteza. Deoarece toți acesti parametrii sunt interconectați un sistem de control în buclă închisă este utilizat în monitorizarea acestora.

Senzorii folosiți în acest sistem sunt:

Senzor de umiditate a solului (Higrometru)

Senzor de temperatură și umiditate a aerului (DHT22)

Senzor de umiditate a solului

Caracteristici:

Circuitul utilizează o sursă de 5V, o rezistență fixă, o rezistență variabilă si două capete metalice ca sonde ale senzorului.

Acesta dă o tensiune de ieșire care corespunde cu conductivitatea solului.

Conductivitatea solului depinde de umiditatea acestuia și crește odată cu cantitatea de apă din sol.

Figura 2.3. Senzor de umiditate a solului (Higrometru)[13]

Descriere funcțională a senzorului:

Cele două capete metalice ale senzorului sunt introduse în solul a cărui umiditate dorim să o determinăm. Solul analizat poate fi găsit in unul din următoarele trei cazuri:

Cazul 1: Umiditate scăzută-Sondele senzorului sunt introduse în sol la o adâncime acceptabilă. Deoarece nu există conductivitate între cele două capete circuitul ramâne deschis.

Cazul 2: Umiditate optimă- Atunci când se adaugă apă, ea se infiltrează în sol, iar umiditatea acestuia crește. Acest lucru conduce la creșterea conductivității solului, iar între cele două capete metalice ale senzorului se va forma o cale conductoare și circuitul se va închide.

Cazul 3: Exces de apă- Dacă este adaugată apă peste nivelul optim, conductivitatea solului crește drastic și o cale stabilă de conducție se va forma între cele două capete metalice ale senzorului închizând permanent circuitul.

Higrometrul va fi conectat la microcontroler prin intermediul unui pin cu ajutorul căruia va trimite informațiile despre umiditatea solului pentru a putea fi reglată și afișată corespunzător. Alți doi pini sunt necesari pentru alimentarea senzorului, aceștia fiind conectați la +, respectiv – .

Senzor de temperatură și umiditate a aerului

Senzorul folosit pentru măsurarea temperaturii și umidității solului este DHT22. Acesta este un senzor digital format dintr-un termistor (pentru măsurarea temperaturii) și un senzor capacitiv pentru determinarea umidității.

Un termistor este un semiconductor a cărui rezistență electrică variază cu temperatura. Acestea sunt de două tipuri: cu coeficient de temperatură negativ si cu coeficient de temperatură pozitiv. Cel mai utilizat este termistorul cu coeficient de temperatură negativ(NTC), având proprietatea că rezistența sa electrică scade exponențial atunci când temperatura crește și invers.

Figura 2.4. Senzor DHT22[12]

Specificatii tehnice:

Senzorul DHT22 transmite informațiile către microcontroler tot prin intermediul unui pin, de asemenea, ceilalți doi pini vor fi conectați la + și – . Datorită datelor transmise de acest senzor se va realiza aerisirea incintei si reglarea temperaturii. Umiditatea aerului va fi doar măsurată.

Microcontroler (Arduino Uno R3)

Arduino Uno R3 este o placă de dezvoltare bazată pe microcontroler (ATmega328). Arduino UnoR3 are 14 de intrari digitale / pini de iesire, (dintre acestea, 6 pot fi utilizate ca ieșiri PWM), 6 intrări analogice, un oscilator cu quarț de 16 MHz, o conexiune USB, o mufă de alimentare, o mufă ICSP si un buton de resetare. Arduino Uno R3 conține tot ceea ce este necesar pentru a sprijini microcontrolerul pentru ca acesta să funcționeze; pur și simplu conectați la un computer printr-un cablu USB, alimentator AC-la-DC sau baterie pentru a începe.

Arduino Uno R3 este diferit fata de plăcile precedente, în sensul că nu folosește un chip driver FTDI USB-la-serial. În schimb, acesta are încorporat microcontrolerul Atmega16U2 programat ca un convertor USB-la-serial.

Figura 2.5. Arduino Uno R3[11]

Arduino Uno R3 poate fi alimentat prin intermediul conexiunii USB sau cu o sursă de alimentare externă.

Placa de dezvoltare poate opera o sursă externă de 6-20 V. Dacă este alimentată la mai puțin de 7 V, există posibilitatea, ca pinul de 5 V să furnizeze mai puțin de cinci volți și placa să devină instabilă. Dacă se alimentează cu mai mult de 12 V regulatorul de tensiune se poat supra-încalzi acest lucru ducând la deteriorarea plăcii. În concluzie, intervalul recomandat este 7-12 V.

Putem spune despre acesta ca este “creierul” întregului sistem. El preia informațiile de la cei doi senzori și elaborează comenzi conform programării.

Afișaj LCD

Caracteristici tehnice:

Acest tip de LCD este foarte popular și destul de folosit în proiecte pentru a afișa informații, cum ar fi valorile pe care le înregistrează senzorii în acest proiect. De asemenea, este și destul de ieftin.

Figura 2.5. Afișaj LCD (Display)[13]

LCD-ul are 16 pini (Figura 2.5) prin care primește comenzi și afișează caractere. În continuare avem descrierea fiecărui pin.

GND – ground (nul)

VCC – va fi conectat la pinul de 5V al microcontrolerului pentru alimentare

V0 – este pinul căruia îi putem atașa un potențiometru pentu controlul contrastului

RS – este folosit pentru a selecta dacă trimitem comenzi sau date către LCD. Spre exemplu, dacă este setat pe low sau zero volți, atunci trimitem comenzi la LCD cum ar fi: plasează cursorul pe o anumită locație, șterge, oprește displayul, etc. Dacă este setat pe high sau 5V trimitem sau caractere.

R/W – selectează modul în care vom utiliza LCD-ul, citim sau scriem (read/write). Citirea este folosită de LCD atunci când execută programul, iar scrierea de utilizator când trimite comenzi sau caractere.

E – activează scrierea în registre, sau următorii 8 pini de date (7-14). Prin intermediul acestor pini trimitem datele pe care le scriem în registre.

A – anod și K – catod sunt folosiți pentru contrast.

Informațiile afișate pe LCD sunt transmise cu ajutorul microcontrolerului de la senozori prin intermediul pinilor 11, 12, 13 și 14 ( pini de date).

Pompă de apă

Pompa de apă folosită are un motor de curent continu ce se alimentează la 12V. Este o pompă de parbriz, dar în cazul nostru va fi activată atunci când umiditatea solului si a aerului o sa fie sub limitele impuse.

Figura 2.6. Pompă de apă

Pompa de apă va fi activă doar atunci când umiditatea solului va fi prea scazută. Aceasta este alimentata de la o sursă de 12V. Pornirea și oprirea pompei se realizează cu ajutorul unui releu.

Modul cu două relee

În figura următoare este modulul cu doua relee, două canale, izolate electric prin optocuploare.

Figura 2.7. Modul cu două relee[13]

Modulul este de 5V și suportă 10A. Este folosit pentru controlul dispozitivelor cu consum mare de putere. Optocuplorul, mai sus menționat, este componenta care transferă semnalul electric între cele două circuite care au tensiuni diferite, prin utilizarea luminii.

Cu ajutorul acestor relee vom porni și opri pompa de apă. Modulul se conectează la microcontroler prin intermediul unui pin și va primi comenzi (deschis/închis) în funcție de umiditatea solului măsurată cu ajutorul higrometrului. Mai pe scurt, releul nu va închide circuitul pentru alimentarea pompei dacă umiditatea este în parametrii normali.

Servomotor

Un servomotor este un motor (electric, hidraulic sau pneumatic) al unui sistem de comandă automată sau de reglare automată folosit pentru acționarea unui element de execuție al unui sistem tehnic, transformând un semnal aplicat la intrare într-o mișcare de cele mai multe ori de rotație și folosind o sursă auxiliară de energie.

Figura 2.8. Servomotor ( Tower Pro MG90S)[13]

În mod normal, servomotoarele, sunt motoare de precizie. Ele au încorporat elementul de feedback. În cazul acestui servomotor este un potențiometru rotativ. Miscările motorului sunt limitate datorită acestui potențiometru, el putând să se rotească aproximativ 180ᵒ (90 de grade în fiecare direcție).

Pentru a se potrivi mai bine în automatizarea creeată am modificat servomotorul pentru rotație continuă. Următorii pași au fost necesari pentru realizarea acestui obiectiv:

Carcasa a fost desfăcută, astfel mecanismul interior a fost expus

Elementul de feedback (potențiometrul) a fost deconectat

În locul potențiometrului au fost adăugate două rezistențe de 2.2 kΩ conectate în serie, deoarece majoritatea servomotoarelor de acest fel au un potențiometru de aproximativ 5k

Rezistențele au fost izolate, carcasa închisă, iar acum motorul va avea o rotație de 360ᵒ

Servomotoarele au 3 pini. Cu ajutorul a doi dintre aceștia se realizează alimentarea, iar cel rămas va fi conectat la arduino pentru a primii comenzi în funcție de valorile măsurate cu ajutorul senzorului DHT22.

Surse de alimentare

Sursă de alimentare 12V, 5A

Figura 2.9. Sursa 12V, 5A

Specificații:

Cu ajutorul acestei surse se va alimenta pompa de apă atunci când umiditatea solului este sub nivelul setat.

Alimentator 9V, 1A

Figura 2.10. Alimentator[13]

Alimentatorul oferă la ieșire o tensiune de 9V, iar curentul maxim de ieșire este de 1A și este ideal pentru alimentarea microcontrolerului.

Descriere software

Arduino 1.6.9 software este un IDE (Integrated Development Environement), o aplicație cross-platform scrisă în Java. Limbajele folosite pentru scrierea programelor sunt C sau C++.

Prezentare Arduino 1.6.9 software

Butoanele următoare sunt prezente în partea de sus a ferestrei, în partea stângă:

Figura 2.11. Butoane

Partea stângă b) Partea dreaptă

Verificarea (compilarea) programului

Încărcarea programului în placa Arduino

Deschide un proiect nou

Deschide un proiect existent

Salvează proiectul curent

Monitorizare serială

Acest buton ne deschide următoarea ferestră cu opțiuni

Figura 2.12. Fereastra de opțiuni

În figura următoare este prezentată fereastra în care este scris programul (partea superioară cu fundal alb) și fereastra de erori (partea inferioară cu fundal negru).

Figura 2.13. Fereastra de scriere a codului și afișare a erorilor

Pentru a putea încărca programul pe placa Arduino este necesară selectarea tipului de microcontroler folosit și selectarea portului ca în figurile următoare.

Figura 2.14 Selectarea plăcii Arduino folosite

Figura 2.15. Selectarea portului

După cum se poate observa, interfața este intuitivă și ușor de folosit. Sunt necesare cunoștințe de C sau C++ pentru programare, dar programul are librării create de comunitate pentru cele mai folosite componente, ceea ce face ca softwareul să fie accesibil și începătorilor dar și utilizatorilor avansați.

Capitolul 3

Implementarea și testarea sistemului de reglare

Montajul sistemului de reglare a parametrilor

Pentru a plasa tipul de cadru ales, montat cu grindă, am folosit o placă de lemn cu dimensiunile 80cm x 30cm. Cadrul montat cu grindă, realizat tot din lemn, va ocupa 60cm x 30cm, iar cei 20cm rămași vor fi folosiți pentru a monta piesele necesare automatizării.

Figura 3.1. Realizarea cadrului

Următorul pas a fost realizarea acoperișului, mai exact a cadrului acestuia, care va susține plexiglasul transparent.

Figura 3.2. Realizarea acoperișului

Plexiglasul folosit are grosimea de 0.2mm și a fost folosit în detrimentul sticlei, deoarece este mai ușor de montat decât aceasta, dar și în detrimentul foliei de plastic pentru că este mai rezistent decât aceasta.

Figura 3.3. Plexiglas

Pe cei 20cm rămași am montat primele piese necesare automatizării. De la stânga la dreapta avem: Sursa 12V, 5A , modul cu doua relee, Arduino Uno R3, iar placa albă este un breadboard ce ne va ajuta la realizarea conexiunilor.

Figura 3.4. Montarea pieselor pe placa de lemn

Deasupra acestora o să avem bazinul și pompa de apă montate pe un suport din lemn.

Figura 3.5. Pompa de apă și bazinul

În interiorul stâlpilor interiori au fost amplasate cele două servomotoare care vor ridica părțile laterale pentru aerisire si reglarea temperaturii aerului.

Figura 3.6. Servomotoare montate

Figura 3.7. Montajul final

Codul sursă

//Librăriile

#include <DHT.h>;

#include <Servo.h>;

#include <LiquidCrystal.h>

//Declararea pinilor la care este conectat afișajul LCD

LiquidCrystal lcd(1,2,4,5,6,7);

// Pinul la care este conectat senzorul DHT22

#define DHTPIN 3

// Tipul senzorului

#define DHTTYPE DHT22

// Inițializarea senzorului DHT22

DHT dht(DHTPIN, DHTTYPE);

// Creează obiectul de control al servomotorului 1

Servo servo1;

// Creează obiectul de control al servomotorului 2

Servo servo2;

// Declararea pinului la care este conectat releul

int relay = 10;

// Declararea pinului la care este conectat senzorul de umiditate a solului

int soilhumidity = 0;

// Variabila indice va lua valoarea indicelui de confort termic conform formulei

int indice;

// Înregistrează valoarea umidității

float hum;

// Înregistrează valoarea temperaturii

float temp;

// În void setup() este scris codul ce va rula o singură dată

void setup()

{

// Începe comunicarea serială cu calculatorul

Serial.begin(9600);

// Începe comunicarea cu afișajul LCD

lcd.begin(16,2);

// Senzorul DHT22 începe să transmită valorile înregistrate

dht.begin();

// Atașează obiectul de control al servomotorului 1 pinului 9

servo1.attach(9);

// Atașează obiectul de control al servomotorului 2 pinului 8

servo2.attach(8);

// Poziția inițială a servomotorului 1

servo1.write(95);

// Poziția inițială a servomotorului 2

servo2.write(94);

// Inițializează pinul la care este conectat releul pentru a trimite date

pinMode(relay, OUTPUT);

// Poziția de start (nu trece curentul)

digitalWrite(relay, LOW);

}

// În void loop() este scris codul ce va rula repetat

void loop()

{

// Citește umiditatea solului de la senzor

int sensorValue = analogRead(A0);

// Limitează valorile ( 300 este limita inferioară și 1023 limita superioară)

sensorValue = constrain(sensorValue, 300,1023);

// Creează o “hartă” cu valorile

// 300 sau 100% când solul este ud și 1023 sau 0% când solul este uscat

soilhumidity = map(sensorValue, 300, 1023, 100, 0);

// Citește valoarea umidității și o memorează în variabila hum

hum=dht.readHumidity();

// Citește valoarea temperaturii și o memorează în variabila temp

temp=dht.readTemperature();

// Calculează valoarea indicelui de confort termic și o memorează în variabila indice

indice=(temp * 1.8 + 32) – (0.55 – 0.0055 * hum) * ((temp * 1.8 + 32) – 58);

// Afișează mesajul în fereasta de monitorizare serială

Serial.print("Temperatura:");

// Afișează valoarea corespunzătoare în fereastra de monitorizare serială

Serial.print(temp);

Serial.print("Celsius");

// Afișează mesajul în fereastra de monitorizare serială

Serial.print("Umid aer: ");

// Afișează valoarea corespunzătoare în fereastra de monitorizare serială

Serial.print(hum);

// Afișează mesajul în fereastra de monitorizare serială

Serial.print(" %, Umiditatea solului ");

// Afișează valoarea corespunzătoare în fereastra de monitorizare serială

Serial.print(soilhumidity);

Serial.println(" %");

// Poziționează cursorul pe prima poziție a afișajului LCD

lcd.setCursor(0,0);

// Afișează pe LCD textul

lcd.print("Temp:");

// Afișează pe LCD valoarea corespunzătoare

lcd.print(temp);

lcd.print("C");

// Poziționează cursorul pe al doilea rând al afișajului LCD

lcd.setCursor(0, 1);

// Afișează pe LCD textul

lcd.print("Umid aer:");

// Afișează pe LCD valoarea corespunzătoare

lcd.print(hum);

lcd.print("%");

delay(2000);

// Poziționează cursorul pe prima poziție a afișajului LCD

lcd.setCursor(0, 0);

// Afișează pe LCD textul

lcd.print("Umid sol:");

// Afișează pe LCD valoarea corespunzătoare

lcd.print(soilhumidity);

delay(2000);

// Dacă temperatura este mai mare decât cea specificată

if (temp>20)

{

// Acționează servomotoarele

servo1.write(45);

servo2.write(45);

delay(2000);

servo1.write(95);

servo2.write(94);

}

// Dacă temperatura este mai mică decât cea specificată

While (temp<15)

{

// Citește valoarea temperaturii și o memorează în variabila temp

temp=dht.readTemperature();

// Citește valoarea umidității și o memorează în variabila hum

hum=dht.readHumidity();

// Afișează mesajul în fereastra de monitorizare serială

Serial.print("Temperatura aerului este: ");

// Afișează valoarea corespunzătoare în fereastra de monitorizare serială

Serial.print(temp);

Serial.print("C");

// Afișează mesajul în fereastra de monitorizare serială

Serial.print("Umidiatea aerului este: ");

// Afișează valoarea corespunzătoare în fereastra de monitorizare serială

Serial.println(hum);

Serial.print("%");

// Poziționează cursorul pe prima poziție a afișajului LCD

lcd.setCursor(0, 0);

// Afișează pe LCD textul

lcd.print("Temp aer:");

// Afișează pe LCD valoarea corespunzătoare

lcd.print(temp);

lcd.print("C");

// Poziționează cursorul pe prima poziție, rândul al doilea al afișajului LCD

lcd.setCursor(0, 1);

// Afișează pe LCD textul

lcd.print("Umid aer:");

// Afișează pe LCD valoarea corespunzătoare

lcd.print(hum);

lcd.print("%");

// Citește valoarea umidității solului de la higrometru

sensorValue = analogRead(A0);

// Afișează mesajul în fereastra de monitorizare serială

Serial.print("Umiditatea solului este:");

// Afișează valoarea corespunzătoare în fereastra de monitorizare serială

Serial.print(sensorValue);

Serial.println("%");

// Poziționează cursorul pe prima poziție a afișajului LCD

lcd.setCursor(0, 0);

// Afișează pe LCD textul

lcd.print("Umid sol:");

// Citește valoarea umidității solului de la higrometru

lcd.print(sensorValue);

lcd.print("%");

delay(1000);

// Acționează servomotoarele

myservo1.write(135);

myservo2.write(135);

delay(1000);

myservo1.write(95);

myservo2.write(95);

}

// Dacă umiditatea solului și a aerului sunt mai scăzute decât limita impusă

if ((hum<30)&&(soilhumidity<20))

{

// Pornește pompa de apă

digitalWrite(relay, HIGH);

delay(200);

}

// Până când valorile ajung la cele dorite

while ((hum>50)&&(soilhumidity>50))

{

// Citește valoarea temperaturi și o memorează în variabila temp

temp=dht.readTemperature();

// Citește valoarea umidității și o memorează în variabila hum

hum=dht.readHumidity();

// Afișează mesajul în fereastra de monitorizare serială

Serial.print("Temperatura aerului este: ");

// Afișează valoarea corespunzătoare în fereastra de monitorizare serială

Serial.print(temp);

Serial.print("C");

// Afișează mesajul în fereastra de monitorizare serială

Serial.print("Umidiatea aerului este: ");

// Afișează valoarea corespunzătoare în fereastra de monitorizare serială

Serial.println(hum);

Serial.print("%");

// Poziționează cursorul pe prima poziție a afișajului LCD

lcd.setCursor(0, 0);

// Afișează pe LCD textul

lcd.print("Temp aer:");

// Afișează pe LCD valoarea corespunzătoare

lcd.print(temp);

lcd.print("C");

// Poziționează cursorul pe prima poziție, rândul al doilea al afișajului LCD

lcd.setCursor(0, 1);

// Afișează pe LCD textul

lcd.print("Umid aer:");

// Afișează pe LCD valoarea corespunzătoare

lcd.print(hum);

lcd.print("%");

// Citește valoarea umidității solului de la higrometru

sensorValue = analogRead(A0);

// Afișează mesajul în fereastra de monitorizare serială

Serial.print("Umiditatea solului este:");

// Afișează valoarea corespunzătoare în fereastra de monitorizare serială

Serial.print(sensorValue);

Serial.println("%");

// Poziționează cursorul pe prima poziție a afișajului LCD

lcd.setCursor(0, 0);

// Afișează pe LCD textul

lcd.print("Umid sol:");

// Citește valoarea umidității solului de la higrometru

lcd.print(sensorValue);

lcd.print("%");

delay(1000);

// Oprește pompa de apă

digitalWrite(relay, LOW);

delay(200);

}

// Afișează mesajul în fereastra de monitorizare serială

Serial.print("Temperatura aerului este: ");

// Afișează valoarea corespunzătoare în fereastra de monitorizare serială

Serial.print(temp);

Serial.print("C");

// Afișează mesajul în fereastra de monitorizare serială

Serial.print("Umiditatea aerului este: ");

// Afișează valoarea corespunzătoare în fereastra de monitorizare serială

Serial.print(hum);

Serial.print("%");

// Afișează mesajul în fereastra de monitorizare serială

Serial.print(" Indicele de confort termic este: ");

// Afișează valoarea corespunzătoare în fereastra de monitorizare serială

Serial.println(indice);

// Afișează mesajul în fereastra de monitorizare serială

Serial.print("Umiditatea solului este: ");

// Afișează valoarea corespunzătoare în fereastra de monitorizare serială

Serial.print(soilhumidity);

Serial.println("%");

delay(2000);

}

Testarea funcționării sistemului cu codul creat

Pentru a verifica funcționarea corectă a codului sursă l-am încărcat în memoria microcontrolerului și am alimentat corespunzător sistemul. La o primă rulare am identificat problemele existente și am modificat codul astfel încât să fie potrivit pentru sera realizată anterior.

Problemele au fost remediate rapid, deoarece codul nu era defectuos. Era nevoie doar de calibrările potrivite. Spre exemplu, durata necesară ridicării pereților laterali era setată prea sus și putea avea consecințe neplăcute. De asemenea, am constatat că releul care comandă pompa are nevoie de o alimentare mai bună, deoarece arduino nu putea furniza energia necesară acestuia deoarece și cele două servomotoare, senzorii și afișajul LCD sunt deja alimentate de acesta.

În concluzie, codul creat este funcțional, având nevoie doar de ajustările necesare tipului de incintă utilizată. De asemenea, poate fi îmbunătățit dacă sistemul este mai complex.

Capitolul 4

Rezultate experimentale

Afișarea valorilor temperaturii și umidității aerului măsurate de către senzorul DHT22 în fereastra de monitorizare serială și pe LCD:

Figura 4.1. Temperatură și umiditate aer (monitorizare serială)

Figura 4.2. Temperatură și umiditate aer (afișare pe LCD)

Afișarea umidității solului în fereastra de monitorizare serială și pe LCD:

Figura 4.3. Umiditatea solului (monitorizare serială)

Figura 4.4. Umiditatea solului (afișare pe LCD)

Afișarea tuturor parametrilor măsurați (temperatură și umiditate aer, umiditate sol):

Figura 4.5. Afișare parametrii măsurați (monitorizare serială)

Concluzii

A fost aleasă o abordare pas cu pas în proiectarea serei automate bazate pe microcontroler pentru măsurarea și reglarea parametrilor esențiali în creșterea plantelor. Rezultatele măsurărilor au arătat că sistemul este destul de fiabil și precis. Sistemul a depășit cu succes destul de multe deficiențe ale sistemelor existente, prin reducerea consumului de energie, întreținere și complexitate.

Sistemul prezintă următoarele avantaje:

senzorii folosiți au o sensibilitate ridicată și sunt ușor de manevrat;

poate oferi automatizare maximă la un cost redus;

consum de energie scăzut și întreținere redusă;

făcând schimbări minore în program se pot planta orice tip de plante;

poate fi modificat cu ușurință pentru a adăuga funcții noi;

dacă un senzor nu funcționează nu va afecta intregul sistem.

Dar și următoarele dezavantaje:

nu prezintă nici un sistem de auto-testare pentru a identifica senzorii defecți;

necesită alimentare neîntreruptă;

automatizarea completă în ceea ce privește eradicarea dăunatorilor și insectelor nu poate fi atinsă.

În continuare performanța sistemului poate fi îmbunătățită dacă alegem un microcontroler cu viteză de operare mai mare, memorie mai multă, posibilitatea conectării mai multor senzori, etc. De asemenea, prin adăugarea de noi echipamente putem monitoriza parametrii de la distanță direct de pe telefonul mobil.

Dacă dorim să monitorizăm și controlăm mai multe sere simultam, spre exemplu, putem opta pentru un microcontroler principal care să comande altele aflate în plan secundar.

Îmbunătățirea acestui sistem depinde de imaginația celui care o proiectează, de costurile de implementare și de scopul pe care îl are sistemul respectiv.

Concluzionând, putem spune că sistemul proiectat este ideal pentru agricultorii mici și pentru cei care își doresc să cultive propriile produse dar nu au timpul necesar.

Bibliografie

Bucur C. , Electronică digitală, curs;

Bucur G. , Tehnici de măsurare, Editura Universității Petrol-Gaze, Ploiești, 2010;

Cîrtoaje V. , Teoria sistemelor automate, Editura Universității Petrol-Gaze, Ploiești, 2004;

Disposal report, Producers of California, 1997;

Landau I. D. , (traducere Popescu D. , Ștefănoiu D.), Identificarea si comanda sistemelor, Editura Tehnica, București, 1997;

Mihalache S. , Elemente de ingineria reglării automate, Editura Matrixrom, 2008;

Paraschiv N. , Programarea aplicațiilor de timp real, curs;

http://www.texasgreenhouse.com/Garden/

https://www.thelibrarybook.net/pdf-creating-a-master-plan-for-greenhouse-operations.html

http://www.hort.vt.edu/ghvegetables/documents/Greenhouse%20Structures%20and%20Operations/UMD%20Home%20GH.pdf

https://www.robofun.ro/arduino/arduino_uno_v3

https://www.robofun.ro/senzor_umiditate_temperatura_dht22?search=dht22

http://www.okazii.ro/comunitati/okazia-lui/optimusdigital.html

Principle of greenhouse structures construction

http://ac.upg-ploiesti.ro/vcirtoaje/TSA.pdf

Summary

The objective of this project is to design a simple, easy to install, microcontroller based circuit to monitor and control the values of air temperature and humidity and soil humidity in order to achieve maximum plant growth and yield.

To achieve this objective, building an enclosure was necessary, and to build the enclosure more research about how to build it, what materials to use for frame and for coverage were made.

The controller used is a low power, cost efficient and easily available. It communicates with the various sensor modules in real time in order to control the parameters mentioned above by actuating two servomotors and one water pump according necessary condition of the crops. For real time display of data aquierd from the sensors is used an LCD, but the information will be displayed on the computer also. The design is flexible as the software can be changed any time.

Air temperature and humidity will be measured by DHT22 sensor, data will be transmitted to the arduino and displayed on the LCD and on computer on the serial monitor window. If temperature is above the limit, the microcontroller will activate those two servomotors and the sides will rise. When temperature reach the desired value the sides will come down.

Soil humidity sensor registred values will be also displayed on computer serial monitor window and on the LCD. If soil is to dry, arduino will send a signal 1 to the relay and powers the water pump until soil humidity is on desired values. Then a signal 0 will be sent to the relay and cut the power supply of the pump. Same signal is sent if the soil is on desired values from start.

The sistem is economical, portable and a low maintenance solution for the greenhouse especially for small scale agriculturists and in rural areas.

Similar Posts