Sistem Automat Pentru Dozarea Lichidelor
Cuprins
Introducere ………………………………………………………………………………………6
Cap 1. Automate cu stari finite…………………………………………………………..7
1.1 Istoric ……………………………………………………………………………………….7
1.2 Automate cu stari finite ……………………………………………………………..7
1.3 Automate finite automatele Mealy și Moore ……………………………….9
1.4 Mașina de calcul Turing …………………………………………………………….11
1.5 Teoria sistemelor automate ………………………………………………………..11
1.5.1 Caracterizarea și definirea sistemelor …………………………………..12
1.5.2 Clasificarea sistemelor …………………………………………………………13
Cap 2. Configurarea hardware a automaltului ……………………………………18
2.1 Schema bloc generală …………………………………………………………………18
2.2 Principiul de funcționare ……………………………………………………………19
2.3 Micocontrolerul utilizat ……………………………………………………………..20
2.3.1 Generalități …………………………………………………………………………20
2.3.2 Platforma Arduino ………………………………………………………………24
2.3.3 Micocontrolerul Atmel …………………………………………………………25
2.4 Modul de control al automatului ………………………………………………..28
2.5 Afisorul LCD …………………………………………………………………………….29
2.6 Circuitul de control al motoarelor ………………………………………………32
2.6.1 Tranzistoarele ……………………………………………………………………..32
2.6.2 Tranzistoarele Darlington ……………………………………………………33
2.6.3 Unitatea de control Darlington NPN …………………………………….34
2.7 Sursa de alimentare …………………………………………………………………..36
2.8 Metode de comunicare cu placuta arduino …………………………………38
Cap 3. Implementarea software …………………………………………………………40
3.1 Limbaj de programare ………………………………………………………………40
3.2 Logica de control, programul …………………………………………………….41
Concluzii ……………………………………………………………………………………………47
Bibliografie ………………………………………………………………………………………..48
INTRODUCERE
Domeniul de aplicabilitate a temei de licentă
Tema aleasă in cadrul acestui proiect de licența are aplicabilitate in domeniul industrial(uzine, fabrici, linii de productie automatizate, etc), cât și în domeniul utilizatorului de zi cu zi(dozatoare de suc, uși automate, etc ).
Motivația alegerii temei de licență
De-a lungul anilor de studiu am lucrat nu numai, cu partea fizica în care măsuram tensiunile în circuite, dar și cu partea de programare, partea de automatizare, partea în care aveai oportunitatea de a combina toate cunoștintele dobândite pentru a realiza ceva ce era de sine stătător, acel lucru care functionează, deși tu l-ai lăsat acolo o zi, două, acel lucru care valida decizia luată, de a urma cursurile facultății de electronică, acel lucru de care ești mândru.
Pur și simplu adaugi o parte din tine, din logica ta pentru a crea "acel ceva", astfel am fost determinat să aplic toate cunostințele dobândite de-a lungul anilor să fac un proiect care, pur si simplu preia o activitate zilnică si o transforma într-un mod relativ simplu într-un proces ușor de realizat.
Aplicații
În momentul de față din ce în ce mai multe activități și slujbe sunt înlocuite de către roboti, benzi transportoare, senzori care au drept scop creșterea eficienței si totodata creșterea profitului și reducerea investițiilor pe termen lung, deoarece o mașina nu are nevoie de somn sau pauze de masă aceasta continuă să funcționeze atâta timp cât sunt satisfăcute anumite cerințe de funcționare(materie primă, curent, integritatea aparatelor).
Aici intervin Automatele Programabile acestea fiind asa numiții "Manageri" de operatiuni, deoarece au drept sarcină menținerea liniei de producție în parametri. Acesta citește senzorii plasați în fabrică și actionează în concordanța, facând mașinile să funcționeze la unison ca o echipă bine pusă la punct.
Aceștia fac posibilă înlocuirea operatorului uman acolo unde exista un grad mare de toxicitate, riscul de rănire, sau pur si simplu poate realiza aceeași activitate intr-un timp mai scurt.
Totodata Automatele Programabile se găsesc și în viața noastra de zi cu zi sub formă de dozatoare de cafea, lapte, mâncare.
În ultima vreme automatizările pot fi realizate din ce în ce mai simplu datorită avansului tehnologic, majoritatea componentelor devenind mai mici, mai mai ușor de încadrat pe aceeași placă. Unul dintre exemple fiind plăcile de la Arduino sau Raspberry ce pot controla cu ușurință diverse componente făcând astfel posibilă automatizarea în domeniul casnic foarte facilă, necesitând cunoștințe minime de programare de exemplu pentru automatizarea unei uși de garaj.
CAPITOLUL 1.AUTOMATE CU STARI FINITE
1.1 Istoric
Teoria automatelor este o ramură teoretică, interesantă a informaticii. Aceasta își are începuturile în secolul XX, atunci când matematicienii vremii au început sa dezvolte atât teoretic cât și practic mașini ce imitau anumite trăsături ale omului rezolvând ecuații mai rapid și mai fiabil decât aceștia. Cuvântul automat fiind foarte apropiat ca origine de cuvântul automatizare, denotă un proces automat ce finalizează producerea anumitor procese. Simplificând, Teoria Automatelor se ocupă cu logica de calcul a utilajelor simple referindu-se la ele ca fiind automate. Cu ajutorul automatelor oamenii de știinta au putut întelege modul in care mașinile pot calcula funcțiile, rezolva probleme și totodata ce înseamna ca funcția sa fie calculabilă, sau ce înseamnă ca o întrebare să fie descrisă ca fiind decizională.
Automatele sunt modele abstracte ale mașinilor ce efectuează calcule bazate pe o intrare ”input” trecând printr-o serie de stari sau configurații. La fiecare stare a calculului o funcție de tranziție determină urmatoarea configurare bazată pe o parte finită din configurația actuală. Ca și rezultat o dată ce calculul ajunge la o configurație de acceptare, acesta acceptă semnalul de intrare.
Principalul obiectiv al teoriei automatelor este acela de a dezvolta metode prin care oamenii de știintă pot descrie și analiza dinamica comportamentului sistemelor discrete, în care semnalele sunt etichetate periodic. Comportamentul acestor sisteme discrete este determinat de catre felul în care sistemul este construit. Aceste mașini sunt caracterizate de către :
Input-uri: sunt presupuse a fi secvențe de simboluri selectate dintr-un set finit de I semnale de intrare, unde I reprezintă mulțimea {x1,x2,x3,…..,xk}, unde k reprezintă numărul de input-uri din sistem.
Output-uri: reprezintă secvențe de simboluri selectate dintr-un set finit Z, unde Z este reprezentat de {y1,y2,y3,…….ym}, unde m reprezintă numarul de output-uri.
Stări: reprezinta un set finit Q de stări ce sunt definite de tipul automatului.
1.2Automate cu stări finite
Istoricul palpitant, în urma căruia automatele finite au devenit o ramură a științei în calculatoare ne dezvăluie vastele posibilitați de utilizare a acestora. Primii oameni de știintă care au fondat conceptul de automat cu stări finite au fost biologi, psihologi, matematicieni, ingineri si câțiva dintre primii informaticieni ai vremii. Toți aceștia au avut ca și țel comun, modelarea procesului gândirii umane, fie in interiorul creierului sau in interiorul unui computer. Warren McCulloch si Walter Pitts, doi neuropsihologi ai vremii au fost primii ce au prezentat o descriere a unui automat finit în anul 1943. Lucrarea acestora intitulată ”A Logical Calculus Immanent in Nervous Activity”, a avut un impact semnificativ în dezvoltarea studiilor despre rețelele neuronale, teoria automatelor și teoria calculelor si a ciberneticii. Nu după mult timp doi ingineri informaticieni, G.H.Mealy si E.F.Moore au enunțat teoria ce avea să ducă la mașini computaționale mai puternice, in lucrări publicate separat in 1955-56. Mașinile cu stări finite ce au urmat au fost numite Mealy si Moore pentru a putea recunoaște munca depusă de aceștia în dezvoltarea acestora. În timp ce modelul Mealy determină ieșirea sistemului cu ajutorul unor stări de tranziție si totodată cu ajutorul imputului, modelul Moore determină ieșirea sistemului doar cu ajutorul stării actuale a sistemului.
Fig 1.1. Warren McCulloch și Walter Pitts[1][2]
Un automat în care setul de stări Q conține un numar finit de elemente, se numește mașină cu stări finite (FSM – FiniteStateMachine). FSM-urile sunt mașini abstracte ce constau într-un set de stări (Q), un set de evenimente ce au loc la intrare Imputuri (I), un set de evenimente ce au loc la ieșire Outputuri (Z) și un set de funcții de tranziție. Funcția de tranziție a stării transformă starea actuală și evenimentul de intrare, intr-un nou set de evenimente la ieșire și următoarea stare a mașinii. Așadar, aceasta poate fi văzută ca și o funcție ce mapează o secvență ordonată a evenimentelor de intrare într-o secvență corespunzătoare, sau un set de evenimente de ieșire unde starea de tranziție este o funcție I → Z.
Mașinile cu stări finite sunt modele de calcul ideale pentru operații ce necesită cantități mici de memorie si totodată nu își mențin memoria. Acest model matematic al unei mașini poate avea doar un număr finit de stări și tranziții intre stări. Principala sa aplicație fiind în analiza matematică a problemelor.
Pentru a înțelege pe deplin modul conceptual al unei mașini cu stări finite, vom lua ca și exemplu un lift:
Liftul este un mecanism ce nu reține toate cererile trecute de utilizare ci doar etajul curent, direcția de deplasare (sus sau jos) și cererile neprocesate. Așadar in orice moment al deplasării liftul poate fi caracterizat de către următorii termeni matematici:
Stări: un set finit de stări pentru a reflecta istoria cerințelor clienților
Input-uri: set finit de intrări ce depinde de numărul de etaje la care are acces liftul. Putem folosi setul I ce este reprezentat de către etajele clădirii.
Output-uri: set finit de ieșiri ce depinde atît de direcția de deplasare a liftului cît și de nevoia clienților.
O mașină cu stări finite poate fi definită ca un cvintuplu:
Q = număr finit de stări
I = număr finit de simboluri de intrare
Z = număr finit de simboluri de ieșire
∂ = funcția de tranziție a stării I x Q →Q
W = funcția de ieșire
A = set de stări de acceptare
O mașină cu stări finite conține un număr finit de stări. Fiecare stare acceptând un număr finit de Input-uri. Fiecare stare având reguli ce descriu acțiunea mașinii pentru fiecare Input reprezentate de către funcția de transfer a stării. În același timp Input-ul poate duce la schimbarea stării mașinii. Pentru fiecare simbol de intrare va exista o singură tranziție pentru fiecare stare.
Atunci când se analizează mașina cu stări finite este important să se ia în considerare faptul că procesul mecanic din interiorul automatului ce calculează Output-ul și schimbă starea nu este detaliat, acesta fiind considerată ca și o ”cutie neagră”.[3]
1.3 Automate finite, automatele Mealy si Moore
Automatul finit reprezintă un circuit secvențial proiectat intr-un mod secvențial premeditat, cu ajutorul unor metode specifice ale stărilor finite. Automatele finite sunt reprezentate de către două modele, modelul Mealy și modelul Moore. Ieșirea unui automat de tip Moore depinde doar de stările în care se poate afla automatul, pe de altă parte automatul Mealy depinde de stările in care se poate afla automatul cît și de datele de la intrarea acestuia.
Automatul finit este alcatuit din trei părți:
Registru secvențial de stare, al stării curente: acest registru reprezintă un set de circuite basculante bistabile (flip-flop) de x-biți sincronizat cu ajutorul unui singur semnal de tact, fiind folosit pentru a reține (menține) stările vectorului automatului finit. Un vector de stare cu dimensiunea de x-biți are 2x valori cunoscute posibile pentru codare. De obicei nu toate valorile lui 2x sunt necesare, așadar cele ce nu sunt folosite trebuie proiectate astfel încât să nu apară in timpul funcționării automatului.
Logica combinațională necesară pentru starea următoare: Un automat finit poate fi în orice moment dat intr-o singură stare iar fiecare tranziție activată de către semnalul de tact determină schimbarea automatului finit din starea curentă în starea următoare. Aceasta fiind descrisă de logica pentru starea următoare. Starea următoare este o funcție descrisă de către intrările și starea curentă a automatului.
Logica combinațională necesară ieșirilor: Ieșirile (Outputu-rile) în cazul automatelor de tip Mealy sunt date de către starea curentă în care se află automatul și intrările acestuia. La un automat Moore se dorește derivarea ieșirilor de la starea următoare și nu de la starea curentă, astfel încât datele de ieșire se înregistrează pentru timpi de ”clock-to-out” mai rapizi.
Fig 1.2 Reprezentarea grafică a unui automat de tip Moore
Fig 1.3 Reprezentarea grafică a unui automat de tip Mealy
Utilizându-se semnalul de reset se asigură un comportament cât mai liniar, robust lipsit de întreruperi. Astfel automatul va fi mereu inițializat cu o stare cunoscută, validă, înaintea primului semnal de tact. În cazul în care semnalul de reset lipsește nu există nici o modalitate de a previziona valoare inițială a regiștrilor stării automatului atâta timp cât circuitul este conectat la tensiune, automatul putându-se bloca rămânând într-o stare necodificată. În concluzie, semnalul de reset ar trebui introdus în procesul secvențial al stării curente.
Semnalul de reset asincron este ales cu predilecție față de semnalul de reset sincron deoarece nu solicită decodarea stărilor nefolosite, minimizând logica necesară pentru starea ce urmează.[4]
1.4 Mașina de calcul Turing
Cele mai simple automate folosite pentru calcule sunt automatele finite. Acestea pot compila doar funcții simple, de aceea nu sunt adecvate ca modele de calcul. Totodată, incapacitatea unui automat cu stări finite de a generaliza îi reduce puterea de calcul.
În cele ce urmează vom ilustra diferența dintre un automat cu stări finite si un automat Turing:
Un procesor modern. Fiecare componentă a acestuia poate avea două stări (0 sau 1). Prin urmare, există un numar finit de stări posibile. Mai mult, luând în considerare interacțiunea componentelor cu procesorul, există un numar finit de intrări, mouse, tastatură, hard disk etc. ca rezultat putem concluziona că un procesor poate fi realizat ca un automat finit.
Un computer. Deși fiecare componentă din automat poate exista în două stări diferite (0 sau 1), există un numar infinit de interacțiuni în interiorul computerului ca un întreg. Devine extrem de dificilă realizarea proceselor unui computer în limitele impuse de un automat finit. Totusi un automat de nivel înalt, infinit și mult mai puternic ar fi capabil să realizeze această sarcină.
Savantul recunoscut pe plan mondial Alan Turing a conceput în anul 1936 primul model de calcul infinit:”The Turing Machine” pentru a rezolva problema Entscheindungs. Mașina de calcul Turing poate fi privită ca un automat finit sau o unitate de control prevăzută cu o capacitate de stocare infinită. Memoria sa constă într-un număr infinit de celule matriceale unidimensionale. Mașina Turing reprezintă un model abstract al modului de procesare si stocare modern, dezvoltat pentru a furniza o definiție matematică a unui algoritm sau a unei proceduri mecanice.
În timp ce un automat este denumit ”finit”, dacă modelul său constă într-un număr finit de stări și funcții cu șiruri finite de caractere de intrare și ieșire, automatele finite dețin un ”accesoriu” – fie el o stivă sau o bandă magnetică care poate fi mutată în functie de necesitățile mașinariei de stocare a informațiilor putând îndeplini aceși funcție ca un calculator.
Prin urmare, diferența majoră între mașina de calcul Turing si un automat cu stări finite constă in faptul că mașina Turing este capabilă să schimbe simbolurile stocate pe bandă simulând execuția și stocarea unui computer. Din acest motiv se poate spune că mașina de calcul Turing deține puterea de a modela toate calculele ce pot fi procesate prin intermediul calculatoarelor moderne.
1.5 Teoria sistemelor automate
Teoria sistemelor automate reprezintă legătura între etapele pregătirii tehnice fundamentale și etapele pregătirii de specialitate, făcându-ne cunoștință cu noi principii, proceduri, informații precum și un nou mod de gândire ce permite înțelegerea și aprofundarea problemelor ce apar în domeniul automatizării și informatizării proceselor.
Teoria sistemelor reprezintă o culegere de principii, cunoștințe și metode în general independente de aplicații, dar totodată necesare interpretării și explicării structurii, comportamentului dinamic și caracteristicilor sistemelor existente, dar în mod special al sistemelor automate.
1.5.1 Caracterizarea si definirea sistemelor
Conceptul de sistem a apărut în timp dezvoltându-se gradual ca rezultat al evidențierii unor trăsături și comportamente comune pentru o serie de procese tehnologice și fenomene întâlnite în diferite domenii, fapt ce a dus la tratarea acestora, din punct de vedere structural-funcțional, într-un mod comun.
Ideea de sistem este cuprinsă într-o sferă foarte largă astfel încât este frecvent întâlnită în știință și tehnică, acaparând toate domeniile gândirii si acțiunii umane, însă aproape întotdeauna îi este asociat un atribut de specificare: sistem automat, sistem informațional etc.
În literatura de specialitate conceptul de sistem este definit in diverse moduri, reflectând pe de o parte definirea conceptului în întreaga sa generalitate iar pe de altă parte tendința de particularizare la un anumit domeniu al cunoașterii.
Noi vom considera sistemul ca fiind un ansamblu de elemente ce interacționează între ele și cu exteriorul în vederea atingerii unei finalități
Un sistem reprezintă o conexiune de elemente, fiecare reprezentând la rândul său un sistem, considerat subsistem. Modul de interacționare între elemente conferă sistemului proprietăți și comportamente noi, ce difera de cele ale fiecărui element individual.
În cazul sistemelor fizice, cele reale, interacțiunea are loc prin intermediul fluxurilor de masă și energie, purtătoare de informație. Teoria sistemelor are ca bază conceptul de sistem abstract, reprezentând defapt un model matematic ce permite descrierea comportamentului dinamic și caracteristicilor unei clase de sisteme reale(fizice).
Sistemele automate reprezintă sisteme tehnice de comandă, control și supraveghere al proceselor și instalațiilor tehnologice.
Un sistem automat este compus din doua părți principale:
Procesul de automatizare
Dispozitivul de automatizare
Trasături fundamentale ale sistemelor:
Caracterul structural-unitar: reflectă proprietatea sistemului de a fi reprezentat ca o conexiune de subsisteme a căror acțiune este unitară orientată către un anumit scop.
Caracterul cauzal-dinamic: reflecta proprietatea sistemului de a evolua în timp datorită factorilor interni și externi.
Caracterul informațional: reflecta proprietatea unui sistem de a primi, prelucra, memora și transmite informația.
În cadrul teoriei sistemelor ca și informație se înțelege orice factor cantitativ și calitativ care ajută la descrierea comportamentului sistemului. În cadrul sistemelor tehnice, mărimile fizice ce servesc ca suport pentru informație se numesc semnale.
Mărimile ce reprezintă un sistem sunt: mărimi de intrare, marimi de stare, marimi de iesire.
Mărimile de intrare: independente de sistem reprezentând cauza, influențează din exterior starea și evoluția sistemului.
Mărimile de stare: dependente de mărimile de intrare reprezentând efectul, au rol de a caracteriza stara curentă a sistemului.
Mărimile de ieșire: dependente de mărimile de stare, uneori și de mărimile de intrare având rolul de a transmite sistemelor învecinate informații despre starea curentă a sistemului.
Un sistem interacționează cu sistemele învecinate doar prin intermediul mărimilor de intrare și iesire. Mărimile de ieșire ale unui sistem reprezintă mărimi de intrare pentru sistemele învecinate. Mărimile de ieșire ale sistemelor tehnice sunt măsurabile, în timp ce mărimile de stare nu sunt accesibile măsurării.
1.5.2 Clasificarea sistemelor
Sistemele pot fi împarțite în clase și categorii de sisteme, cu trăsături și comportamente asemănătoare datorită proprietăților derivate din caracterul lor structural-unitar și cauzal dinamic.
Sisteme continue și discrete
Sistemele cu timp continuu (sisteme continue) sunt acele sisteme ale căror mărimi de intrare, de ieșire și de stare iau valori ce aparțin mulțimii numerelor reale R la orice moment în timp t.
Sistemele cu timp continuu pot fi seminetede sau netede (analogice). Sistemele netede se caracterizează prin următoarea proprietate: Funcția de stare X(t) și funcția de ieșire Y(t) sunt continue atâta timp cât starea inițială X0 și funcția de intrare U(t) sunt continuue pe intervalul [t0,t]. Sistemele cu timp continuu ce nu respectă această proprietate se numesc sisteme seminetede.
Sisteme cu timp discret (sisteme discrete) reprezintă acele sisteme în care mărimile de intrare, ieșire și de stare își iau valorile numai la anumite momente în timp. Tactul (perioada) fiind aleasă prin convenție ca fiind T=1 rezultă tk=k rezultă timpul t ca fiind o variabilă de tip întreg.
Sistemele discrete la care mărimile de intrare, ieșire și de stare sunt cuantificate având un număr finit de valori, se numesc sisteme finite sau automate finite. Sistemele finite la care variabilele pot lua numai două valori, adică 0 sau 1, se numesc sisteme logice, iar sistemele în care variabilele iau un numar mare de valori se numesc sisteme numerice sau digitale.
Semnalul numeric obținut prin eșantionarea unui semnal de timp continuu se numește semnal eșantionat, iar sistemele ce folosesc acest tip de semnal se numesc sisteme cu eșantionare sau sisteme eșantionate.
Sisteme liniare și neliniare
Sistemele liniare reprezintă acele sisteme care în orice condiții verifică principiul superpoziției, astfel încât suma efectelor cauzelor este egală cu efectul sumei cauzelor.
În cazul unui sistem liniar aflat inițial în regim staționar , dacă intrării u1 îi corespunde iesirea y1, iar intrarii u2 îi corespunde ieșirea y2 atunci intrării u1+u1 îi corespunde ieșirea y1+y2.
Sistemul ce rezultă prin interconectarea a două sau mai multor subsisteme liniare este de asemenea liniar. Reciproca acesteia nefiind întotdeauna valabilă, astfel încât dacă un sistem este liniar nu înseamnă neapărat că si subsistemele sunt liniare.
Sistemele neliniare sunt acele sisteme care nu satisfac în toate cazurile principiul superpoziției respectiv sunt acele sisteme care nu sunt liniare. Modul neconstructiv de definire a sistemelor neliniare prin negarea unei proprietăți și multitudinea modurilor de manifestare a neliniarităților conduc la ideea imposibilității de a construi o teorie unitară, aplicabilă la toate sistemele neliniare. în consecință , sistemele neliniare sunt studiate pe clase de sisteme, definite pe baza unor proprietăți comune.
Sisteme cu și fără memorie
Sisteme fără memorie supranumite și ca sisteme statice, sunt sisteme de ordin zero fără variabile de stare, având valoare ieșirii Y la momentul t complet determinată de valoarea intrării U la momentul t. La aceste sisteme ieșirea urmăreste fără întârziere variațiile în timp ale intrării.
Sistemele fără memorie nu au capacitatea de memorare a istoriei trecute și nu conțin în componența lor elemente capabile să înmagazineze și să transfere cantități semnificative de masă și energie.
Sisteme staționare și nestaționare
Sistemele staționare sunt invariante sau cu parametri constanți, au structura sau parametrii interni constanți în timp, iar sistemele nestaționare cu parametri variabili, au structura variabilă în timp, sau cel puțin un parametru intern variabil în timp. Starea unui sistem staționar aflat inițial în regim staționar fiind caracterizat prin constanta în timp a tuturor variabilelor de intrare, ieșire, stare, se poate modifica numai din exterior prin acțiunea variabilelor de intrare.
Sisteme monovariabile si multivariabile
Sistemele monovariabile au o singură intrare și o singură ieșire. Sistemele multivariabile au cel puțin două intrări și două ieșiri. În plus, cel putin o ieșire este influențată de două intrări.
Sistemele monovariabile se mai numesc sisteme SISO (Single Input Single Output), iar sistemele multivariabile se mai numesc sisteme MIMO (Multi Input Multi Output).
Sisteme cu parametrii concentrați si distribuiți
Sistemele cu parametrii concentrați sunt acelea la care se poate considera, cu suficientă precizie, că mărimile fizice asociate oricărui element al sistemului au aceeași valoare în toate punctele elementului.
Sistemele cu parametri distribuiți sunt acelea la care cel puțin o mărime fizică asociată unui element dimensional al sistemului are valori care diferă sensibil de la punct la punct, adică are valori distribuite de-a lungul unei linii, în plan sau în spațiu.
Deoarece toate obiectele fizice sunt de tip spațial, pentru determinarea caracterului concentrat sau distribuit al unui obiect se ține seamă de timpul de propagare a masei, sau energiei, pe direcțiile spațiale ale obiectului, care depinde de dimensiunile acestuia și de viteza de propagare. Mai exact, se are în vedere timpul relativ de propagare, definit prin raportarea timpului de propagare la constanta de timp dominantă ce caracterizează dinamica obiectului considerat.
Având în vedere complexitatea formalismului matematic la sistemele cu parametri distribuiți, în condițiile în care eroarae de modelare datorată renunțării la ipoteza de distributivitate se încadrează în limite acceptabile, timpul de propagare relativ este de sub 10%, se preferă considerarea sistemului analizat ca fiind cu parametri concentrați. În asemenea situații, sistemele cu parametri distribuiți pot fi tratate în maniera specifică sistemelor cu parametrii concentrați, alegând ca variabile de intrare sau ieșire, mărimi fizice locale asociate unor puncte ale obiectului fizic, de obicei extremele.
Sisteme cu timp mort
In cazul sistemelor fizice cu parametri distribuiți, la care viteza de propagare a fenomenului este relativ redusă (cazul proceselor cu transfer de masă și transfer caloric), între mărimile de ieșire și mărimile de intrare poate fi evidențiată o întîrziere pură, de tip „timp mort". Astfel, dacă mărimea de intrare suferă o variație la momentul t=0, efectul devine observabil la ieșire începând de la un anumit moment. Intervalul de timp în care efectul este insesizabil la ieșire se numește timp mort.
Sisteme deterministe și stochastice
La sistemele stochastice (probabiliste), spre deosebire de cele deterministe, starea inițială X0 și funcția de intrare U[t0, t] nu mai determină în mod univoc starea X la momentul t . Sistemele stochastice au cel puțin un parametru intern (asociat structurii sistemului) care variază aleator și imprimă astfel un caracter aleator (stochastic) mărimilor de stare și de ieșire.
Caracterul determinist sau stochastic al unui sistem nu este influențat de tipul semnalelor aplicate la intrare (deterministe sau stochastice). Sistemele stochastice generează întotdeauna semnal aleator, iar sistemele deterministe generează semnal determinist la intrări deterministe și semnal aleator la intrări stochastice.
Dacă anumite ipoteze asupra formei de variație a semnalelor stochastice pot fi admise apriori, atunci este posibilă caracterizarea acestora pe baza elementelor de calcul probabilistic și statistică matematică. Formalismul matematic este considerabil simplificat în cazul sistemelor stochastice cu caracter staționar și ergodic, care implică constanța în timp a proprietăților statistice și, respectiv, permite analiza sistemului pe baza unui singur semnal aleator reprezentativ.
Un tip special de sistem stochastic este sistemul fuzzy, la care mulțimea stărilor și mulțimea ieșirilor sunt mulțimi fuzzy (definite în mod vag, în sensul că un element aparține unei mulțimi de valori date într-o măsură mai mare sau mai mică, exprimată printr-o funcție de apartenență).
Sisteme închise și deschise
Sistemele deschise (cu structură deschisă) sunt caracterizate printr-un flux de informație unidirecțional. Sistemele închise (cu structură închisă sau cu buclă închisă) sunt sisteme la care poate fi evidențiat un flux de informație bidirecțional. Un sistem închis conține cel puțin un subsistem a cărui intrare este influențată de propria ieșire.
In cazul sistemului de reglare automată, dispozitivul de automatizare DA primește informație despre starea curentă a procesului reglat P și, pe baza acestei informații, generează comenzi convenabile asupra procesului, în vederea menținerii sau aducerii acestuia într-o anumită stare dorită (de referință). Abaterea stării curente a procesului de la starea de referință se datorează acțiunii perturbațiilor și/sau modificării stării de referință.
Clasificări ale sistemelor automate
a) După natura elementelor din componența dispozitivului de automatizare și a semnalelor de comunicație între aceste elemente, sistemele automate pot fi: electronice, pneumatice, hidraulice, mecanice și mixte.
Sistemele electronice sunt superioare celorlalte în privința performanțelor tehnice și a posibilităților de cuplare la echipamentele de calcul numeric și de transmisie a semnalelor la distanță. In mediile cu pericol de explozie, sistemele electronice pot fi utilizate numai dacă au fost fabricate în construcție anti-explozivă. Când sistemul automat conține elemente de natură diferită, interconectarea acestora se face prin intermediul elementelor convertoare (de interfață).
b) După gradul de universalitate a elementelor din componența dispozitivului de automatizare, sistemele automate pot fi unificate sau specializate. Sistemele unificate conțin elemente universale care funcționează cu semnal unificat (standard).
Sistemele automate electronice de putere medie funcționează cu semnal electronic unificat 4…20 mA c.c. Prin intermediul unei rezistențe de 250Ω, acest semnal poate fi transformat în tensiune în gama 1 … 5 V. Semnalul de tip curent, spre deosebire de semnalul tip tensiune, poate fi transmis fără pierderi la distanțe mari de până la 1000…2000 m. Domeniul de variație al semnalului unificat este deplasat față de zero, pentru ca și în cazul valorilor mici ale semnalului unificat, raportul semnal util-zgomot să rămână la o valoare ridicată. In plus, fiind curentul de colector al unui tranzistor de putere, semnalul unificat nu poate fi generat la valori apropiate de zero (care ar presupune aducerea punctului de funcționare al tranzistorului din zona de amplificare în zona de blocare).
Sistemele automate pneumatice de presiune medie funcționează cu semnal pneumatic unificat 0,2…1,0 bar. Presiunea de 1 bar este suficient de mică pentru a nu avea consumuri energetice ridicate și a nu crea probleme deosebite de etanșare; în același timp, este suficient de mare, pentru ca prin intermediul unor membrane circulare cu raza de 10…20 cm, să creeze forțe de ordinul sutelor de kgf, necesare în acționarea robinetelor de reglare.
Sistemele automate specializate sunt utilizate în cazul unor automatizări de mai mică amploare, când nu se pune problema transmiterii semnalelor la distanță. Aceste sisteme sunt de obicei cu acțiune directă (fără energie auxiliară), simple și robuste.
c) In raport cu funcția îndeplinită, sistemele automate se clasifică în:
– sisteme automate de supraveghere (de măsurare și/sau semnalizare);
– sisteme automate de protecție;
– sisteme automate de comandă directă (după un program prestabilit);
– sisteme automate de reglare (de comandă după un algoritm care ține seama de starea curentă a sistemului reglat) ;
– sisteme automate de conducere (prin supraveghere, protecție, comandă, reglare).
Protecția automată presupune oprirea (blocarea) parțială sau totală a procesului (instalației), atunci când un parametru iese în afara domeniului admisibil de funcționare, afectând calitatea produsului finit și/sau securitatea instalației respective.
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.[5]
CAPITOLUL 2. CONFIGURAȚIA HARDWARE A AUTOMATULUI
2.1 Schema bloc generală
Circuitul prezentat (fig 2.1) ne dezvăluie în fază incipientă proiectul ca având minimul necesar pentru implementarea automatului finit dorit, cele cinci motoare necesare pentru acționarea pompelor, un divizor de tensiune pentru a reduce numarul intrarilor necesare controlului automatului, doi senzori pentru asigurarea funcționalității corespunzătoare a aparatului, un ecran pentru afișarea stării automatului și ultimul dar nu cel din urmă modul de control al automatului placa ArduinoUno.
Fig 2.1 Schema bloc genearală în stare incipientă
Proiectul inițial nu includea divizorul de tensiune dorindu-se conectarea individuală a butoanelor datorite. Datorită problemelor legate de insuficiența porturilor pe placuță am recurs la abordarea metodei divizorului de tensiune acesta ocupand un singur port analogic.
2.2 Principiul de funcționare
Sistemul automat pentru dozarea lichidelor reprezintă doar o demonstrație a unui concept, conceptul de automatizare, viața noastră de zi cu zi se schimbă din ce în ce mai mult și sunt din ce în ce mai multe lucruri de făcut dar timpul rămâne același, așadar micile procese de automatizare ce pot fi făcute cu ajutorul acestor plăcuțe ne pot scuti de anumite activități, repetitive sau nu, ce ne ocupau o mare perioadă din timp.
Proiectul nostru pornește de la o idee relativ simplă realizarea unui cocktail, unui amestec de substanțe. Fiecare rețetă necesită o cantitate precisă din fiecare lichid, turnate într-o anumită ordine predeterminată. Automatul nostru are capacitatea de a doza la fel de precis de fiecare dată și exact în ordinea necesară, astfel automatizând procesul.
Dispozitivul nostru are capacitatea de a produce același amestec în două doze diferite, acest lucru fiind posibil datorită celor doi senzori amplasați pentru detectarea tipului de pahar folosit astfel încât amestecul va conține același procentaj dar cu volume diferite. Acești senzori sunt dispuși la înălțimi diferite pentru detectarea înălțimii paharelor pentru ca mai apoi să putem coda dispozitivul pentru recunoastere și acționare în concordanță.
Automatul nostru prin design-ul său este foarte ușor de folosit. Primul pas constă în pozitionarea paharului în locul desemnat, apoi alegerea tipului de amestec dorit, urmând doar asteptarea mesajului de ridicare a paharului.
Piesa centrală a automatului nostru constă intr-o platforma programabilă arduino ce prelucrează semnalele primite de la senzori si butoane acționând în concordanță. Aceasta având nevoie de un program liniar pentru executarea sau afișarea comenzilor, activând ieșirile prestabilite pentru dozare.
Lcd-ul în cazul nostru îl folosim pentru afisarea stării aparatului fie de functionare sau stagnare acesta putând afișa mesaje de alegere, ridicare sau procesare a mixului.
În dezvoltarea acestei idei am întâmpinat câteva probleme sau mai bine zis insuficiențe ale sistemului, prima fiind evident lipsa de porturi, astfel am fost nevoiți să creem un divizor de tensiune pentru a nu mai ocupa cinci porturi digitale(astfel folosim un singur port analogic) acestea fiind necesare pentru activarea pompelor.
A doua necesitate a venit atunci când am adăugat pompele, placa arduino nefiind proiectată pentru alimentarea unor consumatori atât de mari astfel încât am folosit placa doar pentru executarea comenzii, aceasta fiind preluată de un tranzistor tip Darlington. Totodată cu consumul mare, a trebuit sa intervenim cu o sursă separată pentru alimentarea motoarelor.
2.3Microcontrolerul utilizat
2.3.1 Generalități
Termenul de controler provine de la cuvântul de origine anglo-saxonă „controller” și reprezintă o structură electronică destinată controlului unui proces sau unei interacțiuni caracteristice cu mediul exterior, fără să fie necesară intervenția operatorului uman. Un microcontroler este un calculator pe un chip, cuvântul „micro” sugerând mărimea redusă a dispozitivului. Microcontrolerele pot fi găsite în componența oricărui tip de aparat care măsoară, stochează, comandă, calculează sau afișează informații.
Domeniul microcontrolerelor și-a avut începuturile în dezvoltarea tehnologiei circuitelor integrate. Această dezvoltare a făcut posibilă înmagazinarea a sute de mii de tranzistoare într-un singur cip. Aceasta a fost o prioritate pentru producția de microprocesoare, și primele computere au fost făcute prin adăugarea perifericelor ca memorie, linii de intrare-ieșire, timeri și altele.Următoarea creștere a volumului capsulei a dus la crearea circuitelor integrate. Aceste circuite integrate conțin atât procesorul, cât și perifericele. Un microcontroler este similar unui microprocesor. Ambele conțin o unitate centrală de prelucrare sau UCP (Central Processing Unit). UCP execută instrucțiuni care îndeplinesc operațiile de bază logice, matematice și de transport a informației.Pentru a construi un calculator complet, microprocesorul necesită memorie pentru păstrarea datelor și programelor, interfețe de intrare-ieșire (I/O) pentru conectarea dispozitivelor externe cum ar fi tastatura sau monitorul. Spre diferență de microprocesor, microcontrolerul este un calculator pe un chip deorece el conține și memorie și interfețe de intrare-ieșire pe lângă CPU.
Fig 2.2 Schema unui Microprocesor[6]
Părțile componente de la nivelul microcircuitului trebuie să includă următoarele componente:
a) o unitate centrală (CPU), cu un oscilator intern pentru ceasul de sistem
b) o memorie locală tip ROM/PROM/EPROM/FLASH și eventual una de tip RAM
c) un sistem de întreruperi
d) I/O – intrări/ieșiri numerice (de tip port paralel)
e) un port serial de tip asincron și/sau sincron, programabil
f) un sistem de timere-temporizatoare/numărătoare programabile.
g) un sistem de conversie analog numerică (una sau mai multe intrări analogice)
i) un comparator analogic
j) o memorie de date nevolatilă de tip EEPROM
k) facilități suplimentare pentru sistemul de temporizare/numărare (captare și comparare).
Unitatea centrală de procesare (CPU) este blocul din componența unui microcontroler capabil să acționeze asupra conținutului (datelor) uneia sau mai multor locații conținute în unitatea de memorie, specializat pe operații (de adunare, înmulțire, împărțire, extragere și reintroducere) de date, care poate să depoziteze datele atâta timp cât asupra acestora se efectuează operații. În urma efectuării acestor operații se va depune înapoi în unitatea de memorie (în locațiile de memorie), rezultatul operațiilor efectuate (un nou conținut de date).
Unitatea de memorie (UM) este acea parte a microcontrolerului care are funcția de a înmagazina informația sub formă de date și de a o face accesibilă atunci când se dorește acest lucru. Trebuie menționat faptul că adresarea nu se face la întâmplare, ea se efectuează în conformitate cu un cod de adresa care este unic, această înseamnă că fiecărei locații de memorie îi este alocat codul corespunzător de selecție.
Magistrala reprezintă un grup de 8, 16, sau mai multe fire. Principalele tipuri de bus-uri sunt: bus de adresa și bus de date. Primul constă din atâtea linii cât este cantitatea de memorie ce dorim să o adresăm, iar celălalt este atât de lat cât sunt datele, în cazul nostru 8 biți sau linia de conectare. Primul servește la transmiterea adreselor de la CPU la memorie, iar cel de al doilea la conectarea tuturor blocurilor din interiorul microcontrolerului. Capacitatea magistralei de date este primordială într-un sistem bazat pe utilizarea controlerelor industriale fiindcă ea determina fluxul de biți informaționali ce poate fi transferat de la sau către CPU într-o singură operație.
Locațiile intrare-ieșire I/O sunt numite „porturi”. Există diferite tipuri de porturi: intrare, ieșire sau porturi pe două căi. Când se lucrează cu porturi, mai întâi de toate este necesar să se aleagă cu ce port urmează să se lucreze, și apoi să se trimită date sau să se ia date de la port. Când se lucrează cu el, portul se comportă că o locație de memorie. Această unitate cumulează o serie de interfețe între controler (spre exemplu magistrala sistemului) și unul sau mai multe subsisteme externe ( spre exemplu CAN-uri externe, etc). Cheia acestor unități I/O este circuitul de interfațare.
Pentru că 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 circulă din memorie prin bus către locația de trimitere, și de acolo către unitatea de recepție conform protocolului.
Blocul timer este important deoarece el ne dă informația de timp, durata, protocolul etc. Ea este alcătuită din mai multe numărătoare, unul sau mai mulți registrii de comparare și unul sau mai mulți registrii de achiziție / comparare pentru a furniza, compara și înregistra diverse funcțiuni. Numărătorul primește impuls de ceas de la ieșirea unui ceas de sistem prescalat. Circuitele funcțiilor de comparare sunt alcătuite din registrii de scriere / citire a datelor și din logica de comparare a valorii curente a numărătorului cu valoarea stocată în registrul de comparare la fiecare perioada a sistemului ceas. Validarea unei egalității între cele două valori poate fi configurată să reseteze numărătorul la zero, să producă o întrerupere sau să furnizeze un impuls extern pentru tehnicile de comandă Puls Width Modulation (PWM).
Unitatea de ceas „watchdog” este de fapt un alt contor liber (free-run) unde programul nostru trebuie se scrie un zero ori de câte ori se execută corect. În caz că programul se „înțepenește”, nu se va mai scrie zero, iar contorul se va reseta singur la atingerea valorii sale maxime. Aceasta va duce la rularea programului din nou, și corect de această dată pe toată durata. Pentru că semnalele de la 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ă sau de un convertor AD. Acest bloc este responsabil pentru convertirea unei informații despre o anumită valoare analogică într-un număr binar și pentru a o urmări pe tot parcursul la un bloc CPU, astfel încât blocul CPU să o poată procesa. Acest modul este de fapt un convertor de aproximări succesive, uzual pe 8 biți, cu circuit integrat de Sample/Hold. Prezintă 8 canale de intrare analogice multiplexate. Deci procesorul poate converti secvențial nivelul de tensiune de la 8 surse distincte.
Utilizarea unui microcontroler, oricât de evoluat , nu elimină unele componente ale interfeței cu mediul exterior (atunci când ele sunt chiar necesare): subsisteme de prelucrare analogică, elemente pentru realizarea izolării galvanice, elemente de comutatie de putere (electromecanice sau statice).
Automatizarea procesului de fabricație – producție este un alt mare beneficiar: CNC (Computerised Numerical Controls) – comenzi numerice pentru mașinile unelte, automate programabile – PLC, linii flexibile de fabricație, etc. Indiferent de natura procesului automatizat, sarcinile specifice pot fi eventual distribuite la un mare număr de microcontrolere integrate într-un sistem unic prin intermediul uneia sau mai multor magistrale.
Printre multele domenii unde utilizarea lor este practic un standard industrial, se pot menționa următoarele: în industria de automobile (controlul aprinderii/motorului, climatizare, diagnoză, sisteme de alarmă, etc.), în electronica 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ă, etc. Practic, este foarte greu de găsit un domeniu de aplicații în care să nu se utilizeze microcontrolerele.
2.3.2 Platforma Arduino Uno
Arduino este o platformă de procesare open-source, bazată pe software și hardware flexibil și simplu de folosit. Constă într-o platformă de mici dimensiuni (6.8 cm / 5.3 cm – în cea mai des întalnită variantă) construită în jurul unui procesor de semnal și este capabilă să preia date din mediul înconjurător printr-o serie de senzori și să efectueze acțiuni asupra mediului prin intermediul luminilor, motoarelor, servomotoare și alte tipuri de dispozitive mecanice
Fig 2.3 Placa Arduino Uno
Specificațiile tehnice plăcuța Arduino Uno:
Tensiune de lucru: 5V
Tensiune de intrare(Recomandată): 7-12V
Tensiune de intrare (Limită): 6-20V
Microcontroler: ATmega328
Pini digitali: 14 (dintre care 6 PWM output)
Pini analogici: 6
Intensitate la ieșire: 40 mA
Intensitatea la ieșirea 3,3V: 50 mA
Memorie Flash: 32KB pentru ATmega328 si 0,5KB pentru bootloader
SRAM: 2 KB
EEPROM: 1 KB
Frecvență ceas: 16 MHz
Arduino Uno are o serie de facilități pentru a comunica cu un computer, un alt Arduino, sau alte microcontrolere. ATmega328 oferă comunicație serială (5V), care este disponibilă pe acele digitale 0 (RX) și 1 (TX). RX și TX LED-urile de pe bord vor clipi atunci când datele sunt transmise prin intermediul cip-ului serial și conexiunea USB la calculator (dar nu pentru comunicarea serială pe pinii 0 și 1). Fiecare dintre cei 14 pinii digitali pot fi utilizați că intrări sau ieșiri, folosind funcțiile pinMode (), digitalWrite () și digitalRead (). Ele funcționează la 5V. Fiecare pin poate oferii și primi un curent maxim de 40 mA și are un rezistor intern (deconectat implicit) de 20-50 kΩ.
Arduino Uno este un microcontroler bazat pe ATmega328. El are 14 pini digitali de intrare/ieșire (din care 6 pot fi utilizați că ieșiri PWM), 6 intrări analogice, un rezonator ceramic de 16 MHz, o conexiune USB, un jack de putere, un antet ICSP, și un buton de resetare. Acesta conține tot ce este necesar pentru a sprijini un microcontroler; se conectează la un calculator printr-un cablu USB sau se alimentează cu un adaptor AC-DC sau baterie pentru a putea începe.
2.3.3Micocontrolerul Atmel
Microcontrolerele AVR de 8 biți (Atmel) au la bază un nucleu RISC cu arhitectură Harvard. Aceste microcontrolere sunt destinate aplicațiilor simple: controlul motoarelor, controlul fluxului de informație pe portul USB, aplicații din domeniul automotive, controlul accesului de la distanță, etc. Pe baza acestui nucleu, firma Atmel a dezvoltat mai multe familii de microcontrolere, cu diferite structuri de memorie și de interfețe I/O, destinate diferitelor clase de aplicații. Specific arhitecturii Harvard, procesoarele folosesc spații de memorie și magistrale de acces separate pentru coduri și pentru date. Toate procesoarele au memorie de program de tip flash integrată. Memoria de program poate fi programată „în site” (fără scoaterea din sistem) ceea ce permite efectuarea rapidă de upgrade-uri în programe. Programarea se poate face în două moduri: serial și paralel. Procesoarele au memorie de date integrată de tip RAM pentru variabile și memorie de tip EEPROM pentru stocarea constantelor.
Numărul mare de registre interne (32 de registre de 8 biți), specific procesoarelor RISC, permite stocarea variabilelor în interiorul procesorului, reducînd astfel timpul de acces. În acest fel crește viteza de execuție a programelor. Prezența unor blocuri interne ca: porturi, timere, unități de comunicație USART, TWI și SPI, module PWM (Pulse Width Modulation), convertoare A/D, comparator analogic, rezistoare pull-up, oscilator intern, etc., permite utilizarea acestor microcontrolere într-o gamă largă de aplicații. O altă calitate remarcabilă a acestor microcontrolere este consumul redus de energie. Domeniul tensiunilor de alimentare este cuprins între 1,8V și 5V. Procesoarele folosesc 6 moduri diferite de funcționare cu consum redus, ceea ce asigură reducerea consumului când microcontrolerul nu este activ.
Fig 2.4 Diagrama block a microprocesorului Atmega[7]
Nucleul AVR combină un set bogat de instrucțiuni cu un alt set de 32 de regiștrii generali. Toți cei 32 de regiștrii sunt conectați direct la unitatea ALU(Arithmetic Logic Unit), permițând accesul simultan la doi regiștri într-o singură instrucțiune executată intr-un singur semnal de tact. Arhitectura rezultată este mult mai eficientă în a executa codurile și obtine timpi de transfer intern a datelor de până la 10 ori mai mari ca micocontrolerele clasice CISC.
2.5 Schema bloc a CPU-ului AVR[7]
Microcontrolerul Atmel AVR de 8 biți, ATmega328, combină o serie de caracteristici de înaltă performanță: 32KB de memorie flash, cu capacități de citire-scriere, 1KB EEPROM, 2KB SRAM, 23 linii de I / O de un general, 32 de registre de lucru de uz general, trei timer flexibile / contoare cu moduri de comparare, întreruperi interne și externe, serial USART programabil, o interfață serială de biți orientată pe 2 fire, port serial SPI, 6-canale convertor Analog / Digital de 10 biți, watchdog timer programabil cu oscilator intern și cinci programe cu moduri selectabile de economisire a energiei.
Fig 2.6 Dispunerea pinilor pe Atmega328P-UP[8]
2.4 Modul de control al automatului
Automatul nostru prezintă cinci butoane pentru control, acestea fiind intenționate a fi puse fiecare pe intrarea unui port digital, astfel încât să fie posibilă citirea stării acestuia, închis sau deschis (1 sau 0). Datorită pinilor limitați pe placă a trebuit să modificăm proiectul astfel încât să acomodăm toate cele cinci butoane pe o singură intrare. Intrarea digitală a placii putând accepta doar două stări putem comanda cel mult două butoane, astfel vom folosi o intrare analogică pentru a efectua o citire analogică.
Pentru realizarea intrării analogice vom folosi un divizor de tensiune, astfel încât la apăsarea unui buton vom citi o valoare diferită pentru fiecare. Astfel se poate identifica foarte ușor ce buton a fost apăsat.
Fig 2.7 Modul de conectare a divizorului la placa Arduino[9]
În cele ce urmează vom elabora un mic program pentru inițializarea și citirea portului analogic A0:
void setup(){
//activam rezistenta de pull up a portului analogic
digitalWrite(A0,high);
//inițializăm portul serial la 9600 biți pe secundă
Serial.begin(9600);
}
void loop(){
//citim valoarea portului analogic
int analogic = analogRead(A0);
//așteptam 200 milisecunde
delay(200);
//condiția de a fi apasat butonul pentru a printa rezultatul
if (!(analogic>=1010&&analogic<=1023)){
//printăm rezultatul
Serial.println(analogic);}
}
Programul are o functie simplă, așteaptă apăsarea butonului dupa care afisează valoarea înregistrată acestă metodă poate fi folosită pentru stabilirea rezistențelor și a intervalului în care lucrează. Valorile rezultate deși foarte asemănătoare aproape identice există totuși o diferența de care trebuie să ținem cont în programare folosind o marjă de eroare de aproximativ 10% folosind un interval pentru activarea fiecărui buton.
2.5 Afișorul LCD
Afișajul cu cristale lichide (Liquid Crystal Display, prescurtat LCD) este un dispozitiv de afișare pentru litere, cifre, grafică și imagini, fiind constituit dintr-o matrice de celule lichide care devin opace sau își schimbă culoarea sub influența unui curent sau câmp electric. Din punct de vedere fizic, fenomenul se explică prin proprietatea cristalelor lichide de a influența direcția de polarizare a luminii atunci când ele sunt puse sub o anumită tensiune electrică. Afișajele cu cristale nu produc ele însele lumină, și au un consum de energie foarte mic. Un afișaj LCD se prezintă sub formă unui ecran afișor (display) care este comandat electronic printr-un decodificator de caractere numerice și alfabetice. Este folosit frecvent în construcția ceasurilor digitale (ceasuri care au în locul acelor arătătoare un afișor de tip LCD), la afișările de date la mașini CNC, mașini de uz casnic, inscripții și semnalizări electronice.
Cristalele lichide sunt, în cazul de față, combinații chimice de natură organică aflate în stare lichidă. Ele au proprietatea de a putea fi comandate de o corespunzătoare tensiune electrică, astfel încât își ordonează moleculele trecând de la stare transparentă, la stare netransparentă. Concret, este vorba de o polarizare electrică a unor molecule lichide, care în contrast cu restul câmpului, formează o imagine vizibilă.
Un tip de memorie a afișajelor LCD este memoria DDRAM, care se folosește pentru stocarea caracterelor afișate pe ecran și poate memora 80 caractere, din care o parte sunt cele afișate direct ecran. Funcționarea acestora se bazează pe următorul principiu: este suficientă configurarea ecranului să incrementeze adresa automat (shift right) și configurarea adresei de start pentru mesajul care se afișează (ex. 0x00 hexa). Apoi, toate caracterele trimise pe liniile D0-D7 vor fi afișate de la stânga la dreapta. În acest caz, afișarea începe de la primul caracter din rând deoarece, adresa inițială este 0x00. Dacă se trimit mai mult de 16 caractere, toate vor fi memorate, dar numai primele 16 vor fi vizibile. Pentru a afișa și restul, se va folosi comandă SHIFT, care mută fereastra vizibilă spre celelalte zone din memorie, caracter cu caracter. Memoria DDRAM poate fi și scrisă, dar și citită. Conținutul memoriei se pierde la deconectarea de la alimentare.
În cazul nostru vom folosi un shield fabricat pentru arduino reducând numărul de conexiuni necesare.
Fig 2.8 Shield-ul LCD pentru arduino
Specificați generale ale produsului:
Dimensiunile modulului: 80.0 x 36.0 x 13.5 mm3
Aria de vizualizare: 66.0 x 16.0 mm2
Aria activă: 56.20 x 11.5 mm2
Numărul de caractere: 16 caractere x 2 linii
Tangajul punctului: 0.60 x 0.70 mm2
Mărimea caracterelor: 2.95 x 5.55 mm2
Tangajul caracterelor: 3.55 x 5.95 mm2
Tipul LCD-ului: STN Negative, Blue Transmissive
Tipul luminii de fundal: LED
Funcția pinilor interfeței:
VSS – GND 0V
VDD – Tensiune de alimentare 5V
V0 – Tensiunea de alimentare pentru LCD
RS – Cod de instrucțiuni
R / W – Citeste modulul MPU / Scrie modulul MPU
E – Permite semnalului să acționezeâ
DB0 – bit 0
DB1 – bit 1
DB2 – bit 2
DB3 – bit 3
DB4 – bit 4
DB5 – bit 5
DB6 – bit 6
DB7 – bit 7
A – Alimentarea pentru LED(+) / tensiune de ieșire negativă
K – Alimentarea pentru lumina de fundal cu LED-uri (GND) [10]
Afișajele LCD pot afișa orice caracter sau simbol grafic și au consumul energetic foarte mic, acest lucru recomandându-le pentru aplicații portabile. Timpul necesar reorganizării cristalelor lichide pentru afișare este destul de mare, iar contrastul și vizibilitatea sunt mai reduse decât la celalalte tipuri de afișaje. După culoarea imaginii observată de ochiul subiectului, sunt afișoare normale (matrice de puncte întunecate pe fond luminos) sau inverse (matrice de puncte luminoase pe fond întunecat, numai la module reflective).
Pentru scrierea unor caractere pe LCD trebuie să avem E=1, R/W=0, RS=1. Funcțiile necesare pentru scrierea și controlul caracterelor pe LCD sunt:
unsigned charlcd_init(unsigned charlcd_columns) – realizează inițierea LCD – ului, lcd_columns reprezentând numărul de coloane ale LCD-ului, în cazul nostru 16.
void_lcd_ready(void) – așteaptă până LCD-ul este gata să primească date; avem nevoie de această funcție deoarece LCD-ul are nevoie de un timp de inițializare după ce a fost pus în funcțiune.
voidlcd_clear(void) – șterge tot ce este scris pe LCD și duce cursorul la linia 0 si coloana 0.
voidlcd_gotoxy(unsigned char x,unsigned car y) – setează cursorul la poziția x, y, x reprezentând coloana si y linia.
voidlcd_putchar(char c) – afișează un caracter la poziția x, y curentă. Dacă avem mai multe comenzi de acest gen înseamnă că va scrie caracterul unu peste altul.
voidlcd_puts(char*str) – afișează un sir de caractere începând cu poziția x, y curentă.
În cazul nostru, cei de la arduino au librăriile cu comenzi încorporate în program noi trebuind doar să le accesăm și să stabilim ce pini sunt folosiți în configurație. Avem ca exemplu următorul cod:
//includem în cod librariile necesare pentu accesarea LCD-ului
#include <LiquidCrystal.h>
//inițializăm librărianecesară controlului ecranului incluzând pinii folosiți
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup(){
//setăm numarul de coloane și rânduri ale LCD-ului
lcd.begin(16, 2);
//afișăm mesajul pe ecran
lcd.print("hello, world!");
}
void loop(){
//Închidem LCD-ul
lcd.noDisplay();
//Întârziere între comenzi de 500 ms
delay(500);
//Pornim LCD-ul
lcd.display();
delay(500);
}
2.6 Circuitul de control al motoarelor
2.6.1 Tranzistoare
Tranzistorul a fost inventat la Bell Telephone Laboratories din New Jersey la 6 decembrie 1947 de John Bardeen, Walter Houser Brattain, și William Bradford Shockley. Descoperirea tranzistorului a determinat dezvoltarea electronicii fiind considerat una din cele mai mari descoperiri ale erei moderne.
Tranzistorul este un dispozitiv electronic din categoria semiconductoarelor care are cel puțin trei terminale (borne sau electrozi), care fac legătura la regiuni diferite ale cristalului semiconductor. Este folosit mai ales pentru a amplifica și a comuta semnale electronice și putere electrică. Aspectul tranzistoarelor depinde de natura aplicației pentru care sunt destinate. În 2013 încă unele tranzistoare sunt ambalate individual, dar mai multe sunt găsite încorporate în circuite integrate.
Tranzistorul este componenta fundamentală a dispozitivelor electronice moderne, și este omniprezent în sistemele electronice. Ca urmare a dezvoltării sale la începutul anilor 1950, tranzistorul a revoluționat domeniul electronicii, și a deschis calea pentru echipamente electronice mai mici si mai ieftine cum ar fi aparate de radio, televizoare, telefoane mobile, calculatoare de buzunar, computere și altele.
Tranzistorii se realizează pe un substrat semiconductor (în general siliciu, mai rar germaniu, dar nu numai). Tehnologia de realizare diferă în funcție de tipul tranzistorului dorit. De exemplu, un tranzistor de tip PNP se realizează pe un substrat de tip P, în care se creează prin diferite metode (difuzie, de exemplu) o zona de tip N, care va constitui baza tranzistorului.
Un tranzistor este alcătuit dintr-un monocristal de germaniu sau siliciu în care se creează prin impurificare trei regiuni despărțite prin două suprafețe. Regiunile de la extremități au același tip de conductibilitate p sau n, acestea numindu-se Emitor și Colector. Regiunea centrală are conductibilitate opusă față de cele de la extremități și se numește Bază. Pe suprafețele fiecărui regiuni se depune câte un strat metalic de contact pe care se sudează firele de conexiune. Acest tranzistor are două joncțiuni joncțiunea emitorului (între bază și colector) și joncțiunea colectorului (între bază și emitor).
Fig 2.9 Structura tranzistoarelor PNP și NPN[11]
Ansamblul format din cele trei joncțiuni reprezintă două diode semiconductoare conectate în opoziție și cu o regiune comună. Pentru a evita comportamentul de diodă trebuie ca între straturi să se realizeze un cuplaj, acest cuplaj are rolul de a transfera purtătorii de sarcină de la o regiune la alta. Transferul se realizează numai dacă baza este suficient de subțire. Transferul numindu-se efect de tranzistor.
2.6.2 Tranzistorul Darlington
Tranzistoarele bipolare, ca urmare a factorului de amplificare în curent mic, necesită curenți apreciabili pentru comandă. O soluție des practicată în prezent este montajul de tip Darlington, constituit din două tranzistoare T1 și T2. Principalul avantaj constă în creșterea factorului de amplificare în curent după relația β = β1 + β2 + β1*β2 unde β1 și β2 sunt factorii de amplificare în curent pentru cele două tranzistoare.
Considerând β1 = β2 = 10, rezultă un β = 120, care în fapt înseamnă micșorarea de 12 ori a curentului de bază necesar, față de cazul utilizării unui singur tranzistor de capacitate similară cu T2. Montajul introduce și unele neplăceri, mai ales la ieșirea din conducție. Tranzistorul T1 lucrează de obicei saturat iar T2 în cvasisaturație. La ieșirea din conducție, curentul de bază aferent tranzistorului T1 poate inversa sensul de conducție, extragerea sarcinilor stocate din baza acestuia având loc ca la un tranzistor obișnuit.
Tranzistorul T2 începe să se blocheze abia după ieșirea din conducție a lui T1, iar curentul lui de bază nu poate inversa sensul, ceea ce face ca timpul lui de stocare să fie mult mai mare. Rămânând în conducție numai T2, acesta va prelua întregul curent de sarcină, supraîncărcându-se.
Evitarea acestui inconvenient se atinge prin introducerea unei diodei de de stocare DDS care, după evacuarea sarcinii stocate din T1, permite o situație similară și pentru tranzistorul T2 permițând un curent negativ de bază pe T1. În prezent se realizează așa numitele Darlington monolitice care au înglobate în aceeași capsulă toate elementele unei corecte funcționări. În capsulă sunt incluse rezistoarele R de echilibrare și diodele de stocare DDS, capsula având numai cei trei electrozi consacrați, C,B,E.
În prezent tranzistoarele de mare putere sunt realizate numai în montaje de tip Darlington monolitic. Per ansamblu un montaj de acest fel este luat în considerație ca un tranzistor simplu, comportarea lui fiind în fapt cea a unui tranzistor bipolar obișnuit, mai puțin curentul de bază, care este sensibil mai mic.
2.6.3 Unitatea de control Darlington NPN
Fig 2.10 Tranzistorul Darlington PNP tip 122[12]
Tranzistorul tip122 brick prezintă o soluție elegantă când vine vorba de control, acesta putând foarte ușor comanda o sarcină de putere mare putând suporta până la 100v, 5A. Deosebirea mare între acest model și un driver motor este aceea că nu putem schimba direcția motorului acesta rotindu-se într-un singur sens.
Cu toate acestea viteza de rotație a motorului poate fi controlată. Pentru control este totuși necesară o ieșire PWM(Pulse Width Modulation) și de un cod sursă.
Plăcuța prezintă 6 conexiuni acestea fiind:
Cei doi pini ce duc la motor – cuplare sarcină unde modul de conectare determină direcția de rotație
Pinul Vin – reprezentat de borna ”+„ a sursei de alimentare
Pinul GND – reprezentat de borna ”-„ a sursei de alimentare
Pinul GND – conectat la GND-ul plăcuței arduino
Pinul In – unul dintre pinii PWM ai placuței arduino
Pe partea de programare acesta poate fi controlat cu:
void setup(){
pinMode(6,OUTPUT);
}
void loop(){
variatieViteza();
delay(500);
on();
delay(500);
off();
delay(500);
}
void variazaViteza(){
for (int i=125; i<255; i++){
analogWrite(6, i);
}
}
void off(){
digitalWrite(6, LOW);
}
void on(){
digitalWrite(6, HIGH);
}
2.7 Sursa de alimentare
O sursa de alimentare în comutație sau un comutator (en. switching-mode power supply, SMPS sau switcher) este o sursă electronică de alimentare care include un regulator de comutare pentru a converti energia electrică în mod eficient. Ca și alte surse de alimentare, un SMPS transferă curent de la o sursă, cum ar fi rețeaua de alimentare, la o sarcină, cum ar fi un calculator personal, în timp ce convertește caracteristicile tensiunii și ale curentului.
Spre deosebire de o sursă de alimentare liniară, sursa în comutație are un tranzistor de trecere care comută în mod continuu între starile disipare-redusă, saturat (en. full-on) și blocat (en. full-off) și se află foarte puțin timp în tranzițiile de disipare crescută, minimizând astfel energia irosită. În mod ideal, o sursă de alimentare în comutație nu disipă nicio putere. Reglarea tensiunii se realizează prin varierea raportului de timp între saturatie și blocare. Prin contrast, o sursă de alimentare liniară reglează tensiunea de ieșire disipând continuu curent în tranzistorul de trecere.
Această eficiență mai mare de conversie a curentului este un avantaj important al unei surse de alimentare în comutație. Sursele de alimentare în comutație pot fi, de asemenea, semnificativ mai mici și mai ușoare decât o sursă de alimentare liniară, datorită dimensiunii și greutății mai mici a transformatorului.
Regulatoarele de comutare sunt utilizate ca înlocuitori pentru regulatoarele liniare, atunci când este necesară o mai mare eficiență, dimensiune sau greutate mai mică. Ele sunt, totuși, mult mai complicate; curentul poate cauza probleme de zgomot electric în timpul comutării, dacă acesta nu este suprimat cu atenție, iar modele simple pot avea un factor de putere slabă. Prezentare Un regulator liniar furnizează tensiunea de ieșire dorită prin disiparea excesului de putere în pierderi ohmice (de exemplu, într-un rezistor sau în regiunea colector-emițător a unui tranzistor de trecere aflat în modul activ). Un regulator liniar reglează fie tensiunea de ieșire, fie curentul disipând energia electrică în exces sub formă de căldură și deci eficiența sa la putere maximă este „tensiune de ieșire/tensiune de intrare” din moment ce diferența de tensiune este irosită.
Fig 2.11 Sursă de alimentare în comutație 12v, 4.17A
Prin contrast, o sursă de alimentare în comutație reglează fie tensiunea de ieșire, fie curentul comutând elemente ideale de stocare, precum inductoarele și condensatorii, în și din diferite configurații electrice. Elementele ideal de comutare (de exemplu, tranzistorii care operează în afara modului lor activ) nu au nicio rezistență atunci când sunt "închise" și nu transporta niciun curent, atunci când sunt "deschise" și astfel convertoarele pot funcționa, teoretic, cu o eficiență de 100% (de exemplu, tot curentul de intrare este livrat sarcinii; niciun curent nu este irosit sub formă de căldură disipată). Spre exemplu, dacă o sursă de curent continuu, un inductor, un comutator și corespunzătoarea împamantare electrică sunt plasate în serie, iar comutatorul este acționat de un semnal dreptunghiular, tensiunea vârf-la-vârf a undei măsurată peste comutator poate depăși tensiune de intrare de la sursa de curent continuu.
Acest lucru se datorează faptului că inductorul răspunde evoluțiilor curentului inducându-și propria tensiune pentru a contracara variația curentului, iar această tensiune se adaugă la tensiunea de alimentare cat timp întrerupătorul este deschis. Dacă o combinație diodă-condensator este plasată în paralel cu comutatorul, tensiunea de vârf poate fi stocată în condensator, iar acesta poate fi folosit ca o sursă de curent continuu cu o tensiune de ieșire mai mare decât a tensiunii din circuitul de curent continuu. Acest convertor accelerator acționează ca un transformator de amplificare pentru semnale de curent continuu.
2.8 Metode de comunicare cu placuța arduino
Acest proiect, bazat pe platforma programabilă Arduino Uno, constă din mai multe module conectate între ele. Modulele pot fi catalogate în funcție de diverse criterii, iar conectarea acestora la platforma de dezvoltare se poate face în mai multe feluri. Platforma de dezvoltare este placă electronică ce conține microcontroller-ul programabil.
Dat fiind că platforma Arduino este open source, sunt disponibile atât platforme Arduino originale, cât și clone compatibile, mai ieftine. Totuși limbajul de programare, mediul de dezvoltare și interconectarea diverselor module sunt practic identice, indiferent de modelul specific al platformei.
Module de intrare, numite și senzori, sunt module care se conectează la platforma Arduino pentru a trimite date către aceasta (în cazul nostru butoane, senzori de temperatura). Module de ieșire sunt module care se conectează la platforma Arduino pentru a permite acesteia să transmită informații către lumea exterioară. Acestea pot fi relee, afișaje, difuzoare, etc.
Modulele de date permit platformei Arduino să comunice direct cu alte dispozitive digitale (inclusiv cu alte module Arduino). Modulele de date pot fi module Ethernet, care permit comunicația prin Internet sau printr-o rețea locală, module radio, care pot comunica cu computere sau alte platforme Arduino, module USB, module GSM, etc. În cazul nostru, comunicarea se face prin module de tip USB.
Conectorul USB este necesar pentru programarea inițială a microcontrollerului. Prin intermediul acestuia, platforma se conectează la un computer pe care se scrie, se compilează și se încarcă programul utilizat. Tot prin acest port, platforma Arduino se alimentează, atâta vreme cât consumul de curent este rezonabil.
Accesoriile nu sunt în general considerate module Arduino, însă sunt o parte uzuală a proiectelor de acest gen.
Există tot felul de accesorii, de la soluții de alimentare cu curent electric până la cele mai diverse accesorii. Conectorii de pe platformele de dezvoltare Arduino sunt conectori de tip „mama”. Acești conectori sunt luați drept pini și au următoarele funcții:
GND – ground, masă, polul negativ al circuitului, cu o tensiune de 0V;
2 intrări 5V – pini ce reprezintă o tensiune de 5V față de GND, indiferent de tensiunea de alimentare;
în funcție de modelul platformei de dezvoltare, tensiunea de lucru poate fi 5V sau 3,3V;
VCC – tensiunea de intrare. Platforma arduino se alimentează fie prin conectorul USB, fie prin mmufa de alimentare, acest pin prezentând tensiunea de alimentare neschimbată, indiferent de voltaj 3.3V, 5V, 9V, 12V.
Digital 0, Digital 1, …….. , Digital N – reprezintă pini digitali de intrare ieșire. Pinul X va fi folosit pentru intrare sau ieșire, în funcție de necesități. Pinii digitali au doar două stări: 1 sau 0 logic, HIGH sau LOW, respectiv 5V sau 0V(tensiunea de iesire). Numărul de pin i disponibili depinde de modelul specific al platformei de dezvoltare, placuța noastra având 14 pini.
Analog 0, Analog 1, ……. , Analog N – reprezintă pinii analogici de intrare sau ieșire. Aceștia pot citi valori între 0 și 1023, corespunzătoare în mod proporțional tensiunii de intrare între 0V și 5V. Din nou numărul de pini diferă de la placă la placă, al nostru având 6 pini.
CAP 3 IMPLEMENTAREA SOFTWARE
3.1 Limbajul de programare
Pentru a programa microcontroller-ul am conectat placa Arduino la un computer pe care am instalat mediul de dezvoltare și driverele necesare. Mediul de dezvoltare este disponibil în mod gratuit pe site-ul producătorului pentru diverse sisteme de operare.
Toate platformele de dezvoltare Arduino pot fi programate cu ajutorul Arduino IDE. Programul are câteva biblioteci incluse, necesare scrierii unor programe de bază. În cazul în care se dorește introducerea unor noi biblioteci, ele trebuie copiate în directorul libraries de unde unde s-a extras/instalat programul(ex: c:\Arduino\libraries\ ).
Biblioteci standard incluse:
EEPROM – citirea și scrierea unor date stocate permanent.
Ehernet – pentru conectarea la internet folosind shieldul arduino ehernet.
Firmata – pentru comunicarea cu aplicații de pe PC folosind un protocol serial standard.
GSM – pentru conectarea la o rețea GSM/GRPS folosind un shield GSM.
LiquidCrystal – pentru controlarea afișajelor cu cristale lichide LCD-uri.
SD – pentru scrierea sau citirea cardurilor SD
Servo – pentru controlarea servomotoarelor.
Stepper – pentru controlarea motoarelor pas cu pas.
SPI – pentru comunicarea cu dispozitive folosind Serial Pheripheral Interface(SPI)
SoftwareSerial – pentru comunicarea serială pe orice pini digitali.
WiFi – Pentru conectarea la rețelele de internet WiFi folosind un shield arduino Wifi
Wire – interfață cu două fire(Two Wire Interface TWI/I2C) pentru comunicarea datelor într-o rețea de dispozitive sau senzori.
De asemenea, este posibilă și crearea unor biblioteci personalizate, care trebuie apoi implementate în directorul „libraries” din directorul Arduino.
Limbajul de programare Arduino IDE este asemănător celui de C++, cu unele restricții și unele funcții special construite. În loc de o funcție principală, se folosește funcția void setup (), unde se definesc librăriile pentru diferiți senzori, constantele, variabilele și tot felul de obiecte ce vor fi folosite pe parcursul programului. Se folosește funcția setup () la fiecare început de comandă, iar funcția loop() se repetă pe parcursul liniilor de cod
3.2 Logica de control, programul
Pentru acest proiect trebuie implementat un program capabil să afișeze un mesaj de start activând shieldul LCD, să poată alege între două tipuri diferite de pahar, după care să dozeze băutura aleasă cu ajutorul unuia intre cele butoane. În final acesta trebuie să afișeze un mesaj pentru ridicarea paharului apoi să aștepte ridicarea pentu a lua programul de la capăt.
În acest sens am creat organigrama necesară scrierii programului:
Fig 3.1 Organigrama Programului
Pe baza acestei organigrame vom începe crearea codului necesar pentru controlarea automatului nostru.
Pentru realizarea dozajelor am avut nevoie de o serie de experimente.
Tabel 3.1 Tabelul necesar procesării băuturilor
Tabel 3.2 Tabelul rezultatelor experimentale
//Ințializăm librăriile necesare și denumim porturile pentru o folosire intuitivă
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
int M1 = 8;
int M2 = 9;
int M3 = 10;
int M4 = 11;
int M5 = 12;
int S1 = 15;
int S2 = 16;
int T1 = 1;
int T2 = 2;
int T = 0;
//Definim starea fiecărui pin, de primire sau trimitere a informațiilor
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
digitalWrite(A0, HIGH);
pinMode(15, INPUT);
pinMode(16, INPUT);
}
//Programul principal incastrat într-o buclă continuuă
void loop() {
lcd.setCursor(0, 0);
lcd.print("Alege-ti");
lcd.setCursor(0, 1);
lcd.print("Bautura");
if (S1 == HIGH){//s1
if (S2 == HIGH){//s2
T = T2;
int analogic = analogRead(A0);
delay(200);
if (!(analogic>=1010&&analogic<=1023)){
if (analogic>=185&&analogic<=200){
instructiuni1();
}
if (analogic>=150&&analogic<=170){
instructiuni2();
}
if (analogic>=100&&analogic<=149){
instructiuni3();
}
if (analogic>=69&&analogic<=101){
instructiuni4();
}
if (analogic>=0&&analogic<=25){
instructiuni5();
}
sfarsit;
} // if
}//s2
else
{
T = T1;
int analogic = analogRead(A0);
delay(200);
if (!(analogic>=1010&&analogic<=1023))
{
if (analogic>=185&&analogic<=200){
instructiuni1();
}
if (analogic>=150&&analogic<=170){
instructiuni2();
}
if (analogic>=100&&analogic<=149){
instructiuni3();
}
if (analogic>=69&&analogic<=101){
instructiuni4();
}
if (analogic>=0&&analogic<=25){
instructiuni5();
}
sfarsit();
}
}//s2
}//s1
}
//Subprogramele apelate în funcția principală
void instructiuni1(){
M1 = HIGH;
delay(2300*T);
M1 = LOW;
delay(2000);
M2 = HIGH;
delay(2300*T);
M2 = LOW;
delay(2000);
M3 = HIGH;
delay(2300*T);
M3 = LOW;
delay(2000);
M4 = HIGH;
delay(2300*T);
M4 = LOW;
delay(2000);
M5 = HIGH;
delay(2300*T);
M5 = LOW;
delay(2000);
}
void instructiuni2(){
M1 = HIGH;
delay(3400*T);
M1 = LOW;
M3 = HIGH;
delay(6500*T);
M3 = LOW;
delay(2000);
M5 = HIGH;
delay(2300*T);
M5 = LOW;
delay(2000);
}
void instructiuni3(){
M1 = HIGH;
delay(2300*T);
M1 = LOW;
M2 = HIGH;
delay(3400*T);
M2 = LOW;
delay(2000);
M3 = HIGH;
delay(5000*T);
M3 = LOW;
delay(2000);
M4 = HIGH;
delay(600*T);
M4 = LOW;
delay(2000);
M5 = HIGH;
delay(600*T);
M5 = LOW;
delay(2000);
}
void instructiuni4(){
M1 = HIGH;
delay(7400*T);
M1 = LOW;
M2 = HIGH;
delay(2300*T);
M2 = LOW;
delay(2000);
M5 = HIGH;
delay(2300*T);
M5 = LOW;
delay(2000);
}
void instructiuni5(){
M2 = HIGH;
delay(2300*T);
M2 = LOW;
delay(2000);
M3 = HIGH;
delay(7400*T);
M3 = LOW;
delay(2000);
M4 = HIGH;
delay(2300*T);
M4 = LOW;
delay(2000);
}
void sfarsit(){
while (S1 == HIGH){
lcd.setCursor(0, 0);
lcd.print("Ridicati");
lcd.setCursor(0, 1);
lcd.print("Bautura");
}
}
Concluzii
Implementarea unui sistem automat pentru dozarea băuturilor a fost un succes, acesta prezentând rezultate majore obținute cu costuri minore. În decursul acestei lucrări am demosntrat ușurința implemetării unui automat cu ajutorul placuțelor Arduino.
Modulele arduino prezintă ușurință în programare datorită softul-ui specializat ce se poate descărca gratuit, acesta putând programa orice microprocesor din seria Atmega. Limbajul de programare de asemenea este unul intuitiv conținând majoritatea funcțiilor de bază din programare (funcții ”if”, ”for”, etc), făcândul un program ușor de utilizat, compilarea având loc în momentul trasferării programului pe placuță.
Plăcuțele arduino prezintă doar un început în vasta lume a automatizărilor acesta fiind un prim pas într-o lume plină de electronică și informatică. Plecând de la logica de programare a acestora putem aplica aceeași metodă și într-o linie de automatizare robotizată. Singura diferență fiind numărul net superior de intrări și ieșiri de care trebuie să ținem cont. Totodată mai trebuie ținut cont și de declararea variabilelor în cazul nostru fiind puține pot fi inițializate pe rând, pe când 100 sau 200 de porturi pot fi inițializate cu ajutorul unei linii de cod, iar pentru comunicarea între aparate se folosesc variabile definite global, acestea având propriile variabile declarate local.
În cazul nostru fiind limitați atunci când vine vorba de porturi, a trebuit făcut un divizor de tensiune pentru a putea reduce numărul de intrări necesare în circuit. Astfel în loc de 5 porturi digitale folosite ca și intrări am folosit un singur port analogic pentru toate cele 5 butoane.
Pe parte de alimentare am dorit folosirea directă, prin conectarea acestuia la placuța arduino însă consumul în regim normal al pompelor este de 1.87A fiind prea mare pentru a putea trece prin plăcuță, iar în regim de blocare consumul poate crește până la 8A. Ca și soluție am conectat separat plăcuța și motorașele controlându-le cu ajutorul unui tranzistor de tip darlington.
Ca și concluzie am folosit plăcuța arduino pentru a îmbina utilul cu plăcutul astfel avem un circuit ce se ocupă cu dozarea exactă a băuturilor, iar pe parcurs am avut ocazia să folosesc cunoștințele dobândite în cei patru ani de facultate prin implementarea acestuia și totodată rezolvarea problemelor apărute.
Bibliografie
[1] – http://www.pangaro.com/Heinz-von-Foerster/HvF-pics/McM-XX-chalk-1.gif (accesat august)
[2] – http://web.csulb.edu/~cwallis/artificialn/walter_pitts.html (accesat august)
[3] – http://cs.stanford.edu/people/eroberts/courses/soco/projects/2004-05/automata-theory/basics.html#top (accesat mai)
[4] – Finite state machine – FSM (automate finite) (sursa internet)
[5] – INTRODUCERE IN TEORIA SISTEMELOR AUTOMATE (sursa internet)
[6] – https://microcontrolere.files.wordpress.com/2014/02/structura_interna.jpg (accesat august)
[7] – https://www.arduino.cc/en/Main/arduinoBoardUno (accesat august)
[8] – http://d1gsvnjtkwr6dd.cloudfront.net/large/IC-ATMEGA328-PU_02_LRG.jpg (accesat august)
[9] – http://www.roroid.ro/wp-content/uploads/2014/01/5butoane.png (accesat august)
[10] – http://www.robofun.ro/shield-lcd-16×2?search=lcd (accesat august)
[11] – http://www.hobbytronica.ro/wp-content/uploads/2013/11/Structura-%C5%9Fi-simbolizarea-unui-tranzistor-bipolar.jpg (accesat august)
[12] – http://www.robofun.ro/tranzistor-tip122-brick?search=tip122 (accesat august)
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Sistem Automat Pentru Dozarea Lichidelor (ID: 163480)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
