Aplicatie de Domotica

Cuprins

Capitolul 1 INTRODUCERE

Așa cum se vede tot mai limpede în zilele noastre, tehnologia pătrunde tot mai mult în fiecare domeniu și ramură de activitate a omului. În ultimii ani tehnologia a făcut un avans important și nu mai e considerată ceva de care și cu care să te ajuți ci a ajuns la nivelul de necesitate.O necesitate în activitațile industriale și economice ale omului, în cele de siguranță și protecție, transport și comunicare, sanitare și farmaceutice, cu alte cuvinte în aproape toate domeniile.

O ramură a tehnicii care a prins contur foarte mult în secolul nostru este Automatica. Omul încearcă tot mai mult să-și facă viața cât mai sigură dar și confortabilă. Astfel roboții sau sistemele automatizate îl înlocuiesc mai ales in mediile periculoase, în activități dificile dar și în cele banale, cum ar fi lipirea unei etichete pe o sticlă într-o fabrică.

O știință a viitorului care are scopul de a face viata omului cât mai confortabila și care imiplică în abordarea ei automatica este Domotica. Domotica este o aplicație a sitemelor automatizate pentru echipamente casnice. Ideea unei case automatizate (figura 1.1 [2]) sau controlate de la distanță a fost multă vreme o poveste science-fiction, doar Nikola Tesla la sfârșitul secolului al-19-lea râvnea să controleze de la distanță navele[1]. Însă odată cu introducerea energiei electrice în gospodarii și progresia rapidă a tehnologiei această idee a prins contur.

Figura 1.1 Casa automatizată [2]

Unele din acțiunile pe care le poti realiza având casa automatizată sunt următoarele:

– a putea comanda dintr-un sigur punct, atât de pe un calculator, cât și de pe un telefon, sau mai multe puncte dorite, diferite panouri de control puse în locuri strategice, întreg sistemul de lumini al casei

– a putea alege diverse tipuri de climatizare fie pe timpul saptamanii, fie in week-end, fie când ești plecat în concediu

– să poți să controlezi sistemul de încălzire al locuinței în funcție de timp adică iarna sau vara și a putea reduce încălzirea când ferestrele sunt deschise, totul automat

– a putea controla dintr-un singur punct sau mai multe, jaluzelele din casă dar și acestea să poată rula pe modul automat în funcție de zi sau noapte

– să fi avertizat despre geamurile deschise din casă, înainte să pleci de acasă

– și multe alte acțiuni se mai pot realiza

Capitolul 2 OBIECTIVE ȘI SPECIFICAȚIA LUCRĂRII

Motivația

Motivația care a stat la bază a fost studierea și aprofundarea cunoștiințelor care sunt de ajutor în această destul de nouă ramură a tehnologiei care este și în atenția instituțiilor de conducere ale marelor puteri ale lumi.

Cum se vede in urmatorul comunicat al comisiei europene, citez: „Creșterea eficienței energetice a clădirilor noi și a celor existente este un factor cheie. Clădirile cu consum de energie aproape de zero ar trebui să devină norma. Clădirile – inclusiv locuințele – ar putea produce mai multă energie decât consumă. Produsele și aparatura vor trebui să îndeplinească cele mai înalte standarde în materie de eficiență energetică. În domeniul transporturilor sunt necesare vehicule eficiente și stimulente pentru schimbarea comportamentelor. Consumatorii vor avea de câștigat, facturile la energie fiind mai controlabile și mai previzibile. Cu ajutorul contoarelor inteligente și al tehnologiilor inteligente precum domotica, consumatorii vor avea mai mult control asupra propriilor modele de consum. O creștere semnificativă a eficienței poate fi atinsă prin acțiunile privind resursele legate de utilizarea energiei, cum ar fi reciclarea, optimizarea producției și prelungirea vieții produsului.“ (citat din Comunicarea Comisiei către Parlamentul European, Consiliu, Comitetul economic și social și Comitetul regiunilor – Perspectiva energetică 2050 [27]).

Totodată în prezentarea a unui seminar în cadrul Comisiei pentru politica economică și socială (ECOS) seminar pe tema „Domotica în serviciul îmbătrânirii active” se declara următoarele: „În multe cazuri, sistemele de domotică sunt capabilă să ofere un ajutor inestimabil persoanelor în vârstă în domeniul existenței autonome. Deși uneori pot fi privite drept produse de lux, asistența pe care o furnizează poate fi de o calitate ridicată și de mare importanță, reprezentând astfel o investiție care se amortizează cu timpul. Mai mult, într-o perioadă de restricții bugetare, sistemele de domotică care îi ajută pe cetățenii vârstnici să rămână în casele lor mai mult timp pot fi privite și ca o sursă de economii, întrucât înlocuiesc serviciile de îngrijire plătite. Domotica este și un sector economic specializat compus din IMM-uri inovatoare și competitive, situate adesea în aceleași clustere economice care produc tehnologie de vârf. Această sesiune investighează diferitele abordări cu privire la modul de integrare a unor astfel de sisteme în diversele forme de asistență socială și se concentrează pe câteva exemple de bune practici”[28].

După cum am observat, Domotica își are sau începe sa aibă un rol foarte important atât cât privește partea economică care are parte de multă atenție, cât și pe domeniul existenței autonome.

Scopul și obiectivele lucrării.

În lucrarea de față am încercat să prezint o aplicație domotică și să aduc în discuție principalele caracteristici care stau la baza formării acesteia.

Astfel pe baza machetei unei case am urmărit urmatoarele obiective:

-crearea unui sistem automatizat cu ajutorul traductoarelor, microcontrolerelor și elementelor de execuție pe care le am la dispoziție

-crearea unui sistem distribuit cu ajutorul microcontrolerelor:

-un microsistem cu controlul luminilor din camerele machetei

-un microsistem de control al jaluzelelor de la ferestre

-un al treilea micrositem va fi format din:

-controlul temperaturii

-sistem de siguranță și atenționare

Specificația lucrării

Primul pas in ilustrarea aplicației domotice a fost realizarea unei machete (figura 2.1) pe care să realizez obiectivele care mi le-am propus.

Macheta este compusa din două bucăți: una ce reprezintă baza și pereții casei și a doua fiind acoperișul dintr-o apă care este mobil și se poate da jos.

Figura 2.1 Macheta- exterior

Această machetă am vrut să fie compusă din mai multe camere pentru a simula cât mai aproape de adevăr. Astfel avem trei camere din care una va fi de comandă. Cu mai multe detalii am să revin la partea de implementare.Figura 2.2 reprezintă interiorul machetei.

Figura 2.2 Macheta- interior

Totodată pentru implementarea fizică am mai avut nevoie de:

– microcontrolere

– placă Wish Board

– senzor de lumină

– senzor de temperatură

– senzor cu efect Hall

– un Heating Pad

– motoare pas-cu-pas

– leduri

– rezistențe

– un piezo-buzzer

– driver-ul ULN2300A

Ca și microcontroler am folosit din familia MSP430 oferită de firma Texas Instruments. Din această familia am folosit MSP430G2231 cu care am reușit să fac un sistem automatizat, în care în funcție de datele citite de la traductori cum ar fi senzorul de lumină, senzorul de temperatură sau senzorul cu efect hall, s-a luat anumite decizii pentru elementele de execuție cum ar fi motoarele pas-cu-pas, ledurile, piezo buzzer-ul sau Heating Pad.

Deoarece, din această familia oferită de Texas Instruments, am reuțit să fac rost de trei exemplare, mi-am propus să fac un sistem distribuit în care fiecare microcontroler se ocupă cu partea lui care i-a fost rânduită.

De driver-ul ULN2300A m-am folosit pentru comanda de putere a motoarelor pas-cu-pas.

Heating Pad este elementul de execuție în bucla de reglare a temperaturii, iar senzorul cu efect Hall l-am folosit în sistemul de securitate.

Capitolul 3 CONSIDERAȚII TEORETICE

Am vorbit în introducere de automatică și domotică. În continuare voi încerca să le prezint pe scurt. Tot-odată vom mai urmări câteva din caracteristicile microcontrolerelor.

