2.1 Platforma de dezvoltare Arduino 7 2.2 Senzori utilizați în robotică (sistemele de urmărire a traiectoriei) 15 2.1 Senzor de urmărire linie 15 2.2… [301955]

Cuprins

Abstract 1

Capitolul 1 INTRODUCERE 3

Capitolul 2 STUDIUL TEORETIC 7

2.1 Platforma de dezvoltare Arduino 7

2.2 Senzori utilizați în robotică (sistemele de urmărire a traiectoriei) 15

2.1 Senzor de urmărire linie 15

2.2 Senzor de culoare 17

2.3 Senzori utilizați pentru monitorizare 18

2.4 Senzor de distanța 18

2.3 Module de ieșire 21

2.3.1 Motor DC 21

2.3.1.1 Descrierea motoarelor de curent continuu 21

2.3.1.2 Controlul motoarelor de curent continuu 23

2.3.2 LCD 31

2.4 Conectarea modulelor 32

Capitolul 3 IMPLEMENTARE 33

3.1 Tipuri de module 33

3.2 Arduino Uno v.3 33

3.1.1 Instalare drivere Arduino 33

3.1.1 [anonimizat], Upload 33

3.3 Senzori 36

3.2.1 Senzor de urmărire linie 36

3.2.1 Senzor de culoare 40

3.2.1 Senzor de distanță 43

3.3 Module de ieșire 45

3.3.1 Motor DC și Ardumoto 45

3.3.2 LCD 46

3.4 Conectarea Arduino la celelalte componente ale sistemului 49

Capitolul 4 TESTAREA ȘI VALIDAREA SISTEMULUI 51

4.1 Conectarea Arduino la componente pentru sistemul de urmărire 51

– 53

4.2 Conectarea Arduino la componente pentru sistemul de monitorizare 54

Capitolul 5 PROMOVAREA ONLINE 57

Capitolul 6 CONCLUZII 61

5.1 Concluzii 61

5.2 Perspective de dezvoltare 61

Bibliografia 63

Figuri

Figura 1.1.[anonimizat] 3

Figura 1.2.Robot pentru depozitarea mărfurilor 4

Figura 2.1.Placuța Arduino 5

Figura 2.2.Arhitectura internă a plăcii Arduino UNO 6

Figura 2.3.Microcontroler Atmega328 6

Figura 2.4.Arduino Mega 2560 7

Figura 2.5.Placa Arduino Due 8

Figura 2.6.Parametrii pentru Arduino Due 9

Figura 2.7.Arduino Leonardo 9

Figura 2.8.Arduino Micro 10

Figura 2.9.Arduino Pro Mini 10

Figura 2.10.Arduino Wifi 11

Figura 2.11.Arduino Yun 12

Figura 2.12.Arduino Ethernet Leonardo 12

Figura 2.13.Senzori de urmărire linie QTR 13

Figura 2.14.Senzor cu fotorezistență și led 14

Figura 2.15.Senzor cu fotodiodă și led IR 14

Figura 2.16.Senzor de culoare HDJD-S822 15

Figura 2.17.Senzor de culoare lumină ADJD-S311 16

Figura 2.18.Senzor de distanță digitală 16

Figura 2.19.Senzor de distanță Sharp 17

Figura 2.20.Motor DC 3-6V 18

Figura 2.21.Servomotor 19

Figura 2.22. Sub Micro motor cu cutie de viteză 6DX19L 20

Figura 2.23. Motor electric micro metal 1000:1 HP 20

Figura 2.24.H-Bridge 21

Figura 2.25.Ardumoto 21

Figura 2.26.Driver motor L298 , tip shield 22

Figura 2.27.A4990 Dual Motor Driver 23

Figura 2.28.MC33926 24

Figura 2.29. Driver Motor 18V 7A 24

Figura 2.30. Driver Motor Dual VNH2SP30 25

Figura 2.31. Driver Motor High Power 18v25 26

Figura 2.32. Driver TB6612FNG Dual 1 A 26

Figura 2.33.Driver motor stepper A4988 28

Figura 2.34.Breadboard 29

Figura 3.1.Serial Port 30

Figura 3.2.Board de selectare Arduino 31

Figura 3.3.Descărcarea programului “Blink” 32

Figura 3.4.[anonimizat] 32

Figura 3.5.Programul pentru led 33

Figura 3.6.Senzori de urmărire 34

Figura 3.7.Schema electrică 34

Figura 3.8.Conectarea senzorului la Arduino UNO 35

Figura 3.9.Programul Arduino pentru senzorul de urmărire 35

Figura 3.10.Valori senzori de urmărire date la Arduino 36

Figura 3.11.Schema de conexiune a senzorului de culoare la Arduino 37

Figura 3.12.Codul de testare a [anonimizat] 1 38

Figura 3.13.Codul de testare a [anonimizat] 1 38

Figura 3.14.Schema de conectare a senzorului de prezență la placa Arduino 39

Figura 3.15.Codul de testare a senzorului de distanță 40

Figura 3.16.Valorile senzorului de distanță date la Arduino 40

Figura 3.17.Conectarea Ardumoto și motoarele la Arduino 41

Figura 3.18.Cod de testare a motorului și ardumoto(driver)- partea 1 42

Figura 3.19. Cod de testare a motorului și ardumoto(driver)- partea 2 42

Figura 3.20.Display LCD 44

Figura 3.21.Conectarea display-ul la Arduino 45

Figura 3.22.Conectarea generala cu toate componentele pentru monitorizare 46

Figura 3.23.Conectare generala cu toate componeele pentru sitemul robotică de urmărire 47

Figura 4.1.Când senzorul de urmărire se află la mijloc 49

Figura 4.2.Când senzorul de urmărire se află la dreapta 49

Figura 6.1.Prima parte a site-ul de promovare 53

Figura 6.2.Partea doua a Site-ul de promvare 54

Figura 6.3.Partea treia a Site-ul de promovare 54

Figura 6.4.Partea a patra a site-ul de promovare 55

Figura 6.5.Butoane 55

Figura 6.6.Pagina Carti 56

Figura 6.7.Tabelul din baza de date pentru pagina Carti 56

Figura 6.8.Pagina Gastigatori 57

Figura 6.9. Tabelul din baza de date pentru pagina Carti 57

Figura 6.10.Înregistrare pentru concurs 58

Figura 6.11.Înserare în baza de date 58

Figura 6.12.Pornirea bazei de date cu Xampp 59

Figura 6.13.Crearea bazei de date 59

Tabele

Tabelul 2.1.Parametrii pentru ATmega328 6

Tabelul 2.2.Parametrii pentru Arduino Mega 2560 8

Tabelul 2.3.Parametrii pentru Arduino Due 9

Tabelul 2.4.Funcționarea motoarelor cu acest driver 25

Tabelul 2.5.Descrierea pini plăci Driver Motor VNH5019 27

Tabelul 2.6.Cu ajutorul celor 3 intrări (MS1, MS2 și MS3) putem să obținem cele 5 rezoluții de pas conformul tabelul. 28

Tabelul 3.1.Performanțele senzorului de distanță 41

Abstract

Prezenta lucrare de licență propune o soluție pentru automatizarea transferului de mărfuri în interiorul depozitelor. Pentru aceasta a fost dezvoltat un mic robot care va urmări ca și traiectorie între depozite o linie neagră trasată pe podea.

Sistemul de control dezvoltat trebuie să detecteze linia respectivă și să trimită comenzi robotului, ca acesta să rămână pe linia ei de urmărire.

Robotul, când va urmări linia neagră, va trebuie sa detecteze depozitul la care va trebui să oprească codificat prin culori, iar în momentul detectării, robotul va opri ambele motoare pentru o presupsă descărcare/încărcare din/în depozitul respectiv.

Tot această lucrare propune și o metodă de monitorizare a depozitelor, pentru a afla la care depozit anume se află robotul. Fiecare depozit conține senzori care, dacă vor detecta că pe raza lor se află un robot, vor trimite informațiile mai departe către un display.

INTRODUCERE

În ziua de astăzi, într-un depozit de marfă se dorește ca transportul mărfurilor să fie cât mai eficient, iar transferul fluent al mărfurilor să fie fluent. Problemele ce apar într-un depozit mare de marfă sunt date de durată aranjării mărfurilor și timpul necesar personalului pentru inventarierea fiecărui element.

Mai jos sunt enumerate soluțiile existente pe piață de sisteme automatizat în transportul mărfurilor utilizate în depozite. Aceste sunt foarte eficente și permit manipularea ușoară a mărfii într-un depozit.

Vechicul de transfer multi-level scalabil: acest este integrat într-un cadrul de oțel al culoarului și este utilizat pentru depozitarea pieselor mici [25.].Acesta este transportat pe o șină, șina fiind folosită pentru ghidaj, robotul fiind capabil să plaseze marfa pe o înălțime de până la 8 nivele. Are două dispozitive pentru manipularea încărcăturii, aceste două dispozitive sunt folosite pentru depozitare și preluarea simultană într-un singur pas. Deplasarea pe verticală și orizontală se face cu ajutorul a două benzi magnetice câte una pentru fiecare coordonată. Produsele de depozitare se recunosc dupa codul de bare, în funcție de care se depozitează și ajung în baza de date a depozitului. Inventarierea automată va spori eficiența în depozitare a cutiilor în depozitul complet automatizat.

