șef lucrări dr. ing. Popescu Ion -Marian Iulie 2017 CRAIOVA ii UNIVERSITATEA DIN CRAIOVA FACULTATEA DE AUTOMATICĂ, CALCULATOARE ȘI ELECTRONICĂ… [612511]
UNIVERSITATEA DIN CRAIOVA
FACULTATEA DE AUTOMATICĂ, CALCULATOARE ȘI
ELECTRONICĂ
DEPARTAMENTUL DE AUTOMATICĂ ȘI ELECTRONICĂ
PROIECT DE DIPLOMĂ
Bădoiu Gabriel -Marius
COORDONATOR ȘTIINȚIFIC
șef lucrări dr. ing. Popescu Ion -Marian
Iulie 2017
CRAIOVA
ii
UNIVERSITATEA DIN CRAIOVA
FACULTATEA DE AUTOMATICĂ, CALCULATOARE ȘI
ELECTRONICĂ
DEPARTAMENTUL DE AUTOMATICĂ ȘI ELECTRONICĂ
PROIECTAREA UNUI SISTEM DE CONTROL AUTOMAT AL UNUI
MINI -VEHICUL
Bădoiu Gabriel -Marius
COORDONATOR ȘTIINȚIFIC
șef lucrări dr. ing. Popescu Ion -Marian
Iulie 2017
CRAIOVA
iii
„Învățătura este o comoară care își urmează stăpânul pretutindeni .”
Proverb popular
iv
DECLARAȚIE DE ORIGINALITATE
Subsemnatul BĂDOIU GABRIEL -MARIUS , student: [anonimizat], Calculatoare și Electronică a
Universit ății din Craiova, certific prin prezenta că am luat la cunoșt ință de cele prezentate mai jos și
că îmi asum, în acest context, originalita tea proiectului meu de licență :
cu titlul PROIECTAREA UNUI SISTEM DE CONTROL AUTOMAT AL UNUI
MINI -VEHICUL ,
coordonată de ȘEF LUCRĂRI DR. ING. POPESCU ION -MARIAN ,
prezentată în sesiunea IULIE 2017 .
La elaborarea proiectului de licență, se consider ă plagiat una dintre următoarele acțiuni:
reproducerea exactă a cuvintelor unui alt autor, dintr -o altă lucrare, în limba română sau prin
traducere dintr -o altă limbă, dacă se omit ghilimele și referința precisă,
redarea cu alte cuvinte, reformularea pri n cuvinte proprii sau rezumarea ideilor din alte
lucrări , dacă nu se indică sursa bibliografică,
prezentarea unor date experimentale obținute sau a unor aplicații realizate de alți autori fără
menționarea corectă a acestor surse,
însușirea totală sau par țială a unei lucrări în care regulile de mai sus sunt respectate, dar care
are alt autor.
Pentru evitarea acest or situații neplăcute se recomandă:
plasarea într e ghilimele a citatelor directe și indicarea referinței într -o listă corespunzătoare la
sfărși tul lucrării,
indicarea în text a reformulării unei idei, opinii sau teorii și corespunzător în lista de referințe
a sursei originale de la care s -a făcut preluarea,
precizarea sursei de la care s -au preluat date experimentale, descrieri tehnice, figuri, imagini,
statistici, tabele et caetera , precizarea referințelor poate fi omisă dacă se folosesc informații
sau teorii arhicunoscute, a căror paternitate este unanim cunoscută și acceptată.
Data , Semnătura candidat: [anonimizat],
v
UNIVERSITATEA DIN CRAIOVA
Facultatea de Automatică, Calculatoare și Electronică
Departamentul de Automatică și Electronică
Aprobat la data de
…………………
Șef de departament,
Prof. dr. ing.
Emil PETRE
PROIECTUL DE DIPLOMĂ
Numele și prenumele stu dentului/ -ei:
Bădoiu Gabriel -Marius
Enunțul temei:
Proiectarea unui sistem de control automat al unui
mini-vehicul
Datele de pornire:
Discuții despre microcontrolerul Arduino și realizarea unui
mini-vehicul
Conținutul proiectului :
În ,,Echipamente de timp real” descriu ,în mod detaliat
componentele hardware ș i software .
În ,,Achiziția si prelucrea de imagine” descriu programul
realizat î n LabVIEW .
În ,,Proiectarea sistemului de control” descriu pe s curt cum
am realizat semaforul ș i programul de urmă rire linie .
În ,,Sistemul de comunicație în reț ea” descriu modulul
Bluetooth ș i legătura lui cu LabVIEW .
Material grafic obligatoriu:
Poze c u diverse componente ale mini -vehiculului , scheme
logice, exemple cod sursă.
Consultații:
săptămânal e
Conducătorul științific
(titlul, nume și prenume, semnătura): Șef lucrări dr. ing. Popescu Ion MARIAN
Data eliberării temei:
01.12.201 6
Termenul estimat de predare a
proiectului :
29.06.2017
Data predării proiectului de către
student și semnătura acestuia:
vi
UNIVERSITATEA DIN CRAIOVA
Facultatea de Automatică, Calculatoare și Electronică
Departamentul de Automatică și Electronică
REFERATUL CONDUCĂTORULUI ȘTIINȚIFIC
Numele și prenumele candida tului/ -ei: Bădoiu Gabriel -Marius
Specializare a: Automatică și informatică aplicată
Titlul proiectului : Proiectarea unui sistem de control automat al unui
mini-vehicul
Locația în care s -a realizat practica de
documentare (se bifează una sau mai
multe din opțiunile din dreapta): În facultate □
În producție □
În cercetare □
Altă locație:
În urma analizei lucrării candidatului au fost constatate următoarele:
Nivelul documentării Insuficient
□ Satisfăcător
□ Bine
□ Foarte bine
□
Tipul proiectului Cercetare
□ Proiectare
□ Realizar e
practică □ Altul
[se detaliază ]
Aparatul matematic utilizat Simplu
□ Mediu
□ Complex
□ Absent
□
Utilitate Contract de
cercetare □ Cercetare
internă □ Utilare
□ Altul
[se detaliază ]
Redactarea lucrării Insuficient
□ Satisfăcător
□ Bine
□ Foarte bine
□
Partea grafică, desene Insuficient ă
□ Satisfăcătoare
□ Bună
□ Foarte bună
□
Realizarea
practică Contribuția autorului Insuficientă
□ Satisfăcătoare
□ Mare
□ Foarte mare
□
Complexitatea
temei Simplă
□ Medie
□ Mare
□ Complexă
□
vii
Analiza cerințelor Insuficient
□ Satisfăcător
□ Bine
□ Foarte bine
□
Arhitectura Simplă
□ Medie
□ Mare
□ Complexă
□
Întocmirea
specificațiilor
funcționale Insuficientă
□ Satisfăcătoare
□ Bună
□ Foarte bună
□
Implementarea Insuficientă
□ Satisfăcătoare
□ Bună
□ Foarte bună
□
Testarea Insuficientă
□ Satisfăcătoare
□ Bună
□ Foarte bună
□
Funcționarea Da
□ Parțială
□ Nu
□
Rezultate experimentale Experiment propriu
□ Preluare din bibliografie
□
Bibliografie Cărți
Reviste
Articole
Referințe web
Comentarii
și
observații
În concluzie, se propune:
ADMITEREA PROIECTULUI
□ RESPINGEREA PROIECTULUI
□
Data, Semnătur a conducătorului științific,
viii
REZUMATUL PROIECTULUI
Cu proiectul de licență „Proiectarea unui sistem de control automat al unui mini -vehicul”
doresc să realizez un mini -vehicul controlat automat care merge pe o linie, iar cu ajutorul unui camer e
WiFi (c amera de la telefon) să realizez procesarea de imagine folosind mediul de dezvoltare
LabVIEW .
Mini -vehiculul va trebui să realizeze urmatoarele lucruri :
– Să mearga pe o linie neagră
– Să se oprească la culoarea roșie a semaforului
– Să mearga mai depart e dacă vede culoarea verde.
M-am documentat în vederea realizării acestui proiect și am găsit placa cu microcontroler
Arduino care este uș or de programat și este capabilă să controleze mini -vehiculul. Pentru comunicarea
în rețea există diferite module WiFi , Bluetooth ce permit conectarea la LabVIEW .
Pentru mini -vehiculul de față alesesem să folosesc modul WiFi ,,ESP8266 ” pentru
comunicația cu LabVIEW . Însă din cauza unor dificultăți întâlnite am ales să folosesc un modul
Bluetooth.
Termenii cheie : Arduin o, senzor, Bluetooth, Labview.
ix
CUPRINSUL
1 INTRODUCERE ………………………….. ………………………….. ………………………….. ………………………….. ……… 1
1.1 SCOPUL ………………………….. ………………………….. ………………………….. ………………………….. ……………… 1
1.2 MOTIVAȚIA ………………………….. ………………………….. ………………………….. ………………………….. ………… 1
1.3 STRUCTURA GENERALĂ A UNUI SISTEM DE CONDU CERE ………………………….. ………………………….. …….. 2
2 ECHIPAMENTE DE TIMP REAL ………………………….. ………………………….. ………………………….. ……….. 4
2.1 MICROCONTROLER -UL ARDUINO UNO ………………………….. ………………………….. ………………………….. …. 7
2.2 MODULUL CU DRIVER D E MOTOARE DUAL L 298 N ………………………….. ………………………….. ……………. 15
2.3 SENZORUL DE LINIE ………………………….. ………………………….. ………………………….. ……………………….. 17
3 ACHIZIȚIA ȘI PRELUCR AREA DE IMAGINE ………………………….. ………………………….. ……………… 18
3.1 DESCRIERE LABVIEW ………………………….. ………………………….. ………………………….. ……………………… 19
3.2 ACHIZIȚIA DE IMAGINE ………………………….. ………………………….. ………………………….. …………………… 24
3.3 PROCESAREA DE IMAGINE ………………………….. ………………………….. ………………………….. ……………….. 34
4 PROIECTAREA SISTEMUL UI DE CONTROL ………………………….. ………………………….. ……………… 40
4.1 IMPLEMENTARE SEMAFOR ………………………….. ………………………….. ………………………….. ……………….. 40
4.2 IMPLEMENTARE URMĂRIRE TRASEU ………………………….. ………………………….. ………………………….. ….. 42
5 SISTEMUL DE COMUNICA ȚIE ÎN REȚEA ………………………….. ………………………….. …………………… 49
5.1 TEHNOLOGIA BLUETOOTH ………………………….. ………………………….. ………………………….. ……………….. 49
5.2 MODULUL BLUETOOTH HC -05 ………………………….. ………………………….. ………………………….. ………….. 52
5.3 COMUNICAREA DINTRE LA BVIEW , MODULUL BLUETOOTH ȘI ARDUINO ………………………….. ……………. 53
6 REZULTATE ȘI CONCLUZ II ………………………….. ………………………….. ………………………….. ……………. 55
7 BIBLIOGRAFIE ………………………….. ………………………….. ………………………….. ………………………….. …….. 57
8 REFERINȚE WEB ………………………….. ………………………….. ………………………….. ………………………….. …. 58
A. CODUL SURSĂ ………………………….. ………………………….. ………………………….. ………………………….. ……… 59
B. CD / DVD ………………………….. ………………………….. ………………………….. ………………………….. ……………….. 62
x
LISTA FIGURILOR
FIGURA 1.1 STRUCTURA GENERALĂ A UNUI SITEM DE CONDUC ERE ………………………….. ………………………….. ……… 2
FIGURA 2.1 PLACA DE DEZVOLTARE A RDUINO UNO R 3 ………………………….. ………………………….. ……………………… 9
FIGURA 2.2 CONFIGURAȚ IA PINILOR MICROCONT ROLERULUI A TMEGA ………………………….. ………………………….. . 10
FIGUR A 2.3 EXEMPLU PROGRAM „BLINK LED ” ………………………….. ………………………….. ………………………….. …… 12
FIGURA 2.4 COMPILARE COD ………………………….. ………………………….. ………………………….. ………………………….. . 13
FIGURA 2.5 SETARE PLACA DE DEZVO LTARE ………………………….. ………………………….. ………………………….. ……… 13
FIGURA 2.6 SETAREA PORTULUI DE C OMUNICARE CU PLACA ………………………….. ………………………….. ……………. 14
FIGURA 2.7 ÎNCĂRCAREA PROGRAMULU I PE PLACĂ ………………………….. ………………………….. ………………………… 14
FIGURA 2.8 MODULUL CU DRIVER DE MOTOARE DUAL L 298 N ………………………….. ………………………….. …………… 15
FIGURA 2.9 CONEXIUNEA MODULULUI CU DRIVER DE MOTOARE LA ARDUINO ………………………….. …………………. 16
FIGURA 2.10 BARĂ CU 3 SENZORI DE LINIE ………………………….. ………………………….. ………………………….. ………… 17
FIGURA 3.1 FEREASTRA -PANOU (PANEL ) DIN LABVIEW ………………………….. ………………………….. ……………………. 22
FIGURA 3.2 FEREASTRA -PROGRAM (DIAGRAM ) DIN LABVIEW ………………………….. ………………………….. …………… 23
FIGUR A 3.3 NI-IMAQ DX ………………………….. ………………………….. ………………………….. ………………………….. ……… 24
FIGURA 3.4 INSTALAREA NI -VISION ………………………….. ………………………….. ………………………….. ………………….. 25
FIGURA 3.5 MENIU IP W EBCAM ………………………….. ………………………….. ………………………….. ……………………….. 26
FIGURA 3.6 SERVER IP W EBCAM ………………………….. ………………………….. ………………………….. ………………………. 26
FIGUR A 3.7 IP CAMERA A DAPTER ………………………….. ………………………….. ………………………….. …………………….. 27
FIGURA 3.8 ACHIZIȚIE DE IMAGINE ………………………….. ………………………….. ………………………….. ………………….. 27
FIGURA 3.9 BLOCUL OPEN CAMERA VI ………………………….. ………………………….. ………………………….. ……………… 28
FIGURA 3.10 BLOCUL IMAQDX C ONFI GURE GRAB VI ………………………….. ………………………….. ……………………….. 29
FIGURA 3.11 IMAQDX GRAB 2 VI ………………………….. ………………………….. ………………………….. ………………………. 30
FIGURA 3.12 IMAQDX CLOSE CAMERA V I ………………………….. ………………………….. ………………………….. ………….. 31
FIGURA 3.13 IMAQ CREATE VI ………………………….. ………………………….. ………………………….. …………………………. 32
FIGURA 3.14 TIPURILE DE IMAGINE ………………………….. ………………………….. ………………………….. ………………….. 33
FIGURA 3.15 PROGRAMUL PENTRU PROCESAREA DE IMAGINE ………………………….. ………………………….. …………… 34
FIGURA 3.16 IMAQ COLORLEARN VI ………………………….. ………………………….. ………………………….. …………………. 34
FIGURA 3.17 INDEX ARRAY F UNCTION ………………………….. ………………………….. ………………………….. ……………… 36
FIGURA 3.18 IN RANGE AND COERCE F UNCTION ………………………….. ………………………….. ………………………….. … 36
FIGURA 3.19 SPAȚIUL DE CULOARE HS L ………………………….. ………………………….. ………………………….. ……………. 37
FIGURA 3.20 SPAȚIUL HSL DIVIZAT ÎN SECTOARE ȘI BINI ………………………….. ………………………….. ………………….. 38
FIGURA 3.21 RELAȚIA DINTRE SPAȚIU L DE CULOARE AL NUAN ȚELOR ȘI ȘIRUL S PECTRULUI DE CULOARE ……….. 39
xi
FIGURA 4.1 SEMAFORUL ………………………….. ………………………….. ………………………….. ………………………….. ……. 40
FIGURA 4.2 SCHEMA SEMAFORULUI ………………………….. ………………………….. ………………………….. …………………. 41
FIGUR A 4.3 PROGRAMUL SEMAFORULUI ÎN A RDUINO ………………………….. ………………………….. ………………………. 41
FIGURA 4.4 CONTROL P ROPORȚIONAL ………………………….. ………………………….. ………………………….. ………………. 45
FIGURA 4.5 SCHEMĂ PID ………………………….. ………………………….. ………………………….. ………………………….. …….. 46
FIGURA 4.6 BUCLA DE REGLARE PENT RU PROCESUL NOSTRU ………………………….. ………………………….. ……………. 46
FIGURA 5.1 MODUL BLUETOOTH HC -05 ………………………….. ………………………….. ………………………….. ……………. 52
FIGURA 5.2 CONEXIUNEA DIN TRE LABVIEW ȘI MODUL UL B LUETOOTH ………………………….. ………………………….. .. 54
FIGURA 6.1 MINI-VEHICULUL FINALIZAT ………………………….. ………………………….. ………………………….. ………….. 56
xii
1
1 INTRODUCERE
Proiectul constă în construierea unui mini -vehicul inteligent controlat automat prin interme diul unei
bucle de reglare. Ace sta dispune de o cameră digitală (un telefon mobil) și realize ază o comunicație
dintre LabVIEW și Arduino prin intermediul unui modul Bluetooth.
Mini -vehiculul trebuie să î ndeplinească urmă toare le cerințe :
– Trebuie să se deplaseze automat pe o linie neagră
– Când ace sta detectează culoarea roșie a semaforului, se oprește
– Dacă vede culoarea verde ace sta își continuă traseul.
Semaforul are 2 leduri, unul roșu și altul este verde. Acestea sunt s etate după urmă torul interval :
– culoarea verde durează 4 secunde
– culoarea roș ie durează 10 secunde.
1.1 Scopul
Scopul acestei lucrări este de a ne testa și exersa abilitățile de ingineri automatiști.
1.2 Motivația
Prima opțiune pentru procesarea de ima gine a fost cu ajutorul unei camere wireless, aceasta
fiind destul de scumpă am optat pentru o altă soluție. A m conectat un telefon la LabVIEW printr -un
program de pe “Magazin Play”.
Am ales această temă deoarece mi s -a părut interesantă ideea de a const rui o ma sinuță
inteligentă, astfel am vă zut cum funcționează un senzor, microcontroler -ul Arduino care este un
mediu nou de dezvoltare pentru mine și am observat cum comunică LabVIEW cu alte medii de
dezvoltare.
2
1.3 Structura generală a unui sistem de c onducere
În orice sistem de conducere, în partic ular, de conducere automată, se deosebesc urmatoarele
patru elem ente interconectate :
a. Obiectul c ondus (instalația automatizată)
b. Obiectul conducător (dispozitivul de conducere)
c. Sistemul de transmitere și aplicare a comenzilor (deciziilor)
d. Sistemul informatic (de culegere si transmitere a informațiilor privind obiectul condus).
FIGURA 1.1 STRUCTURA GENERALĂ A UNUI SISTEM DE CONDUCERE
Obiectul conducător (dispozitivul de conducere) elaborează decizi i (comenzi) care se aplică
obiectului condus, prin intermediul elementelor de execuție, pe baza informațiilor obținute despre
starea obiectului condus prin intermediul măarimilor măsurate.
Deciziile de conducere au ca scop îndeplinirea de către marimea con dusă a unui program în
condițiile îndeplinirii (extremizării) unor criterii de calitate, a satisfacerii unor restricții, când asupra
obiectului condus acționeaza o serie de perturbații.
3
Structura de mai sus este o structură de conducere (sau în circuit înc his) deoarece deciziile
(comenzile) aplicate la un moment dat sunt dependente și de efectul deciziilor anterioare. Aceasta
exprimă circuitul închis al informațiilor prin mărimile de reacție: fenomenul de reacție sau feedback.
Dacă lipsește legătura de reac ție sistemul este în circuit deschis și se numește sistem de
comandă (în pa rticular, de comandă automată). O astfel de structură se întâlnește în cele mai diverse
domenii de activitate: tehnic, biologic, social, militar etc., în cele ce urmează referindu -ne însă numai
la cele tehnice.
Un sistem de conducere în structura de mai sus se poate numi sistem de conducere automată deoarece
este capabil să elaboreze decizii de conducere folosind mijloace proprii de informare.
Un caz particular de sisteme de conducere automată il constituie sistemele de reglare automată (SRA).
Prin sistem de reglare automată se înțelege un sistem de conducere automată la care scopul
conducerii este exprimat prin anularea diferenței dintre mărimea condusă (reglată) și mărimea
impusă (programul impus), diferență care se mai numește abatere sau eroarea sistemului.
La cele mai multe sisteme de reglare automată mărimea reglată este chiar mărimea măsurată.
Procesul de anulare a erorii într -un SRA se efectuează folosind două principii:
1. Prin cipiul acțiunii prin discordanță (PAD)
2. Principiul compensației (PC)
În cazul PAD, acțiunea de reglare apare numai după ce abaterea sistemului s -a modificat
datorită variației mărimii impuse sau a variației mărimii de ieșire provocată de variația unei
perturbații. Deci, întâi sistemul se abate de la program ("greșește") și apoi se corectează. Este realizat
prin circuitul de reacție inversă. Are avantajul compensării efectului oricăror perturbații.
În cazul PC, una sau mai multe mărimi perturbatoare sunt mă surate și seaplică la elementele
de execuție, comenzi care să compenseze pe această cale efectul acestor perturbații asupra mărimii de
ieșire transmis pe cale naturală.Un sistem de reglare care îmbină cele doua principii se numește
sistem de reglare combin ată. [SLRA00]
4
2 ECHIPAMENTE DE TIM P REAL
În acest capitol sunt folosite informații din „Understanding Real -Time for Measurement & Automat
ion” de Jim Balent și Tamra Kerns, National Instruments
Conceptul de timp real este de multe ori greu de înțeles. În timp ce mulți oameni presupun că
„în timp real” înseamnă foarte rapid, în realitate, se referă la un răspuns determinist –adică la
capacitatea de a răspunde în mod fiabil și fără a eșua, la un eveniment într -un interval de timp
garantat.
O concepție greșit ă este că o aplicație în timp real necesită un sistem de operare de
specialitate. Cu toate acestea, un PC standard care rulează Windows poate da răspunsuri acceptabile
în timp real pentru multe aplicații. Prin integrarea de hardware și software specializat în aceste
sisteme, un nivel chiar mai precis de performanță în timp real este disponibil.
În „timp real” pur si simplu este un adjectiv folosit pentru a descrie cerințele de sincronizare
ale unei aplicații. Cerințele referitoare la timp variază de la apli cație la aplicație și de la utilizator la
utilizator. Ca atare, nu exista nici o constrângere de timp universală care face ceva „timp real”.
Termenii soft și hard de multe ori sunt folosiți pentru a defini mai precis performanța în timp real.
Un sistem car e funcționează în timp real soft poate avea rate de răspuns variabile, fără a
compromite funcționalitatea sistemului în ansamblu. De exemplu, într -un sistem de monitorizare a
temperaturii, data este de obicei dobandită relativ lent, deoarece temperatura nu se schimbă rapid.
Citiri de date pot fi luate și o dată pe secundă, și ușoare variații în intervalul de timp dintre citiri nu va
compromite funcționalitatea sistemului.
Pe de altă parte, cerințele unui sistem hard de timp real impun ca rata de răspuns, fă ră șanse
de a eșua, să fie precisă într -un timp absolut scurt. De exemplu, atunci când se controlează un proces
de distilare, citirile de presiune trebuie să fie luate în mod constant la anumite intervale de timp pentru
a lua decizii critice de a deschide și închide supape de presiune. Dacă buclele de control nu sunt
executate în perioada de timp specificată, presiunea se poate cumula la niveluri periculoase. În
aplicațiile hard de timp real cum ar fi aceasta, este important să ai hardware și software care p ot
garanta rata de răspuns și fiabilitatea calculelor critice.
5
În Microsoft Windows evenimentele și întreruperile sunt clasificate evenimente cu prioritate
mai mare față de alte evenimente cu prioritate scăzută. Cu toate acestea, procesele reale care răspu nd
la 5 întreruperi, numite device drivers, pot dezactiva întreruperile pentru o perioadă de timp. Când se
întâmplă acest lucru, sistemul nu poate răspunde la niciun eveniment, până când întreruperea este
deblocată. Dacă are loc un eveniment în perioada bl ocată, întreruperea nu poate fi executată, iar
timpul de răspuns al aplicației va varia.
Mulți oameni presupun în mod eronat că, dacă se folosește termenul timp real, este nevoie de
un sistem de operare în timp real (RTOS) dedicat. Ei nu cred ca Windows es te suficient de fiabil,
dator ită arhitecturii device driver.
Acest lucru nu este adevărat. Un PC modern, care rulează Windows va avea răspunsuri până
la câteva sute de milisecunde. În plus, prin utilizarea unor tehnici de programare corespunzătoare,
utiliz atorii de Windows pot da răspunsuri în timp real acceptabile de zeci de milisecunde. Odată cu
robustețea tot mai mare a Windows -ul, în special NT, mii de ingineri de test au adoptat utilizarea unui
PC care rulează Windows pent ru măsurare și control.
Două f uncții de bază ale aplicațiilor în timp real de măsurare și de automatizare bazate pe PC
sunt de eșantionare în timp real, prin achiziție de date, și control în timp real. Pentru aplicații de
eșantionare în timp real, cerința este capacitatea de a colecta fiabil datele la orice rată se precizează de
utilizator. Pentru aplicațiile de control ce utilizează PC -ul, constrângerea în timp real este ca deciziile
de control să se facă într -un termen de timp stabilit.
Când colectarea de date se face de la un plug -in placa de achiziție de date, cea mai importantă
caracteristică în timp real este de a menține ratele de probă dorite fără variație. De exemplu, atunci
când se preleva probe de la microfoane la 100 kHz pentru a căuta informații specifice unor vibrații,
cea mai importantă cerință în timp real este de prelevare de probe de date la o rată de 100 kHz cu
variație cât mai mica posibil între puncte de citire de date.
În cazul în care datele sunt colectate la rate variabile, analiza de date ulterioară, cum ar fi
aplicarea unui transformate Fourier rapidă (FFT), va da rezultate eronate. Odată ce datele sunt
achiziționate, prelucrarea ulterioară, vizualizarea și stocarea pe disc se poate face în Windows, pentru
că aceste procese nu sunt parte a cerinței timp real a ac estei aplicații.
6
Într-o aplicație de control în timp real, intrările de proces sunt colectate, se ia o decizie de
control, și sunt generate ieșiri de comandă. Pentru ca un sistem de control sa fie considerat stabil,
timpul necesar pentru a executa această buclă de control trebuie să fie deterministă -adică durata de
timp trebuie să fie constantă pentru fiecare execuție a buclei de reglare. Există multe soluții hardware
pentru controlul în timp real. Acestea variază de la controlere programabile (PLC) și cont rolere de
temperatură dedicate pentru computere sau sisteme embedded cu un RTOS. Diferitele sisteme trebuie
să fie utilizate în funcție de timpii doriți de ciclu de bucla de control.
De exemplu, controlere de temperatură și PLC -urile efectuează de obicei c âteva bucle pe
secunda, în timp ce sistemele de RTOS încorporat pot realiza răspunsuri în microsecunde. Pentru
cerințe mai rapide, hardware specializat ca DSP și FPGA -uri pot fi utilizate pentru a atinge viteze în
timp real în nanosecunde.
Plăcile de achiz iție de date de tip plug -in sunt de multe ori platforme bune pentru control în
timp real, deoarece procesoarele, DSP sau FPGA pot fi integrate pe placa. Apoi, datele pot fi
eșantionate, o decizie de control poate fi luată, și ieșiri corespunzătoare generat e pe aceeași placă de
achiziție de date, independent de ceea ce computerul gazdă și sistemul de operare Windows fac.
Unele dintre aceste plăci de asemenea, oferă fiabilitate îmbunătățită pentru că algoritmii de
control de pe placa vor funcționa în continu are, chiar dacă PC -ul gazdă nu. Deoarece multe dintre
aceste plăci pot fi programate folosind tehnici standard de măsurare, componenta de control în timp
real a unei aplicații poate fi ușor integrată într -un sistem de măsurare complet.
Un exemplu care demo nstrează necesitatea controlului în timp real este în industria auto, unde
un dinamometru (cunoscut ca un dinam pe scurt) este folosit pentru a testa proprietățile de rotație,
precum și viteza si cuplul. Pentru testarea motorului, dinamometrele sunt utiliz ate pentru a determina
eficiența motorului și puterea.
Dinamometrul este setat la un nivel de încărcare dorit, și două motoare generale de test sunt
de obicei pornite. Întâi, motorul funcționează cu diferite sarcini ale dinamometrului. Scopul este de a
determina modul în care un motor va răspunde la diferite sarcini crescătoare și descrescătoare. Alt test
tipic este de a menține constantă sarcina dinamometrului, și apoi de a mari sau a scădea turația
motorului pentru a determina performanțele motorului baza t pe o anumită sarcină.
7
O constrângere în timp real pentru un test cu dinamometru este de a menține cuplul și viteza
constante pentru ca măsurători precise ale performanței motorului să poată fi făcute. Acest lucru
necesită ca o serie de parametri, cum ar fi viteza, accelerația, și temperatura să fie măsurate și
comparate cu valorile de referință.
Dacă valorile măsurate se abat de la nivelurile dorite, comenzi de ieșire trebuie generate
pentru a menține motorul în funcțiune la rata dorită. Eșecul de a menți ne buclele de control în timp
real al motorului la valorile dorite va provoca o funcționare inconsistentă, și orice informații colectate
pentru a judeca performanța motorului vor fi invalide. [RT1]
2.1 Microcontrol er-ul Arduino Uno
Arduino este o placă cu microcontroler, destinată să facă aplicațiile cu obiecte interactive sau
mediu interactiv mai accesibile. Hardware -ul constă dintr -o placă hardware open -source concepută în
jurul unui microcontroler Atmel AVR, de 8 -biți sau 32 de biți Atmel ARM. Modelele actuale sunt
dotate cu o interfață USB, 6 pini analogici de intrare, precum și 14 digitale pini I / O care permit
utilizatorului atașarea diverselor plăci de extensie, numite si shield -uri.Introdus în 2005, platforma
Arduino a fost proiectată pentru a ofe ri un mod ieftin și ușor pentru pasionați, studenți și profesioniști
de a crea dispozitive care interacționează cu mediul, folosind senzori și actuatori. Exemple comune
pentru pasionați începători includ roboți simpli, termostate si detectoarede mișcare. A cesta este dotat
cu un mediu de dezvoltare integrat (IDE) simplu, care rulează pe calculatoarele personale regulate și
permite utilizatorilor să scrie programe pentru Arduino folosind C sau C + +. [W-ARDUI NO1]
Scurt Istoric
Arduino a început în 2005 ca un proiect al unui student al Institutului de Interacțiune a
Designului din Ivrea , Italia . La acea vreme studenții foloseau o plăcuță de dezvoltare BASIC
Stamp care costau 100 de dolari, ceea ce era considerat foarte scump pentru studenți. Massimo Banzi,
unul dintre fondatori, era student la Ivrea . Numele "Arduino" provine de la un bar din Ivrea , locul
unde o parte din fondatori obișnuiau să se întâlnească.
Studentul columbian Hernando Barragán a creat platforma de dezvoltare Wiring care a servit
ca bază pentr u Arduino. După finalizarea platformei Wiring, mai multe versiuni, mai light și mai
ieftine , au fost create și puse la dispoziția comunităților open -source . Din echipa inițială Arduino au
8
făcut parte Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Ma rtino și David Mellis. [W-
ARDUINO1]
Hardware
O plăcuță Arduino este compusă dintr -un microcontroler Atmel AVR de 8-, 16- sau 32 -biți
(deși începând cu 2015 s -au folosit microcontrolere de la alți producători) cu componente
complementare care facilitează pr ogramarea și încorporarea în alte circuite. Un aspect important la
Arduino este că acesta dispune de conectori standard, care permit utilizatorului să conecteze plăcuța
cu procesorul la diferite module interschimbabile numite shield -uri. Unele shield -uri c omunică cu
Arduino direct prin pinii digitali sau analogici, dar altele sunt adresabile individual prin magistrala
serială I²C permițând utilizarea mai multor module în paralel. Până în anul 2015 plăcuțele Arduino
oficiale au folosit cipuri Atmel din seria megaAVR, în special ATmega8, ATmega168, ATmega328,
ATmega1280 și ATmega2560, iar în 2015 au fost adăugate cipuri de la alți producători. O multitudine
de alte procesoare au fost folosite de dispozitive compatibile Arduino. Multe plăcuțe includ un
regulato r liniar de 5 V și un oscilator cu cuarț de 16 MHz (sau un rezonator ceramic în unele
variante), deși anumite plăcuțe, cum ar fi LilyPad, funcționează la 8 MHz și nu necesită regulator,
datorită restricțiilor de formă. Un microcontroler instalat pe Arduino vine preprogramat cu
un bootloader care simplifică încărcarea programelor pe memoria flash a cipului, în comparație cu alte
dispozitive care necesită programatoare externe. Acest aspect face Arduino o soluție simplă,
permițând programarea de pe orice comp uter ordinar. În prezent, bootloader -ul optiboot este
bootloader -ul implicit instalat pe Arduino UNO.
La nivel conceptual, când se folosește mediul de dezvoltare integrat Arduino, programarea
tuturor plăcuțelor se face prin conexiune serială. Implementare a acesteia diferă în funcție de versiunea
hardware. Unele plăcuțe Arduino au implementate convertoare de nivel logic pentru a realiza
conversia între nivelele logice RS -232 și cele TTL. Plăcuțele Arduino din prezent sunt programate
prin USB, având integrat e cipuri de conversie USB -serial, cum ar fi FTDI FT232. Unele modele
UNO, mai noi, folosesc un cip AVR separat programat să funcționeze ca un convertor USB -serial,
care poate fi reprogramat printr -un port ICSP dedicat. Alte variante, cum ar fi Arduino Mini și
versiunea neoficială Boarduino, folosesc adaptoare detașabile USB -serial, cabl uri, Bluetooth sau alte
metode. Plăcuța Arduino are expuși mulți dintre pinii de intrare/ieșire ai microcontrolerului, pentru ca
aceștia să fie folosiți de alte circuite. Diec imila, Duemilanove și UNO oferă 14 pini digitali de
intrare/ieșire, dintre care 6 pot produce semnale PWM și 6 intrări analogice care, de asemenea, pot fi
9
folosite ca intrări/ieșiri digitale. Acești pini sunt accesibili prin partea superioară a plăcuței, p rin
intermediul unor barete mamă cu pasul între pini de 2,54 mm. [W-ARDUINO3 ]
Arduino Uno este o placă cu microcontroler bazata pe ATmega328, cu arhitectura RISC
avansată (datasheet) . Placa are 14 pini digitali deintrare/ieșire(dintre care 6 pot fi utiliz ați ca ieșiri
PWM), 6 intrări analogice, un rezonator ceramic de 16MHz, o conexiune USB, un jack de alimentare,
un header ICSP, si un buton de reset. Se conectează la calculator printr -un cablu USB, sau se
alimentează de la un adaptor AC -to-DC sau baterie de 9V.
Figura 2.1 Placa de dezvoltare Arduino Uno R3
UNO diferă de plăcile anterioare prin faptul ca nu folosește chip -ul FTDI USB -to-Serial. In schimb,
este dotat cu Atmega16U2, programat cu convertor USB -to-serial . [ABU1]
10
Caracteristici tehnice:
Tensiune de funcționare: 5V;
Tensiune de alimentare Jack: 7V – 12V;
Pini de I/O: 14;
Pini PWM: 6 (din cei 14 de I/O);
Pini ADC: 8;
Memorie flash: 32kB (8 ocupați de bootloader);
Comunicație TWI, SPI și UART;
Frecvență de funcționare: 16 MHz.
Figura 2.2 Co nfigurația pinilor microcontrolerului Atmega
Software
Programele Arduino pot fi scrise în orice limbaj de programare cu un compilator capabil să
producă un cod mașină binar. Atmel oferă un mediu de dezvoltare pentru microcontrolerele sale,
11
AVR Studio și ma i nou, Atmel Studio. Proiectul Arduino oferă un mediu integrat de dezvoltare (IDE),
care este o aplicație cross -platform, scrisă în Java. Acesta își are originile în mediul de dezvoltare
pentru limbajul de programare Processing și în proiectul Wiring. Este proiectat pentru a introduce
programarea în lumea artiștilor și a celor nefamiliarizați cu dezvoltarea software. Include un editor de
cod cu funcții ca evidențierea sintaxelor, potrivirea acoladelor și spațierea automată și oferă
mecanisme simple cu un singur click, pentru a compila și a încărca programele în plăcuța Arduino.
Un program scris în IDE pentru Arduino se numește sketch . [W-ARDUINO4]
Limba jul de programare
Arduino IDE suportă limbajele de programare C și C++ folosind reguli speci ale de organizare a
codului. Arduino IDE oferă o librărie software numită Wiring, din proiectul Wiring, care oferă multe
proceduri comune de intrare și ieșire. Un sketch tipic Arduino scris în C/C++ este compus din două
funcții care sunt compilate și legat e cu un ciot de program main() , într -un program executabil cu o
execuție ciclică:
setup() : o funcție care este rulată o singură dată la începutul programului, când se inițializează
setările.
loop() : o funcție apelată în mod repetat până la oprirea aliment ării cu energie a plăcuței.
După compilarea și legarea cu GNU toolchain inclus, de asemenea, în IDE, mediul de dezvoltare
Arduino trimite comandă către programul avrdude pentru a converti codul executabil într -un fișier
text codat hexazecimal, care poate f i încărcat în placa Arduino de un program de încărcare.
Un prim program tipic pentru un microcontroler simplu Blink LED -uri. În mediul Arduino,
utilizatorul ar p utea scrie un program de genul ă sta:
12
Figura 2.3 Exemplu program „Blink LED”
O caracteristică a celor mai multe placi Arduino este ca au o rezistență si un LED conectate
între pinul 13 și la s ol; o caracteristică convenabilă pentru multe teste si mple. Codul anterior nu s -ar fi
văzut de un compilator standard C++ ca un program valabil, astfel ca atu nci când utilizatorul face clic
pe butonul "upload " în IDE, o copie a codului este scris într -un fișier t emporar, cu un antet în plus ș i
o funcție principală main() foarte simplă , în partea de jos, pentru a -l face un program valid C++.
Arduino IDE foloseș te toolchain GNU și AVR libc pentru a compila programe, și folosește avrdude
pentru a încărca programe pe placă .
Platforma Arduino ce utilizează microcontrolere Atmel, mediu de dezvoltare Atmel, AVR Studio
sau mai nou Atmel Studio, pot fi de asemenea folo site pentru a dezvolta software -ul pentru Arduino .
Mediul de dezvoltare este dotat cu libr ării standard pentru lucrul cu diferite component e hardware
(servo motoare, LED -uri, diferiți senzori, eran LCD, etc), astfel realizându -se un nivel de abstractizare
al părții hardware ș i focusul rămâne pe obiecte. [W-ARDUINO4 ]
13
După scrierea programului, se dă „Verify” pentru a compila codul :
Figura 2.4 Compilare cod
Pentru a încărca programul pe placă, se alege placa corespunzătoare de la Tools -> Board :
Figura 2.5 Setare placa de dezvoltare
14
După ce s -a ales placa corespunzătoare, trebui setat și portul USB la care este conectată :
Figura 2.6 Setarea portului de comunicare cu placa
După ce s -a ales placa și portul corespunzător se încărca programul apăsând buto nul „Upload” :
Figura 2.7 Încărcarea programului pe placa
15
2.2 Modul ul cu Driver de Motoare Dual L298N
Figura 2.8 Modulul cu Driver de Motoare Dual L298N
Specificații tehnice:
Tensiune motoare: 5V – 35V;
Tensiune circuite logice: 5V;
Curent motoare: 2A (MAX);
Curent logic ă: 36mA;
Frecvență maximă pwm: 40kHz.
Dimensiuni: 43 x 43 x 27 mm.
Driver -ul conține și un limitator de tensiune liniar, astfel că atunci când tensiunea de alimentare a
motoarelor este >7V, nu este nevoie să alimentăm separat partea de logică.
Driver -ul este unul dual, putând să controleze două motoare. El poate fi folosit și pentru motoare pas
cu pas.
16
Chiar dacă are dimensiuni mai mari, este util prin faptul că beneficiază de un radiator destul de mare
și disipă o cantitate mare de cal dură.
Figura 2.9 Conexiunea modulului cu driver de motoare la arduino
Conexiuni:
Out 1: terminal motor A
Out 2: terminal motor A
Out 3: terminal motor B
Out 4: terminal motor B
5V: 5 V input (dacă sursa folosită este de 7 -35 V poate fi folosit ca 5V )
EnA: PWM pentru motorul A – controlul turației
EnB: PWM pentru motorul B – controlul turației Pini pentru controlul turației și al sensului:
In1: direcție motor A
17
ln2: direcție motor A
In3: direcție motor B
In4: direcție motor B
Pentru a controla motoarel e DC cu driverul L298N ne asigurăm că pinii EnA și EnB nu sunt
conectați la 5V. Pe aceștia îi vom conecta la pinii PWM 3 și 10 pentru a controla turația
motoarelor.
Pentru a controla sensul motoarelor: pe In1 scriem HIGH, iar pe In2 scriem LOW și motorul va
merge înainte. Pentru a inversa sensul scriem LOW, respectiv HIGH pe In1, In2. Similar pentru
motorul B.
De asemenea, GND -ul driverului trebuie conectat cu GND -ul plăcuței Arduino pentru a funcționa.
[DMD1]
2.3 Senzorul de linie
Am folosit o bară cu 3 senzori ca î n figura urmă toare :
Figura 2.10 bară cu 3 senzori de linie
Caracteristici:
Tipul pachetului: cu plumb
Tipul detectorului : phototranzistor
Dimensiuni 10.2 x 5.8 x 7 mm
Distanța maximă de operare: 2,5 mm
18
Curent tipic de ieșire în curs de testa re: IC = 1 mA
Filtru de blocare a luminii zilei
Emițător lungime de undă : 950 nm
TCRT5000 este un senzor reflectorizant c are includ e un emițător în infraroș u și un fototranzistor într –
un ambalaj de plumb care împiedică lumina vizibilă.
Aplicații posibile:
Mentinerea unei masinute pe linie
Detectarea materialelor reflectorizante precum hartia, carduri IBM, banda magnetica
[TCRT1]
3 ACHIZIȚIA ȘI PRELUCR AREA DE IMAGINE
Dispozitivul cel mai răspândit pentru preluarea imaginilor este camera TV. Aceasta
baleiază scena din fața obiectivului linie cu linie furnizând la ieșire un semnal electric ce apreciază
variația luminozității în lung ul fiecărei linii. Eșantionând ș i convertind numeric acest semnal se obține
o imagine digital.
Imaginile din lumea înconjurătoare prezintă caracteristici de continuitate atât ca suprafață, cât
și in ceea ce privește tranzițiile de la o nuanță la alta. Eșantionarea și cuantizarea unei astfel de
imagini conduce la obținerea, în final a unei matrici de imagine ale cărei elemente
codific ă lumino zitățile pixelilor. Organizarea în octeți a memoriei calculatoarelor actuale face ca
adesea să se lucreze cu 256 niveluri de luminozitate, codificând albul cu 255 și negrul cu 0, chiar
dacă natura ochiului uman nu permite distingerea a mai mult de 100 de niveluri de luminozitate.
La monitoarele alb-negru o bișnuite, cu 16 niveluri de luminozitate, se obține o nuanțare
satisfăcătoare. Cum î nsă 16 niveluri se pot obține cu 4 biți, aceeași imagine va ocupa în memoria
calculatorului o zonă de memorie de două ori mai mică decât c ea cu 256 de niveluri, care poat e fi
codificată doar pe 8 biți. În aplicațiile uzuale luminozitatea se poate codifica pe 3 până la 6 biți, în
timp ce în aplicațiile mai pretențioase, ca de exemplu tomografia, se utilizează, de obi cei, 11 sau 12
biți pentru codificare, deci apar 2048 sau 4096 de niveluri de luminozitate. O imagine digitală este
caracterizată de o rezoluție spațială care reprezintă numărul de pixeli din imagine și o rezoluție de
luminozitate ce privește modul de codi ficare al pixelilor. [PIMAG]
19
3.1 Descriere LabVIEW
LabVIEW este un program de dezvoltare a aplicațiilor asemănător cu C sau BASIC. Totuși
LabVIEW este diferit de acestea printr -un aspect important. Astfel, dacă celelalte sisteme
deprogramare utilizează limbaje bazate pe text pentru a crea liniile de cod, LabVIEW utilizează un
limbaj de programare grafic pentru a crea programe, sub formă de scheme bloc (diagrame
bloc).LabVIEW, la fel ca C sau BASIC, este un sistem de programare general ce conține biblioteci
extensive de funcții și subrutine pentru programarea oricărui task. Pe lângă acestea,LabVIEW conține
și biblioteci specifice aplicațiilor pentru achiziții de date, GPIB și controlul instrumentelor seriale,
precum și analiza,prezentarea și memorarea datelor .
LabVIEW include de asemenea și facilități pentru dezvoltarea programelor convenționale;
astfel, se pot insera puncte de stop, se poate anima execuția unui program pentru a vedea cum datele
parcurg programul, sau, pentru ușurarea depanării acestuia, progr amul se poate executa în regim pas
cu pas.
Programele LabVIEW se numesc Instrumente Virtuale (Virtual Instruments ) – VI-uri,
deoarece modul de prezentare al acestora (design -ul) precum și modul de funcționare imită
instrumentele actuale. Totuși acestea sunt identice cu funcțiile din limbajele de programare
convenționale. VI -urile au o interfață interactivă cu utilizatorul, un cod sursă echivalent și acceptă
parametric de la VI -uri de nivel superior. Sintetic, cele trei facilități importante ale VI -ului sunt:
– Interfața interactivă cu utilizatorul a VI -ului este numită Panou Frontal (Front Panel ) deoarece
simulează panourile frontale ale instrumentele reale. Panoul frontal poate conține butoane,
potențiometre, grafice și alte tipuri de mă rimi de control și de indicare. Datele de intrare se introduc
folosind mouse -ul și tastatura calculatorului, iar vizualizarea rezultatelor se face pe ecranul
computerului.
– VI-ul (instrumentul virtual) – primește instrucțiunile necesare rulării programului din diagrama bloc
în care a fost editat în modul grafic de programare. Diagrama bloc reprezintă soluția grafică pentru
problema programării. Diagrama bloc este de asemenea codul sursă pentru VI.
– VI-urile sunt ierarhice și modulare. Se pot utiliza ca programe de nivel înalt sau ca subprograme sau
subrutine apelate de alte programe sau subprograme. Un VI utilizat în alt VI se numește
20
subVI.Simbolul și conectorii unui VI lucrează ca o listă de parametri grafici;rezultă că VI -uri de nivel
mai înalt pot transmite date unui subVI și invers.
Cu aceste facilități, LabVIEW promovează și aderă la conceptul de programare modulară . Se
poate împărți o aplicație complexă într -o serie de taskuri care, la rândul lor, pot fi reîmpărțite în serie
de funcții sau module, până când o aplicație im portantă devine o mulțime de taskuri simple. Pentru
fiecare astfel de funcție (subtask) se construiește câte un VI și apoi acestea se combină într -o nouă
diagramă bloc pentru a realiza un task mai mare (un modul de program). În final VI -ul de la nivelul
cel mai înalt va conține o colecție de sub -VI-uri ce reprezintă în fapt funcțiile aplicației.
Deoarece fiecare subVI se poate executa separat de restul aplicației, depanarea întregii
aplicații se face mult mai ușor. În plus, multe dintre subVI -urile de la ni velele inferioare pot fi folosite
și înalte aplicații, așa că se pot dezvolta seturi specializate de subVI -uri ce vor fi utilizate în aplicațiile
ce se doresc a fi realizate.Trebuie precizat că versiunile recente ale LabVIEW sunt proiectate pe baza
princip iilor programării orientate pe obiecte. [SE03]
Structura unui program LabVIEW
Ca structură, LabVIEW este compus din mai multe module, unele dintre ele fiind opționale.
Elementele care pot fi selecționate la instalare sunt:
– Main Application – fișierele pe ntru execuția programului LabVIEW;
– VI Libraries – colecțiile de instrumente virtuale predefinite (built -in).
Acestea se grupează în:
– GPIB – fișiere pentru prelucrarea în paralel a transmisiilor de date;
– Data Acquisition – fișiere pentru tratarea achi ziției de date;
– Base Analysis – fișierele funcțiilor disponibile;
– Serial – fișiere pentru prelucrarea în serial a transmisiilor de date;
– Network – fișiere pentru transmisii de date în rețea;
– Tutorial – manual de învățare a programului LabVIEW;
21
– Utilities – bibliotecă de utilitare;
– Examples – exemple de utilizare a funcțiilor din biblioteci;
O aplicație LabVIEW poate fi descrisă sumar ca fiind compusă din două părți distincte (fiecăreia
alocându -i-se o fereastră distinctă),legate între ele:
– o fereastră care afișează panoul cu instrumente virtuale ( Panel ) necesare aplicației și care are
extensia .vi
– o fereastră care afișează programul propriu -zis al aplicației ( Diagram ), realizată sub forma unei
diagrame a fluxului de date (asemănătoare unei sch eme bloc) cu simboluri și legături între simboluri
și care are în plus și extensia Diagram și este legată causal de fereastra Panel.
Oricărui instrument virtual i se alocă aceste două ferestre distincte aparent, dar de fapt strâns corelate
între ele.
Ferea stra panoului cu instrumente (Panel)
În această fereastră sunt introduse diferite reprezentări grafice (butoane, indicatoare cu cursor,
comutatoare, display -uri) care formează o interfață interactivă pentru reglaje și observații. Interfața
prezintă în cazu l unei aplicații variabilele de intrare și de ieșire necesare. După cum se observă,
fereastra Panel are o structură clasică pentru aplicațiile sub Windows și anume: o bară pentru titlu
(pentru a identifica aplicația), o bară de meniuri accesibile prin inte rmediul mouse -lui sau de la
tastatură și o bară de comenzi care ajută la execuția propriu -zisă a programului LabVIEW. Simbolul
grafic de identificare este util în cazul în care vom introduce aplicația 10 construită de noi într -o
bibliotecă de funcții ce po t fi apelate ulterior de alte programe.
Fereastra -panou poate fi realizată înaintea programului propriu -zis ( Diagram ). Prin
reprezentarea formelor instrumentelor în fereastra panoului, programul LabVIEW permite o
continuitate și o adaptare ușoară a utiliza torilor de instrumentație de măsură și control.În funcție de
aplicație, se pot controla instrumente independente (osciloscop, voltmetru etc.) sau plăci de achiziții
de date. Programul LabVIEW permite de asemenea crearea unor interfețe standard. În momentul în
care suntem într -o fereastră -panou, alăturat se atașează un meniu de control numit Controls. De aici
putem accesa cu butonul mouse -ului (butonul stâng) diferite instrumente ce se pot insera ulterior tot
cu ajutorul mouse -ului în fereastra -panou.
22
Figura 3.1 Fereastra -panou ( Panel ) din LabVIEW
În acest mod orice aplicație LabVIEW va avea o înfățișare asemănătoare cu un aparat de măsură și
control mai mult sau mai puțin complex. Pentru a nu ocupa prea mult spațiu pe ecran, meniul Controls
poate fi anula t iar dacă avem nevoie de el îl putem activa cu butonul drept al mouse -ului în orice zonă
liberă a ferestrei -panou.
Fereastra program (Diagram)
Fereastra programului propriu -zis conține funcțiile instrumentului virtual (adică programul în
sine). Programare a unei aplicații în LabVIEW se face pe principiul fluxului de date. Programul
LabVIEW este bazat pe limbajul grafic G. Simbolurile grafice ( icons ) utilizate în program sunt legate
ca într -o schemă bloc. Dacă pentru programarea unei aplicații într -un limbaj oarecare era necesară
convertirea acesteia într -un cod propriu limbajului ales, în cazul LabVIEW schema bloc (diagrama)
constituie chiar programul aplicației. Fiind sub forma unor imagini grafice, programul LabVIEW este
ușor de adaptat și de înțeles dacă reprezentarea grafică păstrează o dimensiune acceptabilă. În
momentul în care suntem într -o fereastrăprogram, alăturat se atașează un meniu numit Functions. De
aici putem accesa cu butonul stâng al mouse -ului diferite funcții ce se pot insera ulterior tot cu
ajutorul mouse -ului în fereastra -program.
23
Figura 3.2 Fereastra -program ( Diagram ) din LabV IEW
Pentru a nu ocupa prea mult spațiu pe ecran, meniul Functions poate fi anulat iar dacă avem
nevoie de el îl putem activa cu butonul drept al mouse -ului în ori ce zonă liberă a ferestrei -program.
Fereastra -panou este fereastra principală iar cea program este subordonată.Aceasta înseamnă că putem
vizualiza numai fereastra -panou (fără cea program) dar nu și invers. Ferestrele programului LabVIEW
pot apărea pe rând sau simultan pe ecranul monitorului. Totdeauna, la pornirea sesiunii de lucru,
apare o fereastră activă de tip panou (Panel) căreia, dacă nu i se dă un nume, apare înregistrată ca
Untitled 1. Pentru a lucra simultan cu ambele ferestre se poate da o comand ă din meniul Windows de
forma Tile Up and Down sau Tile Left and Right. Afișarea simultană a celor două ferestre nu
înseamnă că ele sunt active simultan. La un moment dat avem o singură fereastră activă. Ansamblul
celor două ferestre constituie instrumentu l virtual VI (Virtual Instrument ).
Pentru o mai bună înțelegere și pentru micșorarea dimensiunilor diagramelor este
recomandată programarea modular care se bazează pe utilizarea unor module de program. Dacă o
parte a unei aplicații este realizată și testat ă, ea poate constitui un modul cu funcții bine definite în
fereastra -panou și fereastra -diagramă.
24
Constituirea de module se face pe principiul încapsulării, fiecare modul având variabile proprii de
intrare și de ieșire. O aplicație LabVIEW este de fapt un modul de program care poate fi executat sau
poate fi inclus într -o altă aplicație. [SE03]
3.1 Achiziț ia de imagine
NI Vision Acquisition Software (VAS) este driverului software -ul National Instruments
folosi t pentru achiziționarea, afișarea, înregistrarea și monitorizarea imaginilor dintr -o gamă largă de
diferite tipuri de camere. Instalarea acestor drivere duce la adăugarea paletelor de funcții în mediul de
dezvoltare LabVIEW corespunzător fiecărui subset al API-ului driver.
Figura 3.3 NI-IMAQdx
Pentru a accesa API -urile driverului NI -IMAQ și NI -IMAQdx din cadrul LabVIEW, Vision
Acquisition Software (VAS) trebuie instalat în sistem după sistemul de dezvoltare LabVIEW. Dacă
ați inst alat cu succes LabVIEW pe calculator , opțiunile de instalare LabVIEW API afișate mai jos
trebuie să fie vizibile atunci când rulați programul de instalare Vision Acquisition Software (VAS).
Dacă Vision Acquisition Software (VAS) este instalat înaintea LabVIEW, este posibil ca acest e
opțiuni să nu fie vizibile.
25
Figura 3.4 Instalarea NI -VISION
Dacă aceste opțiuni lipsesc la instalarea programului Vision Acquisition Software (VAS), asigurați -vă
mai întâi că LabVIEW a fost instalat cu succes și că versiunea software -ului Vision Acquis ition
(VAS) pe care o instalați este compatibilă cu versiunea LabVIEW. [DIGNI]
Camera wireless
Pentru partea de achiziție a imaginii am folosit camera de la telefon. Pentr u a realiza acest
lucru am descă rcat pe telefon de pe Magazin Play aplicația IP Webca m. IP Webcam este o aplicaț ie
gratuită care iți transformă telefonul într -o cameră de rețea cu posibilitatea de a transmite live către
orice platformă.
După ce am descă rcat aplicația să cream o transmisiune live este foarte simplu. Tot ce trebuie să
facem este să selectăm din meniul principal Start server.
26
Figura 3.5 Meniu IP Webcam
Apăsăm pe Start server și o să se deschidă următoare fereastră:
Figura 3.6 Server IP Webcam
27
După ce am creat server -ul mai trebuie să realizăm încă o etapă până să putem fo losi camera în
Labview. Această etapă constă în descărcarea unui mic program numit Ip Camera Adapter.
Figura 3.7 Ip Camera Adapter
Introducem ip -ul obținut din server -ul creat în IP Webcam, apoi apăsăm pe Autodetect și Ok.
Acum camera este disponibilă ș i poate fi folosită în LabVIEW .
În continuare este prezentată partea de achiziție de imagine din programul prinicipal din LabVIEW .
Figura 3.8 Achiziție de imagine
28
IMAQdx Open Camera VI
Deschide o cameră foto, interoghează camera pentru capacitățile sale, încarcă un fișier de
configurare a camerei și creează o referință unică la camer ă. Utilizați IMAQdx Close Camera VI când
ați terminat cu referința.
Figura 3.9 Blocul Open Camera VI
Terminalul Camera Control Mode este modul de control al camerei utilizat e în timpul
transmisiei imaginilor. Deschideți o cameră foto în modul controler pentru a configura în mod activ și
pentru a obține date de imagine. Deschideți o cameră în modul ascultător pentru a obține în mod pasiv
date de imagine dintr -o sesiune care a fost deschisă în modul controler pe o altă gazdă sau alt
computer țintă. Valoarea implicită este Controller.
Session In specifică numele camerei pe care doriți să o deschideți. Valoarea implicită este cam0.
Terminalul Error in descrie starea erorii înaint e de executarea acestui VI sau a funcției.
Implicit nu este o eroare. Dacă a apărut o eroare înainte de executarea acestui VI sau a funcției, VI -ul
sau funcția trec valoarea error in la error out. Acest VI sau funcția rulează în mod normal numai dacă
nu a apărut nici o eroare înainte de executarea acestui VI sau a funcției. Dacă apare o eroare în timpul
executării acestui VI sau a unei funcții, rulează în mod normal și își stabilește propria eroare în error
out. Utilizați Simple Error Handler sau General E rror Handler VIs pentru a afișa descrierea codului de
eroare. Utilizați intrarea erorii și iesirea erorii pentru a verifica erorile și pentru a specifica ordinea de
execuție prin cablarea error out de la un nod la o eroare a nodului următor. Explain Error (sau Explain
Avertisment) oferă mai multe informații despre eroarea afișată.
-Starea booleană este fie TRUE (X) pentru o eroare, fie FALSE (checkmark) pentru nici o eroare sau
avertisment
-Intrarea codului identifică eroarea sau avertismentul
29
-Stringul sur să descrie originea erorii sau a avertismentului.
Session Out este o referință unică la camera foto. Session Out este aceeași cu Session In.
Terminalul error out conține informații despre eroare. Dacă error in indică faptul că a apărut
o eroare înainte ca aceast VI sau funcție să funcționeze, error out conține aceleași informații de
eroare. În caz contrar, error out descrie starea de eroare pe care o produce acest VI. Opțiunea pop -up
Explain Error (sau Explain Warning) oferă mai multe informații despre ero area afișată. [LABVH]
IMAQdx Configure Grab VI
Configurează și începe o achiziție de captură. O captură efectuează o achiziție care realizează
o buclă continuă pe un inel de buffere. Utilizați captura VI pentru achiziția de imagini de mare viteză.
Utilizaț i IMAQdx Grab VI pentru a copia o imagine din buffer. Dacă apelați acest VI înainte de a
apela IMAQdx Open Camera VI, IMAQdx Configure Grab VI folosește cam0 în mod implicit.
Utilizați IMAQdx Unconfigure Acquisition VI pentru a dezinstala achiziția.
Figu ra 3.10 blocul IMAQdx Configure Grab VI
Terminalul Session In este o referință unică la camera, pe care o puteți obține cu ajutorul aplicației
IMAQdx Open Camera VI.
Terminalul Error in descrie starea erorii înainte de executarea acestui VI sau a funcției.
Implicit nu este o eroare. Dacă a apărut o eroare înainte de executarea acestui VI sau a funcției, VI -ul
sau funcția trec valoarea error in la error out. Acest VI sau funcția rulează în mod normal numai dacă
nu a apărut nici o eroare înainte de executare a acestui VI sau a funcției. Dacă apare o eroare în timpul
executării acestui VI sau a unei funcții, rulează în mod normal și își stabilește propria eroare în error
out. Utilizați Simple Error Handler sau General Error Handler VIs pentru a afișa descrierea codului de
eroare. Utilizați intrarea erorii și iesirea erorii pentru a verifica erorile și pentru a specifica ordinea de
30
execuție prin cablarea error out de la un nod la o eroare a nodului următor. Explain Error (sau Explain
Avertisment) oferă mai multe informații despre eroarea afișată.
Session Out este o referință unică la camera foto. Session Out este aceeași cu Session In.
Terminalul error out conține informații despre eroare. Dacă error in indică faptul că a apărut
o eroare înainte ca aceast VI sau f uncție să funcționeze, error out conține aceleași informații de eroare.
În caz contrar, error out descrie starea de eroare pe care o produce acest VI. Opțiunea pop -up Explain
Error (sau Explain Warning) oferă mai multe informații despre eroarea afișată. [LABVH]
IMAQdx Grab2 VI
Achiziționează cel mai recent cadru în Image Out. Apelați acest VI numai după ce apelați
IMAQdx Configure Grab.vi. Dacă tipul imaginii nu se potrivește cu formatul video al camerei, acest
VI modifică tipul de imagine într -un format ad ecvat.
Figura 3.11 IMAQdx Grab2 VI
Terminalul Timeout (ms) specifică timpul, în milisecunde, pentru a aștepta ca imaginea solicitată să
devină disponibilă. Valoarea implicită este 5000. O valoare de -1 indică să aștepte pe termen
nelimitat. O valoare de -2 indică folosirea valorii atributului Timeout în locul acestui parametru.
Session In este o referință unică la camera, pe care o puteți obține cu IMAQdx Open Camera VI.
Terminalul Image In este referința la imaginea care primește datele pixelului captura t.
Wait for Next Buffer? (Yes) dacă valoarea este Da, driverul va aștepta următorul buffer disponibil.
Dacă terminalul Wait for Next Buffer? daca valoarea este Nu, driverul nu va aștepta următorul buffer
disponibil și, în schimb, va returna ultimul buffer achiziționat.
31
Session Out este o referință unică la camera foto. Session Out este aceeași cu Session In.
Error in descrie starea erorii înainte de executarea acestui VI sau a funcției. Implicit nu este o
eroare. Dacă a apărut o eroare înainte de executare a acestui VI sau a funcției, VI -ul sau funcția trec
valoarea error in la error out. Acest VI sau funcția rulează în mod normal numai dacă nu a apărut nici
o eroare înainte de executarea acestui VI sau a funcției. Dacă apare o eroare în timpul executării
acestui VI sau a unei funcții, rulează în mod normal și își stabilește propria eroare în error out.
Utilizați Simple Error Handler sau General Error Handler VIs pentru a afișa descrierea codului de
eroare. Utilizați intrarea erorii și iesirea erorii pentru a verifica erorile și pentru a specifica ordinea de
execuție prin cablarea error out de la un nod la o eroare a nodului următor. Explain Error (sau Explain
Avertisment) oferă mai multe informații despre eroarea afișată.
Image Out este referința la imaginea capturată.
Terminalul Error out conține informații despre eroare. Dacă error in indică faptul că a apărut
o eroare înainte ca aceast VI sau funcție să funcționeze, error out conține aceleași informații de eroare.
În caz contrar, error out descrie starea d e eroare pe care o produce acest VI. Opțiunea pop -up Explain
Error (sau Explain Warning) oferă mai multe informații despre eroarea afișată. [LABVH]
IMAQdx Close Camera VI
Oprește o achiziție în curs, eliberează resursele asociate unei achiziții și închide sesiunea de
cameră specificată.
Figura 3.12 IMAQdx Close Camera VI
Session In este o referință unică la camera, pe care o puteți obține cu IMAQdx Open Camera VI.
Error in descrie starea erorii înainte de executarea acestui VI sau a funcției. Implicit nu este o
eroare. Dacă a apărut o eroare înainte de executarea acestui VI sau a funcției, VI -ul sau funcția trec
valoarea error in la error out. Acest VI sau funcția rulează în mod normal numai dacă nu a apărut nici
32
o eroare înainte de executarea acestui VI sau a funcției. Dacă apare o eroare în timpul executării
acestui VI sau a unei funcții, rulează în mod normal și își stabilește propria eroare în error out.
Utilizați Simple Error Handler sau General Error Handler VIs pentru a afișa descrierea codului de
eroare. Utilizați intrarea erorii și iesirea erorii pentru a verifica erorile și pentru a specifica ordinea de
execuție prin cablarea error out de la un nod la o eroare a nodului următor. Explain Error (sau Explain
Avertisment) oferă mai multe informații d espre eroarea afișată.
Error out conține informații despre eroare. Dacă error in indică faptul că a apărut o eroare
înainte ca aceast VI sau funcție să funcționeze, error out conține aceleași informații de eroare. În caz
contrar, error out descrie starea d e eroare pe care o produce acest VI. Opțiunea pop -up Explain Error
(sau Explain Warning) oferă mai multe informații despre eroarea afișată. [LABVH]
IMAQ Create VI
Creează o locație de memorie temporară pentru o imagine. Utilizați IMAQ Create împreună
cu IM AQ Dispose VI pentru a crea sau elimina imaginile NI Vision în LabVIEW.
Figura 3.13 IMAQ Create VI
Terminalul Border Size determină lățimea, în pixeli, a marginii pentru a putea fi creata în
jurul unei imagini. Acești pixeli sunt utilizați numai pentru V I-uri specifice. Creați o margine la
începutul aplicației voastre, dacă o imagine urmează să fie procesată ulterior utilizând funcții care
necesită o margine (de exemplu, etichetare și morfologie). Valoarea prestabilită a marginii este 3. Cu
o margine de t rei pixeli, puteți utiliza kernel -uri de până la 7 × 7 fără modificări. Dacă intenționați să
utilizați kernel -uri mai mari de 7 × 7 în procesul dvs., specificați o margine mai mare atunci când
creați imaginea.
Terminalul Image Name este numele asociat imag inii create. Fiecare imagine creată trebuie să aibă un
nume unic.
33
Error in descrie starea erorii înainte de executarea acestui VI sau a funcției. Implicit nu este o
eroare. Dacă a apărut o eroare înainte de executarea acestui VI sau a funcției, VI -ul sau f uncția trec
valoarea error in la error out. Acest VI sau funcția rulează în mod normal numai dacă nu a apărut nici
o eroare înainte de executarea acestui VI sau a funcției. Dacă apare o eroare în timpul executării
acestui VI sau a unei funcții, rulează în mod normal și își stabilește propria eroare în error out.
Utilizați Simple Error Handler sau General Error Handler VIs pentru a afișa descrierea codului de
eroare. Utilizați intrarea erorii și iesirea erorii pentru a verifica erorile și pentru a specifica ordinea de
execuție prin cablarea error out de la un nod la o eroare a nodului următor. Explain Error (sau Explain
Avertisment) oferă mai multe informații despre eroarea afișată.
Terminalul Image Type specifică tipul imaginii. Alegeți una dintre următoare le valori:
Figura 3.14 Tipurile de imagine
Terminalul New Image este referința pentru imagine care este furnizată ca intrare pentru toate
funcțiile ulterioare (în aval) utilizate de NI Vision. Imagini multiple pot fi create într -o aplicație
LabVIEW. [LAB VH]
34
3.3 Procesare a de imagine
În cele ce urmeaza este prezentată partea de procesare de imagine a programului principal.
Figura 3.15 Programul pentru procesarea de imagine
IMAQ ColorLearn VI
Extrage caracteristicile de culoare ale unei imagini, care p ot fi utilizate pentru potrivirea
culorilor sau alte aplicații legate de informația de culoare, cum ar fi identificarea culorilor și
segmentarea imaginilor color.
Figura 3.16 IMAQ ColorLearn VI
35
ROI Descriptor este un descriptor care indică regiunile din imagine care conțin culorile pe
care doriți să le învățați. Dacă Descriptorul ROI conține mai multe regiuni, VI -ul acumulează
informații de culoare în fiecare regiune înainte de a învăța. Dacă Descriptorul ROI este gol sau nu este
conectat, VI -ul consideră întreaga imagine ca o singură regiune.
Image este o referință la imaginea coloră din care doriți să aflați informații despre culoare.
Color Sensitivity specifică sensibilitatea informațiil or despre culoare din imagine. Î n modul de bază
este scăzută (low). Trebuie setată pe ridicată (High) cand trebuie dis tinse culori apropiate ca nuanță .
Terminalul Error In descrie starea erorii înainte de executarea acestui VI sau a funcției.
Implicit nu este o eroare. Dacă a apărut o eroare înainte de executarea acestui VI sau a funcției, VI sau
funcția trece valoare a erorii de intrare la er oarea de iesire. Aceast VI sau funcție rulează în mod
normal numai dacă nu a apărut nici o eroare înainte de executarea acestui VI sau a funcției. Dacă
apare o eroare în timpul execută rii acestui VI sau a unei funcții, rulează în mod normal și își stabilește
propria eroare în eroarea de iesire. Utilizați Simple Error Handler sau General Error Handler VI
pentru a afișa descrierea codului de eroare.
Learn Saturation Threshold specifică v aloarea de prag pentru a distinge două culori cu aceeași
valoare de nuanță. Valoare de baza este 80.
Color Spectrum returnează caracteristicile de culoare din regiunea imaginii.
Terminalul error out conține informații despre eroare. Dacă error in indică fa ptul că a apărut
o eroare înainte ca aceast VI sau funcție să funcționeze, error out conține aceleași informații de
eroare. În caz contrar, error out descrie starea de eroare pe care o produce acest VI. Opțiunea pop -up
Explain Error (sau Explain Warning) oferă mai multe informații despre eroarea afișată. [LABVH]
Index Array Function
Returnează elementul sau subșirul unui ș ir de n dimensiuni de la indexul ales. Când conectați
sirul la această funcție, funcția se redimensionează automat pentru a afișa intrări le de index pentru
fiecare dimensiune din șir pe care le legați la matricea n -dimensională. De asemenea, puteți adăuga
elemente suplimentare sau te rminale subș ir prin redimensionarea funcției.
36
Figura 3. 17 Index Array Function
N-dimension array poate fi u n șir n-dimensional de orice tip. Dacă șirul n -dimensional este
lipsit de elemente, elementul sau sub șirul returnează valoarea implicită a tipului de date definit pentru
șir.
Index 0..n -1 specifică un număr care se referă la o locație din șirul de intrări . LabVIEW oferă
automat o intrare index pentru fiecare dimensiune a șirului.
Comportament pentru valori din afara domeniului: Daca indexul este mai mic de zero sau mai
mare de dimensiunea șirului, functia va returna valoarea de baza a tipului de date defin it pentru șir.
Element or subarray are acela și tip de date ca elementele din șirul n -dimensional. [LABVH]
In Range and Coerce Function
Determină dacă x se încadrează într -un interval specificat de intrările de limită superioară și
de limită inferioară și o ptional forțează valoarea să se încadreze în interval. Funcț ia execută
constrangerea numai î n modul Compare Elements. Această funcție acceptă valorile de tip timp dacă
toate intrările sunt valori tip timp.
Figura 3.18 In Range and Coerce Function
Upper l imit, x, și lower limit ar trebui să aibă, de obicei, aceeași structură de date, fie șir, fie
cluster, dar pot avea reprezentări numerice diferite. De exemplu, dacă schimbați unul dintre tipurile de
date într -un șir, trebuie să modificați tipurile de date rămase în șiruri pentru a evita firele
37
rupte. Coerced(x) returneaza valoarea constrans ă sau neschibat ă a lui x. Daca x se afl ă între lower limit
și upperlimit sau dac ă funcția este în modul Compare Aggregates, valoarea r ămâne neschimbat ă.
[LABVH ]
Spectrul de culoare
Spectrul de culoare reprezintă informația tridimensională a culorii asociată cu o imagine sau
cu regiunea dintr -o imagine într -o formă concisă și unidimensională care poate fi folosită de softerul
de procesare a culorii de la IMAQ Vision. [NIVCM ]
Spatiul de culoare folosit pentru generarea spectrului
Spectrul culorii reprezintă distribuția de culoare a unei imagini în spațiul HSL, că în Figura
3.19. Dacă imaginea de intrare este în format RGB, ea este mai întâi convertită în formatul HSL, iar
spectrul de culoare este calculat din spațiul HSL. Folosind direct imagini HSL, precum cele obținute
de la dispozitivul de achiziție IMAQ PCI cu un convertor RGB la HSL integrat, îmbunătățește viteza
de operare.
Figura 3.19 Spaț iul de culoare HSL
38
Culoril e reprezentate în modelul HSL sunt ușor de cuantificat de către noi. În spațiul HSL
componenta intensității este separată de informația culorii. Această caracteristică conduce la o
reprezentare mai robustă a colorii fiind independentă de intensitatea varia ție luminii. Planul
cromaticității nu poate fi folosit pentru reprezentarea culorilor alb și negru, care sunt pentru multe
aplicații vizuale culori de fundal. [NIVCM]
Generarea spectrului de culoare
Fiecare element din sirul spectrului de culoare corespund e unui bin de culori din spatiul HSL.
Ultimele doua elemente ale sirului reprezinta culoril e negru, respectiv alb. Figura 3.20 ilustreaza cum
spatiul HSL este divizat in bini. Spatiul nuantelor este divizat intr -un numar egal de sectoare, iar
fiecare secto r este divizat in continuare in doua parti. O parte reprezinta valori ridicate de saturatie, iar
cealalta valori scazute de saturatie. Fiecare dintre aceste parti corespunde unui bin de culoare.
Figura 3.20 Spațiul HSL divizat în sectoare ș i bini
Paramet rul de sensibilitate al culorii determină numărul de sectoare în care este divizat spațiul
nuanței. Figura a arată spațiul de culoare al nuanței când luminescența este egală cu 128. Figura b
arată spațiul nuanței divizat într -un număr de sectoare, în funcț ie de sensibilitatea culorii dorite.
Figura c arată fiecare sector divizat mai departe într -un bin de saturație cu nivel înalt sau cu nivel
scăzut. Pragul de saturație determină raza cercului interior ce separă fiecare sector în bini.
39
Figura 3 .21 arată cor espondentul dintre elementele spectrului de culoare și binii din spațiul culorii.
Primul element din șirul spectrului de culoare partea de saturație înalta din primul sector, al doilea
element reprezintă partea de saturație scăzută, al treilea element part ea înalta a saturației din al doilea
sector și așa mai departe. Dacă sunt n bini în spațiul culorii, șirul de culoare al spectrului conține n + 2
elemente. Ultimele două componente din spectrul de culoare reprezentând culorile negru și alb.
Figura 3 .21 R elația dintre spațiul de culoare al nuanțelor și ș irul spectrului de culoare
Un spectru de culoare cu un număr mare de bini reprezintă informația culorii într -o imagine
mai detaliată decât un spectru cu mai puțini bini. În IMAQ Vision poți să alegi între trei setări de
sensibilitate a culorii: scăzut, mediu și înalt.
Cea scăzută divide spațiul de culoare al nuanțelor în 7 sectoare, având un total de 2 x 7 +2 =
16 bini. Setarea medie divide spațiul de culoare al nuanțelor în 14 sectoare, oferind un total de 2 × 14
+ 2 = 30 bini, iar cea înaltă divide spațiul de culoare al nuanțelor în 28 de sectoare obținând un total
de 2 × 28 + 2 = 58 bini . [NIVCM]
40
4 PROIECTAREA SISTEMULUI DE CONTROL
Un sistem de reglare se definește ca fiind un sistem dinamic ce include un proces tehnic unde
într-un circuit închis se influențeză valoarea unei mărimi fizice. Aici este importantă readucerea
valorii actuale a mărimii reglate la elementul de control (regulator), care poate astfel în mod continuu
să reacționeze la abaterile de l a valoarea impusă (cerută). Este vorba de buclă de reacție negativă.
Mărimea de ieșire a sistemului de reglare trebuie să fie în mod robust și consecvent asigurată
și reglată contra mărimilor perturbatoare. Este sarcina regulatorului să stabilească comport area statică
și dinamică în timp a mărimii reglate în raport cu cererile impuse. În cazuri necesare, pentru
satisfacerea unor solicitări deosebite a bunei funcționări sunt necesare structuri suplimentare la
sistemul de control și reglare. Sunt situații, în care un sistem de reglare stabil, poate să devină instabil
la modificări ale valorilor parametrilor, chiar dacă părți componenente ale sistemului, luate separat,
rămân stabile. Invers, se poate întâmpla ca un sistem de reglare să rămână stabil și când părț i
compo nente ale sale devin instabile. Prin electronica modernă s -a reușit realizarea unor foarte
complexe structuri de sisteme de reglare, care rezolvă probleme economice diverse. De multe ori se
implementează în loc de regulatoare analogice, regulatoare d igitale care sunt frecvent acompaniate de
aparatură de măsură digitală și elemente de execuție tot digitale. Semnalele digitale sunt semnale
discrete în timp și în valoare. [SRC]
4.1 Implementare semafor
Figura 4.1 Semaforul
41
Pentru realizarea semaforului am folosit un microcontrol er Arduino UNO, 2 leduri, iar pentru
alimentare o ba terie de 9 v care este conectată la Arduino.
Figura 4.2 Schema semaforului
Pe microcontrol er-ul Arduino UNO am încă rcat un cod simplu care aprinde ș i stinge 2 leduri.
Interval ul pentru cele 2 leduri este de 10 secunde pentru culoare roș ie, iar pentru culoare verde este de
4 secunde.
Figura 4.3 Programul semaforului în Arduino
42
4.2 Implementare urmă rire traseu
Pentru a face mini -vehiculul să meargă pe linie am folosit o lege de tip PID.
Prezentare generală
În practica industrială a reglării automate s-au impus așa numitele legi de reglare de tip PID
(Proporțional -Integrator -Derivator) sau elemente de tip PID, care satisfac în majoritatea situațiilor
cerințele t ehnice impuse sist emelor de reglare convențională. Se pot utiliza dive rsele combinații ale
celor trei componente: P = proporțional; I = integrator ; PI = proporțional -integrator; D = derivator,
ideal și real, PD = propor țional -derivator ideal și real, PID=Proporțional -integr ator-derivator, ideal și
real în diferite variante.
Prin utilizarea acestor legi tipizate în ca drul unor regulatoare tipizate, proiectarea
dimensional -valorică a legii de reglar e se reduce la alegerea tipului de lege și poziționarea unor
butoane prin care se prescriu valorile parametrilor acestor legi rezultate în urma proi ectării analitice a
sistemului.
Nu se poate stabili precis efectul fiecărei co mponente a unei legi de tip PID asupra calității
unui SRA, deoarece acestea depind de struc tura sistemului, de dinamica instalației automatizate.
Totuși se pot face următoarele precizări:
– Componenta proporțională, (exprimată pri n factorul de proporționalitate KR), determină o comandă
proporțională cu eroa rea sistemului. Cu cât factorul de proporționalitate est e mai mare cu atât precizi a
sistemului în regim staționar este mai bună dar se reduce rezerva de stabil itate putând conduce în
anumite cazuri la pierderea stabilității sistemului.
– Componenta integrala, exprimată prin co nstanta de timp de integrare Ti determină o comandă
proporțională cu integrala erorii sistemului din care cauză, un regim staționar este posibil numai dacă
această eroare este nulă. Existența unei componente I într -o lege de reglare e ste un indiciu clar că
precizia sistemului în regim stați onar (dacă se poate obține un astfel de regim) este infinită. În regim
staționar, de cele mai m ulte ori componenta I determină creșterea oscilabilității răspunsului adică
reducerea rezervei de stabilitate.
43
– Componenta derivativă, exprimată prin c onstanta de timp de derivare Td determină o comandă
proporțională cu derivata erorii sistemului. Din această cauză, componenta D realizează o anticipa re a
evoluției erorii permițând realizarea unor corecții care reduc oscilabilita tea răspunsului. Nu are nici -un
efect în regim staționar. [SLRA00]
Deoarece aceste tipuri de comportări se întâlnesc și la alte sisteme nu numai în cazul regulatoarelor, în
cele ce ur mează se vor considera intrarea
ieșirea
iar funcția de transfer
.
Pentru proce sul nostru matricea de senzori când urmăreș te linia are urmă toarele seturi de valori:
0 1 0 mini-vehiculul merge drept
1 1 0 mini-vehiculul a deviat la dreapta cu 0.015 m
1 0 0 mini-vehiculul a deviat la dreapta cu 0.030 m
0 1 1 mini-vehicul ul a deviat la stanga cu -0.015 m
0 0 1 mini-vehiculul a deviat la stanga cu -0.030 m
Avem urmă toarele erori pentru fiecare caz particular al senzorilor:
1 0 1 eroarea = 0
0 0 1 eroarea = 0.015
0 1 1 eroarea = 0.030
1 0 0 eroarea = -0.015
1 1 0 eroarea = -0.030
Senzorii se definesc astfel :
int sensor[3]={0, 0, 0};
sensor[0]=digitalRead(A0);
delay(10);
sensor[1]=digitalRead(A1);
44
delay(10);
sensor[2]=digitalRead(A2);
delay(10);
Setarea erorii se efectuază în felul următor:
if((sensor[0]==1)&&(sen sor[1]==0)&&(sensor[2]==1))
{
error = 0;
}
if((sensor[0]==0)&&(sensor[1]==0)&&(sensor[2]==1))
{
error = 0.015 ;
}
if((sensor[0]==0)&&(sensor[1]==1)&&(sensor[2]==1))
{
error = 0.030 ;
}
if((sensor[0]==1)&&(sensor[1]==0)&&(sensor[ 2]==0))
{
error = -0.015 ;
}
if((sensor[0]==1)&&(sensor[1]==1)&&(sensor[2]==0))
{
error = -0.030 ;
}
45
Controlul P
Figura 4.4 Exemplu de c ontrol Proporțional
Deoarece folo sind o reglare proporțională mașinuța oscilează, am recurs la controlul PID.
Controlul PID
Sistemul calculează eroarea sau deviaț ia de la punctul prestabilit, măsurând valoarea curentă
cu ajutorul senzorilor. Pentru a se reveni la punctul prestabi lit eroarea trebuie minimizată ș i de
preferat adu să la valoarea 0. Eroare = 0
Eroare = 0.015
Eroare = 0.015
Eroare = 0 Eroare = 0
Eroare = -0.015
Eroare = -0.015
Eroare = 0
46
Figura 4.5 Schemă PID
Figura 4.6 Bucla de reglare pentru procesul nostru
Implementarea PID -ului
Pasul I: Determi narea erorii. Aceasta este egală cu diferența dintre punctul prestabilit și punctul
curent.
47
Pasul II: Termenul proporț ional (P). Este proporțional cu eroarea (P = eroarea). Este responsabil cu
magnitudinea de schimbări necesare pentru a ajunge la punctul setat.
Pasul III: Termenul integrator (I). Reprezintă suma tuturor erorilor anterioare (I = I +eroarea). Este
folosit p entru eliminarea erorii sistematice. Chi ar dacă motoarele primesc acelaș i pwm tot nu o să
mearga identic din cauză că au diverse toleranțe de fabricare. Aceast ă eroare dintre motoare se
numeș te eroare sistematică. Integratorul crează un ofset pentru a redu ce sau elimina eroarea
sistematică.
Pasul IV: Termenul derivator (D). Acest termen reprezintă diferența dintre eroarea instantanee de la
punctul de setare ș i eroarea din momentul anterior (D = eroare – eroarea anterioară). Termenul
derivat or este utilizat pentru a reduce depășirea punctului setat.
Ecuația este:
.
Kp este constanta folosită pentru a varia magnitudinea schimbă rii necesară pentru atingerea punctului
prestabilit.
Ki este constata ce modifică rata la care să se efectueze schimbar ea pentru a se ajunge la punctul de
echilibru.
Kd este constata ce variază stabilitatea sistemului.
După paș ii anteriori s -au implementat urmatoarele funcții:
void calculatePID()
{
P = error;
I = I + error;
D = error -previousError;
PIDvalue = (kp*P ) + (ki*I) + (kd*D);
previousError = error;
48
}
Funcția de mai sus efectuează calculele pentru aflarea PID -ului.
void motorPIDcontrol()
{
int leftMotorSpeed = leftBaseSpeed – PIDvalue;
int rightMotorSpeed = rightBaseSpeed + PIDvalue;
if(righ tMotorSpeed > rightMaxSpeed)
rightMotorSpeed = rightMaxSpeed;
if(leftMotorSpeed > leftMaxSpeed)
leftMotorSpeed = leftMaxSpeed;
analogWrite(5,leftMotorSpeed); //Left Motor Speed
analogWrite(10,rightMotorSpeed); //Right Motor Speed
digitalWrite(6,LOW);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
}
Această funcție modifică pwm -ul motoarelo r în concordanță cu valoarea obținută în urma calculării
PID-ului. [PIDCTR]
49
5 SISTEM UL DE COMUNICAȚIE ÎN REȚ EA
Unul dintre scopurile principale ale acestui pr oiect este c onexiunea la modulul Bluetooth ș i
transmisia valorilor ci tite în LabVIEW .
5.1 Tehnologia Bluetooth
În prezent există multe exemple de comunicație digitală pe distanțe scurte în ceea ce privește
computerele, dispozitivele de comunicație în general. O mare parte din această comunicație se face
prin mijlocirea legăturilor pe fire, cabluri. Aceste cabluri conectează între ele o multitudine de
dispozitive făcând uz de o mare varietate de conectori cu di verse forme, mărimi și număr de pini.
Fiind necesar un cablu între fiecare două dispozitive aceasta poate uneori da bătăi de cap
utilizatorului care se descurcă greu într -un asemenea păienjeniș.Folosind tehnologia Bluetooth se
înlătură acest neajuns întru -cât dispozitivele pot comunica printr -o interfață aer și nu prin fire,
folosind unde radio pentru a transmite și recepționa date. Această tehnologie este special proiectată
pentru comunicații pe distanțe scurte (nominal 10 m), ceea ce are ca rezultat un co nsum foarte redus
de putere, făcând -o astfel potrivită pentru a fi utilizată de către dispozitive mici, portabile,care sunt
alimentate de obicei cu baterii.
Tehnologia bluetooth prezintă un sistem de comunicație, fără fir, cu rază mica de acțiune, care
intenționează să înlocuiască o comunicarea bazată pe conectare cablată, cu fir, prin intermediul căreia
se pot transmite voce și date.
Se remarcă din ce în ce mai mult o tendință de întrepătrundere a domeniului computerelor cu
cel al telecomunicațiilor, linii le tradiționale din acestea devenind tot mai puțin distincte. Un
bun exemplu este cel al telefonului mobil care, la bază, este utilizat pentru aplicații de voce dar acum
poate fi folosit și pentru aplicații de date ca accesul la informație sau browsing. Un ele tehnologii de
comunicație wireless sunt proiectate să transporte doar voce, pe când altele tratează doar trafic de
date. Prin Bluetooth se pot transporta atât date cât și voce și în felul acesta este o tehnologie ideală
pentru unificarea acestor “două lumi” permițând tuturor tipurilor de dispositive să comunice, ele
transportând fie voce, fie date, fie pe amândouă.
50
Trăsăturile de bază ale sistemelor de comunicație bluetooth sunt: robustețea,consumul scăzut
de energie și pretul mic. Multe dintre caracter isticile de bază ale specificațiilor Bluetooth sunt
opționale, implementarea reperezentând diferența dintre produse.
Bluetooth -ul este un set de specificații bazate pe undele radio, pentru o rețea wireless
personală (PAN – personal area network) și creează o cale prin care sepoate realiza schimbul de
informații între aparate precum telefoane mobile, laptop -uri, calculatoare personale, imprimante,
camere digitale și console video printr -ofrecvență radio sigură și de rază mică.
Prin intermediul acestor rețele pot fi transferate în general date sau semnal vocal. Mai j os sunt
prezentate standard ele BT în ordinea apariției:
Bluetooth 1.2 – Noiembrie 2003;
Bluetooth 2.0 + EDR (Enhanced Data Rate) – Noiembrie 2004;
Bluetooth 2.1 + EDR – Iulie 2007;
Bluetooth 3.0 + HS (High Speed) – Aprilie 2009;
Bluetooth 4.0 LE (Low Energy);
Bluetooth operează în banda de frecvențe 2400 – 2483,5 MHz , bandă ce poate fi utilizată de
oricine fără a deține licență de operare. Tot în această bandă operează și standardul wireless IEEE
802.11b/g .
Bluetooth folosește tehnologia radio cu salt de frecvență – FHSS (Frequency Hopping Spread
Spectrum) , tehnologie ce presupune utilizarea după un algoritm de salt predefinit, a mai multor
frecvențe discrete dintr -un set dat. FHSS are proprietatea de a reduce puternic interferențele și erorile
de transmisie.
Bluetooth 1.2 și 2.1 , utilizează 79 canale radio cu banda de 1 MHz ce sunt schimbate de 1600 de
ori pe secundă pentru legăturile de voce/date și de 3200 de ori pe secundă atunci când se efectue ază
scanarea spectrului pentru descoperirea altor dispozitive.
Un canal este utilizat 625 microsecunde, după care se efectuează saltul conform secvenței
pseudoaleatoare.
51
Pentru a reduce consumul și pentru a putea emite în raza maximă pentru care este pro iectat
dispozitivul respectiv, puterea semnalului utilizat în rețelele Bluetooth este adaptivă, ceea ce
înseamnă că, nivelul acesteia depinde de condițiile de propagare.
Fiecare dispozitiv poate determina nivelul semnalului recepționat astfel încât, poate cere altor
dispozitive din rețea să scadă sau să crească puterea relativă a semnalului emis pentru a fi atinsă o
recepție optimă. Puterea adaptivă și saltul de frecvență fac ca tehnologia Bluetooth să fie mult mai
greu de interceptat în raport cu o tehno logie în frecvență fixă cum este IEEE 802.11b/g .
Funcție de puterea emisă și implicit a razei maxime de acțiune, dispozitivele Bluetooth sunt grupate în
trei clase:
Bluetooth Clasa 1 : distanța maximă de acțiune de până la 100 m , puterea emisă 100 mW , disp ozitive
din această clasă – adaptoare USB , puncte de acces;
Bluetooth Clasa 2 : distanța maximă de acțiune de până la 10 m , puterea emisă 2,5 mW , dispozitive
din această clasă – telefoane mobile, adaptoare Bluetooth ;
Bluetooth Clasa 3 : distanța maximă de acțiune de până la 1 m, puterea emisă 1 mW , dispozitive din
această clasă – adaptoare Bluetooth ;
Dispozitivele Bluetooth suportă mai multe viteze de transmisie funcție de standard -ul în care
funcționează. Deoarece toate standardele sunt concepute în ideea compatibilității cu versiunile
precedente, orice dispozitiv Bluetooth va putea comunica cu un altul dar cu o restricție legată de
viteza de transfer.
Dispozitivele Bluetooth 1.1 și 1.2 suportă viteze de transmisie de până la 1 Mbps –
standardul BR (Basic R ate) utilizând modulația GFSK .
Începând cu standardul 2.0 viteza de transfer a crescut la 3 Mbps – EBR (Enhanced Basic Rate )
datorită modulației 8DPSK .
Dispozitivele Bluetooth în standardul 3.0 – High Speed ating viteze de transfer de până la 24
Mbps folosind modulația OFDM .Standardul Bluetooth 4.0 LE (Low Energy ) permite viteze de
transfer de până la 1 Mpbs și raze de acțiune cu până la 30 % mai mari folosind puteri de emisie
de 10 ori mai mici decât standardele 1.1, 1.2 și 2.1. [TEHBT]
52
5.2 Modul Blueto oth HC -05
Figura 5.1 Modul Bluetooth HC -05
Caracteristici tehnice:
Tensiune de alimentare: 3.6 – 6V;
Curent consumat: maxim 30mA;
Pinii de I/O sunt compatibili pentru 3.3V (insa in testele noastre a functionat si la 5V);
Comuni că pe serială UART;
Baudrate: 9600 – 460800 bps;
Distanță de transmisie până la 10m;
Putere de transmisie: +4dBm;
Senzitivitate recepție: -80dBm.
Dimensiuni: 35.7 x 15.2 mm.
53
Modulul bluetooth HC -05 este unul de înaltă performanță și consumă foarte puțină e nergie. De
asemenea, dimensiunile acestuia sunt mici.
Produsul poate fi utilizat în proiectele dumneavoastră inovative unde aveți nevoie să transmiteți foarte
ușor date, dar nu prin cablu, la distanțe rezonabile, de până la 10m.
Un foarte întâlnit exemplu îl reprezintă comunicația între laptop și un robot de la care doriți să
culegeți date în timp real. De exemplu, puteți vedea cum se comportă un robot de tip line follower
chiar în timp ce merge pe traseu și să remediați anumite probleme.
Procedura pentru a intra î n modul AT este urmatoarea:
– se alimentează modulul
– se apasă pe butonul mic (nu e nevoie sa se men tina apasarea), ledul trebuie să î nceapă să clipească
rapid de aproximativ 5 ori pe secundă
– modulul intra î n modul AT cu baud rate de 9600 (car e poate fi modificat ulterior) . [BTHC]
5.3 Comunicarea di ntre LabVIEW , modulul Bluetooth ș i Arduino
Pentru comunicare a dintre LabVIEW și modulul Bluetooth am folosit VISA de la National
Instruments .
VISA ( Virtual Instrument Software Architecture ) este un standard de configurare,
programare și depanare a sistemelor de instrumentație , ce includ interfețe GPIB, VXI, PXI, Serial,
Ethernet și / sau USB. VISA oferă interfața de programare între mediile hardware și de dezvoltare
precum LabVIEW, LabWindows / CVI și Measurement Studio pentru Microsoft Visual Studio.
NI-VISA este implementarea de către National Instruments a standardului VISA I / O. NI –
VISA include biblioteci de software, utilități interactive precum NI I / O Trace și VISA Interactive
Control și p rograme de configurare prin intermediul Measurement & Automation Explorer pentru
toate nevoile tale de dezvoltare.
NI-VISA este standard pentru întreaga linie de produse National Instruments. Cu NI -VISA,
poti sa te simți încrezător că dezvoltarea software -ului tau nu va deveni depășită, deoarece interfața
hardware -ul de instrumentație trebuie să evolueze în viitor. [VISA]
54
În continuare am realizat u n program simplu care realizează legătura di ntre Labview, modulul
Bluetooth ș i Arduino. Programul aprinde u n led conectat la m icrocontrolerul arduino prin apă sarea
unui buton.
Figura 5.2 Conexiunea dintre LabVIEW și modulul B luetooth
Codul folosit pentru mi crocontrolerul arduino este urmă torul :
int led = 4;
void setup() {
Serial.begin(9600);
pinMode(led,O UTPUT);
}
void loop() {
if (Serial.available() > 0)
{
int dat a = Serial.read();
if (dat a == '0')
{
digitalWrite(led,LOW);
delay(5);
data = 0;
}
55
if (dat a == '1')
{
digitalWrite(led,HIGH);
delay(5);
data = 0;
}
} }
6 REZULTATE Ș I CONCLUZII
Prin această lucrare s -a dorit să se îmbunătațească cunoștiințele inginerești, gândirea analitică
și inventivitatea inginerească.
De-al lungul proiectului am întâmpinat diferite dificultăți, atât legate de pa rtea hardware, cât
și de partea software. După multă muncă și numeroase teste am reușit să depășesc problemele legate
de partea tehnică.
Exemplu de probleme î ntâmpinate la partea tehnică a fost găsirea unui suport pentru telefon.
Acesta trebuia să fie dest ul de ușor pentru a nu îngreuna deplasarea min i-vehiculului. Am găsit o
cameră web mai veche și i -am desprins suportul.
Una dintre probleme le principale legate de partea software a fost realiz area unei comunicații
cu LabVIEW . La început am folosit modulul WIFI ESP8266 , care este unul de buget. După
numeroase teste și săptămâni pierdute nu am reușit să realizez un pro gram care să comunice cu
LabVIEW . La final am optat pentru modulul Bluetooth HC -05, iar rezultatele au fost cele așteptate.
O altă problemă leg ată de partea software a fost aceea în legătură cu programul în Arduino. În
primul program aveam diferite probleme în terminarea treaseului, mai exa ct legate de curbele
traseului, a șa că am implementat o lege de reglare de tip PID și s -a simțit o diferență destul de mare.
Deoarece am folosit o cameră wireless (camera de la telefonul mobil) este necesară o
conexiune destul de puternică la internet pentru a nu avea delay atunci când mini -vehiculul ajunge la
semafor.
Mini -vehiculul are nevoie de niște parame trii pentru legea de reglare pentru a se deplasa pe
linie fără să oscileze . Acești parametrii se schimbă în funcție de cât de mult sunt consumate bateriile.
56
În continuare este prezentat mini -vehiculul în forma lui finală:
Figura 6.1 Mini -vehiculul final izat
57
2 BIBLIOGRAFIE
[NIVCM] – NI, IMAQ Vision Concepts Manual, 2000
[SE03 ] – Selișteanu, D., Ionete, C., P etre, E., Popescu , D., Șendrescu, D., GHID DE
PROGRAMARE ÎN LABVIEW APLICAȚII PENTRU PRELUCRAREA SEMNALELOR ,
Tipografia Univer sității din Craiova, 2003
[SLRA00] – Marin, C., Structuri si legi de reglare automata, Editura Universit aria Craiova,
ISBN: 973-8043 -96-8, 2000, Craiova, 2000, 276 pg.
58
3 REFERINȚE WEB
[ABU1] – https://www.arduino.cc/en/Main/ArduinoBoardUno
[BTHC] – https://www.optimusd igital.ro/wireless -bluetooth/153 -modul -bluetooth -master –
slave -hc-05-cu-adaptor.html?search_query=bluetooth&results=98
[DIGNI] – http://digital.ni.com/public.nsf/allkb /A451D3CCBB740716862578FC004DB392
[DMD1] – https://www.optimusdigital.ro/drivere -de-motoare -cu-perii/145 -driver -de-motoare –
dual-l298n.html?search_query=L298N&results=4
[LABVH ] – LabVIEW Help
[PIDCTR] – https://create.arduino.cc/projecthub/mjrobot/line -follower -robot -pid-control –
android -setup -e5113a
[PIMAG] – https://ro.scribd.com/doc/307108285/prelucrarea -imagini
[RT1 ] – „Understanding Real -Time for Measurement & Automation” by Jim Balent and
Tamra Kerns, National Instruments
[SRC] – https://ro.wikipedia.org/wiki/Sistem_de_control_%C8%99i_reglare
[TCRT1] – http://www.vishay.com/docs/83760/tcrt5000.pdf
[TEHBT] – https://www.scribd.com/document/47444548/Tehnologia -Bluetooth
[VISA] – https://www.ni.com/visa/
[W-ARDUI NO1] – http://en.wikipedia.org/wiki/Arduino
[W-ARDUI NO2] – http://en.wikipedia.org/wiki/Ard uino#History
[W-ARDUI NO3] – http://en.wikipedia.org/wiki/Arduino#Hardware
[W-ARDUI NO4] – http://en.wikipedia.org/wiki/Arduino#So ftware
59
A. CODUL SURSĂ
Declararea variabilelor și a funcțiilor:
#define rightMaxSpeed 200 // max speed of the robot
#define leftMaxSpeed 200 // max speed of the robot
#define rightBaseSpeed 100 // this is the speed at which the motors should spin when the robot is
perfectly on the line
#define leftBaseSpeed 100
int kp = 24.9;
int ki = 0.00015;
int kd = 25; //Note: Kp < Kd
int P = 0;
int I = 0;
int D = 0;
int error = 0;
int previousError = 0;
int PIDvalue = 0;
int sensor[3]={0, 0, 0};
void read_se nsor_values(void);
void calculatePID(void);
void motorPIDcontrol(void);
void mStop(void);
Funcția setup() ce realizează inițializarea componentelor :
void setup()
{
pinMode(5,OUTPUT); //PWM Pin 1
pinMode(10,OUTPUT); //PWM Pin 2
pinMode(6,OUTPUT); //Le ft Motor Pin 1
pinMode(7,OUTPUT); //Left Motor Pin 2
pinMode(8,OUTPUT); //Right Motor Pin 1
pinMode(9,OUTPUT); //Right Motor Pin 2
Serial.begin(9600); //Enable Serial Communications
}
Funcția principală a programului:
void loop()
{
read_sensor_v alues();
if (Serial.available() > 0)
{
int data = Serial.read();
60
if (data == '0')
{
mStop();
delay(5);
data = 0;
}
if (data == '1')
{
read_sensor_values();
delay(5);
data = 0;
}
}
}
Funcți a pentru citirea senzorilor si aflarea erorii:
void read_sensor_values()
{
sensor[0]=digitalRead(A0);
delay(10);
sensor[1]=digitalRead(A1);
delay(10);
sensor[2]=digitalRead(A2);
delay(10);
if((sensor[0]==1)&&(sensor[1]==0)&&(sensor[2]==1))
{
error = 0;
}
if((sensor[0]==0)&&(sensor[1]==0)&&(sensor[2]==1))
{
error = 1;
}
if((sensor[0]==0)&&(sensor[1]==1)&&(sensor[2]==1))
{
error = 2;
}
if((sensor[0]==1)&&(sensor[1]==0)&&(sensor[2]==0))
{
error = -1;
}
if((sensor[0]==1)&&(sensor[1]==1)&&(sensor[2]==0))
{
error = -2;
}
if((sensor[0]==0)&&(sensor[1]==0)&&(sensor[2]==0))
{
61
mStop();
}
if((sensor[0]==1)&&(sensor[1]==1)&&(sensor[2]==1))
{
mStop();
}
calculatePID();
}
Funcț ia de calcul a PID -ului:
void calculatePID()
{
P = error;
I = I + error;
D = error -previousError;
PIDvalue = (kp*P) + (ki*I) + (kd*D);
previousError = error;
motorPIDcontrol();
}
Funcția de setare a PWM -ului:
void motorPIDcontrol() {
int leftMotorSpeed = leftBaseSpeed – PIDvalue;
int rightMotorSpeed = rightBaseSpeed + PIDvalue;
if(rightMotorSpeed > rightMaxSpeed)
rightMotorSpeed = rightMaxSpeed;
if(leftMotorSpeed > leftMaxSpeed)
leftMotorSpeed = leftMaxSpeed;
analogWrite(5,leftMotorSpeed); //Left Motor Speed
analogWrite(10,rightMotorSpeed); //Right Motor Speed
digitalWrite(6,LOW);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
}
Funcția de oprire motoarelor:
void mStop() {
digitalWrite(6,LOW );
digitalWrite(7, LOW );
digitalWrite(8,LOW );
digitalWrite(9, LOW ); }
62
CD / DVD
Autorul atașează în această anexă obligatorie , versiunea electronică a aplicației, a acestei
lucrări, precum și prezentarea finală a tezei .
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: șef lucrări dr. ing. Popescu Ion -Marian Iulie 2017 CRAIOVA ii UNIVERSITATEA DIN CRAIOVA FACULTATEA DE AUTOMATICĂ, CALCULATOARE ȘI ELECTRONICĂ… [612511] (ID: 612511)
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.