Automatica

Automatica este o ramură destul de nouă a științei care se ocupă cu studiul tuturor mijloacelor sau a metodelor prin intermediul cărora să se asigure o conducere a proceselor tehnice, fără intervenția directă a omului. Implementarea practică a acestor metode și mijloace de conducere a proceselor se numește automatizare.[4]

Automatizarea este o ramură a tehnicii, care are ca și scop funcționarea în automat a mașinilor și instalațiilor. Deci să fie independente de o continuă și/sau directă intervenție a forței de muncă umane.

Cu cît acesta este realizată mai optimal, cu atât este mai ridicat și mai bun gradul de automatizare. În instalațiile automatizate operatorul uman doar seocupă cu preluarea sarcinilor de supraveghere, de aprovizionare cu material, de transport a produselor finite, de întreținere și alte activități similare. Noile realizări ale electrotehnicii (microprocesoare) accelerează hotărîtor procesele de automatizare. Pe lîngă protejarea forței de muncă umane de activități grele și monotone, automatizarea ridică calitatea produselor precum și productivitatea proceselor cu o reducere corespunzătoare a costurilor pentru resursele umane folosite[3]. Însă totodată crește și numărul de șomeri, o perspectivă a oamenilor de rând pe care nu o putem salva.

Categorii de automatizări:

– de comandă

– de măsurare

– de reglare

– de protecție

– de semnalizare.

Scopurile generale ale automatizării:

-productivitatea

-consumurile specifice

-precizia execuției

-siguranța în funcționare

-protecția instalațiilor

-evitarea de către om a efortului fizic și a mediilor nocive.

Domotica

Domotica este o știință relativ nouă care are ca prinicipal obiect de interes conducerea centralizată, asistată de calculator a tuturor instalațiilor ce deservesc o clădire. Fie că sunt instalațiile sanitare, fie cele de ventilare-climatizare, sau cele de încălzire, de control al luminilor, al jaluzelelor, al sistemelor de sigurantă etc. Pentru clădiri mari, cum ar fi spre exemplu: centre comerciale, hoteluri, bănci, spitale, clădiri administrative, supravegherea și conducerea instalațiilor din dotare este o problemă necesară și complexă. Prin automatizare, clădirile devin mai sigure, consumă mai puțină energie și nu în ultimul rând dispun de un confort ridicat.

Un nivel superior în automatizarea instalațiilor îI reprezintă realizarea unui sistem de conducere ierarhizată a clădirilor care să includă ca părți componente toate instalațiile aferente imobilelor. Structura unui astfel desistem automat este distribuită și ierarhizată. Sistemul complex de conducere ierarhizată a instalațiilor din clădirile mari asigură și gestiunea tehnică a clădirilor respective, cu ajutorul căreia se pot obține[5]:

– diminuarea consumurilor energetice

– îmbunătățirea calității serviciilor datorată unei mai bune supravegheri, unei conduceri optimale și unei întrețineri preventive

– exploatarea mai bună a instalațiilor

– activitate de întreținere mai eficientă

– creșterea gradului de securitate a clădirilor, a echipamentelorși apersonalului din clădiri

Microcontroler

Introducere

La modul general un controler ("controller" – un termen de origine anglo-saxonă, cu un domeniu de cuprindere foarte larg) este, actualmente, o structură electronică destinată controlului unui proces sau, mai general, unei interacțiuni caracteristice cu mediul exterior, fără să fie necesară intervenția operatorului uman. Primele controlere au fost realizate în tehnologii pur analogice, folosind componente electronice discrete și/sau componente electromecanice (de exemplu relee). Cele care fac apel la tehnica numerică modernă au fost realizate inițial pe baza logicii cablate (cu circuite integrate numerice standard SSI și MSI ) și a unei electronici analogice uneori complexe, motiv pentru care "străluceau" prin dimensiuni mari, consum energetic pe măsură și, nu de puține ori, o fiabilitate care lăsa de dorit.

Apariția și utilizarea microprocesoarelor de uz general a dus la o reducere consistentă a costurilor, dimensiunilor, consumur, consumului și o îmbunătățire a fiabilității. Există și la ora actuală o serie de astfel de controlere de calitate, realizate în jurul unor microprocesoare de uz general cum ar fi Z80 (Zilog), 8086/8088 (Intel), 6809 (Motorola), etc.

O definiție, cu un sens foarte larg de cuprindere, ar fi aceea că un microcontroler este un microcircuit care încorporează o unitate centrală (CPU) și o memorie, împreună cu resurse care-i permit interacțiunea cu mediul exterior. [12]

Toate aplicațiile în care se utilizează microcontrolere fac parte din categoria așa ziselor sisteme încapsulate-integrate la care existența unui sistem de calcul încorporat este transparentă pentru utilizator.

Printre multele domenii unde utilizarea lor este practic un standard industrial se pot menționa: în industria de, în așa zisa electronică de consum (sisteme audio, televizoare, camere video și videocasetofoane, telefonie mobilă, GPS-uri, jocuri electronice etc.), în aparatura electrocasnică (mașini de spălat, frigidere, cuptoare cu microunde, aspiratoare), în controlul mediului și climatizare (sere, locuințe, hale industriale), în industria aerospațială, în mijloacele moderne de măsurare – instrumentație (aparate de măsură, senzori și traductoare inteligente), la realizarea de periferice pentru calculatoare, în medicină.

Ca un exemplu din industria de automobile, unde numai la nivelul anului 1999, un BMW seria 7 utiliza 65 de microcontrolere, iar un Mercedes din clasa S utiliza 63 de microcontrolere [12]. Practic, deși am prezentat ca exemple concrete numai sisteme robotice și mecatronice, este foarte greu de găsit un domeniu de aplicații în care să nu se utilizeze microcontrolerele.

Resursele integrate la nivelul microcircuitului ar trebui să includă, cel puțin, următoarele componente [13]:

– o unitate centrală (CPU), cu un oscilator intern pentru ceasul de sistem

– o memorie locală tip ROM/PROM/EPROM/FLASH și eventual una de tip RAM

– un sistem de întreruperi

– I/O – intrări/ieșiri numerice (de tip port paralel)

– un port serial de tip asincron și/sau sincron, programabil

– un sistem de timere- temporizatoare/numărătoare programabile

Este posibil ca la acestea să fie adăugate, la un preț de cost avantajos, caracteristici specifice sarcinii de control care trebuie îndeplinite:

– un sistem de conversie analog numerică

– un sistem de conversie numeric analogic și/sau ieșiri PWM

– un comparator analogic

– o memorie de date nevolatilă de tip EEPROM

– facilități suplimentare pentru sistemul de temporizare/numărare

Figura 3.1 Configurația fizică a interiorului unui microcontroler

În următoare figură, figura 3.2, avem o schiță care reușește în bună parte să ne prezinte elementele de bază care definesc un microcontroler, dar și legăturile dintre aceste elemente.

Figura 3.2

În următoarele pagini voi încerca să prezint aceste componente, fiecare componentă în parte cu caracteristicile sale, dar și niște figuri care să ajute la înțelegerea mai bine a acestora. Totodată vreau să spun că aceste descrieri nu îmi aparțin ci le-am luat dintr-o [14], eu doar le-am revizuit

3.3.2 Unitatea de memorie

Unitatea de memorie (figura 3.3) este o componentă a microcontrolerului care are rolul de a depozita date. Un mod mai simplu de a de a o întelege, este dacă am privi-o ca pe o locație cu multe sertare. Dacă am presupunem că am marcat sertarele în așa fel încât să nu fie confundate, atunci conținutul lor ar fi cu mult mai usor de găsit decât să te apuci să cauți în fiecare.

Figura 3.3 Unitate de memorie

Aceste sertare au denumirea de locații de memorie. Acestea prin operațiile de citire, dar și de scriere pot fi adresate. Aceasta adresare înseamne selectarea unui sertar. Scrierea sau citirea se poate doar prin asigurarea unei linii de control

Linia de control este folosită în următorul fel:

