Teodorescu Alexandru Florentin Lucrare [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

UNIVERSITATEA „DUNĂREA DE JOS” DIN GALAȚI FACULTATEA DE AUTOMATICĂ, CALCULATOARE, INGINERIE ELECTRICĂ ȘI ELECTRONICĂ

Anexa 6 la Procedura de înscriere on-line la examenele de finalizare a studiilor valabilă în cursul anului universitar 2019-2020

PROIECT DE DIPLOMĂ

Coordonator științific, Conf. Dr. Ing. Răzvan Șolea Absolvent, Teodorescu Alexandru Florentin

Galați 2020

Str. Științei Nr. 2, cod poștal 800146, Galați, România, tel/fax: +0236 470 905, e-mail: [email protected], web: www.aciee.ugal.ro

UNIVERSITATEA „DUNĂREA DE JOS” DIN GALAȚI FACULTATEA DE AUTOMATICĂ, CALCULATOARE, INGINERIE ELECTRICĂ ȘI ELECTRONICĂ

PROGRAMUL DE STUDII: Automatică și Informatică aplicată

Comanda unui automat pentru distribuirea diverselor produse utilizând o placa de dezvoltare Arduino

Coordonator științific, Conf. Dr. Ing. Răzvan Șolea Absolvent, Teodorescu Alexandru Florentin

Galați 2020

Str. Științei Nr. 2, cod poștal 800146, Galați, România, tel/fax: +0236 470 905, e-mail: [email protected], web: www.aciee.ugal.ro

Rezumat

Această lucrare se concentrează pe construcția, descrierea, utilizarea și programarea unui automat pentru distribuirea diverselor produse utilizând servomotoare de rotație continuă, senzori de proximitate, controlate de o placă arduino. Motivația care a stat la baza acestei lucrări a pornit de la dorința de a aprofunda, a înțelege și de a explica aceste tehnologii, totdată fiind o alternativă ușor de realizat, ce poate fi amplasată în afara spațiilor comerciale pentru achiziționarea diverselor produse, oferind o soluție confortabilă si sigură, evitând astfel expunerea la aglomeratii și a contactului cu alte persoane. „Capitolul 1” va cuprinde o prezentare a ceea ce înseamnă platforma Arduino cât și un scurt istoric al acesteia, urmat de pașii necesari pentru instalarea si folosirea ei. „Capitolul 2” o să cuprindă prezentarea tuturor componentelor foloite pentru realizarea automatuli și prețul acestora. În „Capitolul 3” sunt prezentate diagramele de conexiuni folosite pentru realizarea automatului căt și o descriere a acestora. „Capitolul 4” curpinde prezentarea algoritmului principal și funcționalitatea acestuia. „Capitolul 5” va cuprinde etapele implementării fizice a automatului.

CUPRINS Introducere .............................................................................................................................................................. 3 Capitolul 1. Platforma arduino.................................................................................................................... 4 1.1 Istoric ........................................................................................................................................................................ 4 1.2 Conceptul Arduino............................................................................................................................................... 4 1.3 Instalare mediului de programare Arduino IDE ..................................................................................... 4 1.4 Anatomia unui program Arduino .................................................................................................................. 6

Capitolul 2. Descrierea componentelor hardware utilizate ........................................................ 7 2.1 Alimentator stabilizat 12v 2000 mA. ........................................................................................................... 7 2.2 Modul coborâre tensiune LM2596 ............................................................................................................... 7 2.2.1 Introducere în domeniul scăzătoarelor de tensiune.: .................................................................. 8 2.3 Senzor infraroșu de obstacole OSOYOO ..................................................................................................... 8 2.3.1 Principiul de funcționare ......................................................................................................................... 9 2.4 Ecran LCD 1602 I2C ......................................................................................................................................... 10 2.5 Placă test de tip Breadboard ........................................................................................................................ 12 2.5.1 Principiu de funcționare ....................................................................................................................... 13 2.6 Buton rotund fară reținere............................................................................................................................ 13 2.7 Servomotor cu rotație continuă DS04-NFC ............................................................................................ 14 2.7.1 Principiu de funcționare ....................................................................................................................... 15 2.7.2 Cum se controlează un servomotor.................................................................................................. 16 2.8 Placa arduino MEGA 2560............................................................................................................................. 17 Fig. 24 Placa de dezvoltare Ardunio MEGA2560 ................................................................................... 17 Fig. 25 Diagrama conexiunilor....................................................................................................................... 18 2.9 Prețul componentelor ..................................................................................................................................... 19

Capitolul 3. Descrierea schemelor de implenetare/funcționare ........................................... 20 3.1 Diagramele de conexiuni ............................................................................................................................... 20 3.2 Tabel de conexiuni............................................................................................................................................ 23

Capitolul 4. Descrierea algoritmului/programului de funcționare ..................................... 24 4.1Schema logică a programului ........................................................................................................................ 24 4.2 Descrierea programului de funcționare .................................................................................................. 25

Capitolul 5. implementarea fizică a automatului ........................................................................... 28

5.1 Etapele montajului ........................................................................................................................................... 28

Concluzii ................................................................................................................................................................ 34 Bibliografie ........................................................................................................................................................... 35 Anexa 1 ................................................................................................................................................................... 36 Anexa 2 ................................................................................................................................................................... 37 Anexa 3 ................................................................................................................................................................... 38 Anexa 4 ................................................................................................................................................................... 39 Anexa 5 ................................................................................................................................................................... 41

LISTA FIGURILOR Fig. 1 Rularea fișierului de instalare ....................................................................................................... 4 Fig. 2 Selectarea componentelor .............................................................................................................. 5 Fig. 3 Folder destinație ................................................................................................................................ 5 Fig. 4 Finalizarea instalării ......................................................................................................................... 5 Fig. 5 Anatomia unui program Arduino ................................................................................................ 6 Fig. 6 Alimentator stabilizat: 12V 2000 mA ......................................................................................... 7 Fig. 7 Modul coborăre tensiune LM2596 .............................................................................................. 7 Fig. 8 Scăzător de tensiune ......................................................................................................................... 8 Fig. 9 Senzor infraroșu de obstacole....................................................................................................... 8 Fig. 10 Schema principiului de funcționare ......................................................................................... 9 Fig. 11 Așezarea pinilor senzorului OSOYOO ...................................................................................... 9 Fig. 12 Ecran LCD 1602 I2C ...................................................................................................................... 10 Fig. 13 Pasul 1 al instalării librăriei pentru ecranul LCD .............................................................. 11 Fig. 14 Pasul 2 al instalării librăriei pentru ecranul LCD.............................................................. 11 Fig. 15 Adresa hexazecimală a ecranului ............................................................................................ 12 Fig. 16 Placă Breadboard .......................................................................................................................... 12 Fig. 17 Anatomia unei plăci Breadboard ............................................................................................. 13 Fig. 18 Buton rotund fară reținere ........................................................................................................ 13 Fig. 19 Circuitul unui buton ..................................................................................................................... 14 Fig. 20 Servomotor cu rotație continuă DS04-NFC ......................................................................... 14 Fig. 21 Componente servomotor............................................................................................................ 15 Fig. 22 Schema principiului de funcționare a unui servomotor................................................. 15 Fig. 23 Timpii de control ........................................................................................................................... 16 Fig. 24 Placa de dezvoltare Ardunio MEGA2560 ............................................................................. 17 Fig. 25 Diagrama conexiunilor ................................................................................................................ 18 Fig. 26 Schema de conexiuni a butoanelor ......................................................................................... 20 Fig. 27 Schema de conexiuni a LCD-ului I2C...................................................................................... 21 Fig. 28 Schema de conexiuni a servomotoarelor ............................................................................. 21 1

Fig. 29 Schema de conexiuni a senzorului de obstacole ............................................................... 22 Fig. 30 Schema logică de funcționare ................................................................................................... 24 Fig. 31 Conexiunile coborătorului de tensiune ................................................................................. 28 Fig. 32 Reglarea coborătorului de tensiune ....................................................................................... 29 Fig. 33 Compartimentele pentru produse .......................................................................................... 29 Fig. 34 Compartiment colectare produse ........................................................................................... 30 Fig. 35 Spirală servomotor ....................................................................................................................... 30 Fig. 36 Decupajul pentru butoane și ecran......................................................................................... 31 Fig. 37 Detectorul de monede ................................................................................................................. 31 Fig. 38 Suportul lateral............................................................................................................................... 32 Fig. 39 Amplasare servomotoare ........................................................................................................... 32 Fig. 40 Amplasarea plăcii Arduino și a plăcii Breadboard ........................................................... 33 Fig. 41 Conexiunile electrice .................................................................................................................... 33 LISTA TABELELOR Tabelul 1 Componente și prețuri ........................................................................................................... 19 Tabelul 2 Conexiuni..................................................................................................................................... 23

2

INTRODUCERE

Această lucrare se concentrează pe construcția, descrierea, utilizarea și programarea unui automat pentru distribuirea diverselor produse utilizând servomotoare de rotație continuă, senzori de proximitate, controlate de o placă arduino. Motivația care a stat la baza acestei lucrări a pornit de la dorința de a aprofunda, a înțelege și de a explica aceste tehnologii, totdată fiind o alternativă ușor de realizat, ce poate fi amplasată în afara spațiilor comerciale pentru achiziționarea diverselor produse, oferind o soluție confortabilă si sigură, evitând astfel expunerea la aglomeratii și a contactului cu alte persoane. Termenul ”mecatronică” a fost utilizat pentru prima data în anul 1969 de către un inginer al firmei japoneze Yaskawa Electric.În prezent termenul definește o știință inginerească interdisciplinară care se bazează pe îmbinarea elementor din construcția de mașini, electrotehnică și informatică, având ca scop îmbunatățirea performanțelor și a functionalității sistemelor tehnice. [1] La început, mecatronica a fost întealeasă ca o completare a mecanicii de precizie, un prim exemplu clasic de aplicație mecatronică fiind aparatul de fotografiat cu bliț.Cu trecea timpului, noțiunea de mecatronică a capatat altă definiție, extinzându-si aria de definiție: devedind o știiță inginerească bazată pe disciplinele clasice ale electrotehnicii. electronicii, construcției de mașini și informaticii. [2] Un sistem mecatronic necesită o abordare interdisciplinară pentru modelarea, proiectarea și implementarea sa.Un sistem mecatronic tipic este format dintr-un schelet mecanic, diverse componente hardware și software, dispozitive de interfață și surse de alimentare.[2] În concluzie mecatronica este o sfera interdisciplinară care tratează în general problemele mecanicii, electronicii și informaticii.[1]

3

Capitolul 1. Platforma Arduino

CAPITOLUL 1. PLATFORMA ARDUINO 1.1 Istoric Arduino a inceput în anul 2004 ca un proiect al unui student columbian pe nume Hernando Barragán al institului „Interaction Design Institute Ivrea” coordonat de profesorul Massimo Banzi și Casey Reas , acesta creând astfel platforma de dezvoltare „Wiring”Motivația era să realizeze o unealtă simplă și ieftină, deoarece microntroalele folosite in acea vreme de către studenți aveua un pret de aproximativ o sută de dolari.[6] În anul 2005, Massimo Banzi împreună cu David Mellis, au făcut platforma „Wiring” compatibilă cu un microcontroler mult mai ieftin decât cel folosit anterior numit „Atmega8 microcontroller”.Aceția au păstrat doar codul sursă și au numit proiectul „Arduino”.[6] După finalizarea platformei, au fost dezvoltate versiune și mai ieftine care au fost distribuite în maniera „open-source”, astfel reușind sa producă in 2011 peste 300.000 de plăci oficiale, urmând ca în anul 2013 sa aibe peste 700.000 de plăci oficiale vândute în toată lumea.[6] Originea numelui „Arduino” provine de la un bar din Ivrea ce a fost denumit după regele Italiei din perioada 1002-1014 „Arduin of Ivrea”[6] 1.2 Conceptul Arduino .Platforma arduino este o platformă open-source ce constă intr-un microcontroler și o platforma software numită IDE ce este folosită pentru a scrie și a incărca codul.[5 Datorită simplitații și a accesabilității sale, Arduino a fost folosit în mii de proiecte diferite, oferind un mediu de programare accesibil ce poate fi folosit atât de utilizatori amatori cât și de cei avansați.Din această cauză Arduino poate fi folosit în foarte multe domenii , proiectele putând fi de complexități diferite, de la lampi cu comandă vocală pană la sisteme avansate de securitate.[4] 1.3 Instalare mediului de programare Arduino IDE Pasul 1: Se descarcă și se deschide fișierul de instalare gasit pe pagina principală.[13]

Fig. 1 Rularea fișierului de instalare

4

Capitolul 1. Platforma Arduino

Pasul 2.În urmatorul meniu se aleg componentele dorite pentru a fi instalate

Fig. 2 Selectarea componentelor

. Pasul3.Se alege destinația unde programul va fi instalat.

Fig. 3 Folder destinație

Fig. 4 Finalizarea instalării

5

Capitolul 1. Platforma Arduino

1.4 Anatomia unui program Arduino

Fig. 5 Anatomia unui program Arduino

Un program Arduino are două secțiuni. Secțiunea „setup”, care este rulată doar o singură data când placa este alimentată, sau dacă este apăsat butonul de „Reset” și secțiunea „loop”, care este rulată ciclic, atât timp cât placa este alimentată. De exemplu: void setup()

{

//codul scris rulează doar o singură data } void loop()

{

//codul scris rulează tot timpul } În rutina „setup” se folosește de obicei pentru inițializare, iar rutina „loop” se folosește pentru a scrie partea principală a programului.

6

Capitolul 2 Descrierea componenetlor hardware utilizate

CAPITOLUL 2. DESCRIEREA COMPONENTELOR HARDWARE UTILIZATE 2.1 Alimentator stabilizat 12v 2000 mA.

Fig. 6 Alimentator stabilizat: 12V 2000 mA

Specificații:  Mufă alimentare universală 5.5/2.5 și 2.1.  Led indicator tensiune  Tensiune la ieșire: 12V  Curent la ieșire: 2A  Protecție la scurt circuit  Protecție la supratensiune  Protecție la suprasarcină 2.2 Modul coborâre tensiune LM2596

Fig. 7 Modul coborăre tensiune LM2596

Caracteristici tehnice:  Tensiune de intrare: 4V-40V  Tensiune de ieșire: 1.23V -35V  Frecvență de comutare: 150 kHz  Temperatură de operare: -40°C~+85°C  Dimensiune: 43.6 mm x 21mm x14mm

7

Capitolul 2 Descrierea componenetlor hardware utilizate

2.2.1 Introducere în domeniul scăzătoarelor de tensiune.:

Fig. 8 Scăzător de tensiune

Scazătorul de tensiune este un convertor DC-DC ce îndeplineste sarcina de a reduce tensiunea folosind tranzsitoare și o bobină.[11] În prima etapă comutatorul se află pe pozitia ON permitând trecerea curentului către condesator, încărcându-l.Tensiunea condesatorului nu poate crește instantaneu iar bobina limitează curentul de încarcare, astfel tensiunea circuitul în timpul perioadei de comutare nu este tensiunea completă a sursei de alimentare.[11] În a doua etapa etapa cand comutatorul se află pe poziția OFF, energia stocată în câmpul magnetic al bobinei este eliberată înapoi în circuit.Această tensiune încarcă condensatorul si alimentează o sarcină prin diodă, mentinând astfel curentul de ieșire pe întreg circuitul.[11] Aceste două etape se repetă de mii de ori pe secundă având ca rezultat o ieșire continuă. 2.3 Senzor infraroșu de obstacole OSOYOO

Fig. 9 Senzor infraroșu de obstacole

8

Capitolul 2 Descrierea componenetlor hardware utilizate

Caracteristici tehnice:  Tensiune de alimentare: 3V - 5V;  Distanță sesizare obstacol: 2cm - 30cm;  Unghi observare obstacol: 350;  Output digital;  Comparator LM393;  Tensiune de referință reglabilă. Senzorul de obstacole va fi folosit pentru a detecta monedele introduse în automat. 2.3.1 Principiul de funcționare

Fig. 10 Schema principiului de funcționare

Senzorul transmite un puls de rază infraroșie de la emițător și înregistrează orice lumină reflectată înapi către receptor. Acest senzor conține un comparator de tip LM393 și un potențiometru pentru a ajusta lungimea de undă.[12]

Fig. 11 Așezarea pinilor senzorului OSOYOO

9

Capitolul 2 Descrierea componenetlor hardware utilizate

Dispozitivul dispune de 3 pini, dintre care doi sunt de alimentare(VCC și GND),cel de-al treilea fiind pinul ce ne oferă indicații sub formă de tensiune variabilă ce indică cantitatea de lumină captată de receptor.[12] Dacă se află un obstacol în raza de acțiune comparatorul furnizează la ieșire 1 logic sau 0 logic în cazul în care nu detectează un obstacol.[12] 2.4 Ecran LCD 1602 I2C

Fig. 12 Ecran LCD 1602 I2C

Caracteristici tehnice:  Material: PCB și plastic  Tip ecran: LCD  Dimensiunea ecran: 6.6 cm  Rezoluție: 80x16  Tensiune de lucru: 4.5~5.5V  Curent de lucru: 80 mA  Greutate: 34 de grame Acest LCD este ideal pentru afișarea caracterlor si numerelor.Acest modul vine echipat cu un cip PCF8574 pentru comunicarea I2C și un potențiometru pentru ajustarea luminozității. Pentru a putea conecta ecranul la placa arduino, avem nevoie de adresa hexazecimală a ecranului care se află rulănd codul prezentat în anexa 6 și de libraria „LiquidCrystal_I2C.h” care se descarcă ca arhivă din pagina de internet precizată în bibliorafie [24].Librăria se va importa din programul Arduino urmănd urmatorii pași:

10

Capitolul 2 Descrierea componenetlor hardware utilizate

1. Din bara de meniu a programului se selectează „Sketch” , „Include Library” după care se da click pe „Add .ZIP Library”.

Fig. 13 Pasul 1 al instalării librăriei pentru ecranul LCD

2. Selectați arhiva din locația unde a fost descarcată

Fig. 14 Pasul 2 al instalării librăriei pentru ecranul LCD

11

Capitolul 2 Descrierea componenetlor hardware utilizate

După rularea secvenței de cod pentru a afla adresa hexazecimală a ecranului se poate observa că acesta are adresa 0x27 care va fi folosită în programul principal pentru a conecta ecranul la placa arduino, conform figurii de mai jos (15).

Fig. 15 Adresa hexazecimală a ecranului

2.5 Placă test de tip Breadboard

Fig. 16 Placă Breadboard

Caracteristici tehnice: Dimensiuni: 17.5 x 6.7 x 0.8mm Număr de puncte: 800

12

Capitolul 2 Descrierea componenetlor hardware utilizate

2.5.1 Principiu de funcționare

Fig. 17 Anatomia unei plăci Breadboard

Secțiunile A și D sunt folosite pentru alimentare. În secțiunile B și C se inserează elementele de circuit. Fiecare linie verticală poate să reprezinte un nod de circuit.Pe mijloc exista un orizontal ce separa secțiunea B de secțiunea C pentru a oferi mai moulte noduri și a face posibilă conectarea elemtelor de circuit ce au două perechi de pini.[17] 2.6 Buton rotund fară reținere

Fig. 18 Buton rotund fară reținere

Specificații tehnice:  Material: Plastic  Dimensiuni: 20 x 17.5mm  Rezistă la un curent de 1A la 250V sau 3A la 125V.

13

Capitolul 2 Descrierea componenetlor hardware utilizate

Fig. 19 Circuitul unui buton

Dacă se apasă butonul contactul se închide permitând trecerea curentului electric. În cadrul acestui proiect, butoanele sunt folosite pentru a selecta produsul dorit dupa inserarea unei monede. 2.7 Servomotor cu rotație continuă DS04-NFC

Fig. 20 Servomotor cu rotație continuă DS04-NFC

Caracteristici tehnice:  Model: DS04-NFC.  Greutate: 38g.  Dimensiuni: 40.8 x 20 x 39.5 mm.  Putere: 5.5kg/cm la 4.8V.  Viteză:0.22 sec/600.  Tensiune de alimentare: 4.8v-6v.  Temperatură de operare: -10 pană la 500 .C Un servomotor este un actuator liniar sau rotativ ce permite controlul foarte precis a poziției unghiulare, accelerației și a velocității.Este practic un sistem cu buclă închisă format dintr-un dispozitiv controlar, un controler, un seznor de ieșire și un sistem de feedback.[21]

14

Capitolul 2 Descrierea componenetlor hardware utilizate

Fig. 21 Componente servomotor

În figura de mai sus sunt prezentate componentele unui servomotor:  Motorul de curent continuu  Angrenajul cu roți dințate  Componentele electronice de control  Potențiometrul  Accesoriile 2.7.1 Principiu de funcționare

Fig. 22 Schema principiului de funcționare a unui servomotor

15

Capitolul 2 Descrierea componenetlor hardware utilizate

Poziția curentă a aroberului este transformată în semnal electric de către potențiometru după care este comparată cu semnal de intrare de comandă.Dacă semnalul primit de la feedback diferă de cel de la intrare, atunci se va genera un semnal de eroare care este apoi amplificat și aplicat ca intrare către motor, ceea ce determină rotirea motorului. Doar atunci când arborele ajunge în poziția dorită, semnalul de eroare devine zero, deci motorul a atins poziția dorită.[22] Deoarece intrarea aplicată motorului reprezintă diferența dintre sistemul de reacție dat de poziția actuală și semnalul aplicat care este dat de poziția necesară, viteza motorul este proporțională cu diferența dintre poziția actuală si cea necesară.[22] 2.7.2 Cum se controlează un servomotor Mișcarea maximă a unui servomotor poate fi de 1800, adică 900 în ambele direcții, neputând fi rotit mai mult din cauza unui opritor mecanic încorporat.Un servomotor este controla prin trimiterea unui semnal PWM prin intermediul firului de comandă. Pulsul este trimis la fiecare 20 de miliscunde, lătimea impulsului determinând poziția arboerului.[22] De exemplu putem observa din figura de mai jos (20) cum un impuls de 1ms mută arborele în sensul invers acelor de ceasornic, un impuls de 1.5ms mută aroberele în poziția neutra iar un impuls de 2ms mută aroberele în sensul acelor de ceasornic la un unghi de 900.[22].

Fig. 23 Timpii de control

16

Capitolul 2 Descrierea componenetlor hardware utilizate

2.8 Placa arduino MEGA 2560

Fig. 24 Placa de dezvoltare Ardunio MEGA2560 Caracteristici tehnice:  Tensiune de alimentare : 5V  Tensiune de intrare: 7-9V  Pini digiitali I/O: 54  Pini de intrare analogici: 16  Curent DC pe I/O: 40mA  Curent DC pentru Pinul 3.3V: 50mA  Memorie flash: 256KB  Frecvență: 16MHz Placa are montat un microcontroler Atmega2560, ce funcționează la o tensiune de alimentare de 7-9 volți.Placa se poate conecta la portul USB al calculatorului sau poate fi alimentată extern folosind un alimentator extern.[23] Pinii pentru alimentare sunt următorii: „VIN”, „5V”, „3V3”, „GND” și „IOREF”.Pinul „VIN” se folosește când alimentam placa dintr-o sursă externă, putând fi folosit și ca o sursă de 5V în cazul în care placa este alimentată prin conectorul jack. Pinul „5V” oferă o tensiune de 5 volți provenită de la stabilizatorul de tensiune intern al plăcii. Este posibilă și alimentarea plăcii de la pinul de 5 volți sau de la pinul de 3.3 volți dar nu este recomandată deoarece are ca rezultat bypas-ul stabilizatorului de tensiune, putând afecta placa. Pinul „3V3” oferă o tensiune de 3.3 volți generată de un alt stabilizator inclus în placă, cu un curent maxim de 50 mA. Pinul „IOREF” generază tensiunea de referintă cu care operează microcontrolerul.[23] Microprocesorul Atmega2560 dispune de un set vast de instrucțiuni și 32 de regiștri funcționali, conectați direct la Unitatea Aritmetică Logică, ce permite ca doi regiștri independenți sa fie accesați intr-o instrucțiune executată intr-un ciclu de semnal de ceas. Include și 16 pini analogici cu o rezoluție de 10 biți, ce măsoară tensiunea de la

17

Capitolul 2 Descrierea componenetlor hardware utilizate

0 la5 volți, limita de 5 volți putând fi schimbată folosind pinul AREF împreună cu funcția analogReference().[23] Comunicarea cu caclulatorul se realizează foarte ușor, placa Mega2560 având 4 unitățo UART hardware disponibile pentru comunicare serială TTL. Dispozitivul Atmega16U2 comunică cu calculatorul prin portul USB al plăcii.[23] Pentru sistemele de operare Linux și OSX acesta recunoaște portul de comunicație automat, pentru sistmeul de operare Windows este necesar instalarea unui fișier .inf. Placa prezintă și două LED-uri Tx și Rx care se aprind interminet la transmieterea datelor către cipul Atmega16U2 sau la transmiterea datelor dinspre sau către calculator. Comunicarea serială cu orice pin al plăcii se realizează folosind librăria „SoftwareSerial”.[23] Arduino Mega2560 conține o componentă activă de tip „polyfuse”, ce oferă protecția la scurtcircuit și la supracurent a portului USB al calulatorului.[23] Programarea microprocesorului se poate realiza foarte ușor folosind programul oferit de producător „Arduino”, el putând rula pe Linux, MacOS și Windows.Microcontrolerul conține un bootloader încărcat ce poate încarcă codul scris în softul Arduino fară a mai fi necesar un programator hardware.[23] Această placă este perfectă pentru proiecte mai mari, care au nevoie de mulți pini de comunicație, pwm și analogici.[23]

Fig. 25 Diagrama conexiunilor

18

Capitolul 2 Descrierea componenetlor hardware utilizate

Fiecare dintre cei 54 de pini digitali ai plăcii pot fi folosiți atăt ca intrări cat ca și ieșiri, folosind funcțiile :„pinMode()”, „digitalWrite()” și „digitalRead()”. Aceștia operează la o tensiune de 5 volți, putând oferi un curent maxim de 40 mA. Fiecare pin are o rezistență de tip „pull-up” cu o valoarea curpinsă între 20-50 KΩ.[23] Unii pini pot avea funcții speciale:  Întreruperi externe: pinii 2, 3, 18, 19, 20 și 21 pot genera diverse tipuri de întreruperi.folosind funcția „attachIntrerupt”.  PWM: pinii 2-13 și 44-46 generează un semnal de tip PWM pe 8 biți cu ajutorul funcției „analogWrite().  SPI: pinii 50, 51, 52, 53 permit o comunicație serială SPI(Serial Peripheral Interface) folosind librăria „SPI library”.  LED: pinul 13 este conectat la un LED integrat în placă. Când pinul are valoarea High(5V), ledul este aprins, iar când pinul are valoarea LOW(0V), LED-ul este stins.  TWI: pinii 20 și 21 permit o comunicație de tip TWI folosind librăria „Wire library”.  Comunicație serială: Perechile formate din pinii (0,1), (19,18), (17,16) și (15,14) se pot folosi pentru a recepționa date serial de tip Rx și a transmite date serial de tip Tx 2.9 Prețul componentelor Nr. Crt.

Cantitatea

Denumirea componentei

1

4

Buton rotund fără reținere

Prețul componentei(RON) 1,95

2

1

Ecran LCD 1602 I2C

18,90

3

1

Placă test de tip Breaboard

12,90

4

1

Alimentator stabilizat 12V 2000 mA

14,99

5

1

Modul coborâre tensiune LM2596

8,00

6

1

Senzor infraroșu de obstacole OSOYOO

1,48

7

1

Placă arduino MEGA 2560

47,88

8

4

Servomotor cu Rotație Continuă DS04-NFC

39,00

Total: 267,96 RON Tabelul 1 Componente și prețuri

19

Capitolul 3 Descrierea schemelor de implementare/funcționare

CAPITOLUL 3. DESCRIEREA SCHEMELOR DE IMPLENETARE/FUNCȚIONARE

3.1 Diagramele de conexiuni

Fig. 26 Schema de conexiuni a butoanelor

În figura (26) de mai sus este prezentată schema conexiunilor butoanelor ce asigură comanda servomotoarelor îin momentul în care este selectat un produs. Am atașat plăcuței Arduino patru butoane, câte unul pentru fiecare compartiment în care se află produsele. Fiecare buton corespunde unui compartiment în care se afla diverse produse, în funcție de ce buton este apăsat, servomotorul din compartimentul resepctiv va fi acționat, împingâng produsul respectiv spre compartimentul de unde poate fi luat.

20

Capitolul 3 Descrierea schemelor de implementare/funcționare

Fig. 27 Schema de conexiuni a LCD-ului I2C

După cum se poate observa din figura (24), ecranul este alimentat la o tensiune de 5 volți prin conectarea alimentarii la pinul de „5V” al plăcii ardunio.Legăm si pinul de masă(GND) al LCD-ului în mod coresponzător pe breadboard.Arduino Mega2560 trebuie să aibă pinii ce transmit semnalul de ceas și semnalul de date conectați la pinii echivalenți ai modului LCD I2C(pinii „SDA” și „SCL”).Ecranul LCD va fi folosit pentru a afișa soldul curent și mesajele generale de întampinare. Servomotoarele au rolul de a aduce produsul dorit în compartimentul de preluare, în urma selecției realizate de către acționarea oricărui buton ce corespunde unui compartiment încărcat cu produse.

Fig. 28 Schema de conexiuni a servomotoarelor

21

Capitolul 3 Descrierea schemelor de implementare/funcționare

Deoarece servomotoarele funcționează cu o tensiune de alimentare de 5 volți, a fost necesară utilizarea unui coborător de tensiune pentru a aduce tensiunea sursei de alimentare de la 12 volți la 5 volți, conform figurii (25). Alimentăm servomotoarele la o tensiune de 5 volți ce este asigurată de coborătorul de tensiune având grijă să legăm pinii de masă ai servomotarelor și al plăcii arduino pe breaboard.Pinii pentru comanda servomotarelor sunt legați prin intermediul plăcii breadboard la pinii PWM(4, 5, 6, 7) ai plăcii arduino. Am ales aceste servomotoare datorită prețului scăzut de achiziție, dar și faptul că se utilizează în buclă deschisă, rezultând un control foarte simplu al acestora. Softul Arduino dispune de o librărie „Servo” pentru controlul servomotoarelor dedicată trimiterii semnalelor de tip PWM pentru un control facil al acestora.

Fig. 29 Schema de conexiuni a senzorului de obstacole

După cum se poate observa pinul de alimentare al senzorului de obstacole se conectează la terminalul „OUT” al coborătorului de tensiune care realizează alimentarea la 5 volți, iar pinul de masă se inseriază cu cel al coborâtorului de tensiune la placa arduino. Senzorul de obstacole este folosit pentru a incrementa soldul curent în momentul care este introdusă o moneda în automat, trebuie avut grijă deoarece modulul respectiv este sensibil la variații ale luminii ambienale, din această cauză detecotrul de obstacole se va amplasa în interiorul automatului.

22

Capitolul 3 Descrierea schemelor de implementare/funcționare

3.2 Tabel de conexiuni

Denumire componentă

Pinii digitali

Butonul 1

13

Butonul 2

12

Butonul 3

11

Butonul 4

10

Servomotorul 1

4

Servomotorul 2

6

Servomotorul 3

5

Servomotorul 4

7

Detectorul de obstacole

9

LCD I2C

SDA și SCL

Tabelul 2 Conexiuni

Tabelul de conexiuni este folosit pentru a ușura implementarea fizică a automatului.

23

Capitolul 4 Descrierea algoritmului/programului de funcționare

CAPITOLUL 4. DESCRIEREA ALGORITMULUI/PROGRAMULUI DE FUNCȚIONARE

4.1Schema logică a programului

Fig. 30 Schema logică de funcționare

În figura de mai sus (27) este prezentată schema logică de funcționare a automatului. Starea inițială a automatului este dată de mesajul „Introduceți o monedă” afișat pe ecranul LCD. În momentul în care utilizatorul introduce o monedă, aceasta este detectată de senzorul infraroșu, facănd trecerea la urmatoarea secventă. După introducerea unei monezi, mesajul „Selectați un produs” va fi afișat pe ecranul automatului, utilizatorul putănd selecta produsul dorit prin apăsarea oricărui dintre cele 4 butoane disponibile.

24

Capitolul 4 Descrierea algoritmului/programului de funcționare

După pe produsul a fost selectat, pe ecran se va afișa mesajul „Procesare” după care este acționat servomotorul, împingând produsul în compartimentul de colectare. Dupa ce produsul se află în compartimentul de colectare, pe ecran se va afișa mesajul „Ridicați produsul”, urmănd ca automatulul să se întoarcă în starea inițială. 4.2 Descrierea programului de funcționare Pentru început trebuiesc inițializate cele 4 servomotare, cele 4 butoane, ecranul LCD, senzorul infraroșu și incluse librăriile pentru controlul servomotoarelor si al ecranului LCD. Butoanele sunt activate de rezistențele interne de tip „pull up” ale plăcii arudino, în momentul acționării unui buton, acesta va trece in starea logică de „LOW”.

1. void setup() { lcd.begin(16, 2);// Inițializează ecranul LCD, s pecificând dimensiunea lui 16x2. 2. lcd.backlight(); //Pornim lumina de fundal 3. servo1.attach(4); 4. servo2.attach(6); 5. servo3.attach(5); 6. servo4.attach(7); 7. pinMode(detectormonezi, INPUT); //setăm pinul 9 ca intrare Programul principal începe cu afișarea mesajului „Introdu o monedă” pe ecranul LCD. După introducerea unei monede, ea este detectată de senzorul de obstacole care va trece in starea logică „LOW” , programul trecând la următorul caz. 1. void loop() { 2. // Afișarea mesajului principal 3. lcd.clear(); 4. lcd.backlight(); 5. lcd.print("Introdu o moneda!"); 6. 7. // Detectarea monedei 8. while (true) { 9. if (digitalRead(detectormonezi) == LOW) { // dacă este det ectată o monedă iesă din bucla while 10. break; 11. } 12. } După ce a fost introdusă moneda, pe ercanul LCD este afișat mesajul: „Selectați un produs!”,În program se memorează numărul butonului apăsat după care trece în etapa finală, unde produsul ajunge în compartimentul de preluare.

25

Capitolul 4 Descrierea algoritmului/programului de funcționare

1. //Mesajul de selecție a produsului dorit 2. delay(10); 3. lcd.clear(); 4. lcd.setCursor(0, 0); 5. lcd.print("Selectați un produs"); 6. lcd.setCursor(0, 1); 7. lcd.print(" 1, 2, 3 or 4?"); 8. 9. // Detectarea butonului apăsat 10. while (true) { 11. if (digitalRead(button1) == LOW) 12. buttonPressed = 1; 13. break; 14. } 15. if (digitalRead(button2) == LOW) 16. buttonPressed = 2; 17. break; 18. } 19. if (digitalRead(button3) == LOW) 20. buttonPressed = 3; 21. break; 22. } 23. if (digitalRead(button4) == LOW) 24. buttonPressed = 4; 25. break; 26. } 27. } 28. // Afișarea mesajului de preculare 29. lcd.clear(); 30. lcd.setCursor(0, 0); 31. lcd.print("În prelucrare...");

{

{

{

{

A fost creat un caz specific ce corespunde fiecărui buton dacă este apăsat.În funcție de butonul apsăat, programul execută unul dintre cele 4 cazuri ce corespund numărului butonului apăsat, urmând ca după terminarea procesului de prelucrare să fie afișsat pe ecranul LCd mesajul „Puteți ridica produsul!” și automatul va reveni la starea inițială. 1. switch (buttonPressed) { 2. case 1: 3. // Cazul 1 dacă se apasă butonul 1 4. servo1.writeMicroseconds(2000); // Comanda pentru a porn i servomotorul 5. delay(950); 6. servo1.writeMicroseconds(1500); // Comanda pentru a opr i servomotorul 7. delay(500); // posibil sa trebuiasca scos 8. break;

26

Capitolul 4 Descrierea algoritmului/programului de funcționare

9. 10. 11. 12. 13. 14.

case 2: // Cazul 2 dacă se apasă butonul 2 servo2.writeMicroseconds(2000); // Comanda pentru a porni servomotorul delay(950); servo2.writeMicroseconds(1500); // Comanda pentru a opri servomotorul delay(500); break;

15. 16. 17. 18. case 3: 19. // Cazul 3 dacă se apasă butonul 3 20. servo3.writeMicroseconds(2000); // rotateComanda pe ntru a porni servomotorul 21. delay(950); 22. servo3.writeMicroseconds(1500); // stopComanda pen tru a opri servomotorul 23. delay(500); // 24. break; 25. 26. case 4: 27. // Cazul 4 dacă se apasă butonul 4 28. servo4.writeMicroseconds(2000); // Comanda pentru a porni servomotorul 29. delay(950); 30. servo4.writeMicroseconds(1500); // Comanda pentru a opri servomotorul 31. delay(500); // 32. break; 33. } 34. lcd.clear(); // 35. lcd.setCursor(0, 0); 36. lcd.print("Puteți ridica produsul!"); 37. delay(2000); 38. }

27

Capitolul 5 Implementarea fizică a automatului

CAPITOLUL 5. IMPLEMENTAREA FIZICĂ A AUTOMATULUI 5.1 Etapele montajului În acest capitolvoi prezenta pas c pas modul de asamblare al automatului Asamblarea automatului a constat în montarea tuturor componentelor prezentate anterior pe o platforma realizată din pal,

1. Pentru început am realizat conexiunile electrice corespunzătoare coborătorului de tensiune,lipind cablurile cu ajutorul unui letcon.

Fig. 31 Conexiunile coborătorului de tensiune

2. După, coborătorul de tensiune a fost reglat la tensiunea nominala a servomotoarelor de 5V prin rotirea potențiometrului în sensul invers acelor de ceasoric, folosind un multimetru digital pentru a observa în timp real valoare tensiunii.

28

Capitolul 5 Implementarea fizică a automatului

Fig. 32 Reglarea coborătorului de tensiune 3.

Următorul pas a constat în realizarea compartimentelor pentru produse. Aceastea au fost realizate dintr-un canal de cablu, fiecare compartiment fiind decupat la dimensiunile de 9,5 cm.19,5 x 9,5 cm Compartimentele sunt plasate pe o placă de lemn cu dimensiunile de 78 x 30 cm .

Fig. 33 Compartimentele pentru produse

4. Pentru realizarea compartimentului de colectare a produselor a fost folosită o placă de lemn cu dimensiunile de 78 x 23 cm.

29

Capitolul 5 Implementarea fizică a automatului

Fig. 34 Compartiment colectare produse

5. În continuare a fost realizată spirala care este atașată servomotoarelor pentru a împinge produslui în compartimentul de colectare. Spirala a fost realizată folosind sărma oțelită, bobinată pe un cinlindru cu diametrul de 7 centimetri, apoi fiind prinsă de accesoriul de plastic cu ajutorul unui pistol de lipit cu baghete de silicon.

Fig. 35 Spirală servomotor

6. Butoanele și ecranul LCD au fost montate pe o placă decupată dintr-run canal de cablu cu dimensinile de 38 x 10 cm. Cu ajutorul unei freze electrice au fost decupate locurile unde se montează cu ajutorul unui pistol de lipit cu baghete de silicon cele 4 butoane și ecranul LCD

30

Capitolul 5 Implementarea fizică a automatului

Fig. 36 Decupajul pentru butoane și ecran.

7. În continuare se lipesc cele 4 butoane și ecranul LCD folosind silicon, după care cu ajutorul unui letcon se lipesc cablurile pentru fiecare buton individual. Pentru canalul monedelor, a fost folosit un canal de cablu cu dimensiunile de 26 x 2,3 cm, lipit cu silicon.Senzor de obstacole este amplasat pe un canal de cablu, el putând culisa pentru a regla distanța la care deteactează un obstacol

Fig. 37 Detectorul de monede

31

Capitolul 5 Implementarea fizică a automatului

8. Pentru susținerea automatului au fost folosite două placi de lemn cu dimensiunile de 41 x 30 cm, ce vor fi amplasate în laterarele automatului.

Fig. 38 Suportul lateral 9.

Servomotoarele au fost lipite cu silicon în dreptul fiecărui compartiment al produselor, spirala realizată din sărma oțelită fiind atașate servomotoarelor folosind șuruburile incluse.

Fig. 39 Amplasare servomotoare

32

Capitolul 5 Implementarea fizică a automatului

10. Placa arduino și placa Breadboard au fost lipite folosind siliocn în spatele servomotarelor pentru a reduce distanța necesară realizării conexiunilor electrice.

Fig. 40 Amplasarea plăcii Arduino și a plăcii Breadboard

11. Ultimul pas a constat în realizarea legaturilor electrice, urmărind diagramele din capitolul 3 si tabelul de conexiuni (2).

Fig. 41 Conexiunile electrice

33

CONCLUZII

S-a realizat un automat pentru distribuirea diverselor produse controlat folosind o placă Arduino. În prima parte a acestei lucrări am tratat fiecare componentă în parte, explicând rolul ei și oferind descriere sumară a funcționării acestora. În a doua parte au fost proiectate diagramele pentru conexiunile electrice a fiecărei componente. Pentru a comanda automatul, am folosit platforma Arduino, programul principal fiind scris în limbajul de programare „C++”. În final, sunt prezentate etapele pentru implementarea fizică a automatului, împreună cu dimensiunile la care au fost prelucate componentele. Principalul avantaj al automatului îl reprezintă costul redus al pieselor și portabilitatea acestuia. Cercetările vor continua în cadrul studiilor de masterat fiind îndreptate spre :   

Proiectarea și realizarea unei noi incinte folosind imprimarea 3D. Realizarea unui sistem de plată folosind tehnologia RFID pentru a facilita achiziția produselor folosind cardul de credit. Implementarea unui „tracker” cu panouri fotovoltaice care asigură funcționarea automatului pe timp de zi, totodată încarcănd un banc de acumulatori pentru a putea funcționa pe timpul nopții, eliminând astfel nevoia conectării auotamului la rețeaua de energie.

34

BIBLIOGRAFIE [1] Dolga, V.,"Proiectarea Sistemelor Mecatronice", Editura Pollitehnica, Timişoara, ISBN 978-973-625-573-1, 2007; [2] Clarence W. de Silva, „Mechatronics : A Foundation Course”, Hoboken, CRC Press, 2010 [3] http://webbut.unitbv.ro/Carti%20on-line/BSM/Dumitriu_BSM_2006.pdf, 02-07-2020 [4] https://cleste.ro/atelier/placa-de-dezvoltare-arduino/, 02-07-2020 [5] https://www.arduino.cc/en/guide/introduction, 02-07-2020 [6] https://en.wikipedia.org/wiki/Arduino, 02-07-2020 [7] http://www.mivarom.ro/catalog/product_info.php/alimentator-stabilizat12v-2000ma-p-5799, 02-07-2020 [8] https://cleste.ro/modul-ridicare-tensiune-lm2596.html, 03-07-2020 [9] https://cleste.ro/atelier/ridicatoare-si-coboratoare-de-tensiune/, 03-072020 [10] https://www.optimusdigital.ro/ro/senzori-senzori-optici/4514-senzorinfrarosu-de-obstacole.html, 03-07-2020 [11] https://learnabout-electronics.org/PSU/psu31.php. 03-07-2020 [12] https://www.instructables.com/id/TCRT5000-Infrared-ReflectiveSensor-How-It-Works-a/. 03-07-2020 [13] https://www.arduino.cc/en/Main/Software. 03-07-2020 [14] https://www.arduino.cc/en/Guide/Windows. 03-07-2020 [15] https://cleste.ro/ecran-lcd-1602-iic-i2c.html?fbclid=IwAR0B6BW6psIurQoTa9f4W6pdg8GIxDR_AMO_O9PY2XCTAKNn60rUtQyWeM. 03-07-2020 [16] http://www.mivarom.ro/catalog/product_info.php/placa-test-tipbreadboard-175x67mm-p-5796. 03-07-2020 [17] https://www.optimusdigital.ro/ro/prototipare-breadboard-uri/8breadboard-830-points.html. 03-07-2020 [18] https://www.banggood.com/Car-Auto-Momentary-OFF-ON-Push-RoundButton-Horn-Switch-Multicolor-p927835.html?rmmds=myorder&ID=229&cur_warehouse=CN. 03-07-2020. [19] https://www.kjell.com/globalassets/mediaassets/701903_90770_datash eet_en.pdf?ref=762940D624. 03-07-2020. [20] https://www.engineersgarage.com/article_page/servo-motor-basicsand-working/. 04-07-2020. [21] https://circuitdigest.com/article/servo-motor-basics. 04-07-2020. [22] https://webstarsnet.com/ro/44-how-does-a-servo-motor-work.html. 0407-2020. [23] https://store.arduino.cc/arduino-mega-2560-rev3. 04-07-2020. [24] https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library. 0907-2020.

35

ANEXA 1 void setup() { //codul scris rulează doar o singură data } void loop() { //codul scris rulează tot timpul }

Programul principal #include // includes the LiquidCrystal Library #include #include LiquidCrystal lcd(0x27); // Crează un obiect LCD la adresa 0x27 cu 16 charactere si 2 linii pentru afișare Servo servo1, servo2, servo3, servo4; // motoarele DS04-NFC #define detectormonezi 9 #define button1 13 #define button2 12 #define button3 11 #define button4 10

int buttonPressed; void setup() { lcd.begin(16, 2);// Inițializează ecranul LCD, specificând dimensiunea lui 16x2. lcd.backlight(); //Pornim lumina de fundal servo1.attach(4); servo2.attach(6); servo3.attach(5); servo4.attach(7);

36

ANEXA 2 } if (digitalRead(button2) == LOW) { buttonPressed = 2; break; } if (digitalRead(button3) == LOW) { buttonPressed = 3; break; } if (digitalRead(button4) == LOW) { buttonPressed = 4; break; } }

// Afișarea mesajului de preculare lcd.clear(); lcd.setCursor(0, 0); lcd.print("În prelucrare...");

//Tratatea cazurilor în funcție de butonul apăsat

switch (buttonPressed) {

case 1:

// Cazul 1 dacă se apasă butonul 1 servo1.writeMicroseconds(2000); // Comanda pentru a porni servomotorul

37

ANEXA 3 delay(950); servo1.writeMicroseconds(1500); // Comanda pentru a opri servomotorul delay(500); // break;

case 2:

// Cazul 2 dacă se apasă butonul 2 servo2.writeMicroseconds(2000); // Comanda pentru a porni servomotorul delay(950); servo2.writeMicroseconds(1500); // Comanda pentru a opri servomotorul delay(500); break;

case 3:

// Cazul 3 dacă se apasă butonul 3 servo3.writeMicroseconds(2000); // rotateComanda pentru a porni servomotorul delay(950); servo3.writeMicroseconds(1500); // stopComanda pentru a opri servomotorul delay(500); break;

case 4:

// Cazul 4 dacă se apasă butonul 4 servo4.writeMicroseconds(2000); // Comanda pentru a porni servomotorul delay(950);

38

ANEXA 4 servo4.writeMicroseconds(1500); // Comanda pentru a opri servomotorul delay(500); //

break; }

lcd.clear(); // lcd.setCursor(0, 0); lcd.print("Puteți ridica produsul!"); delay(2000); }

[/code]

Codul pentru a găsi adresa hexazecimală a ecranului LCD #include

void setup() { Wire.begin();

Serial.begin(9600); while (!Serial);

// Leonardo: wait for serial monitor

Serial.println("\nI2C Scanner"); }

39

Anexa 5 void loop() { byte error, address; int nDevices;

Serial.println("Scanning...");

nDevices = 0; for(address = 1; address < 127; address++ ) { // The i2c_scanner uses the return value of // the Write.endTransmisstion to see if // a device did acknowledge to the address. Wire.beginTransmission(address); error = Wire.endTransmission();

if (error == 0) { Serial.print("I2C device found at address 0x"); if (address