Figura 1.1. Vechicul de transfer multi-level scalabil [25.]

Sistem de stocare a documentelor: sunt sisteme asemănatoare cu cel descris mai sus, numai că acest sistem va depozita și va regăsi cutii, bunuri de depozitare. Sistemul poate sa accelereze foarte repede și are o bună precizie.[26.]

Figura 1.2. Robot pentru depozitarea mărfurilor[26.]

Sunt roboți ca niște valize portocali care se deplaseză de a lungul linilor de pe podea să ajungă la rafturile cu produse. Acesta va ajunge la raft si va prelua raftul respectiv. Ceea ce este interesant este funcționarea mai multor roboți deodată fără să lovească între ele și poate să îndeplinească comenzi mult mai rapide.

În această lucrare, am propus o variantă mai ieftină și accesibilă decăt soluțiile prezentate anterior: un sistem de transport automatizat reprezentat de un robot care urmăreste o linie neagră și se opreste după culoare depozitului, unde trebuie sa descarce presupusa marfă. Recunoașterea culorii depozitului se va face cu ajutorul senzorului de culoare. In locul sistemului de urmărire a liniei se poate folosi o bandă magnetică asemănătoare celei din sistemul pe care l-am descris mai sus la vehicul de transfer multi-level scalabil; acest sistem chiar dacă este mai eficient este o alternativă mai scumpă.

Obiectivele lucrării sunt:

Studiul teoretic al aplicațiilor automate pe care le va folosi Arduino.

Analiza și validarea dispozitivelor de urmărire și monitorizare (senzor de urmărire, senzor de prezență, senzor de culoare).

Realizarea legăturilor dintre placa Arduino și dispozitivele de comandă.

Proiectarea și realizarea programelor de control și de citire a senzorilor pentru robot.

Proiectarea si realizarea programului de monitorizare, cu ajutorul mediul de dezvoltare Arduino.

Testarea componentelor software și a sistemului.

Lucrarea este structurată astfel: în Introducere au fost descrise soluțiile similare existente pe piață si s-a făcut o scurtă descriere a sistemului ales. În Capitolul 2, am realizat o analiză comparativă a componentelor existente pe piață pentru fiecare sistem utilizat. În Capitolul 3 am descris partea de implementare: realizarea conexiunilor și dezvoltarea programelor Arduino. În Capitolul 4 este descrisă testarea și validarea sistemului, iar în Capitolul 5 este prezentat un site care a fost realizat pentru descrierea sistemului. Capitolul 6 prezintă concluziile generale ale lucrării.

STUDIUL TEORETIC

Platforma de dezvoltare Arduino

Arduino este un microcontroler board, asemănător unui mincalculator.În jurul platformei Arduino a fost creat un ecosistem de dispozitive cu ajutorul cărora se pot culege informațiile dorite din mediu.[12.]

Ca și senzori care se pot folosi în preluarea informațiilor din mediu, amintim: senzori de mișcare, senzori de culoare, senzori de distanță, senzori de incediu, senzoribiometrici, senzori pentru măsurarea forței de apăsare, sunet, senzori de curent, senzori de forță, senzori de îndoire, sau senzori de prezență.

Figura 2.1.Placuța Arduino [40.]

Dacă dorim să ne conectăm cu Arduino la un alt sistem, există plăci de rețea Ethernet dedicate.Mai sunt și alte dispozitive pentru comunicare capabile să transmită date prin conexiune radio, plăci de rețea WIFI etc.

Pentru partea mecanică există motoare de curent continuu, motoare pas cu pas sau servomotor acestea putând fi controlate perfect de microcontroler.

Arhitectura internă a plăcii Arduino UNO

Figura 2.2.Arhitectura internă a plăcii Arduino UNO

Arduino Uno: Placa de dezvoltare este o placă cu un circuit integrat pe 8 biți din familia Atmel AVR. Această placă oferă suport pentru ieșiri și intrări digitale, intrări analogice, comandă PWM, comunicație serială.

Platforma Arduino a fost proiectată în 2005, pentru a oferi un mod mai ieftin și ușor pentru studenți, profesioniști și pasionați de a contrui diferite dispozitive.

Arduino tradus din limba Italiană înseamnă “bun prieten”.

Microcontrolerul Atmega328 din figura 2.2 este un circuit integrat pe 8 biți de înaltă performanță ce are la bază o arhitectură RISC atingând 1 MIPS per MHz. Are o memorie de tip flash (memorie internă) de 32 KB ce rezistă la 10.000 de cicluri de ștergere și scriere, o memorie de tip EEPROM de 1KB ce rezistă la 100.000 de cicluri de stergere și scriere și o memorie de tip SRAM de 2 KB.[1.]

Figura 2.3. Microcontroler Atmega328 [41.]

Parametri pentru Atmega328 sunt reprezentați în tabelul 2.1.

Tabelul 2.1.Parametrii pentru ATmega328 [2.]

http://www.robofun.ro/arduino_uno_v3

Arduino Mega 2560: Placa de dezvoltare Arduino Mega este o placă cu un circuit integrat pe 8 biți de înaltă performanță ce are la bază o arhitectură RISC. Această placă are 54 de ieșiri/intrări digitale din care 15 se pot folosi ca ieșiri PWM, 16 intrări analogice, numărător de timp real (RTC), 32 registre de lucru, șase timere ,contoare cu comparare moduri și PWM, 16 canale, un port serial SPI. Are un modul Idle care va opri CPU-ul pentru a permite activarea portului SPI, timere/contoare, SRAM și sistemul de întrerupere să poată funcționa. Conținutul registului va fi salvat în cazul în care sistemul va fi oprit, dar îngheață oscilatorul, iar până la următoarea întrerupere va dezactiva toate celelalte funcții din cip. Pentru a economisi energia, semnalul de ceas va rula permanent, ceea ce va permite utilizatorului atunci când restul dispozitivele sunt in stare latentă să poată să mențină o bază timer.[3.]

Figura 2.4. Arduino Mega 2560 [40.]

Placa are memorie de tip flash de 256 KB (poate să facă 10.000 de scrieri și ștergeri), memorie de tip EEPROM de 4 KB (poate să facă 100.000 de ștergeri și scrieri) și memorie de tip SRAM de 8 KB.

Această placă poate să fie conectată la o sursă externă de la 6 până la 20V. Nu este voie să fie alimentat cu tensiuni mai mari de 12 V deoarece se va supraîncălzii, iar acest lucru poate să ducă la deteriorarea plăcii.

Parametri pentru Atmega2560:

Tabelul 2.2. Parametrii pentru Arduino Mega 2560

http://www.robofun.ro/arduino_mega2560?search=arduino%20mega

Arduino Due este prima placă Arduino care este bazată pe un procesor ARM pe 32 de biți.[4.]

Arduino Due are 45 de pini pentru ieșiri/intrări digitale (din care 12 se pot folosi ca ieșiri PWM), 12 ieșiri analogice, un ceas de 84 MHz, are 4 UART porturi seriale hardware, un buton de stergere, unbuton de resetare, 2 DAC (digital analog).

Acest microcontroler are încorporată memorie Flash de la 256 KB până 512 KB, memoria SRAM de la 32 KB până la 100 KB și memoria ROM de 16 KB.

Pentru funcționarea sigură a fost încorporat regulator de tensiune. Are condiții de siguranță la resetare cu ajutorul Power-on-Reset(POR), detector Brown-out (BOD) și Watchdog.

Figura 2.5. Placa Arduino Due [41.]

Arduino Due funcționează la 3.3 V diferit față de celelalte plăci Arduino. Tensiunea care o pot suporta pinii de intrare/ieșire este de 3.3 V, iar dacă se va încerca furnizarea unei tensiuni mai mari, cum ar fi 5 V, placa se poate deteriora.

Parametri pentru AT91SAM3X8E:

Tabelul 2.3. Parametrii pentru Arduino Due

Arduino Leonardo are 20 de pini digitali de intrare/ieșire din care 7 pini se pot folosi ca PWM si 12 dintre ei ca intrări analogice, un oscilator cu cuarț de 16 MHz. Acest microcontroler va pemite sa fie conectată la un calculator ca o tastatură sau ca un mouse.[27.]

Placa Leonardo poate sa aibe o sursă externă de la 6 până la 20 V. Fiecare pin poate să ofere un curent maxim de 40mA, iar ca semnal de intrare poate primi un curent maxim de 50 mA la 3.3 V pe pin.

Placa Arduino Leonardo oferă, pentru comunicare cu alte plăci Arduino sau cu un calculator, port serial de comunicare UART TTL (pinii digitali RX și TX) și un port serial de comunicare prin USB (conectare la un calculator)

Memoria SRAM este de 2.5 KB, memoria EEPROM de 1 KB, iarmemoria Flash de 32 KB .

Putem să culegem informațile date de exemplu de un senzor de temperatură împreună cu un Arduino Leonardo, introducând periodic informațile într-un document Excel.

Figura 2.7. Arduino Leonardo [41.]

