FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMANT IOAN SLAVICI TIMIȘOARA [305522]
FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMANT "IOAN SLAVICI" TIMIȘOARA
UNIVERSITATEA "IOAN SLAVICI" [anonimizat]: [anonimizat]. Mircea Vlăduțiu Furdui Alexandru
TIMIȘOARA
2019
FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMANT "IOAN SLAVICI" TIMIȘOARA
UNIVERSITATEA "IOAN SLAVICI" [anonimizat]: [anonimizat]. Mircea Vlăduțiu Furdui Alexandru
TIMIȘOARA
2019
UNIVERSITATEA DIN ORADEA
FACULTATEA de Inginerie Electrică și Tehnologia Informației
DEPARTAMENTUL Calculatoare și tehnologia informației
TEMA Aplicație bazată pe sortarea obiectelor după culori
Proiectul de Finalizare a studiilor a student: [anonimizat]: Furdui Alexandru
1). Tema proiectului de finalizare a studiilor: Aplicație bazată pe sortarea obiectelor după culori.
2). Termenul pentru predarea proiectului de diplomă: 31 mai 2019.
3). Elemente inițiale pentru elaborarea proiectului de finalizare a studiilor:
Documentația aferentă dezvoltării temei________________________________
Elementele inițiale ale lucrării________________________________________
________________________________________________________________
4). Conținutul proiectului de finalizare a studiilor:
Succint capitol introductiv cu precizarea domeniului căruia îi aparține lucrarea și a structurii acesteia. [anonimizat]; concluzii rezumative; lista surselor de literatură folosite; anexe.___________________________________________
5).Material grafic: [anonimizat], tabele și reprezentări grafice corespunzătoare rezultatelor experimentale._________________________
____________________________________________________________________________
____________________________________________________________________________
6). Locul de documentare pentru elaborarea proiectului de diplomă:
Intreprinderea sau biblioteca Universității de Vest și Biblioteca Universității "Politehnica" din Timișoara; internet.___________________________________________________________
___________________________________________________________________________
___________________________________________________________________________
7). Data emiterii temei: 20 octombrie 2018
Coordonatori științifici
(titlul științific și numele),
REFERAT
PRIVIND PROIECTUL DE DIPLOMĂ
A
ABSOLVENT: [anonimizat] / ABSOLVENT: [anonimizat] : Furdui Alexandru
DOMENIUL Calculatoare și tehnologia informației
SPECIALIZAREA Tehnologia informației
PROMOȚIA 2019
Titlul proiectului: Aplicație bazată pe sortarea obiectelor după culori
Structura proiectului:
1. Introducere
2. Schema bloc a aplicației
3. Construirea aplicației
4. Elemente software
5. Probleme apărute la punerea în funcțiune a aplicației. Măsurători
6. Concluzii
7. Bibliografie
9. Anexe
Aprecieri asupra conținutului proiectului de DIPLOMĂ (finalizare a studiilor), [anonimizat], actualitate, deficiențe
Lucrarea se caracterizează printr-o construcție echilibrată cu o bună ponderare între dezvoltarea noțiunilor teoretice și descrierea explicativă.
Lucrarea este corect divizată pe capitole și paragrafe, între care există o bună coerență.
Capitolele cuprind o descriere detaliată a modulelor hardware și software implicate în realizarea practică.
Autorul dezvoltă în mod corect elementele teoretice esențiale înșiruindu-le în lucrare doar în măsura în care contribuie la înțelegerea părții aplicative.
Structura lucrării aparține absolventului, acesta alegând o pondere de aproximativ 25% fundamentării teoretice, restul fiind atribuit dezvoltării aplicative
Aprecieri asupra proiectului (se va menționa: numărul titlurilor bibliografice consultate, frecvența notelor de subsol, calitatea și diversitatea surselor consultate; modul în care absolventul a prelucrat informațiile din surse teoretice)
Sunt utilizate referințe bibliografice de marcă în domeniu, totuși investigația de literatură de specialitate este limitată.
Sursele bibliografice sunt alese în mod corespunzător.
Materialul grafic este executat în mod îngrijit, fiind complementar părții redactate.
(se va menționa: opțional locul de documentare și modul în care absolventul a realizat cercetarea menționându-se contribuția autorului)
Autorul alege în mod corect sursele de literatură, lucrarea având la bază un număr de 17 titluri bibliografice. Informațiile prelucrate din surse teoretice sunt citate în mod corespunzător fiind inserați în lucrare doar pe măsură ce sunt utilizate.
Concluzii (coordonatorul proiectului trebuie să aprecieze valoarea proiectului întocmit, relevanța studiului întreprins, competențele absolventului, rigurozitatea pe parcursul elaborării proiectului, consecvența și seriozitatea de care a dat dovadă absolventul pe parcurs)
În baza celor mai sus menționate, apreciez ca lucrarea elaborată de absolvent este deosebit de valoroasă fiind bazata pe un amplu studiu de literatură de specialitate, absolventul dovedind reala competență în domeniu.
Redactarea proiectului respectă ………………………………………………….cerințele academice de redactare (părți, capitole, subcapitole, note de subsol și bibliografie).
Consider că proiectul îndeplinește/ nu îndeplinește condițiile pentru susținere în sesiunea de Examen de LICENȚĂ (finalizare a studiilor) din IULIE 2019 și propun acordarea notei ………………
Oradea,
Data Coordonator științific
Cuprins
1.Introducere
1.1.Motivația
În fiecare zi soluțiile senzoriale bazate pe detectarea de culori, simplifică procesul de producție pentru mii de companii de pe glob. Automatizarea criteriului de selectare la detectarea, sortarea sau controlarea diferitelor bunuri posedă un mare rol la operațiuni industriale cu grad mare sau mai puțin mare. Culoarea produselor sau ambalajele acestora se pot detecta precis cu ajutorul senzorului electronic de culoare.
Prima oară când am descoperit acest tip de aplicație a fost intr-o fabrică de produse din porțelan. Acolo exista un robot similar cu cel pe care îl voi descrie în ceea ce urmează, care in funcție de culoarea pe care trebuia să o aibă farfuria, știa în care dintre recipiente trebuie să pună substanța care se amesteca cu compoziția și dădea culoare fiecărui tip de farfurie.
Printre aplicațiile de măsurare văzute, am observat diferite soluții de sortare prin diferențierea de culori. La nivel industrial am descoperit folosirea senzorilor care au nevoie și de un sistem de deplasare ultrasonic care nu detectează doar culoarea cât și neregularitatea culorii, gradul de lustruire sau alte caracteristici vizuale . Multe din aplicații folosesc senzori scumpi care au o detectare mai fiabilă a tonului de culoare .
În construcția propriu-zisă personal am ales senzorul TCS230, de dimensiuni mici, mai puțin costisitor, care se potrivește corespunzător tipului de aplicație ales și reușește să îndeplinească până la capăt implicarea acestuia în proiect. Descrierea acestuia se poate găsi în capitolele ce urmează.
Prezenta lucrare studiază o tehnologie modernă de monitorizare și sortare a unei mașinării inteligente.
1.2.Structura lucrării
Pe lângă Introducere care prezintă scopul și motivația alegerii temei, structura lucrării va fi formată din 4 mari capitole, concluzii, bibliografie și anexe.
– În capitolul 2 se va discuta despre schema Block a aplicației , ilustrarea și explicația în detaliu a acesteia .
– În capitolul 3 sunt înșiruite componentele esențiale, materialele folosite, descrierea construcției și a componentelor hardware centrat pe ceea ce s-a aplicat., plus programul care a făcut posibilă funcționalitatea întregului sistem.
– În capitolul 4 am folosit produse program consacrate și acesta descrie părțile folosite din programele utilizate la realizarea structurii proiectului, corpurilor de susținere cât și a schemei bloc.
– În capitolul 5 se vor explica problemele apărute de-a lungul timpului realizării proiectului, măsurătorile făcute si comparația intre valori. Am adăugat acest capitol pentru a pune în evidență problemele apărute în faza de punere în funcțiune si in cea de testare a implementării aplicației.
Proiectul mi se închide printr-un capitol de concluzii, succedat de o listă bibliografică.
În cele ce urmează se poate găsi o descriere explicată pe înțelesul oricui a construirii proiectului.
2.Schema bloc a aplicației
Pentru realizarea schemelor am folosit două aplicații gratuite găzduite fiecare de cate o platformă online cu denumirea EasyEda[2] (https://easyeda.com/) respectiv Tinkercad[1] (https://www.tinkercad.com/learn/circuits).
Voi prezenta în cele ce urmează trei scheme. Una de tip PCB(printed circuit board), cea de-a doua de tip CAD(compute-aided design) și una de tip 3D design.
2.1.Schema de interconectare ale elementelor de structura ale aplicației
În figura 2.1 fiind prezentată schema de tip PCB , este realizată pe aceeași platformă ca și cea de tip CAD, numită EasyEda. Schema este concepută în 3 straturi, legăturile fiind făcute atât în partea din față a schemei cât și în partea din spate.
Figura 2.1.Schema de interconectare ale elementelor de structura ale aplicației
Culoarea roșie a legăturilor reprezintă legăturile din partea din față , acestea fiind legăturile pentru transfer de date(biți) între componentele schemei tipărite și placa de dezvoltare Arduino Nano cât și încadrarea schemei în pagina de lucru. Culoarea albastră reprezintă legăturile din partea de jos, sau mai bine spus legăturile din spatele schemei. Aceste legături reprezintă partea de alimentare (5V) a componentelor și pământarea (GND) între componentele schemei și porturile plăcii de dezvoltare Arduino Nano. Culoarea galbenă evidențiază componentele schemei de partea de legătură, fiecare componentă fiind din nou evidențiată și cu ajutorul denumirii.
2.2.Schema bloc a aplicației
În figura 2.2 vedem mai bine legăturile făcute între componente, schema fiind mai bine desfășurată în plan. Pentru aceasta am folosit versiunea salvată a schemei realizate, aceasta fiind pe plan alb, versiunea brută fiind pe planul de lucru alb-negru gradat.
Figura 2.2 Schema bloc a aplicației
După cum se vede în partea din dreapta avem placa de dezvoltare Arduino Nano, în partea de sus senzorul TCS320 folosit pentru recunoașterea culorii și în partea din stânga servomotoarele SG90 Mini folosite pentru mobilitate și mufele pentru conexiunea acestora.
Legăturile de alimentare a componentelor pornesc din pinul Output(+5V) al plăcii de dezvoltare Arduino și se intersectează cu pinul VCC(el mai poate fi numit și VDD) al senzorului de recunoaștere a culorii TCS230 care susține partea de alimentare a plăcii și cu porturile 2 a mufelor servomotorului de sus cât si a celui de jos.
Legăturile de pământare este similara cu cea de alimentare la fel vor face o intersecție.
Ea pornește din portul GND al plăcii de dezvoltare Arduino, se intersectează cu pinul GND al senzorului de recunoaștere a culorii TCS230 și cu porturile 3 a mufelor servomotorului de sus cât și a celui de jos.
Servomotoarele SG90 preiau partea de comandă sau primesc partea de cod de la placa de dezvoltare Arduino prin porturile 1 a mufelor din partea digitală de ieșire a plăcii Arduino, portul 7 fiind dedicat pentru servomotorul de sus iar portul 8 pentru servomotorul de jos.
Senzorul de recunoaștere a culorii TCS230 este conectat tot la partea digitală output a plăcii de dezvoltare Arduino pentru schimbul de date. Porturile output de selectare a frecvențelor a senzorului TCS230 sunt legate la portul D2 respectiv D3 a plăcii de dezvoltare Arduino. Prin D2 este legat portul S0 iar prin portul D3 este legat portul S1 al senzorului TCS230. Pinii pentru selecția tipului de fotodiodă S2 și S3, cu rol de input, a senzorului TCS230 ,se conectează cu placa Arduino prin pinul D4, respectiv pinul D5. Output-ul indicelui de frecvență a senzorului TCS230 este legat la pinul D6 al plăcii Arduino, toate aceste legături având tot rol de transfer de date între componente.
Figura 2.3 Schema bloc 3D
În figura 2.3 pentru o înțelegere mult mai amplă a conexiunilor se găsește ilustrată o schemă cu viziune 3D a componentelor aplicației și legăturile acestora. Pentru realizarea ei am folosit Tinkercad[1].
3.Construirea aplicației
3.1.Structura corpului aplicației
Aplicația are corpul conceput din carton și alte materiale reciclabile, ne având ustensilele necesare realizării corpului din materiale mult mai rezistente de tip plexiglas sau lemn sau derivatele acestora. Folosind carton am făcut ca realizarea corpului să poată fi făcută mult mai ușor. Pentru realizarea acestuia am folosit ustensile care se găsesc ușor și sunt la îndemâna fiecăruia: un cutter, pistol mecanic cu termo clei, o șurubelniță de dimensiuni mici, un șubler, o trusă obișnuită de geometrie și un compas.
Figura 3.1.Reprezentarea dimensiunii componentelor
Pentru realizarea corpului au trebuit efectuate niște măsurători, calcule și date cote fiecărei componente a corpului. Schema fiecărei componente și dimensiunile lor au fost realizate tot cu ajutorul aceleași aplicații EasyEda[2] (https://easyeda.com/).
Conform figurii 3.1 din formatul PDF salvat din EasyEda[2], corpul este format din mai multe părți. Dimensiunile fiecărei părți este măsurată în milimetrii(mm). Fiecare parte a corpului reprezentată în figură este numerotată in colțul stânga sus pentru a fi mai ușoară deosebirea lor în descrierea ce urmează.
Imaginea(2) reprezintă partea de deasupra , aceasta având o lungime de 141 mm și o lățime de 63 mm. În componența ei putem observa un orificiu cu diagonala de 17 mm situat la 47,72 mm de lungime și la 18,05 mm de lățime și care deservește la pătrunderea unui tub in componența aplicației.
Imaginea(3) este suportul pentru servomotorul de jos. Acesta are dimensiunile de 135 mm ca lungime și 50 mm ca lățime. Orificiul decupat care are dimensiunea lungimii servomotorului adică 23 mm este situat la un interval cuprins între 64 și 48 de mm pe lungimea suportului.
Reprezentarea cu numărul(4) este suportul pentru servomotorul de sus, având dimensiunile similare celui de jos 135 mm lungime și 55 mm lățime. Dacă era efectuat ca și suportul de jos adică lățimea să aibă 50 mm nu mai încăpea corpul mobil prins de servomotor (6) și suportul său (5). La fel ca și ce-l de jos are o decupare de 23mm pentru servomotor dar mai are în plus o decupare de 20 mm, spațiu prin care obiectul va trece la servomotorul de jos. Decupările fiind făcute pe lungimea de jos a suportului sunt plasate în felul următor: cea de 23mm este făcută la 30mm de la începutul lungimii și cea de 20mm este făcută la 45mm de la sfârșitul lungimii de jos. Între acestea există o distantă de 17mm.
Imaginea cu numărul (5) este partea de susținere a corpului mobil(6). Acest corp a fost efectuat între timp pentru a face mai ușoara susținerea obiectului scanat și pentru ca axul servomotorului pe care este prins corpul mobil(6) sa nu fie solicitat de greutatea supusa a obiectelor care urmează să fie preluate și scanate. Acesta este conceput din aceleași dimensiuni pe care le are si corpul mobil(6), lungimile fiind înlăturate și el fiind realizat din doua raze una de 30mm și cealaltă de 50mm. Distanța dintre aceste raze este de 20mm suficient cât să încapă în spatele servomotorului. Și acesta are un orificiu de 15mm diametru conceput pentru trecerea mai ușoară a obiectului de pe corpul mobil(6) în partea inferioară adică spre servomotorul de jos.
Corpul mobil(6) care este atașat servomotorului de sus, servește la interceptarea obiectului scanat după culoare și deplasarea acestuia în fața senzorului de recunoaștere a culorii. Are lungimea și lățimea egale ca dimensiuni la 50 mm, formând un unghi de 90 de grade la bază și în partea opusă a unghiului are un arc de cerc efectuat la o rază de 50 mm din punctul unghiului de 90 de grade. Pentru a putea susține obiectul scanat acesta are un orificiu care este mai mic față de orificiul părții de deasupra(2), măsurând un diametru de 15mm suficient cat să țină obiectul pe partea de susținere(5) dar să poată oferi și mobilitate obiectului după scanare. Adică orificiul să fie suficient de mare ca obiectul să poată să treacă mai departe spre servomotorul de jos. Orificiile mici de 2mm respectiv 3mm, au fost concepute pentru prinderea corpului mobil pe axa servomotorului.
Partea din spate(7) care a fost cel mai ușor de realizat are lungimea de 175 de mm și lățimea de 141 mm. După aceasta au fost realizate dimensiunile întregului corp(1).
Corpul cu numărul(8) este situat între partea de sus și suportul servomotorului de sus(4). El are rol de susținere a senzorului de recunoaștere a culorii. Acesta are lungimea de 135mm și lățimea de 45mm care este și de această dată diferită de celelalte suporturi. Dacă lățimea era de 55mm ca și în cazul suportului(4) senzorul de recunoaștere a culorii nu mai era direct perpendicular pe orificiul corpul mobil(6). Suportul(8) are doua orificii. Unul dintre ele este dreptunghiular are ca dimensiuni 18mm lățime și 25mm lungime având ca rol susținerea și pătrunderea senzorului de recunoaștere a culorii în corp făcând posibilă trecerea fascicolului senzorului în partea de jos a corpului. Măsurătoarea lui începe la o distanța de 51,96mm față de partea finală a lungimii și 15,05mm fața de partea de început a lățimii suportului. La fel este măsurat și celălalt orificiu. Adică punctul de intersecție a diametrelor de 17mm a cercului încep de la 15,05mm față de partea de început a lățimii și sfârșesc tot din punctul de intersecție a diametrelor dar de data aceasta la începutul lungimii corpului, la o distanța de 44,72mm.
Părțile laterale fiind numerotate cu(9), au ca dimensiuni 175mm lungime și 60mm lățime. La fel ca și partea din spate dimensiunile lor au rol important pentru ca după acestea au fost realizate dimensiunile întregului corp.
În imaginea(1) putem găsi toate componentele corpului puse cap la cap și distanța dintre ele după cum urmează : 26mm între partea de deasupra(2) și corpul care susține senzorul de recunoaștere a culorii(8), o distanța de 40mm între corpul cu senzorul de recunoaștere a culorii(8) și suportul servomotorului de sus(4). Dacă distanța era la fel ca și distanțele dintre suportul servomotoarelor de sus(4), de jos(3) și baza proiectului adică 50mm, riscam ca senzorul de recunoaștere a culorii sa nu mai recunoască precis valorile scanate. Despre acest subiect se va mai discuta și in capitolul 5 al lucrării.
Tot in imaginea(1) putem vedea și tubul prin care aluneca obiectele care vor fi scanate, recipientele și platforma folosită pentru alunecarea obiectelor in recipiente. Explicația acestuia se găsește în cele ce urmează.
3.2.Construcția corpului aplicației
După cum am spus și în primul subcapitol materialul pe care l-am folosit în acest proiect este carton de 3mm grosime. Am proiectat toate părțile componente ale corpului proiectului pe carton în conformitate cu imaginile din subcapitolul precedent.
Figura 3.2 Proiectarea părților componente
În figura 3.2 fiecare parte componentă a fost dimensionată conform subcapitolul 3.1. La fel, pozele au fost editate și fiecare piesă a fost numerotată. Se mai poate observa și o imagine marcată cu "x" de culoare roșie care reprezintă un greș al piesei cu numărul(5) și care a fost scoasă din calcul.
Figura 3.3 Decuparea componentelor
Pentru decupare am folosit un cutter și sub planșă am pus un material mai tare pentru a putea efectua tăieturile drepte și pentru a rămâne cartonul drept la tăiere(figura 3.3).
În figura 3.3 la fel ca și în figura 3.2 componentele sunt din nou numerotate pentru a fi mai ușor diferențiate. Orificiile piesei(5) și suportului(8) au fost tăiate între timp. Pentru tăierea lor a trebuit o măsurătoare suplimentară care va fi explicată în cele ce urmează.
Odată ce toate părțile au fost decupate am început asamblarea lor folosind un pistol mecanic cu termo clei. Înaintea asamblării pe exteriorul fiecărei componente a corpului am lipit foaie autocolantă colorată pentru a-i da un aspect mai plăcut întregului proiect(figura 3.4).
Figura 3.4 Asamblarea Corpurilor
Prima oară au fost lipite doar părțile laterale împreună cu partea din spate și niște mici suporturi pentru susținerea și atașarea celorlalte componente ale corpului adică suporții pentru servomotoare și senzorul de recunoaștere a culorii. Dacă suporții erau prinși din prima de corp atașarea componentelor la proiect ar fi fost mai greu de realizat.
După cum se vede in figura 3.4 am efectuat și tăierea orificiului pentru senzorul de recunoaștere a culorii acesta fiind mai greu de realizat la început pentru că dimensiunile trebuie sa fie egale cu circumferința diodelor luminescente ale senzorului. Dacă dimensiunile nu ar fi fost egale cu circumferința diodelor, senzorul nu ar fi stat fix pe orificiu și acesta ar fi trebuit la fel atașat de suport cu termo clei. Atașându-l cu termo clei schimbarea lui în cazul în care se defectează ar fi fost mai greu de realizat.
Figura 3.5 Atașarea corpului mobil la servomotor
Înainte ca servomotorul să fie prins de suport putem observa în figura 3,5 atașarea corpului mobil(6) la servomotor. Aceasta a fost prinsa cu termo clei pe axul servomotorului care vine în același pachet cu servomotorul. Axul se atașează foarte ușor la servomotor cu ajutorul unui șurub(figura 3.5).
Figura 3.6 Susținerea corpului mobil
Corpul mobil după cum a fost descris și mai sus este susținut de un suport. Suportul în sine după cum observăm în figura 3.6 a fost prins de partea care susține servomotorul de sus(6) cu ajutorul unor bucăți de carton iar acele bucăți de carton au dimensiunea exact cât să încapă pe suport corpul mobil.
Figura 3.7 Platforma direcțională
Platforma direcțională(figura 3.7) este folosită pentru a face posibilă alunecarea obiectelor în recipiente după scanare. Ea este prinsă de servomotorul de jos și dimensiunile ei nu au fost atât de greu de realizat și nu a necesitat măsurători suplimentare. A fost dimensionată cât să încapă între părțile componente care susțin servomotoarele (3 si 4) și lungimea ei este direct proporțională cu distanța de la orificiul prin care sunt aruncate obiectele și partea de sus a recipientelor.
Figura 3.8 Prinderea Servomotoarelor
În figura 3.8 servomotoarele sunt prinse cu termo clei fiecare la locul lui, iar celelalte componente sunt doar așezate la locul lor pentru a avea o imagine mai bună la cum va arăta proiectul cu aproape toate părțile componente sau cel puțin pentru a verifica dacă toate părțile componente fixe încap la locul lor.
Figura 3.9 Montarea componentelor
În figura 3.9 putem vedea montarea tubului prinderea cu termo clei a proiectului pe un suport și montarea provizorie a celorlalte componente. Mai putem vedea și legăturile între componentele active a proiectului prezentate în capitolul 2 adică în schemele bloc cât și obiectele care urmează sa fie scanate adică bomboane colorate.
Tubul este conceput tot din material reciclabil, măsurat și tăiat la diametrul orificiilor din partea din fața a unui dosar transparent cu șină.
Figura 3.10 Cablaj alimentare plus pământare
După cum am explicat in capitolul 2 cablajul părții de alimentare și cel al părții de pământare se intersectează fiecare într-un punct. În figura 3.10 găsim de culoare închisa(negru/gri) cablajul parții de pământare și de culoare deschisă(roșu/roz) partea de alimentare. Firele au fost lipite cu cositor cu ajutorul unui pistol de lipit și izolate cu bandă izolatoare. Dacă nu erau izolate riscam ca cele doua părți sa se atingă și să provoace scurtcircuit întregul ansamblu.
Figura 3.11 Conexiune Servomotoare
Conexiunea servomotoarelor să nu necesite o legătura fixă, adică în loc ca firele să fie cositorite între ele și izolate, am ales o soluție mai simplă. Am scurtat un spliter să nu ocupe prea mult spațiu, l-am lipit pe 2 bucăți de carton, bucățile de carton fiind lipite între ele pentru ca spațiul in care se conectează mufele servomotoarelor să fie atât de mare încât să încapă mufele ușor. În poza din dreapta din figura 3.11 putem observa conexiunea cu firele care vin de la microcontroler în partea stângă și în dreapta mufele servomotoarelor. Conexiunea fiind realizată tot conform schemei bloc prezentate mai sus. Întreg ansamblul a fost mai departe lipit cu termo clei de partea laterală stângă a proiectului.
În figura 3.12 putem vedea conexiunea firelor la microcontroler conform cu schema prezentată în capitolul 2.
Figura 3.12 Conexiunea la microcontroler
Pentru ca sortarea să fie realizată a fost nevoie de câte un recipient pentru fiecare culoare în parte. Ca și recipient am folosit din nou componente din material reciclabil. În figura 3.13 putem vedea poziționarea lor. Recipientele au fost lipite cu bandă dublă adezivă transparentă. Poziționarea lor a fost făcută în funcție de programarea servomotorului de jos. Fiecare culoare are poziția și gradația dată de servomotor, ca fiecare element colorat să fie aruncat la locul lui.
Figura 3.13 Recipiente
Pentru partea de alimentare am folosit o baterie de dimensiuni mici de 2000mA.
Figura 3.14 Versiunea Completă
În condițiile prezentate proiectul este pregătit (figura 3.14) pentru urcarea programului și primele teste. Dar mai trebuie explicată partea hardware și funcționarea componentelor.
3.3.Echipamentele folosite (partea hardware)
Pentru a face posibilă funcționarea proiectului partea hardware principală a proiectului este senzorul de culoare TCS230.
Figura 3.15 Senzorul de recunoastere a culorii TCS230[4]
Senzorul TCS230 din figura 3.15 simte lumina colorată cu ajutorul unui aranjament de 8×8 fotodiode. Pe urmă folosind un convertor de curent-frecvență, scanările de la fotodiode sunt convertite intr-o undă patrată cu o frecvență direct proporțională cu intensitatea luminii. În final folosind placa Arduino putem citi acea undă pătrată și astfel reies rezultatele pentru culoarea dorită.
Figura 3.16 Funcționare senzor TCS230[4]
Dacă ne uităm mai îndeaproape la senzor putem să vedem cum el detecteaza culori variate. Fotodiodele au 3 filtre colorate diferit. Șaisprezece dintre ele au filtre roșii, altele 16 au filtre verzi, celelalte 16 au filtre albastre și mai rămân alte 16 diode care sunt fără culoare. Fiecare grupă de cate 16 diode este conectată în paralel, deci folosind 2 pini de control S2 și S3 putem să selectăm care dintre ele să fie citite. Deci ca și exemplu dacă vrem să detectăm culoarea roșie putem să folosim numai cele 16 fotodiode roșii setând cei doi pini conform tabelului din figura 3.17(https://randomnerdtutorials.com/arduino-color-sensor-tcs230-tcs3200/).
Figura 3.17 Tabel Coordonate[4]
Senzorul are înca 2 pini S0 și S1 care sunt folosiți pentru scanarea frecvenței de ieșire(output). Frecvența poate fi scanată în 3 valori diferite prezente în tabel 100%, 20% sau 2% (figura 3.17). Această funcție scanare-frecvență permite părții de ieșire a senozrului să fie optimizat pentru variați contori-frecvență sau microcontrolăre.
Mobilitatea este oferită de servomotoarele SG90(figura 3.18)
Figura 3.18 Servomotorul SG90[13]
Servomotoarele sunt niște dispozitive grozave care pot să se înoarcă în poziții specifice. Majoritatea au un braț care se rotește. Folosind o placă de dezvoltare Arduino putem să îi spunem să se miște într-o poziție specifică. Mic și ușor cu putere mare la ieșire, servomotorul SG90 poate să se roteasca aproximativ 180 de grade (90 de grade în fiecare direcție). Funcționează la fel ca și servomotoarele standard dar prezintă avantaje dimensiunile lui. Asupra lui se poate folosi orice cod / componenta hardware sau librarie. Este excelent pentru începatorii care vor să facă lucrurile să se miște fară a construi un motor cu mers înapoi și control al vitezei special când trebuie potrivit în locuri mici. Un servomotor are totul construit în interiorul lui: un moto, un circuit de opinie și ce-l mai important un conducator. Servomotorul opereaza între 4.8V și 6.5V https://components101.com/servo-motor-basics-pinout-datasheet.
În figura 3.18 putem înțelege ca semnalul de la microcontroler (PWM) produs poate avea o frecvența de 50 herți(hz) într-o perioadă de 20 milisecunde (ms) din care timpul de mișcare poate varia între 1ms si 2ms. Deci când timpul de miscare este la o milisecunda motorul va fi la 0 grade si când timpul este 1.5ms motorul va fi la 90 de grade. similar cand este la 2ms motorul va face o rotație pana la 180 de grade. Prin urmare motorul poate fi controlat de la 0 la 180 de grade într-un interval de la 0 la 2ms. Timpul de răspuns este foarte rapid iar asta permite controlarea lui să fie facută mai ușor la timp de raspuns mai mare.
Servomotorul se conecteaza foarte simplu. Toate cablurile de alimetare ar trebui să aibă ca și standard culoarea roșie și firul de culoare roșie se conecteaza la pinul 5V a microcontroler-ului. Firul de culoare neagră este folosit la partea de pamântare și acesta se conectează în pinul GND al placii de dezvoltare Arduino. Firul rămas fiind de obicei de culoare portocalie este firul folosit pentru transfer de date și acesta se conectează într-unul dintre pinuri-le digitale ale microcontroler-ului. Care dintre pinii digitali trebuie folosit, rămâne la decizia utilizatorului.
Atât controlul senzorului de culoare TCS230 cât și al servomotoarelori este realizat cu ajutorul placii de dezvoltare Arduino Nano(figura 3.19). Acesta este creierul întregului proiect. Fiind ce-l mai mic din gama Arduino, senzorul Arduino Nano reușeste să îndeplineasca aceleași funcții pe care un microcontroler obișnuit le îndeplinește. Dimensiunile lui fac posibilă folosirea la proiecte de dimensiuni mai mici sau face posibilă plasarea lui în locuri de mici dimensiuni. Arduino Nano este o placă compatibilă cu sistemul ATMega328 pe 8 biți și funcționează cu ajutorul unui cablu mini-B USB. Fiind alimentat cu mini-B USB înseamnă că poate fi alimentat între 6 și 20V. Puterea cea mai mare este automat aleasă. Tot prin portul mini-B USB poate fi urcat și programul specific fiecarei aplicații. Țin să precizez că modelul folosit în proiect este versiunea 2.3 a microcontroler-ului.
Figura 3.19 Arduino Nano V2.3[11]
De la această placă am folosit partea de digitală. Fiecare dintre ce-i 14 pini digitali (notati cu D) poate fi folosit ca ieșire sau intrare folosind în program funcțiile pinMode(), digitalWrite() și digitalRead(). Ele operează la 5V. Fiecare pin poate distribui sau primi un maxim de 40mA și are în interiorul său un rezistor. Ceilalți pini analogi 8 la numar, au funcții specializate. Spre exemplu 0RX și 1TX sunt folosite pentru a primi sau transmite date prin serial. Nu voi intra în detalii pentru că acea parte a microcontroler-ului nu a fost folosită la realizarea acestui proiect. Pentru acest tip de proiect a fost cel mai potrivit microcontroler datorită dimensiunilor mici.
Construcția a fost terminată, functionarea componentelor a fost explicată și pentru ca aceste componente să poată funcționa, trebuie stabilit un cod software. Mai departe vor fi explicate și aspectele legate de cod-ul aplicației.
3.4.Codul aplicației de sortare după culori. Descriere
După ce toate componentele proiectului au fost descrise a venit rândul și codului sursă folosit pentru punerea în funcțiune a întregului proiect. În cele ce urmează va fi desfășurată explicația codului și descrierea proiectului dupa acel cod.
Limbajul folosit are la bază limbajul C iar programul de compilare este un program pus gratuit la dispozite de către Arduino pe site-ul lor acesta fiind în totalitate compatibil cu plăcile de dezvoltare Arduino[11].
În prima parte a codului pentru funcționarea servomotoarelor , trebuie să fie inclusă în program librăria "Servo.h". Mai trebuie definiți pinii în care senzorul de culoare va fi conectat, crearea de servo obiecte(servo top și bottom) și declararea unor variabile folosite pentru program(color frequency) (figura 3.20).
Figura 3.20 Definirea pinilor senzorului de culoare[11]
În secțiunea de setup <void setup> (figura 3.21)trebuie să definim pinii ca și ieșire (output) și ce-i de intrare(input). Tot în secțiunea setup, trebuie setată și scalarea frecvenței pentru senzorul de culoare la 20%.
Figura 3.21 Void Setup[11]
Folosirea scalării la 20% conform tabelului de mai sus(figura 3.17), ne indică folosirea fotodiodelor fără culoare pentru ca senzorul să poată să scaneze mai multe culori. Dacă spre exemplu era legat la o scalare de 100%, senzorul era setat doar pentru scanarea culorii verzi.
Tot în secțiunea de setup (figura 3.21) putem observa și funcția "serial.begin". Această funcție setează rata de date în biți pe secunda(baud) pentru transmiterea de date prin serial. Pentru comunicarea cu calculatorul se folosesc una dintre aceste rate: 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200. Ele se pot seta și diferit ca să poată comunica cu o componentă dar trebuie ținut cont de acel baud specific fiecărui tip de componentă folosită. În situația acestui proiect am folosit 9600 , fiind rata baud foloită de catre servomotoarele folosite. Aceste informații le-am găsit pe pagina(http://rtrobot.org Servo Motor Controller Instructions for use)[5].
În secțiunea de repetare(loop) programul nostru pornește prim mutarea servomotorului de sus la poziția de plecare, adică poziția de preluare a obiectului(figura 3.22). De observat este că valoarea dată de mine cuprină între 115 și 65 cu un delay de 500ms este aplicabilă la dimensiunile părților proiectului, deci dacă aceste dimensiuni diferă trebuie calculată altă valoare, conform construcției respective. Mai departe folosind instrucțiunea "for" în secțiunea loop , la un delay de 500ms servomotorul de sus va duce obiectul în poziția în care se află senzorul de culoare. Folosim "for" loop ca să putem controla viteza de rotație în repetare.
Figura 3.22 Poziția de plecare a servomotorului de sus[11]
În figura 3.23 tot în secțiunea loop pentru fiecare culoare scanată există 5 cazuri în care servomotorul de jos va stii peste care dintre recipiente se va opri. Acesta are 4 cazuri de culori iar al cincelea caz se aplică în momentul în care nu mai are obiect de scanat, iar în această situație servomotorul de jos va face pauză până când senzorul de culoare va scana din nou o culoare. Pentru fiecare dintre cele 4 cazuri în care senzorul scanează culori la un delay de 500ms, servomotorul este setat la 75, 100, 150, 175 de grade, aceste grade indicând poziția fiecarui recipient. La fel aceste grade trebuie stabilite în funcție de dimensiunile proiectului și numarul de recipiente. Tot în figura 3.23 putem vedea cum sunt declarate poziția de pauză și poziția de start a servomotorului de jos.
Figura 3.23 Secțiunea de repetare (loop) [11]
Figura 3.24 Funcția Prestabilită[11]
După o jumatate de secundă folosind o funcție denumită după plac "readColor()" se va citi culoarea obiectului scanat. Mai sus în figura 3.24 se poate găsi codul acestei funcții.
Această funcție a fost stabilită ulterior cu ajutorul unui alt microcontroler și un cod separat similar cu codul de bază, dar fără partea declarării servomotoarelor și funcțiile lor. Legat fiind doar la senzorul de culoare (figura 3.25). Aici codul funcției folosește cei 4 pini de control și pinul de ieșire a frecvenței găsiți la senzorul de recunoaștere a culorii. Folosind acești pini senzorul de culoare citeste culoarea obiectului. Senzorul citeste 3 valori diferite pentru fiecare obiect Roșu, Verde și Albastru. Conform acestor valori noi putem seta care este actuala culoare.
Tot în secțiunea loop am început cu citirea fotodiodelor de culoare roșie. Pentru acel scop am setat pinul S2 și S3 la nivelul logic "low. Apoi folosind funcția "pulsein()" vom citi frecvența de ieșire și vom pune în variabilă "frequency". Folosind funcția "serial.print()" vom putea printa rezultatele scanate de către senzorul de culoare în "serial monitor". Serial monitor este o rubrică pusă la dispozitie de programul Arduino. Același proces va fi repetat pentru celelalte culori. Trebuie doar să ajustam controlul pinilor pentru culoarea stabilită.
Figura 3.25 Setarea culorii
Dacă pornim Serial Monitor-ul (figura 3.26) din programul Arduino vom începe să primim niște valori
Figura 3.26 Serial Monitor[11]
Aceste valori depind de scalarea frecvenței selectate și de lumina înconjuratoare. În figura 3.26 acele 3 valori diferă de sensibilitatea diferită a fiecarui tip de fotodiodă, după cum putem vedea și în diagrama spectrală răspunsului fotodiodei (figura 3.27).
Figura 3.27 Diagrama spectrală[14]
Cu toate acestea vom vedea cum valorile reactionează când vom pune diferite culori în fața senzorului. De exemplu, daca punem în fața senzorului culoarea roșie, valoarea inițială se va schimba și va fi cuprinsă între 120 și 90, asta în cazul meu. Având în vedere că senzorul de recunoaștere a culorii este destul de sensibil, valorile pot varia în fucție de anumiți factori. Despre acest lucru vom mai discuta și în capitolele ce urmează.
Acum , dacă vrem să reprezentăm culorile detectate , cu modelul RGB , care are valorile cuprinse intre 0 și 255 , vom folosi o funcție "if" pentru fiecare culoare în parte . Funcția "if" ne permite să facem o comparație între valorile primite în Serial Monitor.
Mai departe în funcție de valorile setate programul va face un salt la cazuri și în funcție de caz , servomotorul de jos va știi în care dintre recipiente trebuie să ajungă fiecare culoare . În cazul nostru încăpând 4 recipiente, avem 4 culori. Roșu,Galben,Albastru și Verde. De notat că aceste scanări de culori pe care le dă senzorul de culoare nu sunt prea sigure dar, acest sezor iși face treaba în proiectele mai simple.
Programul prezentat face o repetare infinită până la oprire sau până când senzorul nu mai scanează nici o culoare. El este reprezentat în 4 mari pași. Primirea obiectului, scanarea obiectului, mutarea platformei direcționale peste recipientul corespunzător culorii scanate și înlăturarea obiectului scanat din fața senzorului de recunoaștere a culorii.
4.Elemente software
Pentru realizarea acestui proiect a fost nevoie de folosirea unor aplicații. În acest capitol voi descrie toate părțile folosite din programele aplicate.
4.1 Programul easyeda
EasyEda[2] este o aplicație care este găzduită de o platformă online. Această aplicație poate fi accesată de pe site-ul https://easyeda.com/. Acest editor permite inginerilor să proiecteze, simuleze și să distribuie mai departe în mod privat sau public orice schemă, simulare sau schemă bloc. Toate documentele pot fi descărcate în formatele cunoscute PDF, PNG sau SVG. EasyEDA permite crearea sau editarea unor diagrame schematice și mixarea elementelor analogice și digitale. Subscrierea pe acest site se face în mod gratuit printr-o adresă de email și o parolă. Fiind o platformă online nu este necesar să fie descărcată sau instalată pe calculator. Update-ul aplicației cu toate noutățile se face automat. Din platforma EasyEda am folosit tab-ul EasyEda Designer .
Pentru acest proiect din EasyEda Designer am folosit: Wiring Tools, Drawing Tools, Part Attributes(conține părți și echipamente prestabilite cum ar fi Arduino, Servo Motoarele sau echipamentele se pot concepe de la zero după nevoie). Cu această aplicație am realizat schema de tip PCB(printed circuit board) și cea de-a doua de tip CAD(compute-aided design) prezentate în al doilea capitol.
4.2.Programul tinkercad
Mai departe pentru schema 3D afișată în al doilea capitol am folosit tot o platforma online denumită Tinkercad[1]. Programul Tinkercad poate fi găsit la adresa https://www.tinkercad.com/. Acest program este conceput de Autodesk. Autodesk este o companie americană care creează aplicații pentru arhitectură, inginerie, construcții, educație, etc. Această companie este renumita în special pentru programul Autocad. Aplicația Tinkercad este renumita la rândul ei ca fiind cea mai mare aplicație din familia ei, pentru proiectare 3D.La fel ca și EasyEda este nevoie de crearea unui cont gratuit pentru a putea efectua sau salva proiecte. Platforma este foarte prietenoasă. După înregistrare ea ajută utilizatorul să înțeleagă mai bine folosirea aplicației prin niște tutoriale.
Din această aplicație am folosit tab-ul "electronics". Programul este foarte ușor de folosit. În partea dreaptă are un meniu de unde putem selecta componentele pe categorii. Din aceste categorii pentru realizarea proiectului am folosit:Shape Generators, Circuits, Connectors și Basic Shapes. La fel ca și EasyEda are o librărie destul de vastă și componentele necesare se găsesc destul de ușor. Schemele 3D se pot realiza, simula și descărca.
4.3.Programul arduino
Arduino[11], este un program pus la dispoziție în mod gratuit de firma Arduino și poate fi descărcat direct de pe site-ul lor(www.arduino.cc).Arduino este o companie care proiectează și plăci de dezvoltare dar și creare software. Acest program pune la dispoziție un limbaj unic ușor de folosit, dar aplicația mai poate compila și alte limbaje cum ar fi și C. El mai pune la dispoziție nenumărate librării. Programul pune la dispoziție toate ustensilele necesare pentru crearea și compilarea unui soft, pentru ca acesta să poată să fie urcat pe placa de dezvoltare direct din aceeași platformă.
Figura 4.1 Arduino Software[11]
Din bara de meniu interactiv se stabilește placa pe care va fi urcat programul. Tot de acolo se poate monitoriza activitatea senzorilor prin "serial monitor" se pot urca librării, pentru a putea fi recunoscute de către soft-ul aplicației.
4.4. Programul paint . Snipping tool
Pentru editarea pozelor găsite în această lucrare am folosit două aplicații puse la dispoziție de către Windows. Din programul paint am folosit partea de tăiere, selectare și redimensionare acestea fiind găsite în tab-ul "image" și "tools".
Snipping Tool un program foarte folositor pus la dispoziția utilizatorului tot de către Windows. Acest program l-am folosit pentru decuparea fotografiilor efectuate și lipirea lor în PAINT pentru editare. Am folosit acest soft, pentru că pozele făcute erau de dimensiuni mai mari și am decupat doar ceea ce contează din poză.
5.Probleme apărute la punerea în funcțiune a aplicației. Măsurători
5.1.Problemele apărute
Pe parcursul construirii acestei aplicații am întâmpinat diferite probleme la nivel de construcție cât și la nivel de soft.
La partea de construcție am întâmpinat trei mari probleme. Una dintre ele a fost la partea de susținere a senzorului de recunoaștere a culorii(figura 5.1).
Figura 5.1Modificare susținere suportul senzor de culoare
În figura 5.1 putem vedea că distanța între senzorul de culoare și corpul mobil atașat la servomotorul de sus , nu era tocmai bine stabilită la primele măsurători. Pentru a corecta această problemă a fost nevoie de mai multe simulări pentru a stabili mai bine distanța intre diodele luminiscente și obiectul scanat. Această distanță trebuie să fie cât mai mica pentru o precizie mai buna a senzorului. După stabilirea acelor dimensiuni am decupat doua bucăți de carton și le-am lipit cu termo clei de actuala parte de susținere a părții proiectului. În urma acestor operații am reușit să stabilesc distanța corectă între partea de susținere a senzorului de culoare și partea de susținere a servomotorului de sus și a părților componente.
Cea de-a doua mare problemă întâmpinată a fost la atașarea corpului mobil la servomotor. Prima problemă întâlnită la această etapă din cauza neatenției a fost prinderea greșită a corpului la servomotor. Aceasta a trebuit desfăcută cu grijă de pe brațul servomotorului și lipită în direcția corectă(figura 5.2).
Figura 5.2 Atașarea greșită a corpului la servomotor
Cea de-a treia mare problemă a constituit-o culoarea corpului care susține și oferă mobilitate obiectului care urmează să fie scanat. Această parte fiind mult prea colorată făcea ca senzorul să nu dea valori precise. Valorile erau diferite la fiecare simulare de scanare și stabilire a culorii în soft(figura 5.3).
Figura 5.3 Schimbarea culorii corpului mobil
În urma a mai multor studii efectuate am descoperit că pentru ca senzorul să aibă o mai bună precizie la scanare și pentru a nu da valori eronate la scanare, culoarea corpului mobil a trebuit schimbată în culoare albă(cazul meu) sau neagră. Aceste două culori fiind începutul și sfârșitul spectrului frecvenței (0-255) în care sunt regăsite valorile culorilor.(figura 5.3)
Figura 5.4 Decuparea orificiului platformei de susținere
A fost necesară și o modificare la susținerea corpului mobil(5). Adică tăierea mai mare a orificiului prin care obiectul scanat ajunge la platforma direcțională.(figura 5.4)
Nevoia de a decupa orificiul respectiv a făcut ca obiectul scanat să pice exact pe platforma direcțională și ca acesta să nu pice în părțile exterioare. Totodată am oferit și o întărire a platformei de susținere aplicând termo clei pe marginile acesteia.
5.2.Măsurători
Inițial în componența părții de soft la numărul de cazuri pe care le scanează senzorul au fost declarate 6 cazuri și cazul 0 în care servomotorul face pauză (figura 5.5).
Figura 5.5 Număr Cazuri
Au trebuit modificate din cauza faptului că în urma măsurătorilor au încăput doar 4 recipiente, deci automat au trebuit scoase din calcul doua culori. Intenționat numărătoarea lor am lăsat-o în ordinea prezentată mai sus pentru a evidenția din nou faptul că măsurătorile diferă în funcție de dimensiunile corpurilor întregii aplicații.
Principala bătaie de cap a fost cauzată de către senzorul de recunoaștere a culorii și măsurătorilor efectuate de către acesta.
Serial.println(" ");
delay(50);
if(R<120 & R>90 & G<180 & G>139 & B<120 & B>80){
color = 1; // Red
}
if(R<130 & R>100 & G<120 & G>90 & B<110 & B>80){
color = 3; // Green
}
if(R<99 & R>50 & G<100 & G>70 & B<100 & B>81){
color = 4; // Yellow
}
if (R<170 & R>121 & G<140 & G>110 & B<79 & B>60){
color = 6; // Blue
}
return color;
}
Din cauza faptului că senzorul de culoare nu este foarte precis au trebuit efectuate multe simulări și măsurători și stabilite intervalele prezentate mai sus cu mai multă precizie. Adică datorită intervalelor scanate în serial monitor "figura 3.26", intervalul RGB pentru fiecare culoare trebuie să fie cât mai mare. Dacă în interval este stabilit spre exemplu "R<89 & R>90" și sezorul scanează "R<87 & R>90" există riscul ca senzorul să nu mai recunoască culoarea cum trebuie și servomotorul să nu se mai deplaseze la recipientul corespunzator culorii. Foarte important este faptul că intervalul să fie cat mai larg dar să nu fie suprapus cu celelalte culori. De exemplu pentru culoarea roșie dacă intervalul este "R<120 & R>90" pentru culoarea verde sau celelalte culori trebuie ca intervalul să fie stabilit diferit. Aceeași regulă se aplică și pentru celelalte culori . Automat trebuie ținut cont și faptul că dacă sunt mult mai multe culori va fi tot mai greu de stabilit intervalul RGB pentru fiecare culoare .
Din cele studiate am descoperit și faptul că se poate opta și pentru opțiunea folosirii doar a 2 culori, spre exemplu pentru culorile mai inchise se poate folosi doar "G" și "B" ca și intervale dar la fel de precise pentru că în această situație exista riscul mai mare de eșec.
6.Concluzii
Soluțiile senzoriale bazate pe detectarea de culori, simplifică procesul de producție pentru mii de companii de pe glob. Automatizarea criteriului de selectare la detectarea, sortarea sau controlarea diferitelor bunuri posedă un mare rol la operațiuni industriale cu grad mare sau mai puțin mare. Culoarea produselor sau ambalajele acestora se pot detecta precis cu ajutorul senzorului electronic de culoare.
După cum am arătat în capitolul 1 tema "Aplicație bazata pe sortarea obiectelor după culori"a fost asumată de un număr important de capitole. În capitolul 2 am analizat tema din punct de vedere al schemei bloc. Pe parcursul capitolului 3 a fost explicat fiecare pas făcut pentru realizarea construcției aplicației , în capitolul 4 partea folosită din elementele program iar capitolul 5 arată dificultățile întâlnite pe parcursul construirii aplicației.
Dimensiunile aplicației fac diferită această aplicație de celelalte aplicații întâlnite care poate sorta elemente de dimensiuni mici, nu ocupă mult spațiu și nu este costisitoare. Elementele folosite sunt de dimensiuni mici și nu necesita un mare consum de curent.
Construind această aplicație am câștigat experiență la nivel de programare, utilizarea micro-controalelor și punerea lor în funcțiune. Am reușit să am o mai largă viziune la ceea ce înseamnă programarea micro-controalelor și utilizarea lor în nenumărate aplicații.
7.Bibliografie
[1]https://www.tinkercad.com/learn/circuits
[2]https://easyeda.com
[3]https://www.megatech.ro/
[4]https://randomnerdtutorials.com/arduino-color-sensor-tcs230-tcs3200/
[5]http://rtrobot.org
[6]https://www.optimusdigital.ro/
[7]http://atlas.usv.ro/
[8]http://acse.pub.ro/wp-content/uploads/2013/03/licenta_guidelines.pdf
[9]http://webbut.unitbv.ro/carti%20on-line/BSM/BSM/capitol4.pdf
[10]http://www.youtube.com/
[11]https://www.arduino.cc/
[13]https://components101.com/servo-motor-basics-pinout-datasheet
[14]http://www.w-r-e.de/robotik/data/opt/tcs230.pdf
[15]Articol Mikon Systems ,Automatizări Industriale http://www.mikon.ro/ro/servicii/automatizari-industriale.html
[16]Programming Languages , de: Carlos Ghezzi , Mehdi Jarayeri , John Wileyc Publicat:1987.
[17]Programarea concurentă în limbaje de nivel înalt de: Petru Eles, Horia Ciocârlie,Editura Științifică ,Publicat: 1991.
8.Anexe
Codul Sursă:
#include <Servo.h>
#define S0 2
#define S1 3
#define S2 4
#define S3 5
#define sensorOut 6
Servo topServo;
Servo bottomServo;
int frequency = 0;
int color=0;
void setup() {
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(sensorOut, INPUT);
// Setting frequency-scaling to 20%
digitalWrite(S0, HIGH);
digitalWrite(S1, LOW);
topServo.attach(7);
bottomServo.attach(8);
Serial.begin(9600);
}
void loop() {
topServo.write(115);
delay(500);
for(int i = 115; i > 65; i–) {
topServo.write(i);
delay(2);
}
delay(500);
color = readColor();
delay(10);
switch (color) {
case 1:
bottomServo.write(75);
break;
case 3:
bottomServo.write(100);
break;
case 4:
bottomServo.write(150);
break;
case 6:
bottomServo.write(175);
break;
case 0:
break;
}
delay(300);
for(int i = 65; i > 29; i–) {
topServo.write(i);
delay(2);
}
delay(200);
for(int i = 29; i < 115; i++) {
topServo.write(i);
delay(2);
}
color=0;
}
// Custom Function – readColor()
int readColor() {
// Setting red filtered photodiodes to be read
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
// Reading the output frequency
frequency = pulseIn(sensorOut, LOW);
int R = frequency;
// Printing the value on the serial monitor
Serial.print("R= ");//printing name
Serial.print(frequency);//printing RED color frequency
Serial.print(" ");
delay(50);
// Setting Green filtered photodiodes to be read
digitalWrite(S2, HIGH);
digitalWrite(S3, HIGH);
// Reading the output frequency
frequency = pulseIn(sensorOut, LOW);
int G = frequency;
// Printing the value on the serial monitor
Serial.print("G= ");//printing name
Serial.print(frequency);//printing RED color frequency
Serial.print(" ");
delay(50);
// Setting Blue filtered photodiodes to be read
digitalWrite(S2, LOW);
digitalWrite(S3, HIGH);
// Reading the output frequency
frequency = pulseIn(sensorOut, LOW);
int B = frequency;
// Printing the value on the serial monitor
Serial.print("B= ");//printing name
Serial.print(frequency);//printing RED color frequency
Serial.println(" ");
delay(50);
if(R<120 & R>90 & G<180 & G>139 & B<120 & B>80){
color = 1; // Red
}
if(R<130 & R>100 & G<120 & G>90 & B<110 & B>80){
color = 3; // Green
}
if(R<99 & R>50 & G<100 & G>70 & B<100 & B>81){
color = 4; // Yellow
}
if (R<170 & R>121 & G<140 & G>110 & B<79 & B>60){
color = 6; // Blue
}
return color;
}
DECLARAȚIE DE AUTENTICITATE
A
PROIECTULUI DE FINALIZARE A STUDIILOR
Titlul proiectului _____________________________________________________
___________________________________________________________________
___________________________________________________________________
Autorul proiectului _____________________________________________
Proiectul de finalizare a studiilor este elaborat în vederea susținerii examenului de finalizare a studiilor organizat de către Facultatea _______________I.E.T.I._________________________ din cadrul Universității din Oradea, sesiunea________iulie_________ a anului universitar __2019___________.
Prin prezenta, subsemnatul (nume, prenume, CNP)_____________________
___________________________________________________________________
___________________________________________________________________,
declar pe proprie răspundere că acest proiect a fost scris de către mine, fără nici un ajutor neautorizat și că nici o parte a proiectului nu conține aplicații sau studii de caz publicate de alți autori.
Declar, de asemenea, că în proiect nu există idei, tabele, grafice, hărți sau alte surse folosite fără respectarea legii române și a convențiilor internaționale privind drepturile de autor.
Oradea,
Data Semnătura
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: FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMANT IOAN SLAVICI TIMIȘOARA [305522] (ID: 305522)
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.
