Documente Academic
Documente Profesional
Documente Cultură
Teodorescu Alexandru Florentin Lucrare
Teodorescu Alexandru Florentin Lucrare
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: aciee@ugal.ro, web: www.aciee.ugal.ro
UNIVERSITATEA „DUNĂREA DE JOS” DIN GALAȚI
FACULTATEA DE AUTOMATICĂ, CALCULATOARE, INGINERIE
ELECTRICĂ ȘI ELECTRONICĂ
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: aciee@ugal.ro, web: www.aciee.ugal.ro
Rezumat
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
3
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]
4
Capitolul 1. Platforma Arduino
5
Capitolul 1. Platforma 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() {
void loop() {
6
Capitolul 2 Descrierea componenetlor hardware utilizate
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ă
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
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ă.
9
Capitolul 2 Descrierea componenetlor hardware utilizate
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
11
Capitolul 2 Descrierea componenetlor hardware utilizate
Caracteristici tehnice:
Dimensiuni: 17.5 x 6.7 x 0.8mm
Număr de puncte: 800
12
Capitolul 2 Descrierea componenetlor hardware utilizate
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
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
14
Capitolul 2 Descrierea componenetlor hardware utilizate
15
Capitolul 2 Descrierea componenetlor hardware utilizate
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].
16
Capitolul 2 Descrierea componenetlor hardware utilizate
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
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]
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]
19
Capitolul 3 Descrierea schemelor de implementare/funcționare
20
Capitolul 3 Descrierea schemelor de implementare/funcționare
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.
21
Capitolul 3 Descrierea schemelor de implementare/funcționare
22
Capitolul 3 Descrierea schemelor de implementare/funcționare
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
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
24
Capitolul 4 Descrierea algoritmului/programului de funcționare
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
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. case 2:
11. // Cazul 2 dacă se apasă butonul 2
12. servo2.writeMicroseconds(2000); // Comanda pentru a
porni servomotorul
13. delay(950);
14. servo2.writeMicroseconds(1500); // Comanda pentru a
opri servomotorul
15. delay(500);
16. break;
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
28
Capitolul 5 Implementarea fizică a automatului
29
Capitolul 5 Implementarea fizică a automatului
30
Capitolul 5 Implementarea fizică a automatului
31
Capitolul 5 Implementarea fizică a automatului
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.
33
CONCLUZII
34
BIBLIOGRAFIE
35
ANEXA 1
void setup() {
//codul scris rulează doar o singură data
}
void loop() {
//codul scris rulează tot timpul
}
Programul principal
#include <Servo.h>
#include <Wire.h>
LiquidCrystal lcd(0x27); // Crează un obiect LCD la adresa 0x27 cu 16 charactere si 2 linii pentru afișare
#define detectormonezi 9
#define button1 13
#define button2 12
#define button3 11
#define button4 10
int buttonPressed;
void setup() {
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;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("În prelucrare...");
switch (buttonPressed) {
case 1:
37
ANEXA 3
delay(950);
delay(500); //
break;
case 2:
delay(950);
delay(500);
break;
case 3:
delay(950);
delay(500);
break;
case 4:
delay(950);
38
ANEXA 4
delay(500); //
break;
lcd.clear(); //
lcd.setCursor(0, 0);
delay(2000);
[/code]
void setup()
Wire.begin();
Serial.begin(9600);
Serial.println("\nI2C Scanner");
39
Anexa 5
void loop()
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
nDevices++;
else if (error==4)
40
ANEXA 5
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
if (nDevices == 0)
else
Serial.println("done\n");
41