Cu placa Arduino Micro se poate incărca un nou cod fără a avea nevoie să folosim hardware-extern.[28.]

Memoria SRAM este de 2.5 KB, memoria EEPROM de 1 KB, memoria Flash de 32 KB și semnalul de ceas de 16 MHz. Are 20 de intrări/ieșiri digitale din care 7 ieșiri PWM și 12 intrări analogice.

Figura 2.8. Arduino Micro [41.]

Placa Arduino Mini este o placă cu un circuit integrat pe 8 biți din familia Atmel AVR.[5.]

Această placă are 14 pini digitali de intrare/ieșire din care 6 se pot folosi pentru ieșiri PWM, 6 intrări analogice și un buton de resetare.

Sunt două feluri de de versiuni ale Pro Mini. Una care operează la 5 V la o frecvență de 8 MHz, iar celălaltă operează la 5 V cu o frecvență de 16 MHz.Curentul DC acceptat la pinii de intrare/ieșire este de 40 mA.

Acest microcontroler are încorporată memorie Flash de 32 KB pentru stocare cod, memorie SRAM de 2 KB și memorie EEPROM de 1 KB.

Placa are un regulator de tensiune pentru a putea fi alimentat cu o tensiune de până la 12VDC.

Figura 2.9. Arduino Pro Mini

EngineersGarage – Engineering Community

Arduino Wifi Shield: acesta este o placa care va permite ca o placa Arduino să poată fi conectată la internet, pentru ca acesta să poată fi conectat, se folosește specificația wireless 802.11. Placa poate fi conectat la internet fără fir. Arduino care este compatibil pentru această placă este Arduino Due. Tipuri de criptare sunt WEP și WAP2. Are și un slot pentru card micro SD, acesta este folosit pentru a stoca fișiere pe care dorim să le folosim în rețea.

Pe placă este și un conector Mini-USB, dar acesta nu este pentru programare ci pentru actualizarea AT32UC3 folosind protocolul Atmel DFU.[22.]

Are patru led-uri de diferite culori, fiecare indică altceva, led-ul L9 (galben) acesta ne arată că este legat de pin-ul 9, led-ul Link (verde) acesta ne va indica dacă este o conexiune le rețea, led-ul EROARE (roșu) acesta ne indică daca există vreo eroare de comunicație, led DATA(albastru) acesta ne va arăta dacă datele sunt transmise-primite pe placă.

Figura 2.10. Arduino Wifi [41.]

Arduino Yun: este o placă bazat pe microcontroller ATMEGA32U și are un procesor Atheros este pentru a susține o distribuție Linux. Placa are un Ethenet si Wifi support, un USB port, slot pentru card micro, are 20 de pini digitali de intrare/ieșire din care 7 pini se pot folosi ca PWM si 12 dintre ei ca intrări analogice, un oscilator cu cuarț de 16 MHz și 3 butoane de resetare.[6.]

Placa are memorie de tip flash de 32 KB, memorie de tip EEPROM de 1 KB și memorie de tip SRAM de2.5 KB.

Iar pentru microprocesorul Linux, are procesor Atheros AR9331, tensiunea ei de operare este de 3.3 V, memoria Flash este de 16 MB, memoria Ram este de 64 MB DDR2.

Memoria de pe AR9331 a plăci nu este încorporat în procesor.

Poate sa funcționeze la 5V și fiecare pin poate sa primească sau să ofere curent maxim 40 mA.

Figura 2.11. Arduino Yun[42.]

Arduino Ethernet Leonardo: este o placă cu microcontroler ATMEGA32U4. Placa are 20 pini digitale de intrare/ieșiri din care 12 sunt intrări analogice și 7 pini ca ieșiri analogice, are o conexiune RJ45, un conector micro USB și un buton de resetare. Leonardo ETH este diferit față de plăcii Ethernet pentru că acest microcontroler are încorporat comunicarea USB, fără a fi nevoie de convertor extern USB. Acestei plăcii îi se va permite să apară pe calculator ca un mouse sau ca o tastatură.[30.]

Din cei 14 pinii rezervați, 4 sunt folosiți pentru SD card select iar 10 pini sunt folosit pentru W5500.

Placa are memorie de tip flash de 32 KB, memorie de tip EEPROM de 1 KB și memorie de tip SRAM de2.5 KB.

Figura 2.12. Arduino Ethernet Leonardo[42.]

Arduino ISP: cu această placă putem încărca schițe pe orice placă de tip AVR. [7.] Arduino ISP poate să alimenteze cu o tensiune de 5 V către placa care trebuie să programeze.

Tensiunea de alimentare este 5 V. Are două conexiuni diferite, o conexiune la calculator prin micro USB și conexiunea cu placa dorită prin ICSP.

Odată conectat placa Arduino ISP la placa Arduino prin pinii ISCP, vom putea să deschidem din mediul de dezvoltare a Arduino și selectăm “Arduino ISP” din “Tool -> Programmers”. Iar dacă dorim să încărcăm schițe atunci vom folosi Arduino ISP și com alege opțiunea “Upload using programmer” din meniu.

Senzori utilizați în robotică (sistemele de urmărire a traiectoriei)

Senzor de urmărire linie

QTR – este un senzor pentru urmărire linie format dintr-un fototranzistor. Sunt mai multe tipuri de senzori QTR precum: [34]

QTR – 8RC Reflectance Sensor Array – este format din 8 senzori pentru emițător și receptor ,și fiecare senzor are intrări și ieșiri digitale. Led-urile sunt legate în serie pentru a reduce consumul curentului la jumătate. Tensiunea de alimentare este între 3.3 V- 5 V. Alimentarea de curent este 100 mA. Distanța ei de dectare este 3 mm, iar distanța maximă de dectare este 9.5 mm. Dacă nu aveți nevoie de toți cei 8 senzori, se poate rupe doi senzori

QTR – 8A Reflectance Sensor Array – este format din 8 senzori pentru emițător și receptor și fiecare senzor are intrări și ieșiri analogice. Tensiunea de alimentare este între 3.3 V și 5V

QTR – 3RC Reflectance Sensor Array – este un detector pentru robot-linie format din 3 senzori și fiecare senzor are intrări și ieșiri digitale. Tensiunea de alimentară este de 5 V.

QTR – 3A Reflectance Sensor Array – este un detector pentru robot-linie format din 3 senzori, iar fiecare senzor are intrări și ieșiri analogice. Tensiunea de alimentare este de 5 V.

QTR – 1RC Reflectance Sensor – este format dintr-un senzor cu intrare și ieșire digitală. Tensiunea de alimentare este de 5 V.

QTR – 1A Reflectance Sensor – este format dintr-un senzor cu intrare și ieșire analogică. Tensiunea de alimentare este de 5V.

Figura 2.13. Senzori de urmărire linie QTR [43.]

Senzor cu fotorezistențe și led Pentru lucrare de licență am ales să utilizez un senzor de urmărire linie cu fotorezistență deoarece este mai practic și are un cost mai mic față de ceilalți senzori care au fost enumerați mai sus. Senzorul este format din 3 fotorezistențe, 4 led-uri, 3 rezistențe de 10 kOhm pentru fotorezistențe și 4 rezistențe de 220 Ohm pentru led-uri.

Fotorezistența – conține un set de linii ondulate fotosensibile: în momentul în care pe suprafața ei va detecta un nivel de lumină suficient de mare, acesta va permite să curgă mai mult curent prin el, declanșând o creștere a tensiunii.

Pentru recunoasterea liniei negre cu ajutorul senzorului se utilizează un led care va reflecta lumina pe direcția fotorezistenței atunci când acesta se va afla pe o suprafața alba, iar când se va afla pe linia neagră lumina nu se va mai reflecta pe fotorezistență deoarece un obiect întunecat va reflecta întotdeauna mai puțină lumina decât un obiect de altă culoare.

Figura 2.14. Senzor cu fotorezistență și led

Senzor cu fotodiodă și led IR

Figura 2.15. Senzor cu fotodiodă și led IR

Funcționarea acestui tip de senzor este asemănător cu cu fotorezistență, led-ul va emite lumina infraroșu. Iar dacă suprafața este albă, atunci lumina se va reflecta de pe suprafața albă și va fi captată de fotodiodă, iar fotodioda va transmite informația spre microcontroler.

Dacă suprafața este neagră, atunci led-ul va emite lumina infraroșu, dar acesta nu se va mai reflecta raza deoarece suprafața neagră va absorbi lumina.

Fododioda când va fi sub influența lumini, rezistența acestuia va scădea.

Senzor de culoare

Acest senzor va putea sa detecteze culoarea unui obiect și să transmită informația înapoi în proces.

HDJD-S822-QR999 – este de o performanța mare și dimensiuni mici. Recunoașterea culorii se face cu ajutorul unei game combinate de fototdiode si a trei amplificatoare transimpedanță într-o singur bloc monolitic CMOS CI. Senzorul are matricea fotodiodă acoperite de trei filtre de culoare:Roșu(R), Verde(G) și Albastru(B). Acest senzor va transforma lumina RGB în iesiri analogice de tensiune, după cum se poate observa din Figura 2.3 de mai jos VROUT(VR), VGOUT(VG), VBOUT(VB).[9.]

