line follower si

8
UNIVERSITATEA POLITEHNICA TIMIŞOARA 2015 FACULTATEA DE AUTOMATICĂ ŞI CALCULATOARE Sisteme Incorporate ARDUINO LINE FOLLOWER Robot construit pe platforma Arduino cu abilitatea de a urmări un traseu în mod autonom Bugariu Razvan Tuduce Adela 1

Upload: adela-tuduce

Post on 11-Apr-2016

220 views

Category:

Documents


4 download

DESCRIPTION

line

TRANSCRIPT

Page 1: Line Follower SI

UNIVERSITATEA POLITEHNICA TIMIŞOARA 2015

FACULTATEA DE AUTOMATICĂ ŞI CALCULATOARE

Sisteme Incorporate

ARDUINO LINE FOLLOWER

Robot construit pe platforma Arduino cu abilitatea de a urmări un traseu în mod autonom

Bugariu Razvan

Tuduce Adela

An 3 CTI

An universitar 2014 - 2015

1

Page 2: Line Follower SI

Componente:

Platforma de dezvoltare: Arduino UNO Sasiu 4WD Kit cu motoare incluse Senzor linie (8 senzori) Driver motor

Platforma de dezvoltare

Arduino este un microcontroler board, destinat să facă aplicarea de obiecte interactive sau medii mai accesibile.

Hardware-ul constă dintr-un open-source hardware board proiectat în jurul unor 8-bit Atmel AVR microcontroller, sau de 32-bit Atmel ARM. Modelele actuale sunt dotate cu o interfață USB, 6 pini de intrare analogice, precum și ace de 14 I/O digitale, care permite utilizatorului să se atașeze mai multe placi de extensie.

Introdus în 2005, platforma Arduino a fost proiectat pentru a oferi un mod ieftin și ușor pentru pasionați, studenți și profesioniști pentru a crea dispozitive care interacționează cu mediul lor folosind senzori și actuatori. Exemple comune pentru amatori incepatori includ simple, roboți, termostate și senzori de mișcare. Arduino UNO este o platforma de procesare open-source, bazata pe software si hardware flexibil si simplu de folosit. Consta intr-o platforma de mici dimensiuni (6.8 cm / 5.3 cm – in cea mai des intalnita varianta) construita in jurul unui procesor de semnal si este capabila de a prelua date din mediul inconjurator printr-o serie de senzori si de a efectua actiuni asupra mediului prin intermediul luminilor, motoarelor, servomotoare, si alte tipuri de dispozitive mecanice. Procesorul este capabil sa ruleze cod scris intr-un limbaj de programare care este foarte similar cu limbajul C++.

Specificatii

2

Page 3: Line Follower SI

Microcontroller: ATmega328 Tensiune de intrare: 7-12V Tensiune de sistem: 5V Clock de frecventa: 16MHz Digital I/O: 14 Intrari analogice: 6 PWM: 6 Memorie Flash: 32Kb Interfata de programare: USB via ATMega16U2

Microcontroller ATMega328Atmega328 AVR 8-bit este un circuit integrat de înaltă performanță ce se

bazează pe un microcontroler RISC, combinând 32 KB ISP flash o memorie cu capacitatea de a citi-în-timp-ce-scrie, 1 KB de memorie EEPROM, 2 KB de SRAM, 23 linii E/S de uz general, 32 Înregistrari procese generale, trei cronometre flexibile/contoare în comparație cu, întreruperi internă și externă, programator de tip USART, orientate interfață serială byte de 2 cabluri,SPI port serial, 6-canale 10-bit Converter A/D (8-chanale în TQFP și QFN/MLF packages), "watchdog timer" programabil cu oscilator intern, și cinci moduri de software-ul intern de economisire a energiei selectabil. Dispozitivul funcționează 1,8-5,5 volți.

Prin executarea instrucțiuni puternice într-un singur ciclu de ceas, aparatul realizează un răspuns de 1 MIPS

Parametrii

Flash: 32Kbytes RAM: 2Kbytes Cantitate pini: 28 Frecventa maxima de functionare:

20MHz CPU: 8-bit AVR Numarul de variabile canale: 16 Pini maximi de E/S: 26 Intreruperile externe 24

Module folosite

3

Page 4: Line Follower SI

Generare de semnale PWM in Arduino

PWM este o metoda de a obtine un semnal analogic prin intermediul unui semnal digital generand tensiuni de 1 si 0 la anumite perioade de timp. Fractiunea de perioada cat semnalul este activ (1 logic) se numeste factor de umplere, sau duty cycle. In Arduino se poate folosi PWM in trei moduri, fie prin temporizatoare, fie folosind functia analogWrite, sau variind manual durata cat un pin este activ (1 logic).

In aceast proiect vom folosi functia analogWrite(factor de umplere). Valorile posibile pentru analogWrite sunt de la 255 care reprezinta 5V la 0.

Senzori Analogici Microcontrollerele sunt capabile sa detecteze semnale binare, 0 sau 1, cum