– dacă r/w=1, se face citirea,

– iar dacă r/w=0 este adevărat atunci se face scrierea în locația de memorie

Unitatea de procesare centrală

Unitatea de procesare centrală este și ea un element al microcontrolerului. Aceasta o putem și pe ea compara cu o locatie cu mai multe sertare, însă un pic este mai specială. Adică aceste sertare au capacitatea de a efectua funcții matematice, cum ar fi: adunare, scădere, înmulțire sau împărțire. Aceste sertare se numesc registri.

Figura 3.4 CPU

.

3.3.4 Bus-ul

Calea prin care comunica componentele microcontrolerului este numită 'bus'- magistrală. Fizic, acesta este format dintr-un un grup de 8, 16, sau mai multe fire. Sunt două tipuri de bus-uri: bus de adresă și bus de date.

Figura 3.5 bus-ul de adresă și de date

Primul ,bus-ul de adresă are un număr de linii egal cu cantitatea de memorie ce dorim să o adresăm, iar celălalt este atât de lat cât sunt datele. Totodată primul servește la transmiterea adreselor de la CPU la memorie, iar cel de al doilea la conectarea tuturor blocurilor din interiorul microcontrolerului

3.3.5 Unitatea de intrare-ieșire

Unitățile de intrare-ieșire mai poartă denumirea și de 'porturi'. Sunt diferite tipuri de porturi: intrare, ieșire sau porturi pe două-căi, adică bidirecționale. Aceste porturi fac legătura dintre microcontroler și ce mai dorim să legăm la el. Așadar un capăt al unei unităti de intrare-ieșire face conexiune cu liniile de ieșire din microcontroler ce pot fi văzute cu ochiul liber ca pini, iar celălalt capăt este conectat la bus-ul de date. Procedura de lucru cu porturi este următoarea: mai întâi de toate este necesar să se aleagă cu ce port urmează să lucrăm, iar numai apoi se trimit date, sau se iau date de la port.

Figura 3.6 Unitate I/O

Când se lucrează cu el, portul se comportă ca o locație de memorie. Ceva, este pur și simplu scris în el, sau citit din el.

3.3.6 Comunicația serială

Microcontrolerul deși comunică cu exteriorul prin intermediul porturilor, totuși acest mod de comunicare are anumite neajunsuri:

– numărul de pini ce trebuie folosiți pentru a transfera date și

– distanțele prea mari, la care dorim să transferăm date.

Toate aceste probleme sunt rezolvate cu comunicarea seriale. Aceasta este compusă din 3 linii (de trei fire):

– o linie este folosită pentru trimiterea de date,

– alta pentru recepție și

– a treia este folosită ca o linie de referință atât pentru partea de intrare cât și pentru partea de ieșire.

Figura 3.7 Unitatea serială

Deoarece avem linii separate de recepție și de transmitere, este posibil să recepționăm și să transmitem date (informații) în același timp. Blocul așa numit full-duplex mode ce permite acest mod de comunicare este numit blocul de comunicare serială. Spre deosebire de transmisia paralelă, datele sunt mutate aici bit cu bit, sau într-o serie de biți, de unde vine și numele de comunicație serială.

După recepția de date trebuie să le citim din locația de transmisie și să le înmagazinăm în memorie în mod opus transmiterii unde procesul este invers. Datele circula din memorie prin bus către locația de trimitere, și de acolo către unitatea de recepție conform protocolului.

3.3.7 Unitatea timer

Figura 3.8 Unitatea timer

Blocul timer care este important, deoarece dă informația de timp, durată, protocol etc. Unitatea de bază a timer-ului este un contor liber (free-run) care este de fapt un registru a cărui valoare numerică crește cu unu la intervale egale, așa încât luându-i valoarea după intervalele T1 și T2, pe baza diferenței lor să putem determina cât timp a trecut. Acesta este o parte foarte importantă a microcontrolerului.

3.3.8 Watchdog-ul

Un lucru foarte important este funcționarea fără defecte a microcontrolerului. Cu aceasta se ocupă Watch-dog-ul, adică câinele de pază.

Figura 3.9 Watchdog

Dacă programul intâlnește o eroare, Watchdog-ul va reseta microcontrolerului, astfel acest bloc are rol în funcționarea fără defecte a microcontrolerului. Acest bloc este de fapt un alt contor liber (free-run) unde programul controlerului trebuie să scrie un zero ori de câte ori se execută corect. În cazul unei erori va duce la rularea programului din nou, nu va mai scrie zero, iar contorul se va reseta singur la atingerea valorii sale maxime

O descriere mai amănunțită o reprezintă figura 3.10:

Figura 3.10

3.3.9 Convertorul Analog-Digital

Deoarece semnalele periferice sunt substanțial diferite de cele pe care le poate înțelege microcontrolerul (zero și unu), ele trebuie convertite într-un mod care să fie înțeles de microcontroler. Această sarcină este îndeplinită de un bloc pentru conversia analog-digitală A/D. Acest bloc este responsabil pentru convertirea unei informații despre o anumită valoare analogică într-un număr binar.

Figura 3.11 Convertorul A/D

De obicei folosim un microcontroler în anumite reglaje, în anumite sisteme, bucle de reglare, unde avem de obicei senzori care în marea lor majoritate sunt analogici, adică dau la ieșire un semnal analogic. Astfel ca convertorul nu are voie să lipsească din microcontroler.

Următoare figura reprezintă Convertorul Analog-Digital un pic mai amănunțit:

Figura 3.12

Aceste convertoare fac parte dintr-un sistem de achiziție de date. În construcția lor găsim printre altele, un multiplexor analogic cu mai multe canale de intrare.

Capitolul 4 Analiză și proiectare

Descrierea echipamentelor

Wish Board WB-106

Wish Board WB-106 este o planșă de teste care ajută foarte mult la alcătuirea părții fizice a proiectului, mai ales in alcătuirea legaturilor și alimentării diferitelor echipamente, atât senzorilor, cât și elementelor de execuție, cum ar fi motoarele pas-cu-pas.

Figura 4.1 Wish Board

Scopul breadboard este de a face conexiuni electrice rapide între componente astfel încât să se poată testa circuitul înainte de a fii permanent lipite împreună. Breadboards este compus din multe prize mici, iar unele grupuri de prize sunt conectate electric între ele. Pe partea inferioară a plăcii, există multe benzi mici de metal care conectează fizic anumite grupuri de prize împreună și permit să comunice între ele.

Din urmatoarea figură [16]se va intelege mai bine această comunicare:

Figura 4.2 WishBoard-interior

Caracteristicile plăcuței wishboard WB-106 sunt:

– Baza plăcii este confecționată dintr-o placă de aluminiu pentru a face față frecvențelor înalte și interferențelor statice joase

– Contactele elastic sunt din fosfor-bronz / nichel – argint, și sunt construite pentru a rezista la cel puțin 10000 de repetari

– Dimensiunea orificiilor: Ø0.3 – Ø0.8mm permite conectarea majorității componentelor prin fire [15].

Motor pas-cu-pas

Pentru motoare pas cu pas am folosit motor de tip bipolar din CD-ROM.(figura 4.3)

Figura 4.3 Stepper CD-ROM [19]

Motorul pas cu pas este un dispozitiv pentru conversia informațiilor numerice în lucru mecanic pe baza unui consum de energie de la o sursă. Motorul pas cu pas este un motor de curent continuu comandabil digital, cu deplasarea unghiulară a rotorului proporțională cu numărul de impulsuri primite. La fiecare impuls rotorul execută un pas unghiular apoi se oprește până la sosirea unui nou impuls. Motorul pas cu pas este capabil de reversarea sensului de mișcare. Dacă este comandat corect (cu o frecvență mai micădecât cea admisibilă) rămâne în sincronism cu impulsurile de comandă la accelerare, mers constant și încetinire.[17]

Motoarele pas cu pas pot fi motoare unipolare sau bipolare. La motoarele bipolare comanda pașilor se face prin inversarea curentului prin înfășurări. Principiul comenzii seamănă cu cel de la comanda motorului de curent continuu, cu diferența că în acest caz de regulă sunt 2 înfășurări, figura 4.4.