Figura 2.16. Senzor de culoare HDJD-S822

Acest senzor poate fi folosit pentru detectarea culorii în procese industriale, de exemplu, detectarea piesei prin culoarea ei.

Filtrele de culoare R, G, B de pe matricea fotodiodă vor detecta culorile Galben, Rosu si Albastru prin reflexia luminii ledului integrat pe senzor.

Fotodioda va ajuta ca lumina care va cădea pe senzor sa recunoască culorile R, G, B transformând în lumină fotocurenții. Amplificatoarele transimpedanță integrate R, G, B vor converti fotocurentul în ieșiri analogice de tensiune. Se vor recunoaște culorile Rosu, Verde, si Albastru cu ajutorul unei creșteri liniare a tensiunii de ieșire proporțional cu creșterea intensității luminii.

Acest senzor de culoare este foarte sensibil la umiditate. Din cauza sensibilității, acest senzor nu se va putea folosi în zone unde nivelul de umiditate este mare.

ADJD-S311-CR999 – are patru canale RGB si CLEAR. Este format dintr-un circuit integrat CMOS IC. Acest tip de circuit integrat va disipa mai puțină energie decât circuitele logice care au sarcinile rezistive. Datorită consumului redus de energie si a dimensiunii mici poate fi folosit pentru telefoane mobile sau dispozitive portabile. Senzorul poate detecta și culorile reflectorizante.[10.]

Figura 2.17. Senzor de culoare lumină ADJD-S311[44.]

Senzori utilizați pentru monitorizare

Senzor de distanța

GP2Y0D810Z0F – aceste senzor poate fi utilizat pentru specificarea prezenței unui obiect în raza lui de detecție și nu pentru specificarea distanței propriu-zise. Senzorul este compus din PD (foto diodă), diodă emițător de infraroșu si circuit de procesare a semnalului.

Figura 2.18. Senzor de distanță digitală[42.]

Temperatura mediului înconjurător nu este un factor perturbator datorită metodei de triangulație care est efolosită pentru detecția obiectelor. Dacă într-un anumit moment de timp un obiect se află în raza de detecție, tensiunea de ieșire va rămâne ridicată. Aceste senzor se comportă ca un senzor de aproximitate.[11.]

Aceste senzor este sensibil la praf, apă sau uleiuri, substanțe care pot deteriora caracteristicile senzorului. Lumina directă, de ex. cea solară, scade puternic performanțele de detecție.

GP2Y0D805Z0F – Acest senzor are aceleasi specificații ca și senzorul GP2Y0D810Z0F de mai sus, numai că acesta detectează obiectul pe o rază de 5 cm.

GP2Y0D815Z0F – Acest senzor are aceleasi specificații ca și senzorul GP2Y0D810Z0F de mai sus, numai că acesta detectează obiectul pe o rază de 15 cm.

Senzori de distanță Sharp: acesti senzorii de distanță poate să ne spună cât de departe este acel obiect din față lui.[19.]

Există mai multe categori de senzori, cea ce diferă între el este distanța.

Senzorii depinde de emiterea de ultrasunet și măsurarea de timpului sa fie destul încăt să primească înapoi ecoul. Sunt senzori foarte precisi și foarte ușor de utilizat. Ieșirea variază direct proporțional cu distanța măsurată, de exemplu dacă un obiect se află la un metru de senzor va da un semnal mult mai mică decât atunci când obiectul se află la 2 metri în concluzie cu cât obiectul se află mai departe semnalul de ieșire va creste. Sunetul de deplasare a senzorului se deplasează cu o viteză fixă și din această cauză senzorul este cam lentă.

A doua categorie de senzori sunt cu reflexia unui raze de infraroșu. Acest are două zone active, una care emită lumina și cealaltă care recepționează raza de reflectare a obiectului pentru măsurarea distanței.

Figura 2.19. Senzor de distanță Sharp [42.]

Sunt senzori mai rapizi fată de cel care am povestit mai sus(ultrasonice), da date corect măsurate numai într-o gamă mai strictă de distanțe, de exemplu:

senzor infraroșu în gamă 3 – 40 cm;

senzor infraroșu în gamă 10 – 80 cm ;

senzor infraroșu în gamă 15 – 150 cm;

Senzori de distanță digital:

senzor digital 5 cm în fața senzorului;

senzor digital 10 cm în fața senzorului;

Senzor infraroșu în gamă 10 – 80, Arduino va citi o valoarea aproape de zero de la portul analogic primit de la senzorul conectat atunci când pe raza ei nu există niciun obiect. Când obiectul respectiv se află la 10 metri, atunci arduino va citi de la portul analogic o valoare de aproximativ de 630. Si atunci când obiectul se aproprie de senzor, distanța va scădea și odată cu ea va scădea și valoare citită de Arduino de la portul analogic primit de la senzor.[19.]

Dacă dorim să avem o distanță cât mai exact la distanțe mai mari, cel mai indicat este folosim o combinație de doi sau mai mulți senzori, depinde de ce dorești să realizezi.

De exemplu dacă doresti să faci un robot care ocolește obstacole atunci este nevoie doar de un singur senzor de 10 – 80 cm. Atunci când robotul se va apropria de minim 15 cm de acel obstacol din calea lui, îți va schimba direcția.

Senzori Sharp consumă foarte mult curent din cauza că emite lumina infraroșie de foarte multe ori și afectează perturbația în sursa de alimentare.

Nu este indicat atunci când dorim sa facem un robot, să alimentăm motoarele(sunt consumatori mari de curent, mai ales când motoarele pleacă de pe loc ) și senzori de la aceași sursă de alimentare, deoarece senzori vor primi mai mult sau puțin valori eronate. Este recomandat alimentare separată a motorului si a senzorului.

Mai este o soluție pentru acestă problemă este din zona hardware să conectăm în paralel cu alimentare senzorului Sharp cu un condesator electrolitic.

Cea de a treia categorie de senzori sunt senzorii cu laser, sunt mult mai precisi și mai rapizi față de toți senzori pe care i-am enumerate mai sus, dar și prețul este mult mai mare, poate să ajungă sute sau mii de euro.

Module de ieșire

Motor DC

Descrierea motoarelor de curent continuu

Motor DC: aceste sunt concepute să convertească energia electrică în mișcare fizică. Dacă dorim să schimbăm direcția motorului, trebuie numai să inversăm polaritatea tensiunii la motor. Motorul se alimentează cu tensiuni între 3V și 6V.[13.]

Figura 2.20. Motor DC 3-6V

http://it.aliexpress.com

Servomotor: este un motor de curent electric continuu, care are incapsulate în aceeași carcasă un circuit electronic de interfatare și un dispozitiv care este va ajuta să determine poziția motorului. Acest servomotor are un cuplu de 5 Kg/cm cea ce înseamnă ca acest motor poate să ridice o greutate de 5 kg dar pentru asta trebuie sa fie prinsă exact la 1 cm de centrul axului motorului, iar dacă este prinsă la 2 cm de centrul axului atunci greutatea pe care o poate suporta motorul va scădea la jumătate adică greutate suportabilă va fi 2.5 kg/cm.[12.]

Controlul servomotorului se va face din factorul de umplere al semnalului PWM primit de la microcontrolerul Arduino.[12.]

Servomotorul are, de obicei, un fir negru sau maro care corespunde la masă și care se conectează la Arduino la pinul GND, firul roșu este conectat la pinul 5V, iar firul alb, portocaliu sau alb este pentru semnalul PWM.

Toată puterea electrică necesară unui servomotor poate fi dată de placa Arduino. De exemplu, un servomotor mic de 9 g poate funcționa chiar și prin placa Arduino conectată la USB. Pentru un servomotor mediu, în momentul trimiterii unui semnal, placa Arduino tse va resetadeoarece servomotorul are nevoie de mai mult curent decât poate sa dea placa Arduino.

Figura 2.21. Servomotor

http://articulo.mercadolibre.com.mx/MLM-493394446

Sub Micro motor cu cutie de viteză 6DX19L : acest este un motor cilindrică de curent continuu fără miez periat, are și cutie de viteză. Are greutate usoară cea ce este un avantaj dacă dorim sa creăm un robot de miniatură și mecanisme foarte mici.[39.]

Tensiunea nominală pentru acest motor este de la 3V până la 6V. Tensiune mici s-ar putea să afecteze practic, iar tensiunea prea mare s-ar putea să afecteze negative motorul.

Figura 2.22. Sub Micro motor cu cutie de viteză 6DX19L [42.]

Motor electric micro metal 1000:1 HP: este motor de curent continuu cu peri și are o cutie de viteză din metal, este de foarte de buna deoarece este nevoie de controlul fin la viteye foarte mici și sunt utilizate la 6 V. [38.]

Aceste motoare poate ruleze la tensiuni mari sau mai mici de tensiunea nominal, asa că poate să funcționeze între 3 V și 9 V.

Aceste tip de motor au o gamă largă de viteze de la 5:1 până la 1000:1.

Figura 2.23. Motor electric micro metal 1000:1 HP[42.]

Controlul motoarelor de curent continuu

H-Bridge – dacă dorim sa schimbăm direcția unui motor DC, atunci trebuie să schimbăm direcția fluxului de curent. Pentru aceasta este nevoie de 4 tranzistoare.[8.]