este de exemplu starea unui buton (apasat sau ridicat). Aceste semnale se numesc semnale digitale. Cand un microcontroller este alimentat de la 5 V el intelege valoarea tensiunii de 5V ca si 1 logic si 0V ca si 0 logic. Cu toate acestea noi avem nevoie sa masuram si altfel de semnale in lumea reala, semnale intermediare valorilor extreme (de exemplu, 2.57 V). Aceste semnale contin informatie relevanta in nivelul tensiunii lor, si poarta numele de semnale analogice. Un ADC (convertor analog la digital) converteste un semnal analogic la un numar. Prin intermediul acestui dispozitiv avem posibilitatea de a interfata tot felul de periferice la microcontrollerul nostru si de a masura informatiile analogice din jurul nostru. Nu toti pinii de pe arduino pot face astfel de conversii. Pinii care pot fi folositi impreuna cu senzori analogici sunt pinii care au un „A” in fata numelui lor pe placa.

Protocolul de comunicatie I2CInterfaţa I2C (Inter Integrated Circuits) este o interfaţă serie, apărută din

necesitatea de a realiza sisteme ieftine cu microcontrolere, destinate în principal conducerii proceselor industriale. Un astfel de sistem este constituit, de regulă, dintr-unul sau mai multe microcontrolere şi o serie de echipamente periferice (de intrare/ieşire, memorie etc.). Conectarea acestora printr-o interfaţă serie satisface cerinţele enunţate. Viteza mică de transfer, caracteristică interfeţelor serie, nu constituie un neajuns pentru aplicaţiile principale avute în vedere (conducerea proceselor).

Realizarea unui sistem I2C presupune interconectarea unor circuite integrate (specializate) prin numai trei linii: două de semnal şi una de masă. Cele două linii de semnal sunt denumite "serial data" (SDA) şi "serial clock" (SCL). Fiecare circuit integrat are o adresă unică şi poate funcţiona fie ca transmiţător, fie ca receptor, în funcţie de tipul circuitului. De exemplu, un circuit pentru comanda unui afişaj cu

4

Page 5: Line Follower SI

cristale lichide poate fi numai receptor, în timp ce un circuit de memorie RAM poate fi atât transmiţător cât şi receptor (evident, nu simultan).

Senzori

Bara senzori linie analogic QTR-8A Aceasta placuta are 8 perechi de leduri infrarosii/fototranzistori montate la o

distanta de aproximativ 9,5 mm . Perechile de leduri sunt dispuse in serie pentru a reduce consumul, totodata

pentru economisirea energie, MOSFET-ul permite oprirea ledurilor. Fiecare senzor furnizeaza semnal de iesire analogic.

Input date Cei 8 senzori IR vor transmite semnale analogice în funcție de ce culoare

“văd”: ~200mV (alb) ; 3V-3,5V (negru) Prelucrare date

AtMega16 va prelua pe portul A semnalul de la senzori și având pragul logic pe la 1,5V-2V, va codifica automat semnalul la 0 sau 1. După aceea determină pe baza algoritmului, modul de comandă al motoarelor.

Output date Microcontrollerul va trimite punții H duala - L298N - direcția și viteza (prin

pwm) de rotire a motoarelor, aceasta trimițând semnale analogice celor două motoare.

Controlerul va mai trimite pe portul C registrul în care este salvată configurația curentă a senzorilor, pentru a fi afișată pe un bargraf de leduri, pentru debug și aspect vizual

Specificatii Dimensiuni: 2.95” x 0.5” x 0.125” Tensiunea de operare: 3.3-5.0 V Curentul – : 100 mA Formatul output-ului: 8 tensiuni analogice Tesiunea de iesire : 0 V pana la tensiunea de alimentare Distanta optima: 0.125” (3 mm) Distanta maxima recomandata: 0.25” (6 mm)

5

Page 6: Line Follower SI

Greutate: 0.11 oz (3.09 g)

Driver motor

Driver-ul de motoare L298 este utilizat pentru controlul motoarelor de curent continuu folosind Arduino. Arduino este capabil sa scoata pe porturile lui o putere foarte mica, total insuficienta pentru a invarti un motor. Daca vom conecta un motor electric direct la un port Arduino, cel mai probabil vom obtine arderea procesorului din placa Arduino.

Ca sa nu se intample acest lucru, avem nevoie de un amplificator de putere, care sa ia putere din sursa de alimentare (baterie, de exemplu), si sa o transmita motoarelor asa cum ii comanda Arduino. Acest amplificator poarta numele generic de "driver de motoare".

Driver-ul este bazat pe integratul L298, fiind un driver de nivel mediu din punct de vedere al puterii conduse. Poate controla motoare care necesita cel mult 2 Amperi. Driver-ul se conecteaza la platforma Arduino folosind 4 pini digitali (3, 5, 6 si 9) prin infigere directa in pinii placii Arduino.

Alimentarea shield-ului se face prin pinii cu surub VIN si GND. Shield-ul se alimenteaza in functie de necesitatile motoarelor. Daca motoarele accepta o tensiune

6

Page 7: Line Follower SI

de cel mult 6V atunci poti utiliza o cutie cu 4 baterii. Tensiunea totala a bateriilor este de 6V dar driver-ul consuma intern intre 2.5 si 4.5V. In acest mod, pe motor, ajunge o tensiune cuprinsa intre 4.5V si 6.5V, suficient cat sa isi indeplineasca functia fara sa il arzi. 

7