Figura 4.4 Motor Bipolar

Comanda motorului se face alimentând pe rând capetele bobinelor așa cum se vede și în figura 4.5, am alimentat prima dată prima bobina în sensul 1a-2a pe urma cea de-a doua în sensul 1b-2b, urmând a alimenta în acceași ordine cele două bobine doar schimbând sensul de alimentare.Pentru a schimba sensul motorului se face în oglindă totul, începând cu pasul 4 și terminând cu pasul 1, repetându-se acest ciclu.

Figura 4.5 Comanda motorului bipolar [18]

Driverul ULN2003A

Acest driver mi-a fost de folos pentru controlul acestor motoare pas-cu-pas.

Pentru acționarea motoarelor care absorb un curent de comandă mai mare decât cel generat de microcontroller se pot folosi amplificatoare de curent. Un circuit integrat preferat este ULN2003A, figura 4.3. Circuitul conține șapte tranzistoare Darligton integrate care asigură un curent mediu de 500 mA și un curent de vârf de 600 mA la o tensiune de maxim 50V. Pentru mărirea curentului se pot folosi două canale în paralel. Intrările sunt comandabile TTL /CMOS. Intrările și ieșirile sunt pe părți diferite ale capsulei, ușurând astfel proiectarea cablajului. Câte o diodă pe fiecare canal asigură protecția în cazul sarcinilor inductive[20].

Figura 4.3 ULN2003a

.

ULN2003A este o poartă TTL, CMOS care funcționează la un curent de 5V și care împreună cu celelalte dispozitive din familia ULN200 sunt pretabile pentru a conduce o gamă largă de sarcini, incluzând solenoide, releele ale motoarelor de curent continuu, filamentele lămpilor pentru afișare LED, capete de imprimare termice sau buffere de mare putere.

Ea este construită în varianta cu 16 pini încorporați într-un circuit integrat. Conexiunile din interior sunt din cupru pentru a reduce rezistența termică. De asemenea, există și o variantă mai compactă, tot cu 16 pini (SO-16), ULN2003D.

Un mic dezavantaj ce îl reprezintă acceasta, este de a nu putea comanda decât un singur motor pas-cu-pas, însă mai există și ULN2803A care are 18 pini cu care am putea controla două motoare pas-cu-pas.

Deci, ULN2003A are 16 pini, distribuiți astfel: 7 intrări, 7 ieșiri, GND si 1 pin comun. Dispunerea lor este următoarea după cum ne arată și figura 4.4[8] :

-pinii 1-7 sunt intrări

-pinii 10-16 sunt ieșiri

-pinul 8 este GND sau masa

-pinul 9 este comunul pe unde se alimentează

Figura 4.4 ULN 2003A-int

Senzorul de lumină

Senzorul de lumină este un traductor măsoară nivelul de iluminare al mediului. Valoarea iluminării pe care ne dă pe pinul OUT variază liniar între 0 și 1024.

Acest senzor nu este calibrat, în sensul că nu vom obținețe direct o valoare a iluminării exprimată în lucsi, ci doar o valoare numerică direct proporțională cu nivelul de iluminare, fără o unitate de măsură. În aplicațiile care le-am creeat am luat de obicei 350 o valuare care am aproximat-o ca fiind nivelul luminii spre seară.

Am folosit acest sensor atât în sistemul de iluminare, unde ne sesizează când afară se înserează dar și în cel al controlul jaluzelelor de la ferestre. Astfel în funcție de valoarea dată de sensor microcontrolerul va lua o anumită decizie, gândită dinainte de programator.

Figura 4.5 Senzor de lumină

După cum se observă și din figura 4.5, senzorul are 3 pini care se vor conecta după cum urmează:

– avem un pin cu numele de VCC, care il vom conecta la pinul TP1 a microcontrolerului care oferă o tensiune de 5 V cea de care are nevoie senzorul pentru a fi activ

– tot-odată mai avem un pin GND, acesta fiind ground-ul, adică masa care se va conecta la pinul 14 care este GND-ul al microcontrolerului

– pinul OUT se conecteaza pe o intrare a microcontrolerului de exemplu P1.1 sau P1.3

Senzorul de temperatură

Senzorul de temperatura (figura 4.6) brick este o componentă care sesizează nivelul temperaturii din mediul ambiant. Acest senzor se alimentează cu o tensiune de 5V. El este format dintr-un integrat oferit de Texas Instruments, sub denumirea de LM50.

Se caracterizează prin faptul că poate măsura temperature între -40°C și 125 °C. Tensiunea de ieșire a senzorului variază linear proportional cu gradele Celsius măsurate, adică 10 mV/°C. Acesta dă la ieșire variația+500 mV.

Astfel vom avea următoarele valori[9]:

– la – 40 °C: 100 mV + 500 mV

– la 25 °C: 750 mV + 500 mV

– la 125 °C: 1750 mV + 500 mV

Figura 4.6 Senzor de temperatură

Pinii senzorului se vor conecta în următorul fel:

– pinul de VCC, care il vom conecta la pinul TP1 a microcontrolerului care oferă o tensiune de 5 V cea de care are nevoie senzorul pentru a fi activ

– pinul GND, acesta fiind ground-ul, adică masa se va conecta la pinul 14 care este GND-ul microcontrolerului

– pinul OUT se conecteaza pe o intrare a microcontrolerului de exemplu P1.2 sau P1.4

Heating Pad

Heating Pad (figura 4.7) l-am folosit pentru a avea o sursa de căldură, și tot odată pentru a simula încălzirea prin pardoseală.

Acesta este construit dintr-o plasă de filament Polyester și o fibra metalică micro-conductivă.

Pentru a alimenta avem nevoie de 5 volți.

Figura 4.7 Heating Pad

Are nevoie cam de 10 minute pentru a atinge valoare de 65-70 °C, după cum se vede ți din următoarea figură:

Figura 4.8 Graficul caracteristicii temp/timp

Senzor cu efect Hall

În această aplicație de domotică am vrut să schițez și un sistem de securitate, deși destul de rudimentar. Acest sistem este compus din traductor și elementul de execuție. Traductorul este caracterizat printr-un senzor cu efect Hall, iar elementul de execuție printr-un buzzer.

În anul 1879 [7] fizicianul american Edwin Herbert Hall (1855 – 1938) a observat că atunci când un semiconductor, parcurs de un curent electric, este plasat sub acțiunea unui câmp magnetic, apare o tensiune electrică, proporțională cu curentul electric și perpendiculară pe direcția câmpului magnetic și a curentului electric. Acest efect manifestat în materialele semiconductoare se numește efect Hall.

Efectul Hall apare întotdeauna când un conductor sau un semiconductor, traversat de un curent electric, este supus acțiunii unui câmp magnetic perpendicular pe direcția curentului și se manifestă prin apariția unei tensiuni, denumită tensiune Hall.

Liniile de flux magnetic exercită o forță asupra electronilor (forță Lorenz). Datorită acestei forțe, electronii sunt deviați către o extremitate a semiconductorului, în funcție de intensitatea și direcția liniilor de câmp. Astfel aceasta deviere de electroni produce o diferență de potențial care caracterizează tensiune Hall.

Acest efect este mai pronunțat la materialele semiconductoare cum ar fi: arseniura de galiu (GaAs), antimoniura de indiu (InSb) sau arseniura de inidiu (InAs) [8]. La materialele conductoare (metale) efectul Hall este foarte slab deoarece densitatea de electroni este foarte mare iar efectul deviației de către câmpul magnetic este insesizabil.

Senzorii Hall sunt senzori activi, care necesită alimentare cu energie electrică. Astfel, cei mai simpli senzori Hall au cel puțin 3 pini:

tensiune alimentare, UA (intrare)

masă

tensiune Hall, UH (ieșire)

Figura 4.8 Senzor cu efect Hall

Piezo-buzzer