+V

A B

S2

Figura 2.24. H-Bridge

După cum se vede în figura 2.3, S1 și S4 sunt închise, iar S3 și S4 sunt deschise ceea ce înseamnă că motorul va fi conectat la polaritatea pozitivă în A și la polaritatea pozitivă în B. Invers, când S3 și S2 sunt închise, iar S1 și S4 sunt deschise atunci polaritatea pozitivă va fi în B, iar polaritatea negativă în A, iar motorul se va mișca în direcție opusă.

Ardumoto – sau L298 este un circuit monolitic care a fost creat să accepte logica TTL. Acest circuit poate antrena sarcini inductive cum ar fi motoare pas cu pas, relee și motoare DC.

Are două intrări pentru a conecta sau deconecta elementul antrenat de semnalele de intrare.

Ardumoto are două ieșiri de putere A și B, ieșirile pot conduce sarcini inductive în mod comun sau diferențial în funcție de starea ei de intrare.

Figura 2.25. Ardumoto

https://nerdclass.wordpress.com

Driver motoare L298 versiunea 2. Tip shield : acest driver este folosit pentru pentru controlaorea motoarelor DC(motoare de curent continuu). Arduino poate să dea prin portul lui o putere foare mică, asta însemană ca motorul nu va primi destulă tensiune cât sa aibă puterea necesară pentru a învârti un motor. Este bine sa avem un driver, pentru că dacă legăm direct motoarele la porturile Arduino, atunci riscăm să ardem procesorul plăci. Iar ca să nu ajungem la asfel de probleme , vom avea nevoie de un amplificator de tensiune, care să fie capabil sa preia putere de la baterie și să io transmită motoarelor așa cum am comandat noi arduino. [31.]

Pentru controlarea motoareloe este nevoie de 2 Amperi.

Acest driver va fi conectat la placa Arduino prin 4 pini digitali 3, 5, 6 și 9 prin înfingerea direct pe placa arduino.

Cea oferă suplimentar pe lângă placa arduino este că îti mai oferă 6 conectori cu conexiunea directă la 5V și mai oferă încă 6 conectori cu conexiunea directă la masă GND.

Tot prin aceast shield putem să conectăm și un Bluetooth la Arduino, pentru acest avem la dispozitie 6 pinii special pentru conectare Bluetooth.

Are dispoziție și un jumper ca să putem alimentat placa Arduino direct de la sursa de alimentare a shield fără a mai fi nevoie de alimentare separată pentru amândoua, dar este permis și alimentarea separtă.

Figura 2.26. Driver motor L298 , tip shield [42.]

A4990 Dual Motor Driver: este in driver pentru două motoare de curent continuu cu perii de la 6 V pâna la 32 V sau motor pas cu pas. Cu ajutorul acestui dispozitiv vom putea conduce motoarele pas cu pas, cu curent cât are nevoie pentru orice direcție în fiecare fază, poate să aibă si două faze.[19.]

Poate să conducă în ambele motoare de curent continuu în aceeași direcție si poate să frâneze.

Acesta driver foloseste pini de ieșire de la Arduino 3, 4 și 5.

Poate să fie limitat un anumit curent de vârf a motorului prin sens rezistor de selecție,

cea ce va reduce încălzirea motorului și durata de viață a motorului va fi mai mare.

Acesta este protejat de scurtcircuit. Are un chip de protecție pentru ridicarea temperaturi, pentru supratensiune si blocarea subtensiune. Are și un circuit de protecție pentru inversarea tensiuni la motor.

Curentul de ieșire pentru motor de la placa oferă 0.7 A. Iar intrările sunt între 3 V și 5V. Poate să reziste la tensiuni de intrare până la 6 V.

Figura 2.27. A4990 Dual Motor Driver[43.]

Pin-ul OUT1 este pentru semnalul de ieșire pozitiv a motorului A. Pin-ul OUT2 (GND) este masă pentru motorul A. Pin-ul OUT3 este semnalul de ieșire pozitiv a motorului B. Pin-ul OUT 4 este masă(GND) pentru motorul B. In1 (LOW) este pentru a controla semnalul de intrare pentru OUT1. In2 (HIGH) este pentru inversarea intrări de control pentru OUT2. IN3 (LOW) este pentru a controla intrarea de la OUT3. In4 (HIGH) este pentru inversarea intrări de control pentru OUT4. INH (LOW) acest pin este pentru intare logică cu ajutorul cărui pune A4990 să aibe o putere mai mică când se află în modul sleep. Pin-ul EF1 este “Error flag outpu1”. Pin-ul EF2 este “Error flag outpu2”.

Driver Motor Dual MC33926: acest driver poate primească curent continuu până la 3A la un sigur motor cu peri de la 5V până la 28 V, poate să-i fie limitat vârful de curenți până 5V în câteva secunde. MC33926 poate să suporte ultrasunt până la 20 kHz.[15.]

Are o protecție pentru sub-tensiune, supra-curent si pentru ridicarea temperaturi. În timpul functionări se va supra-încălzi la curenții mici.

Cea ce-l face mai deosebit acest driver față de alte driver pentru motoare, este că acesta va permite să reducă în câteva secunde curentul depăsit până la sau când temperatura cipului se aproprie de limită. În momentul în care împinge chipul aproape de limită, vom vedea că motor va avea mai puțină energie.

Plăcuța MC33926 are în total 16 pini. Primul pin este Vin care este conectarea sursei de alimentare 28 Va motorului. Pin-ul OUT2 este semnalul de ieșire a motorului controlat de IN2. Pin-ul OUT2 este semnalul de ieșire a motorului controlat de IN1. VDD este alimentarea logică între 3 și 5 V, acesta poate fi deconectată. In1 (HIGH) este pentru a controla semnalul de intrare logică pentru OUT1. In2 (LOW) este pentru a controla semnalul de intrare logică pentru OUT2. Pin-ul PWM/D2 este pentru ca în momentul în care D2 a scăzut, atunci se vor seta OUT1 și OUT2 pe o impedanță mai mare. Pin-ul PWM/D1 este pentru a dezactiva intrarea, în momentul care D1 este mare atunci se va seta OUT1 și OUT2 pentru cresterea impedanței. Pin-ul SF este pentru supra-curent sau supra-tensiune.[15.]

(1)

Figura 2.28. MC33926[43.]

Driver Motor 18V 7A: controlează motoare de curent continuu cu peri. Acest driver funcționează cu tensiuni între 5.5 V și 30 V. Este un controler bidirecțional.[32.]

Are impulsuri de frecvență RC care funcționeză între 10- 333Hz. Are viteza maxima reglabilă de pornire și va frâna în momentul care viteza este zero.

CRC de detectare a erorilor, acesta va elimina erorile de comunicare a apărute din cauza zgomotului sau din cauza defectelor din soft.

Are 4 moduri de commandă: TTL, USB, Analog, RC.

Sunt mai multe tipuri de acest fel de driver după cum urmează: 18v7(Tensiunea absolută maximă este de 30 V, Tensiunea max recomandată este de 24 V, curent continuu maxim este de 7 A), 18v15(Tensiunea absolută maximă este de 30 V, Tensiunea max recomandată este de 24 V, curent continuu maxim este de 15 A), 24v12(Tensiunea absolută maximă este de 40 V, Tensiunea max recomandată este de 34 V, curent continuu maxim este de 12 A), 18v25(Tensiunea absolută maximă este de 30 V, Tensiunea max recomandată este de 24 V, curent continuu maxim este de 25 A), 24v23(Tensiunea absolută maximă este de 40 V, Tensiunea max recomandată este de 34 V, curent continuu maxim este de 23 A).

Figura 2.29. Driver Motor 18V 7A [42.]

Driver Motor Dual VNH2SP30: este driver pentru controlare a motorului. Tensiunea minimă de alimentare este de 5.5V și tensiunea maximă de alimentare este de 16 V. Curentul pe canal este de 14 A. Primește curent pe canal maxim 30 A iar prin două canale primește curent de 25 A. Poate opera o frecvența maximă PWM de 20 kHz. Timpul de supraîncălzire la curent de 20 A este de 35 secunde iar la la curent de 15 A este de 150 secunde.[17.]

Această versiune are un senzor de curent.

Figura 2.30. Driver Motor Dual VNH2SP30 [42.]

Driver Motor Dual VNH3SP30: este driver pentru controlare a motorului. Tensiunea minimă de alimentare este de 5.5V și tensiunea maximă de alimentare este de 36 V. Curentul pe canal este de 9 A. Primește curent pe canal maxim 30 A iar prin două canale primește curent de 25 A. Poate opera o frecvența maximă PWM de 10 kHz. Timpul de supraîncălzire la curent de 20 A este de 8 secunde iar la la curent de 15 A este de 30 secunde.[18.]

Driver Motor High Power 18v25: acest driver este bidirecțional cea ce va pemite controlul ei la motoarelor de curent continuu cu puteri mari, poate opera cu o frecvență de 40 kHz. Această placă suportă tensiuni dintre 5.5 V și 30 V. [35.]

Placa are următori pini după cum urmează:

