Salut! In acest articol am sa va prezint un
proiect realizat de mine,un sistem de irigare automat utilizand LabVIEW
versiunea student si interfata LIFA(LabView Interface for Arduino).Pentru
implementarea practica,vom utiliza o placa Arduino cu ajutorul careia vom citi
tensiunile senzorilor de temperatura,lumina si umiditate.Tensiunile vor fi
convertite in unitati de masura specifice.Pentru a verifica daca programul
functioneaza,la iesire vom conecta un led.
Pentru a comanda o electrovalva sau un motor ac spre exemplu este necesar un modul extern,acest subiect va fi tratat in articolul viitor.
Modul de functionare a programului:
Programul se seteaza la o ora si
data dorita la care se doreste pornirea/oprirea.
In cazul in care
temperatura,lumina sau umiditatea ajunge la o valoare limita impusa de
utilizator programul se va opri.Aceste limite pot fi introduse in butoanele de
control TMP OFF LIMIT/LIGHT OFF LIMIT/HUM OFF LIMIT.
De asemenea programul poate fi
pus in stare de pauza prin apasarea butonului PAUSE/START.
Tensiunile de pe senzori pot fi
citite de pe panoul frontal la indicatoarele VOLTAGE TMP/LIGHT/HUM.Temperatura
poate fi citita in grade Celsius de pe indicatorul de tip termometru TMP,iar
umiditatea se exprima in umditate relativa RH%.Intensitatea luminii se citeste
de pe indicatorul LIGHT pe o scara de la 1 la 10.
Selectia intrarilor senzorilor
se face din butoanele de control alegand pinii intrarea din meniu.
BOM:
1.Senzor de umiditate (SYH-2RS)
2. Senzor de temperatura (LM35)
3.Fotorezistor
4.Rezistente (2x500, 1X100, 1x1k,1x5k)
5.Arduino UNO
6.Fire si 1 led
Schemele utilizate
1.Schema pentru masurarea umiditatii
2.Schema pentru masurarea luminii
3.Schema
pentru masurarea temperaturii
Pentru schema 1 si 2 tensiunea se calculeaza prin divizare.
Pentru calculul temperaturii se utilizeaza formula :
grad C = (Vout[mV])/10
AN0,AN1,AN2 reprezinta intratile placii arduino.
4.Schema bloc a sistemului
5.Programul in Labview
Modul de functionare a schemei
1.Blocul de achizitionare a datei si orei in timp real
fig.1
In figura 1 este reprezentat blocul de
achizitionare a datei si orei in timp real.In figura a este reprezentat schema
in diagrama bloc,aceasta afiseaza o valoare numerica a orei in formatul pe care
il specificati. In figura b este afisat timpul in panoul frontal.
%X-comanda
utilizata pentru achizitionarea orei de la PC
%m/%d/%Y-comanda utilizata pentru formatarea datei:luna/zi/an.
2.Blocul pentru setarea orei si datei
fig.2
Figura 2 a si b reprezinta modul de setare a orei si a datei la
care se doreste pornirea,respectiv oprirea programului.
Blocul a1
achizitioneaza timpul si ora de la pc prin blocul a2(Get Date/Time in
seconds).Acesta este comparat cu o limita superioara(a3) sau inferioara(a4)
impusa de utilizator(vezi fig c),daca datele x se afla in valoarea limitelor
inferioare la iesire(?) valoarea va fi TRUE.In momentul in care x se afla in
limita superioara valoarea la iesire va fi FALSE.Blocul a5 efectueaza operatia de SI logic intre valoarea
de la iesire(?) si a6 care este un buton de tip toggle utilizat pentru
pauza(PAUSE).
Iesirea din blocul
a5 este legata la o structura de tip(SC) CASE,daca conditia impusa da ora si
data este adevarata programul va rula,in caz contrar programul va fi oprit.In imaginea este prezentata rularea programului in conditia TRUE respectiv FALSE(fig.3 si fig.4).
fig.3
fig.4
3.Blocul pentru achizitionarea si conversie a temperaturii
Blocul a1 este utilizat pentru achizitia tensiunii(vezi
fig5.c) de la senzorul de temperatura prin convertorul analog-numeric al placii
de achizitie,ulterior valoarea numerica este transformata in grade celsius
utilizand FORMULA(a3) si afisata pe termometrul virtual(fig.5 b/a4).
a2 este utilizat pentru configurarea portului de intrare
a placii de achizitie.Senzorul de temperatura este conectat la intrarea Analog
In 0 pe placa de achizitie.
fig.5
4.Blocul pentru achizitionare si
conversie a intensitatii luminoase
Blocul a1 este
utilizat pentru achizitia tensiunii(vezi fig6.b) de la senzorul de lumina prin
convertorul analog-numeric al placii de achizitie,ulterior valoarea numerica
este reprezentat pe o scara de la 0 la 10 prin inmultirea tensiunii citite cu
10. (vezi fig 6.c);10 reprezentand intensitatea luminoasa maxima,intensitatea
este reprezentata pe termometrul virtual(fig. 6c/a3).A2 este utilizat
pentru configurarea portului de intrare al placii de achizitie.Senzorul de
lumina este conectat la intrarea Analog PIN In 1 pe placa de achizitie.
fig.6
5.Blocul pentru achizitionarea si
conversia umiditatii
Blocul a1 este
utilizat pentru achizitia tensiunii(vezi fig7.c) de la senzorul de umiditate
prin convertorul analog-numeric al placii de achizitie,ulterior valoarea
numerica este reprezentat pe o scara de la 0 la 100 prin inmultirea tensiunii
citite cu 100. (vezi fig7.b);Umiditatea este reprezentata pe termometrul
virtual(fig7.b/a3) si este exprimata in procent.A4 este utilizat
pentru configurarea portului de intrare al placii de achizitie.Senzorul de
lumina este conectat la intrarea Analog PIN In 2 pe placa de achizitie.
fig.7
6.Blocul conditionat de senzori
fig.8
Dupa citirea datelor de la senzorii de temeperatura,lumina
respectiv umiditate,sunt preluate valorile a,b,c.Acestea sunt comparate cu o
valoare introdusa de utilizator TMP OFF LIMIT(limita maxima a
temperaturii),LIGHT OFF LIMIT(limita maxima a intensitatii luminoase),RH%
LIMIT(limita maxima a umiditatii relative).
Valorile rezultate in urma comparatiilor
sunt conectate la o poarta compusa OR,daca una dintre valorile rezultatelor in
urma comparatiilor este adevarata se va indeplini conditia TRUE,la iesirea
digitala 3 a placii de achizitie tensiunea va fi 0 volti(ledul nu se aprinde).
In cazul in care conditia este falsa,adica valorile a,b,c sunt mai mici decat
valorile impuse de utilizator,la poarta compusa OR iesirea va fi FALSE,se va
indeplini condita FALSE iar ledul se va aprinde.
fig.9
7.Blocul pentru reprezentarea
graficului lumina-tensiune
fig.10
Blocul este utilizat
pentru reprezentarea intensitatii luminii(a) in functie de tensiunea citita de
la senzor(b).Se utilizeaza functia Insert into Array(d) pentru a crea
multimea.In punctele e si f se insereaza multimea prin registrii de deplsare
iar in punctele a si b se insereaza elementul,randul,coloana din multimea
inserata in e,f.Iesirea multimii se converteste in date dinamice utilizand
Convert to Dynamic Data (c),iar datele sunt utilizate pentru crearea grafului
prin functia BUILD XY GRAPH.
8.Buclele de rulare si functia lor
Intreg
programul ruleaza intr-o bucla WHILE.Programul ruleaza fara oprire pana la
actionarea butonului STOP din panoul frontal.
Structurile de
tip CASE sunt necesare deoarece ne dorim sa conditionam pornirea/oprirea
programului in functie de timp,sau de valorile citite de la senzori.
Structura FLAT
SEQUENCE se utilizeaza deoarece se doreste ca citirile de la senzori sa se
execute secvential,una dupa cealalta cu un interval de 1000ms,in cazul in care
nu se utilizeaza un interval de temporizare si o structura secventiala in
fluxul de date,apar erori iar valorile afisate pe indicatoarele din panoul
frontal apar variatii care fac citirea imposibil.
fig.11
Panoul Frontal in Labview
fig.12
Modul
de conectare a senzorilor pe placa de test
fig.13
PIC
programul in Labview https://www.dropbox.com/s/e73pt2ccwddww7y/SIA.vi
Niciun comentariu:
Trimiteți un comentariu