În acest sistem al securității, ca element de semnalizare am folosit un buzzer de la firma muRata. Când senzorul cu efect Hall ne semnalizează că ușa a fost deschisă, iar aceasta a fost prin forțare, microcontrolerul v-a activa buzzer-ul.

Câteva din caracteristicile acestuia sunt urmatoarele[6]:

-în primul rând este de tip continuu

-alimentarea minimă este 3V, iar cea maximă de 15V

-curentul consumat este de 16mA

-dezvoltă un nivel al sunetului de 90dB

-o frecvență de 3.8kHz

-temperatura la care poate opera se găsețte în intervalul 70°C- -20°C

Figura 4.9 Piezo-buzzer-ul

Medii de dezvoltare

Code Composer Studio

Ca și mediu de dezvoltare care l-am folosit de început a fost Code Composer Studio 5.5.0. Acesta m-a ajutat la comandarea microcontrolerului MSP430G2.

Aces mediu de dezvoltare este pus la dispoziție de către firma Texas Instruments. Code Composer Studio este un instrument foarte eficace pentru dezvoltarea rapidă și performantă a aplicațiilor. El permite construirea, configurarea, testarea, rularea și analiza în

timp real a aplicațiilor. Totodată CCS facilitează rularea aplicațiilor pe diferite sisteme de dezvoltare sau pe simulator.

Figura 4.10 CCS v5

Code Composer Studio v5 este prima versiune a CCS care se bazează pe cea mai recentă versiune de Eclipse. Acest lucru permite clienților să integreze o gamă mai largă de aplicații. De asemenea are multe înbunătățiri, inclusiv în cele de performanță, uțurință în utilizare și simplitate.

Pentru o mai bună ințelegere voi arăta cum se creează un proiect nou in Code Composer Studio, iar în a doua parte cum se importă un proiect deja creeat în CCS.

Creearea unui proiect nou se face urmărind pașii următori:

– În primul rând la deschiderea CCS se alege workspace-ul unde o să iți fie proiectul (figura 4.11):

Figura 4.11

-Odată ce ne-am ales, dăm OK și se va deschide CCS. Pentru a creea proiectul de vom duce la File>New> Project (figura 4.12):

Figura 4.12

-Va apare urmatoarea fereastră unde se alege Code Composer Studio>CCS Project, pe urmă se apasă butonul Next (figura 4.13)

Figura 4.13

-Se va deschide o nouă fereastră în care se va completa numele proiectului, se va alege familia microcontrolerului, adică MSP430, iar pe urmă trebuie ales tipul pe de microcontroler pe care vei executa proiectul, adică la mine MSP430G2231. Pe urmă se va apăsa butonul Finish.

Figura 4.14

-După ce am apăsat pe finish se va deschide implicit platforma pentru noul proiect.În folderul licență vom selecta fisierul main.c, locul în care vom scrie codul dorit (figura 4.15):

Figura 4.15

-După ce sa scris codul, pentru a fi verificat este butonul de Debug este în figura 4.16 ,iar pentru a fi executat se v-a apăsa butonul run din figura 4.17:

Figura 4.16 Butonul Debug

Figura 4.17 Butonul Run

Pentru a se importa un proiect deja existent în cadrul Code Composer Studio, se face clic pe Project din meniul lui CCS, iar apoi pe Import Existing CCS-CCE Eclipse Project (figura 4.18):

Figura 4.18

Energia

Documentându-mă pe Internet pentru această lucrare am dat de acest program care m-a surprins prin simplitatea lui. Acesta este o platforma de la IDE Arduino oferită pentru a programa în special microcontrolerele din familia MSP430 [10]. Pot să spun din propria experiență că nu poate fi comparat cu Code Composer Studio. Deși experiență mare nu am în nici unul din programe, totuși pot să afirm ca energia este cu mult mai atractivă.

Energia este o platformă care a început să prindă contur datorită lui Robert Wessels în ianuarie 2012. Totodată ea folosește compilatorul mspgcc creeat de Peter Bigot și se bazează pe cadrul Arduino [11].

Figura 4.19

În primul rând după ce s-a conectat microcontrolerul se va alege din meniul Tools Serial Port unde se va vizualiza și alege portul serial convenabil (figura 4.20).

Figura 4.20

Al doilea pas ar fi cel de a alege placa pe care o avem la dispoyiție din familia MSP430 (figura 4.21)

Figura 4.21

Un alt punct atractiv ar fi exemplele pe care le pune la dispoziție. Te ajută atât cu exemple simple, de bază, dar și cu altele mai complicate care nu oricine sar descurca să le implementeze. Acestea se găsesc in File> Examples (figura 4.22):

Figura 4.22

Pentru a încărca programul se apasa butonul din figura 4.23:

Figura 4.23

Microcontrolerul MSP430G2 Launchpad

Figura 4.24

MSP-EXP430G2 numită și LaunchPad este o placă de dezvoltare și experimentare. Aceasta este oferită de firma Texas Instrument, împreună cu microcontrolerele din familia MSP430. Această placă are rolul de a face legătura dintre calculator și microcontroler, conexiune care ajută la programarea microcontrolerului, la încărcarea codului făcut cu ajutorul programelor prezentate mai înainte. Această conexiune se face cu ajutorul unui cablu USB.

Figura 4.25 [21]

Descriere

În primul rând câteva cuvinte despre această companie: Texas Instruments. Ea este una din cele mai mari companii din lume producătoare de semiconductoare. Este renumită deoarece oferă clienților săi servicii și tehnologii inovatoare. Obiectivul celor de la Texas Instruments este să folosească tehnologia de care dispune compania pentru a schimba piata și a creea produse noi.

Launchpad, figura 4.25, este ușor de utilizat cu destinația atât utilizatorilor începători, cât și celor experimentați deopotrivă pentru crearea de aplicații bazate pe microcontroler. Având un cost mic, LaunchPad oferă tot ce ar avea nevoie un utilizator pentru a crea aplicatii pe microcontroler.

Kitul LaunchPad de dezvoltare face parte din seria MSP430 Value Line. Launchpad are integrat un soclu DIP care suportă până la 20 de pini, permițând astfel dispozitivelor MSP430 Value Line să fie montate pe această placă Launchpad. Programele pentru crearea și depanarea aplicațiilor software(Energia sau Code Composer Studio) sunt oferite gratis și se pot descarcă de pe internet. LaunchPad poate fi folosit pentru a crea solutii interactive datorita butoanelor, a LED-uri, și a pinilor de intrare/iețire folositori pentru integrarea mai usoara a dispozitivelor externe.

Astfel această placă dinspune de doua butoane pentru utilizator, feedback și respectiv pentru resetare. Are și leduri cu ajutorul carora poți sa faci diferite aplicații. Însă cel mai important este că ne ofera surse de tensiune de curent continuu la 3.3V respectiv la 5V. În figura 4.26 sunt evidențiate aceste componente ale plăcii:

Figura 4.26

Caracteristicile Launchpadului:

– în primul rînd este ușor de utilizat, nu necesită alte componente hardware decât un calculator de pe care să fie programat

– totodată nu necesită alte surse de alimentare, ci cu un cablu USB ai rezolvat această problemă

– are putere mică, el fiind destinat de obicei aplicațiilor ce nu necesită o putere mare

– acceptă pachetele multiple oferite de familia MSP430 printre care MSP430G2xx și MSP430F2xx

– este accesibilă, având un preț redus de doar $9.99 [22]

Placa MSP430G2231

Figura 4.27 [23]

Aceste serii MSP430G2x31 ale familiei MSP430 sunt microcontrolere de puteri reduse care sunt capabile să proceseze semnale mixte. Pot procesa atât semnale analogice cât și cele digitale.

Ele dispun de 10 pini intrare/ieșire așa cum se vede în următoarea figură:

Figura 4.28 [24]

Diagrama funcțională (figura 4.29) a MSP430G2231 este prezentată mai jos, schitând rpincipalele elemente ale acestuia și comunicarea acestora:

Figura 4.29

Capitolul 5 IMPLEMENTARE, TESTARE ȘI VALIDARE