Pin-ul V+ – acesta este conexiunea de alimentare a motorului

Pin-ul 5V – acest pin este de 5V care este oferită ca ieșire

GND – conexiune la sol

OUTA – un pin de ieșire pentru motorul A

OUTB – un pin de ieșire pentru motorul B

PWM puls de intrare

DIR este pentru direcția motorului atunci când curentul va fi mai mare va curge de la OUTA la OUTB, iar când curentul este mică atunci curentul va curge de la OUTB la OUTA

Tabelul 2.4.Funcționarea motoarelor cu acest driver

Figura 2.31. Driver Motor High Power 18v25 [43.]

Driver TB6612FNG Dual 1 A: acest driver este pentru a controla independent două motoare mici de curent continuu sau un motor pas cu pas bipolare. Tensiunea recomandat a motorului este între 4.5 V și 13.5 V și tensiunea logică este de la 2.7 V până la 5.5 V. Poate să funcționeze și la 2.5 V dar va avea putere redusă de performanță. Poate opera cu o frecvență maximă PWM de 100 kHz.[36.]

Punte H acestui driver este bazat pe MOSFET, cea ce-l face mai eficient decât punte H bazat BJT acest tip mai găsim doar în driver mai vechi, deoarece punt H bazat pe MOSFET lasă să dea mai mult curent la motoare și mai puțin curent pentru sursa logică.

Curentul maxim de ieșire este de 3 A pe canal.

Are o problemă, acest driver nu are protecție dacă inversăm conexiunea Vcc.

Figura 2.32. Driver TB6612FNG Dual 1 A [42.]

Driver Motor VNH5019: este pentru a controla motoare de curent continuu cu tensiuni între 5.5 V și 24 Vși curent pe canal este 12 A, dar cu vârful de curent maxim 30 A. Acest are nevoie de tensiuni între 2.5-5V pentru nivele logice, poate opera cu o frecvență maximă PWM de 20 kHz care este cu ultrasunet și din această cauză motoarele să funcționeze silențios.[16.]

Această placă are protecție încorporat pentru creștera tensiuni (poate să reziste creșteri tensiuni de intrare până la 41 V ), creștera curentului, creștera temperature si inversă de tensiune.

Placa are led-uri pentru motoare pentru a vedea ce ieșiri va face această placă chiar si fără a fi conectate motoarele. Iar odată cu creștera vitezei va crește și luminozitatea led-ului.

Tabelul 2.5.Descrierea pini plăci Driver Motor VNH5019

Driver Motor stepper A4988 Black Edițion: Acest driver controlează motoare stepper. Funcționează cu tensiuni între 8 V și 35 V.[14.]

Acest driver are 5 rezoluții diferite : etapă complet, jumătate pas, sfert pas, opt pas și etapa XVI.

Controlul curent reglabil îți permite să reglezi cu un potențiometru ca să setezi ieșirea a curent maxim cea ce vă va permite să obțineti rate de treaptă superioară pentru motor pas cu pas.

Figura 2.33.Driver motor stepper A4988 [42.]

Tabelul 2.6.Cu ajutorul celor 3 intrări (MS1, MS2 și MS3) putem să obținem cele 5 rezoluții de pas conformul tabelul.

https://www.pololu.com/product/2128

Are protectie pentru scurt sol sau scurtcircuit sarcină.

Tipul acest de driver este folosit pentru imprimante 3D, pentru a controla motoarele.

LCD

Sunt mai multe tipuri de LCD (LCD 16X2, LCD 16X4, LCD 20X4) diferența făcându-se după dimensiunea lor.[12.]

LCD-urile pe I2C sunt de două feluri: LCD 16X2 și LCD 20X4 care pe lângă LCD-uri au atașată o placă suplimentară care comunică pe I2C cu Arduino.

I2C-este o placă pentru comunicare ce utilizează numai două fire pentru comunicare și se poate conecta la mai multe dispozitive dar cu adrese diferite. Există două tipuri de dispozitive: unele care au adrese fixe și unele pentru care se poate alege o adresă I2C dintr-o listă de câteva adrese prestabilite.

Conectarea modulelor

Breadboard permite conectarea componentelor electronice, fără a fi nevoie de lipituri.

Atunci când vom conecta componentele la breadboard vom avem nevoie să folosim fire tată – tată pe care să le introducem în găurile din breadboard.

Breadboard are găuri care sunt conectate între ele, atunci când vom introduce un fir pe aceea linie vor fi conectate între ele. De exemplu dacă dorim să conectăm mai mulți senzori la Arduino (are un singur pin de 5 V și 3 de GND), pentru această conectarea avem nevoie de fire tată – tată cu care îl vom conecta pinul 5 V la una dintre linile de la breadboard și așa vom avea mai mulți pini de 5 V, acelaș lucru puteam să facem și pentru pinul masă GND dacă vedem că nu ne ajunge pentru proiectul pe care-l dorim să-l realizăm.

Figura 2.34. Breadboard [42.]

IMPLEMENTARE

Tipuri de module

Un proiect bazat pe platforma Arduino are mai multe tipuri de elemente conectate între ele. Aceste module pot fi ordonate după funcți:

Platforma de dezvoltare

Module de intrare

Module de ieșire

Module de date

Accesorii

Arduino Uno v.3

Instalare drivere Arduino

Pentru a putea programa platforma Arduino este necesară instalarea driverelor pe PC. Această instalare este valabilă numai dacă utilizăm Windows. Dacă doriți să programați în Linux sau MacOSnu mai este necesară instalarea driver-ului.

Din link-ul următor http://arduino.cc/en/Main/Software trebuie descărcat driverul pentru Arduino. Vom descărca arhiva .zip și o vom dezarhiva într-un director dorit. Pentru instalare trebuie să conectăm placa Arduino la portul USB al PC-ului. PC-ul va detecta că avem un dispozitiv necunoscut, apare așa pentru că trebuie să instalăm driver-ul pentru acel dispozitiv necunoscut. Putem urmări pașii de instalare a driver-ului pentru Arduino în videoclipul din link-ul http://www.robofun.ro/arduino/arduino_uno_v3.

Arduino IDE, program Arduino, Upload

După ce am instalat driverul, putem să programăm pe placa Arduino. Mai întâi se conectează placa Arduino la portul USB, apoi se va rula programul “Arduino” din directorul din care am extras arhiva. După ce am conectat placa Arduino asteptăm 30-60 secunde ca sa fim siguri că placa a fost detectată de calculator, iar din meniu vom deschide “Tools -> Serial Ports”. Aici vom vedea una sau mai multe intrări:

Figura 3.1. Serial Port

În următorul pas se va selecta tipul de placă cu care dorim să lucrăm. Din meniul “Tool -> Board”:

Figura 3.2. Board de selectare Arduino

Pentru a vedea cum funcționează Arduino, se poate rula un program mai simplu precum programul “Blink” pe care îl vom descărca direct din mediul de dezvoltare Arduino.

Pentru acest program vom avea nevoie de un led si o rezistență pe care să le conectăm la plăcuța Arduino. Led-ul îl vom conecta la pinul 13 de la placa Arduino, iar ca să nu riscăm să ardem Led-ul vom folosi o rezistență de 220 Ohm.

Figura 3.3. Descărcarea programului “Blink”

Figura 3.4. Conectarea Led-ului la Arduino

http://www.arduino.cc

După ce am făcut conexiunile corect, vom descărca programul “Blink” în mediul de dezvoltare Arduino. Programul Blink conține următorul cod:

Figura 3.5. Programul pentru led

Prin rutina setup, se va seta tipul de pin cu care se va lucra, în cazul nostru se va lucra pe pinul 13 ca fiind de ieșire (“pinMode(led, OUTPUT)”). În rutina loop, programul va face ca led-ul să se stingă si să se aprindă la un interval de 1 secundă. Ca să se aprindă led-ul se va seta în program să primească tensiune pe pin-ul 13 pe 5 V ”digitalWrite(13, HIGH)”, iar după o secundă de așteptareȘ „delay(1000)” se setează ieșirea să primească tensiune 0 V ”digitalWrite(13, HIGH)”, ca led-ul să se stingă. Ledul va rămâne stins timp de 1 secundă si ciclul se va repeta.

Senzori

Senzor de urmărire linie

Pentru acest proiect am ales ca senzori fotorezistențe deoarece au un cost mai mic față de alți senzori.

Această plăcuță are 6 pini care trebuie conectate la placa Arduino. Primul pin este pinul de masă (GND) care se cuplează la pinul GND al plăcii Arduino. Al doilea pin este cel de alimentare (VCC) care se cuplează la pinul de 5V. Al treilea, al patrulea și al cincilea pin, corespunzând fotorezistențelor, se vor lega la intrările analogice. Al 6-lea pin se va lega la ieșirea digitală pentru led-uri.

Figura 3.6. Senzori de urmărire

Schema electrică:

Figura 3.7. Schema electrică

Figura 3.8. Conectarea senzorului la Arduino UNO

Figura 3.9. Programul Arduino pentru senzorul de urmărire

Cu ajutorul programului de mai sus putem să vedem cum comunică Arduino cu senzorul de urmărire linie. După ce am rulat programul de mai sus pe placa Arduino, se va putea activa din bara de meniu: tool -> Serial Monitors care va deschide o fereastrăunde se pot urmări valorile primite de la senzor.

Pentru a putea funcționa este necesar ca toate legăturile să fie corect , iar fiecare pin analogic să fie corect definit.

Putem să vedem în poza de mai jos, valorile pe care senzorul le-a trimis platformei Arduino. Dacă totul este în regulă va trebui să ne apară următoarea fereastră cu valori. În această fereastră putem vedea că avem 3 valori care se modifică, și anume, pentru senzorul 1, senzorul 2 și senzorul 3. Pentru implementare vom folosi următoarea ipoteză: când o valoare a unui senzor este mai mare față de valorile celorlalți doi senzori, însemană că senzorul respectiv a detectat o modificare de culoare, respectiv a detectat culoarea neagră.

Figura 3.10. Valori senzori de urmărire date la Arduino

Senzor de culoare

Pentru proiectul ales, fiind necesară detecția unui număr limitat de culori s-a mers pe un senzor cât mai simplu.

Pe plăcuța senzorului de culoare sunt 12 pini: pinul de alimentare (5 V) care se cuplează la pinul 5V la placa Arduino, pinul de masă (GND) care se cuplează la pinul GND la placa Arduino, pinii de semnal (GSR1, GSR0, GSG1, GSG0, GSB1, GSB0) care se cuplează la oricare pin digital de pe plăcuța Arduino, pinii de semnal (VR, VB, VG) care se cuplează la oricare pin analogic de pe plăcuță Arduino și pinul de semnal (led) care se cuplează la oricare pin digital de pe plăcuța Arduino.

Pinul GSR1 este pentru selectarea roșu la bit 1. Pinul GSR0 este pentru selectarea roșu la bit 0. Pinul GSB1 este pentru selectarea albastru la bit 1. Pinul GSB0 este pentru selectarea albastru la bit 0. Pinul GSG1 este pentru selectarea verde la bit 1. Pinul GSG0 este pentru selectarea verde la bit 0. Pinul VR este pentru tensiune analogică de ieșire pentru roșu. Pinul VB este pentru tensiune analogică de ieșire pentru albastru. Pinul VG este pentru tensiune analogică de ieșire pentru verde. Pinul led este pentru a porni sau a stinge led.

Figura 3.11. Schema de conexiune a senzorului de culoare la Arduino

https://itp.nyu.edu

Performanțele senzorului de culoare:

După ce am făcut legăturile corect se vor defini fiecare pin analogic și digital pe care dorim să le folosim.

Cu ajutorul programului de mai jos putem să vedem cum comunică Arduino cu senzorul de culoare. După ce am rulat programul de mai jos pe placa Arduino vom putea deschide din bara de meniu: tool -> Serial Monitor vom vedea valorile primite de la senzor.

Figura 3.12. Codul de testare a senzorului de culoare – partea 1

Figura 3.13. Codul de testare a senzorului de culoare – partea 1

Senzor de distanță

Pentru acest proiect s-a ales un senzor de distanță cu raza de detecție de 10 cm, pentru că obiectele se vor afla la o distanță mai mică de 10 cm. Există senzori cu o precizie mai mare care furnizează și distanța la care se află obiectul respectiv, dar în scopul proiectului nu este nevoie de această precizie îmbunătățită.

Figura 3.14. Schema de conectare a senzorului de prezență la placa Arduino

Această senzor are 3 pini care trebuie conectate la placa Arduino. Primul pin este pinul de masă (GND) care se cuplează la pinul GND al plăcii Arduino. Al doilea pin este de alimentare (VCC) care se cuplează la pinul de 5V. Al treilea pin se cuplează la oricare pin digital de pe platforma Arduino.

După ce am realizat corect toate conexiunilesi am scris programul unde am definit care pin va fi folosit pentru semnalul digital, vom deschide fereastra cu ajutorul butonului “Serial Monitor” unde se pot urmări valorile pentru senzorul 1 și 2.

Figura 3.15. Codul de testare a senzorului de distanță

Din rezultatul din fereastră de mai jos vom observa că sunt numai valori de 0 și 1 (specifice unui semnal digital). Atunci când apare 1 nu sesizează nicio prezență pe o distanță de 10 cm, iar când apare 0 înseamnă că senzorul sesizează prezența unui obiect.

Figura 3.16.Valorile senzorului de distanță date la Arduino

Tabelul 3.1. Performanțele senzorului de distanță

Module de ieșire

Motor DC și Ardumoto

Platforma Ardumoto a fost aleasă pentru controlul si alimentarea motoarelor DC. Ardumoto este creat special pentru a putea fi montat pe placa Arduino.

Pini de semnal de la Arduino care sunt utilizați de Ardumoto sunt 13, 12, 11 și 3.

Pinul PWM_A de la Ardumoto se va cupla la pinul digital 3 de la placa Arduino. PWM_A este utilizat pentru controlul puterii motorului A. Pinul PWM_B de la Ardumoto se va cupla la pinul digital 11 de la placa Arduino. PWM_B este utilizat pentru controlul puterii motorului B. Pinul DIR_A de la Ardumoto se va cupla la pinul 12 de la placa Ardumoto, DIR_A este pentru a controla direcția motorului A: pentru a merge într-un sens (de ex. in față) se setează valoarea HIGH, iar pentru a merge invers se setează valoare LOW). Pinul DIR_B de la Ardumoto se va cupla la pinul 13 de la placa Ardumoto și va controla direcția motorului B.

Pentru setarea nivelului de putere se pot alege valori cuprinse între 0 și 255.

Figura 3.17. Schema de conectarea Ardumoto și motoarele la Arduino

Figura 3.18. Cod de testare a motorului și ardumoto(driver)- partea 1

Figura 3.19. Cod de testare a motorului și ardumoto(driver)- partea 2

LCD

Pentru ce acest proiect am ales să folosesc un display LCD pentru monitorizarea depozitelor. Acest display are 2 rânduri și poate afișa 16 caractere.

Figura 3.20. Display LCD

http://www.electan.com

Pe plăcuța display-ului LCD sunt 16 pini. Primul este pinul de masă (GND) care va conecta la pinul GND al plăcii Arduino. Al doilea este pinul de alimentare (5 V) care se va conecta la pinul 5V de la placa Arduino. Al treilea pin se va conecta la un potențiometru. Al patrulea pin de la display este pinul de semnal care se va conecta la pinul 8 al plăcii Arduino. Al 5-lea este pinul de masă (GND), acesta se va conecta la pinul GND de la placa Arduino. Al 6-lea este pinul de semnal se va conecta la pinul 9 de la placa Arduino. Pinii 7, 8, 9, 10 de la display nu se va conecta. Al 11-lea pin de la display este pin de semnal și se va conecta la pinul 4 de la placa Arduino. Al 12-lea pin de la display este pin de semnal și se va conecta la pinul 5 de la plăcuța Arduino. Al 13-lea pin de la display este pin de semnal și se va conecta la pinul 6 de la plăcuța Arduino. Al 14-lea pin de la display este pin de semnal și se va conecta la pinul 7 de la plăcuța Arduino. Ultimul pin se va conecta la pinul 5 V de pe placa Arduino.

Pinul 16 de la display se va lega la potențiometru, pentru a putea regla tensiunea pentru luminozitatea display-ului. Pinul 3 de la display este pentru a regla tensiunea pentru contrastul caracterelor.

Figura 3.21. Conectarea display-ul la Arduino

Conectarea Arduino la celelalte componente ale sistemului

Figura 3.22.Conectarea generala cu toate componentele pentru monitorizare

Figura 3.23. Conectarea generala cu toate componetele pentru sistemul robotică de urmărire

TESTAREA ȘI VALIDAREA SISTEMULUI

Conectarea Arduino la componente pentru sistemul de urmărire

Înainte de testare trebuie să conectăm toate componentele ale sistemului de urmărire după cum putem să vedem în Anexa A. Iar programul pentru controlarea Arduino este în Anexa C Peste Arduino se va monta Placa Arduino (driver pentru motor). Apoi pe urmă conectăm la Arduino senzori de care avem nevoie de senzor de culoare și de senzor de urmărire aliniei. Iar cele două motoarele se va lega placa Ardumoto.

Conectarea se face în felul următor:

Senzorul de culoare se va conecta la pinul GND, pinul 5V, pinul digital 10, la pinul analog 3, 4, și 5, pinul digital 8, 7, 6 și 5;

Senzorul de urmărire a liniei se va conecta la pinul de 5V, la pinul GND, la pinul digital 9, pinul analog 0, 1 și 2;

Ardumoto se va conecta la pini digital 13, 12, 11 și 3;

Motoarele se va lega la Ardumoto la conexiunea A pentru motorul 1 și conexiunea B pentru motorul 2

În regim normal sistemul de funcționare va funcționa în felul următor:

Senzorul de urmărire va face o calibrare de valori înainte de pornire;

Dacă senzorul de urmărire nu va mai detecta linia, mașina se va învârti roata de câteva ori ;

Senzorul de urmărire în momentul care va detecta linia, mașina va urmări linia;