După faza de analiză și proiectare am trecut la partea de implementare a proiectului. Aceasta deși a fost interesantă a fost totodată și provocatoare. În primul rând am trecut în revistă ceea ce am la dispoziție și ce aș putea să fac, o aplicație interesantă. Datorită celor trei microcontrolere de care am făcut rost și indrumării spre o aplicație de domotică, m-am gândit că ar fi interesant să fac un sistem distribuit, fiecare microcontroler să se ocupe cu un minisitem cum ar fi controlul luminii, sau temperaturii.

Acest sistem distribuit l-am gândit astfel:

– un microcontroler controlează jaluzelele

– un microcontroler are controlul asupra luminilor

– iar un al treilea microcontroler să se ocupe de securitate și controlul temperaturii într-o încăpere.

Astfel, de început am lucrat pentru realizarea unei machete de casă (figura 5.1) cu ajutorul căreia am vrut să fie simulat cât mai realist acete microsisteme. Cum am arătat și în introducere aceasta este compusă din două părți:

– (1)un acoperiș format dintr-o singură apă, care se poate desface

– (2)baza și pereții casei.

Figura 5.1

Macheta este formată din trei camere:

– (1)o cameră am ales-o să fie o cameră de comandă în care să pun Wish Board pentru a-mi ușura legăturile de făcut.

– (2)o cameră în care să controlez temperatura și totodată având și sursă de lumină

– (3)în a treia camera, cea din față, voi avea sistemul de securitate și sursă de lumină

Figura 5.2

Între timp m-am ocupat cu studierea functionării microcontrolerului, a proprietăților lui, a limbajului de programare cu care să il comand. Astfel am instalat la început Code Composer Studio și am încercat să rulez niște aplicații oferite de Texas Instruments. Mi-au reușit în bună măsură, însă în timp ce căutam mai multe informații și explicații, am dat peste încă un mediu de programare ce mi s-a părut mult mai pe înțelesul meu, numit Energia.

Astfel, am continuat doar cu acest program, atat la controlul luminii, cât ți cel al temperaturii sau a motoarelor pas-cu-pas.

Prima mea aplicație care au reușit-o să o fac a fost de a aprinde și a stinge un led. Aceasta am făcut cu ajutorul microcontrolerului, a unui led și o rezistență. În figura 5.3 am arătat pe ce pini am făcut legăturile:

Figura 5.3 [25]

Așadar, cu un fir m-am conectat la pinul de ground (GND), iar cu cel de al doilea am plecat din pinul 8. Led-ul și rezistența sunt legate în serie.

În figura 5.4 am pus codul din Energia care face ca acest lucru, adică ledul să se aprindă și să se stingă, să fie posibil.

– în „void setup( )” se fac inițializările

– deci prin linia de cod „ pinMode(8, OUTPUT) ” vom inițializa pinul 8 al plăcii noastre ca pin de ieșire.

– „void loop( )” este o buclă care se execută la infinit

-„digitalWrite(8, HIGH); ” se va porni ledul având nivelul maxim de tensiune

-„delay(1000); ” se așteaptă o secundă

– „digitalWrite(8, LOW); ” se va opri ledul

– „delay(1000); ” se așteaptă din nou o secundă

Figura 5.4

Următorul pas a fost cel de a studia senzorii și modul lor de funcționare, alimentare și conectare. Astfel am luat senzorul lumină pentru a vedea cum funcționează. Senzorul de lumină este o componentă care sesizează nivelul de iluminare, indicând acest nivel printr-o valoare între 0 și 1024. Aceasta am găsit că înseamnă, prin urmare am trecut la aplicare, să văd dacă funcționează.

Cu ajutorul aplicației de mai înainte și a cunoștiințelor acumulate, am încercat să fac o nouă aplicație în care să folosesc acest senzor de lumină.  

Aceasta constă în controlul unui led în funcție de senzorul de lumina. Dacă este ziuă, lumina să fie stinsă, iar dacă este noapte să se aprindă. Senzorul de lumină are 3 pini:

– pinul GND l-am conectat la GND oferit de microcontroler pe pinul 14 al MSP430G2231

– pinul VCC l-am conectat pe breadboord în conexiune cu firul ce venea de la TP1, oferind astfel o alimentare de 5V

– iar pinul OUT l-am conectat la microcontroler pe pinul 2 (P1.0)

Totodată circuitul ledurilor l-am legat:

– un fir la GND, pinul 14

– un fir la pinul 7(P1.5)

În figura figura 5.5 se poate vedea mai bine cum au fost formate conexiunile:

Figura 5.5

Codul din Energia este următorul:

void setup()

{

pinMode(P1_5,OUTPUT);

}

void loop()

{

int sensorValue = analogRead(A0);

if (sensorValue <=350){

digitalWrite(P1_5,HIGH);

}

else{

digitalWrite(P1_8,LOW);

}

}

Așadar am inițializat pinul P1.5 ca fiind ieșire, pentru a alimenta ledul. Valoarea citită de senzor pe intrarea A0 adică P1.0 este inregistrată în variabila întreagă sensorValue. Aceasta este comparată cu o valoare aleasă de mine (m-am gândit la 350), iar dacă este mai mică voi aprinde ledurile, iar dacă este mai mare le voi stinge.

O altă problemă cu care m-am zbătut a fost controlul motoarelor pas-cu-pas. Aceste motoare fiind bipolare și neavând un fir de alimentare cu putere mi-au dat un pic bătaie de cap. Prima oară am făcut circuitul din figura (figura 5.6)urmatoare:

Figura 5.6

Ce se observă in aceasta figură? Păi în primul rand că pe langă microcontroler și motorul pas-cu-pas mai avem și un integrat. Acesta nu este alceva decât ULN2003A care ne ajută la controlul motoarelor care dezvoltă o mai mare putere decât ceea ce ne oferă microcontrolerul. Așadar am alimentat driverul pe pinul 9 cu o tensiune de alimentare de 5V generată de TP1, am legat și GND de la pinul 8 al driverului la pinul 14 (GND) al microcontrolerului.

Totodată am făcut legătura cu driverul celor 4 fire ce veneau de la motor, adică capetele bobinelor. Iar pe cei patru pini de intrare a driverului am adus de la microcontroler 4 fire de pe pinii P1.0, P1.1, P1.2 și P1.3.

Dupa ce am încărcat și codul creeat în Energia, motorul nu a reacționat în nici un fel. După mai multe documentări am gasit în sfârșit problema.Imi lipsea partea de putere a motorului.

Astfel în figura 5.7 și figura 5.8 veți putea observa completările care le-am făcut circuitului, și la care motorul a răspuns printr-o funcționare la care mă așteptam.

Figura 5.7

Am mai adăugat o parte de putere pentru motor, mai precis spus pentru cele 4 capete ale celor 2 bobine. Aceasta este compusă din adăugarea pe fiecare ramură a comandei a câte o rezistență de 22 ohm, cea mai apropiată de rezistența bobinajului caracterizată de 18 ohm[26].

Figura 5.8

Codul care l-am încărcat cu ajutorul Energiei este:

void setup()

{

pinMode(P1_0,OUTPUT);

pinMode(P1_1,OUTPUT);

pinMode(P1_2,OUTPUT);

pinMode(P1_3,OUTPUT);

}

void loop()

{

digitalWrite(P1_0,HIGH);

digitalWrite(P1_1,LOW);

digitalWrite(P1_2,LOW);

digitalWrite(P1_3,LOW);

delay(10);

digitalWrite(P1_0,LOW);

digitalWrite(P1_1,HIGH);

digitalWrite(P1_2,LOW);

digitalWrite(P1_3,LOW);

delay(10);

digitalWrite(P1_0,LOW);

digitalWrite(P1_1,LOW);

digitalWrite(P1_2,HIGH);

digitalWrite(P1_3,LOW);

delay(10);

digitalWrite(P1_0,LOW);

digitalWrite(P1_1,LOW);

digitalWrite(P1_2,LOW);

digitalWrite(P1_3,HIGH);

delay(10);

}

Am urmărit după ce am făcut inițializarea celor 4 pini , să fac comanda așa cum am învățat, alimentând într-o anumită ordine cele 4 capete ale celor 2 bobine, cu un delay de 10 milisecunde.

Așadar acest cod comandă motorul să se învârte în mod continuu într-un singur sens.

În următoarele pagini voi prezenta aplicația finală care stă la baza sistemului distribuit. Așadar ca prim microsistem controlat de un microcontroler este controlul jaluzelelor.Aplicația care a stat la baza acestui sistem am prezentat-o în continuare.

M-au ajutat mult aplicațiile dinainte, deoarece totul sa rezumat la controlul motorului în funcție de senzorul de lumină. Așadar senzorul nu va mai aprinde sau stânge un led, ci va comanda motorul pas-cu-pas, dacă ii lumină să ridice jaluzelele, iar dacă va fi noapte să le lase.

Circuitul care a stat la baza acestei aplicații este în următoarea figura:

Figura 5.9

Ce este diferit față de ultima aplicație (mă refer la partea de hard) este doar ca vom avea și senzor de lumină. Acesta va avea pinii conectați în felul următor, după cum se observă și din figură:

– pinul GND l-am conectat la GND oferit de microcontroler (firul roșu)

– pinul VCC l-am conectat pe breadboord în conexiune cu firul ce vine de la TP1, oferind astfel o alimentare de 5V(firul negru din dreapta jos)

– iar pinul OUT l-am conectat la microcontroler pe pinul 7 ,P1.5(firul negru cu portocaliu)

Așadar motorul pas cu pas se v-a învârti într-un sens sau în altul în funcție de ce va semnaliza senzorul.

void setup()

{

pinMode(P1_0,OUTPUT);

pinMode(P1_1,OUTPUT);

pinMode(P1_2,OUTPUT);

pinMode(P1_3,OUTPUT);

}

In primul rând inițializarea este aceeași, cei 4 pinii P1.0 – P1.3 se vor defini ca ieșiri. Însă la partea din loop() se observă compararea valorii citite de către senzor cu constantă, dar totodată ți ambele sensuri de rotire a motorului.

void loop()

{

int sensorValue = analogRead(A5);

if (sensorValue <=350){

digitalWrite(P1_0,HIGH);

digitalWrite(P1_1,LOW);

digitalWrite(P1_2,LOW);

digitalWrite(P1_3,LOW);

delay(10);

digitalWrite(P1_0,LOW);

digitalWrite(P1_1,HIGH);

digitalWrite(P1_2,LOW);

digitalWrite(P1_3,LOW);

delay(10);

digitalWrite(P1_0,LOW);

digitalWrite(P1_1,LOW);

digitalWrite(P1_2,HIGH);

digitalWrite(P1_3,LOW);

delay(10);

digitalWrite(P1_0,LOW);

digitalWrite(P1_1,LOW);

digitalWrite(P1_2,LOW);

digitalWrite(P1_3,HIGH);

delay(10);

}

else{

digitalWrite(P1_0,LOW);

digitalWrite(P1_1,LOW);

digitalWrite(P1_2,LOW);

digitalWrite(P1_3,HIGH);

delay(10);

digitalWrite(P1_0,LOW);

digitalWrite(P1_1,LOW);

digitalWrite(P1_2,HIGH);

digitalWrite(P1_3,LOW);

delay(10);

digitalWrite(P1_0,LOW);

digitalWrite(P1_1,HIGH);

digitalWrite(P1_2,LOW);

digitalWrite(P1_3,LOW);

delay(10);

digitalWrite(P1_0,HIGH);

digitalWrite(P1_1,LOW);

digitalWrite(P1_2,LOW);

digitalWrite(P1_3,LOW);

delay(10);

}

}

Diferența dintre aceste sensuri de rotire a motorului nu este foarte complicată. Adică, ar trebuii să scrii comanda celui de-al doilea sens doar în oglindă față de primul.

Mai apare o problemă.Noi nu vrem ca motoarele să ruleze toată ziua într-un sens iar când vine noaptea să își schimbe sensul . Astfel vom creea o funcție stop() care va fi apelată după un anumit număr de pași ai motorului. Funcție este următoarea:

void stop()

{

digitalWrite(P1_0,HIGH);

digitalWrite(P1_1,HIGH);

digitalWrite(P1_2,HIGH);

digitalWrite(P1_3,HIGH);

}

Totodată, pentru a se rula un anumit număr de pași vom avea nevoie de o buclă while și de o variabilă care să urmarească numărul de pași, iar la fiecare repetare a buclei să se incrementeze și tot odată să și oprească această buclă while.Așadar vom mai avea următoarele modificări:

int nrpasi = 0;

while (nrpasi < 50) {

……

nrpasi ++;

}

Următorul sistem este cel de control automat al luminilor din încăperi. Este destul de simplu. Se bazează tot pe un senzor de lumină, care semnalizează dacă este suficientă lumină, iar dacă nu va da control să se aprindă lumina. Circuitul care l-am realizat este în figura următoare:

Figura 5.10

După cum se observă avem senzorul de lumină conectat la microcontroler după cum urmează:

-pinul de GND, adică firul roșu la GND microncontrolerului, adică pinul 14(pinul 20 al launchpad)

-pinul de alimentare, VCC la breadboard, unde am adus un fir de la TP1 având 5V

-pinul OUT la P1.0

Cele două circuite cu leduri le-am conectat GND la GND plăcii, iar firele de alimentare în P1.3 și P1.4.

Codul care l-am implementat în Energia este următorul

void setup()

{

pinMode(P1_3,OUTPUT);

pinMode(P1_4,OUTPUT);

}

void loop()

{

int sensorValue = analogRead(A0);

if (sensorValue <=350){

digitalWrite(P1_3,HIGH);

digitalWrite(P1_4,HIGH);

}

else{

digitalWrite(P1_0,LOW);

digitalWrite(P1_1,LOW);

}

}

O următoare aplicație a fost un sitem de siguranță. Acesta este format dintr-un senzor cu efect Hall, un magnet și un buzzer. În ce constă această aplicație? Păi dacă magnetul este aproape de senzor, atunci acesta returnează 0, iar dacă va fi depărtat va returna 1. Când va returna 1 vom activa automat buzzer-ul.

Aceasta am gândit-o pentru sistemul de siguranță al casei. Magnetul va fi atașat pe ușă, iar pe tocul ușii, în drept cu el să fie senzorul Hall. Dacă ușa se deschide v-a fi declanșat automat buzzer-ul.

Circuitul pe care l-am făcut este în figura următoare:

Figura 5.11

După cum se vede și în figura 5.11, conectarea senzorului și al buzzerului este următoarea:

-pinul de alimentare al senzorului l-am conectat la pinul 1 al microncontrolerului(VCC)

-pinul de ground la GND-ul microcontrolerului

-pinul de OUT la P1.4

-pinul de alimentare a buzzerului la P1.1

-iar GND-ul buzzerului la GND –ul microcontrolerului

Codul din energia este:

void setup()

{

pinMode(P1_1,OUTPUT);

}

void loop()

{

int sensorValue = digitalRead(P1_4);

if (sensorValue == HIGH){

digitalWrite(P1_1,HIGH);

}

else{

digitalWrite(P1_1,LOW);

}

}

După ce am inițializat ieșirea P1.1 pentru alimentarea buzzerului, am salvat într-o variabilă, valoarea digitală a senzorului, după care am comparat-o. Dacă este 1 vom activa buzzerul, iar dacă va fi 0 se v-a dezactiva.

Ultima aplicație este controlul temperaturii. Cu ajutorul unuo senzor de temperatură și a unui Heating Pad am încercat să controlez temperatura. Deoarece Heating Pad-ul nu se încălzește la temperatura mai mare de 60-70 de grade, vom pune senzorul chiar pe el.

Codul care a stat la baza acestei aplicații este următorul:

void setup()

{

pinMode(P1_1,OUTPUT);

}

void loop()