Iar senzorul de culoare va detecta în timpul de urmărire a liniei culoarea roșie sau albastră acesta se va opri pentru 7 minute si pornește repetănd procesul;

Senzorul de urmărire va urmări în felul următor:

Când senzorul de la mijloc va detecta o valoare mai mare față de primul și ultimul senzor, mașina va merge tot înainte.

Figura 4.1.Când senzorul de urmărire se află la mijloc

Când senzorul din dreapta detectează o valoare mai mare față de celelalte două senzori, atunci motorul din stânga va primi mai puțină tensiune si motorul din dreapta va merge mai tare, acest motiv este pentru a întoarce mașina până când senzorul din mijloc se află pe linia neagră.

Figura 4.2.Când senzorul de urmărire se află la dreapta

Când senzorul din stânga detectează o valoare mai mare față de celelalte două senzori, atunci motorul din stânga va primi mai puțină tensiune si motorul din dreapta va merge mai tare, acest motiv este pentru a întoarce mașina până când senzorul din mijloc se află pe linia neagră.

Figura 4.3 . Când senzorul de urmărire se află la stânga

Când niciun senzor nu mai detectează linia acest se va roti de câteva ori.

Figura 4.4. Când senzorul nu va mai detecta nici o linie

Conectarea Arduino la componente pentru sistemul de monitorizare

Înainte de testare trebuie să conectăm toate componentele ale sistemului de urmărire după cum putem să vedem în Anexa B. Vom lega la Arduino Mega2560 display-ul LCD și cele 3 senzori de distanță.

Conectarea se va face în felul următor:

Senzorul de distanță(primul) se va conecta la pinul GND, la pinul Vin și la pinul digital 22;

Senzorul de distanță(al doilea) se va conecta la pinul GND, la pinul Vin și la pinul digital 24;

Senzorul de distanță(al treila) se va conecta la pinul GND, la pinul Vin și la pinul digital 26;

Display LCD se va conecta la pinul GND, la pinul 5V, la pinul digital 9, 8, 7, 5 și 4;

În regim normal de funcționarea a sistemului va funcționa în felul următor:

Fiecare depozit are un senzor de distanță;

Când mașina va trece prin fața ei senzorul va detecta o prezență;

Când senzorul de distanță va detecta pe raza lui, acesta va anunța prin Arduino, iar Arduino va afisa cu ajutorul display-ului LCD;

Când la nici un depozit nu este prezentă mașina, pe ecranul display-ului nu va afișa nimica;

Figure 4.5. Ciclul de functionare a sistemului de urmărire a traiectoriei

Figure 4.6. Ciclul de monitorizare a sistemului

PROMOVAREA ONLINE

Pentru a da posibilitatea promovării sistemului dezvoltat în mediul online s-a realizat si un site web. Descrierea comenzilor utilizate este prezentată în continuare.

Cu acest cod “background-color:pink;“ am pus culoarea roz pentru fundal. Pentru ainclude poza de pe prima pagină am utilizat codul “<img src="robot2.png" alt="robot1" width="1060" height="144" ></img>”.

Mai jos am realizat un cuprins cu cea ce contine aceast pagină. Dacă dorim să ajungem mai repede la o pagină dorita, putem să apăsăm un clik pe titlul dorit de la cuprins și acesta ne va duce direct la textul dorit.

Codul pentru realizarea cuprinsului este:

<th><li><a href="#C1">Introducere</a></li>

<li><a href="#C2">Arduino</a></li>

<li><a href="#C3">Senzori utilizați în robotică (sistemele de urmărire a traiectoriei)</a></li>

<li><a href="#C4">Ardumoto si motor</a></li>

<li><a href="#C5">Schema pentru realizare masini</a></li>

Figura 6.1. Prima parte a site-ul de promovare

Figura 6.2. Partea doua a Site-ul de promvare

Figura 6.3. Partea treia a Site-ul de promovare

Figura 6.4. Partea a patra a site-ul de promovare

CONCLUZII

Concluzii

Această lucrarea a avut ca obiect realizarea unui sistem automatizat pentru transportul mărfurilor într-un depozit cu ajutorul unui robot care folosește pentru controlul mișcării și al detecției depozitelor un microcontroler Arduino. Partea de monitorizare, specificarea depozitelor unde se află robotul, se face printr-un sistem paralel care utilizează de asemenea un microcontroler Arduino.

Perspective de dezvoltare

Ca si perspective de dezoltare pentru acest sistem, menționez:

Implementarea unui sistem de citire a codurilor de bare sau RFID pentru pachetele transportate;

Implementarea unei benzi care să facă transferul automat de mărfuri între depozit și robot;

Implementarea și testarea unei versiuni mai mari a robotului în depozite industriale.

Bibliografia

[1.] Radu Pietraru, Alexandru Velicu. Elemente practice de bază în deyvoltarea sistemelor cu microprocesoare integrate. Sibiu : EdituraTechno Media, 2014.

[2.] Atmel. Microcontroller with 4-8-16-32K Bytes In-System Programmable Flash. 2009.

[3.] —. Atmel ATmega640/V-1280/V-1281/V-2560/V-2561/V. 2014.

[4.] —. SAM3X/SAM3A Series. 2015.

[5.] —. ATmega48A/PA/88A/PA/168A/PA/328/P. 2014.

[6.] —. Microcontroller with 16/32K Bytes of ISP Flash and USB Controller. 2010.

[7.] —. Microcontroller with 2/4/8K Bytes In-System Programmable Flash. 2010.

[8.] James Floyd Kelly, Harold Timmis. Arduino Adventures Escape from Gemini Station. 2013.

[9.] Avago Technologies. HDJD-S822-QR99 RGB Color Sensor. 2007.

[10.] —. ADJD-S311-CR99 Miniature Surface Mount RGB Digital Color Sensor. 2007.

[11.] Sharp. GP2Y0D810Z0F. Dec.01.2006.

[12.] Arduino pentru incepatori.

[13.] Electro-Craft. DC motors Speed controls servo systems. 1977. 508.

[14.] Allegro. DMOS Microstepping Driver with Translator and Overcurrent Pretection. 2009-2014. p. 20.

[15.] Freescale Semiconductor. 5.0 A Throttle Control H-Bridge. 2014.

[16.] STMicroelectronics. VNH5019A-E. 2013. p. 37.

[17.] STMMicroelectronics. VNH2SP30-E. 2013. p. 33.

[18.] STMicroelectronics. VNH3SP30-E. 2013. p. 33.

[19.]Alegro, Automative Dual Full Bridge Driver, 2012 -2013

[20.] http://tekduino.blogspot.ro/2011/08/lectia-5-ardumoto.html (accesat 19.06.2015)

[21.] http://robotika.yweb.sk/skola/AVR/visionrobo%20com/Line%20Follower%20tutorial%20v1.1.pdf (accesat 19.06.2015)

[22.]. http://www.arduino.cc/en/Main/ArduinoWiFiShield (accesat 19.06.2015)

[23.] http://www.robofun.ro/shield-motoare-l298-v2?search=driver%20l298 (accesat 19.06.2015)

[24.] https://www.inventeaza.ro/proiecte/robot-line-follower (accesat 19.06.2015)

[25.]http://www.ssi-schaefer.ro/sisteme-de-logistica/sisteme-automatizate-pentru-depozite/naveta-vehicul-de-transfer-pentru-depozit.html (accesat 19.06.2015)

[26.]http://spectrum.ieee.org/robotics/robotics-software/three-engineers-hundreds-of-robots-one-warehouse (accesat 19.06.2015)

[27.] http://www.arduino.cc/en/Main/ArduinoBoardLeonardo (accesat 19.06.2015)

[28.] http://www.arduino.cc/en/Main/ArduinoBoardMicro (accesat 19.06.2015)

[29.] http://www.arduino.cc/en/Main/ArduinoWiFiShield(accesat 19.06.2015)

[30.] http://www.robofun.ro/arduino-leonardo-eth?search=Arduino%20Ethernet%20Leonardo (accesat 19.06.2015)

[31.] http://www.robofun.ro/shield-motoare-l298-v2?search=l298 (accesat 19.06.2015)

[32.] https://www.pololu.com/product/1373/resources (accesat 19.06.2015)

[33.] https://www.pololu.com/product/1373/resources (accesat 19.06.2015)

[34.] https://www.pololu.com/product/961 (accesat 19.06.2015)

[35.] https://www.pololu.com/product/758 (accesat 19.06.2015)

[36.] https://www.pololu.com/product/713 (accesat 19.06.2015)

[37.] http://cs.curs.pub.ro/wiki/pm/prj2010/rtataroiu/lfr (accesat 19.06.2015)

[38.] https://www.pololu.com/product/1595 (accesat 19.06.2015)

[39.] https://www.pololu.com/product/2357 (accesat 19.06.2015)

[40.] www.arduino.cc

[41.] http://en.wikipedia.org

[42.]http://www.robofun.ro

[43.]www.pololu.com

[44.]www.sparkun.com

Acronime

GSM – Global System for Mobile Communications

Anexa

Anexa A

Anexa B

Anexa C Codul pentru sistem de urmarire a traiectorie

Anexa D Programul pentru Monitorizarea sistemului

Anexa E Codul sursă pentru pagina principală

Similar Posts