{

int sensorValue = analogRead(A0);

float volti = (sensorValue * 5.0) / 1024.0;

float temperaturagrade = (volti – 0.5) * 100;

if (temperaturagrade == 50){

digitalWrite(P1_1,LOW);

}

else{

digitalWrite(P1_1,HIGH);

}

Delay(10000)

}

Așadar se citește valoarea de pe senzor. Ea este transformată în volți, iar pe urmă în grade. Eu am dorit ca valoarea de referință să fie de 50 de grade. Deci, se compară din 10 în 10 secunde cu 50 de grade și se ia decizia dacă să fie pornit sau oprit Heating Pad-ul.

Schema este prezentată în figura 5.12.

Figura 5.12

Astfel am reușit ce mi-am propus, adică:

– să controlez jaluzelele cu ajutorul motoarelor pas-cu-pas și pe baza semnalului primit de la un senzor de lumină

– să controlez luminile, tot pe baza unui senzor de lumină

– să creez un sistem de securitate pe baza unui senzor Hall și a unui buzzer care dă un semnal de atentionare

– să controlez temperatura unei camere, cu ajutorul unui senzor de temperatură.

Tot-odată cu ajutorul celor 3 microcontrolere am făcut un sistem distribuit. Adică fiecare din microcontroler se ocupă cu partea lui care i-a fost rânduită. Primul s-a ocupat cu controlul jaluzelelor, al-doilea cu controlul luminilor, iar al-treilea, atât cu temperatura, cât și cu securitatea.

Capitolul 6 CONCLUZII

M-am tot gândit ce să scriu ca și concluzie a acesei lucrări. Cum să imi justific alegerea făcută. Totuși, dacă ar fi de justificat de ce am ales o aplicație de domotică, aș putea să spun câteva cuvinte.

Să ne uităm un pic în trecut, iar apoi să privim în perspectivă în viitor. Să luăm un exemplu: după cum am auzit de la părinții și bunicii mei, pe vremea când parinții mei erau copii. Pentru a avea dimineața un ceai cald, la amiază sau seara o mâncare caldă trebuiau să aprindă focul în sobă. Astfel lua ceva timp pană reușeau să-și încălzească ce doreau. S-a trecut mai apoi la aragaz, unde numa apeși pe aprinzător și focul este pornit. Însă datorită comodității sau a vitezei în care suntem angrenați în ziua de azi nici aragasul, de multe ori, nu mai este o soluție, ci apelăm la cuptorul cu microunde care în 2-3 minute ne-a rezolvat problema. Dacă stăm și ne gândim, vedem cât impact are avansarea tehnologiei.

Așadar, domotica, care pentru unii este un domeniu nou, pentru alții mai puțin nou, își va spune cu siguranță cuvântul în viitor. Aceasta va ajunge ceva banal și impus de autorități, datorită avantajelor pe care le oferă.

Pentru a dezvoltare în viitor al acestei aplicații, m-am gândit să creez un control în funcție de condițiile meteo. Astfel microcontrolerul să primească informații direct de pe un site meteo, iar dacă se anunță furtună, iar casa de exemplu are panouri solare pe acoperiși, automat să fie tras o protecție peste panouri, sau daca voi fi plecat în concediu, iar se anunța vreme de secetă, atunci microcontrolerul va avea grijă de a iriga gradina.

Bibliografie

http://en.wikipedia.org/wiki/Home_automation

http://www.securitybroker.ro/index.php/servicii-conexe/casa-inteligenta-si-automatizari

http://ro.wikipedia.org/wiki/Automatizare

http://www.shiva.pub.ro/PDF/TRA/slide_curs1_TRA.pdf

http://users.utcluj.ro/~cteodor/Lucrari/Automatizari_L9.pdf

http://in.element14.com/murata/pkb24spch3601-b0/buzzer-continuous-3-6khz-90db/dp/1192515

http://ro.wikipedia.org/wiki/Efectul_Hall

http://www.e-automobile.ro/categorie-electronica/106-senzor-hall.html

http://www.ti.com/lit/ds/symlink/lm50.pdf

http://energia.nu/Guide_Windows.html

http://energia.nu/

http://ro.wikipedia.org/wiki/Microcontroler

http://cursuri-online.wikispaces.com/file/view/MICROCONTROLERE%20PARTEA%201.pdf/404406728/MICROCONTROLERE%20PARTEA%201.pdf

http://www.scritub.com/stiinta/informatica/Microcontroler61363.php

http://www.adelaida.ro/placa-test-breadboard-2420-puncte-wb-106.html

http://electronicexperiments.blogspot.ro/p/my-breadboard.html

http://vega.unitbv.ro/~ogrutan/Microcontrollere2011/5-motoare.pdf

http://members.home.nl/hobbycorner/images/step-fig-5-1.gif

http://www.edaboard.com/thread217270.html

http://www.hobbytronics.co.uk/uln2003a-darlington-array

http://dangerousprototypes.com/wp-content/media/2010/06/launchpad-board1.jpg

https://estore.ti.com/MSP-EXP430G2-MSP430-LaunchPad-Value-Line-Development-kit-P2031.aspx

http://www.ti.com/product/msp430g2231

http://e2e.ti.com/support/microcontrollers/msp430/f/166/t/124235.aspx

http://energia.nu/Tutorial_Fade.html

http://elabz.com/driving-a-bipolar-stepper-motor-with-arduino-and-uln2803ag/

http://www.europarl.europa.eu/meetdocs/2009_2014/documents/com/com_com%282011%290885_/com_com%282011%290885_ro.pdf

https://toad.cor.europa.eu

Acronime

ECOS – Comisia europeană pentru politica economică și socială

IMM-uri –Întreprinderi micro, mici și mijlocii

WB –Wish Board

SCD – Sistem de control distribuit

CCS – Code Composer Studio

Temp – temperatură

CPU – Unitatea de procesare centrală

Anexa

Bibliografie

http://en.wikipedia.org/wiki/Home_automation

http://www.securitybroker.ro/index.php/servicii-conexe/casa-inteligenta-si-automatizari

http://ro.wikipedia.org/wiki/Automatizare

http://www.shiva.pub.ro/PDF/TRA/slide_curs1_TRA.pdf

http://users.utcluj.ro/~cteodor/Lucrari/Automatizari_L9.pdf

http://in.element14.com/murata/pkb24spch3601-b0/buzzer-continuous-3-6khz-90db/dp/1192515

http://ro.wikipedia.org/wiki/Efectul_Hall

http://www.e-automobile.ro/categorie-electronica/106-senzor-hall.html

http://www.ti.com/lit/ds/symlink/lm50.pdf

http://energia.nu/Guide_Windows.html

http://energia.nu/

http://ro.wikipedia.org/wiki/Microcontroler

http://cursuri-online.wikispaces.com/file/view/MICROCONTROLERE%20PARTEA%201.pdf/404406728/MICROCONTROLERE%20PARTEA%201.pdf

http://www.scritub.com/stiinta/informatica/Microcontroler61363.php

http://www.adelaida.ro/placa-test-breadboard-2420-puncte-wb-106.html

http://electronicexperiments.blogspot.ro/p/my-breadboard.html

http://vega.unitbv.ro/~ogrutan/Microcontrollere2011/5-motoare.pdf

http://members.home.nl/hobbycorner/images/step-fig-5-1.gif

http://www.edaboard.com/thread217270.html

http://www.hobbytronics.co.uk/uln2003a-darlington-array

http://dangerousprototypes.com/wp-content/media/2010/06/launchpad-board1.jpg

https://estore.ti.com/MSP-EXP430G2-MSP430-LaunchPad-Value-Line-Development-kit-P2031.aspx

http://www.ti.com/product/msp430g2231

http://e2e.ti.com/support/microcontrollers/msp430/f/166/t/124235.aspx

http://energia.nu/Tutorial_Fade.html

http://elabz.com/driving-a-bipolar-stepper-motor-with-arduino-and-uln2803ag/

http://www.europarl.europa.eu/meetdocs/2009_2014/documents/com/com_com%282011%290885_/com_com%282011%290885_ro.pdf

https://toad.cor.europa.eu

Similar Posts