Sistem Robotic Ce Poate Fi Controlat de la Distanta Folosind Un Dispozitiv Portabil

INTRODUCERE

CAPITOLUL 1. Motorul de curent continuu

1.1 Sisteme de acționare

1.2. Motoare de curent continuu-Aspecte tehnice

1.3 Tipuri de motoare electrice de curent continuu

1.3.1Motoare de curent continuu cu perii

1.3.2 Motoare de curent continuu fără perii

1.4 Comanda motoarelor de curent continuu

1.5 Simularea funcționării motorului de curent continuu

CAPITOLUL 2.Microcontrolere

2.1.Introducere

2.2. Componentele unui Microcontroler

2.2.1.Processor Core

2.2.2 Memory (Memoria)

2.2.3 Digital I/O

2.2.4. Analog I/O

CAPITOLUL 3.Arhitectura și funcționalitatea aplicației

3.1.Prezentarea generală a aplicației

3.2. Componentele harware

3.2.1. Arduino Uno R3

3.2.2.Microcontrolerul ATmega 328

3.2.3. Cutia de viteze dublă Tamiya.Motoare de curent continuu

3.2.4.Driver-ul de motoare l298n

3.2.5. Modulul Bluetooth Mate silver

3.3.Componentele software

3.3.1.Mediul de programare Arduino IDE

3.3.2. Controlul robotului

3.3.3. Codul-sursă încărcat în microcontroler

CAPITOLUL 4. CONCLUZII ȘI RECOMANDĂRI

BIBLIOGRAFIE

ANEXA

INTRODUCERE

Dezvoltarea sistemelor informatice din ultimii ani a dus la saltul de la o societate industrializată la o societate puternic informatizată determinând o schimbare în toate domeniile, în tehnologie, în educație etc.

Lucrarea de față descrie modul de proiectare și totodată de realizare a unei platforme mobile pe șenile multifunțională controlată de la distanță cu ajutorul unui telefon mobil (smathphone),utilizând o placă de dezvoltare Arduino uno R3,care este prevăzută cu un microcontroler ATmega328.

Diangrama bloc a platformei mobile

Scopul acestei lucrări constă în realizarea unei platforme mobile pe șenile multifuncțională ce poate fi controlată folosind un echipament portabil,care dispune de o comunicație Bluetooth,în acest caz un telefon mobil ce are inclus sistemul de operare Android. Pe lângă acestea, se mai folosesc două motoare de curent continuu,driver pentru motoare,bluetooth mate silver,toate acestea aducând un aport ladezvoltarea temeiului teoretic și practic analizând microcontrolerul ATmega328.

Practic, robotul se poate controla prin mișcarea telefonului mobil. Mai exact, când se înclină telefonul în față robotul se va mișca în față, iar când înclinarea telefonului este spre spate, robotul se va mișca înapoi, în timp ce mișcările laterale vor întoarce robotul. Se folosește o platformă de dezvoltare Arduino ce dispune de microcontrolerul Atmega 328 care este creierul robotului și care este programat în limbajul de programare Arduino,foarte asemănător cu limbajul de programare C.

Există multe domenii în care robotul se poate folosi, cum ar fi: domeniul militar,spionaj, ajutorarea persoanelor in varsta, cu dizabilități,activități de căutare,industrie.

Una dintre concepțiile moderne de dată recentă o reprezintă aeroporturile retractabile.Acest tip de heliporturi retractabile se pot amplasa la bordul unor nave militare . Heliporturile fixe sau retractabile se pot amplasa și în zone muntoase greu accesibile sau în zone urbane.

Primul capitol al lucrării,prezintă date tehnice generale despre motoarele de curent continu. Pentru ca robotul să se poată mișca se folosesc două motoare de curent continuu sau cutia de viteze Tamiya.În acest capitol sunt prezentate motoarele de curent continuucu perii colectoare,fără perii colectoare, comanda acestora.

Cel de-al doilea capitol prezintă aspect tehnice despre microcontrolere,în general.Aici se detaliază, pe scurt,modul de funcționare a unui microcontroler,componentele acestuia. Întotdeauna când se proiectează un sistem este nevoie să se pună accent pe înlocuirea,pe cât este posibil, a acelor componente electrice și mecanice,în raport cu cele electronice care au încapsulate componente soft.

Captolul 3 prezintă în detaliu atât partea electronică,mecanică,cât și partea de soft.Se arată pas cu pas, modul în care a fost construit robotul și se explică fiecare componentă folosită,cum ar fi: motoarele de curent continuu,driver-ul pentru motoare,bluetooth mate silver,placa Arduino Uno cu microcontrolerul ATmega328.Pe lângă acestea, în finalul capitolului,se prezintă partea de soft și se încearcă să se înțeleagă modul în care acesta comunică cu interfața bluetooth.

Ultimul capitol constă în enunțarea concluziilor unde se va prezenta o opinie personală în legătură cu rezultatele obținute, cât și eventualele recomandări

Un aspect important în evoluția omului este folosirea unor instrumente sau unelte care să reducă munca fizică.În această zonă se înscriu și roboții,ei fiind într-o poziție privilegiată din cauza complexității pe care aceștia o dețin.

CAPITOLUL 1. Motorul de curent continuu

1.1 Sisteme de acționare

Un sistem de acționare dobândit de un robot are în componența sa toate sursele energetice ale robotului,iar sistemul dispune și de elemente ce au funcție de control în mod direct. În acest mod, un sistem de acționare admite totalitatea motoarelor și totodată a sistemelor de conversie prin care se va dobândi energia mecanică. Putem spune că energia mecanică obținută prin sistemele de conversie în corelație cu sistemele de acționare admite energia necesară deplasării mașinii robotice. Pe lângă acestea și a dispozitivelor care par a fi suplimentare ce au rolul de a permie controlul transferului energetic.

Un sistem ca acesta are nevoie, în primul rând de o sursă primară de energie. Sistemul de conversie are un rol foarte important în sistemele de acționare,acela de a converti energia primară în energie mecanică.

Cele mai folosite sisteme de acționare utilizează trei surse primare în materie de energie:pneumatică,hidraulică, electrică.Un număr mare de sisteme de roboți industriali folosesc o acționarea hidraulică,din cauza unor caracteristici importante pe care echipamentele le pun la dispoziție, în ceea ce privește raportul dintre forța exercitată la partea de motor și greutatea de care acesta dispune. Acționările electrice sunt răspândite și datorită funcțiilor de control pe care acestea le pot asigura.

Modul de acționare folosind aceste motoare prezintă un avantaj deosebit de însemnat datorită faptului că momentul creat devine independent în raport cu viteza motorului și totodată de poziția acestuia,ținând cont de câmpul înfășurărilor,iar singurul lucru pe care îl ia în seamă reprezintă curentul din armături. Dacă se face o înlocuire între înfășurările de câmp cu un magnet permanent, atunci momentul dezvoltat devine proporțional cu mărimea curentului electric ce se află în armături,așadar cu tensiune aplicată.Un mare dezavantaj în legătură cu aceste acționari electrice reprezintă greutatea unor componente.Există un raport putere-greutate care devine mai mic decât la acționările hidraulice.Greutatea aceasta nu poate fi diminuată foarte mult deoarece circuitul magnetic care, pentru a putea asigura unele performanțe,are nevoie de o geometrie adecvată.

Un sistem de acționare este prezentat în figura următoare:

Figura 1.1.Sistem de acționare

Motoarele de curent continuu sunt rareori folosite în aplicații obișnuite, deoarece aproape toate alimentările cu energie electrică, produsă de companii, sunt în curent alternativ. Cu toate acestea, pentru aplicații speciale, cum ar fi în oțelării, mine și trenuri electrice, pentru construcția roboților, este mai avantajos să se convertească curentul alternativ în curent continuu, în scopul de a utiliza motoare de curent continuu.

Motoarele de de curent continuu sunt la fel de folositoare ca și motoarele asincrone pe 3-faze.O mașină care convertește curent continuu în putere mecanică este cunoscută ca un astfel de motor. Funcționarea sa se bazează pe principiul că, atunci când o transportă curent, pe conductor este plasat pe un câmp magnetic, conductorul trece printr-o forță T.

Anumite instalații tehnologice au îngăduit diminuarea greutății motoarelor. Teoretic, fiecare motor electric este capabil de funcționare, pentru acționarea tuturor roboților este necesară utilizarea motoarelor de curent continuu. Se folosesc aceste mtoare datorită sistemelor de control.

Folosirea acestora pentru a permite acționarea roboților ia în vedere următoarele lucruri:

Trebuie să existe o conversie printr-un sistem mecanic între mișcarea de rotație și cea de translație

Blocarea motorului se realizează printr-un sistem mecanic.

Existența unui sistem de control folosind atât generatoare de putere, cât și tahogeneratoare.

1.2. Motoare de curent continuu-Aspecte tehnice

Dacă energia electrică alimentează un conductor situat perpendicular pe un câmp magnetic, interacțiunea dintre curentul care curge în conductor și câmpul magnetic va produce forța mecanică.Există două condiții care sunt necesare pentru a produce o forță pe conductor și acelea sunt următoarele:conductorul trebuie să transportă curent, și trebuie să fie într-un câmp magnetic.

Aproape fiecare mișcare mecanică pe care o vedem în jurul nostru, este realizată de un motor electric. Mașinile electrice reprezintă un mijloc de conversie a energiei, prin faptul că motoarele consumă energie electrică și produce energie mecanică. Motoarele electrice sunt clasificate în două categorii: motoare în regim continuu (DC) și motoare de curent alternativ (AC). În majoritatea cazurilor, indiferent de tip, motoarele electrice sunt alcătuite dintr-un stator (câmp staționar) și un rotor, funcționând prin interacțiunea a fluxului magnetic și curentului electric pentru a produce viteză de rotație și cuplu. Motoarele de curent continuu se disting prin abilitatea lor de a “lucra”în curent continuu. Când există aceste două condiții, o forță va fi aplicată conductorului, care va încerca să deplaseze conductorul într-o direcție perpendiculară pe câmpul magnetic. Aceasta este teoria de bază prin care funcționează toate motoarelede curent continuu.

Forța exercitată asupra conductorului poate fi exprimată astfel:

Unde B reprezintă densitatea câmpului magnetic, l este lungimea conductorului, iar i valoarea curentului care curge în conductor. Direcția de mișcare este reprezentată prin folosirea regulii mâinii stângi (Fleming).

Fig.1.2.Regula mâinii stângi- Fleming

Primul deget se mișca în direcția câmpului magnetic (primul – câmp), care merge de la polul nord la polul Sud, iar al doilea în direcția curentului pe fir (al doilea – curent). Degetul mare reprezintă cuplu sau forța de tracțiune.

Motoarele de curent continuusunt alcătuite dintr-un sistem de excitație și totodată dintr-o armatură rotorică cu înfășurare. În figura 1.2 se găsește schema cu excitație separată a motorului de curent continuu

Ecuațiile de funcționare în curent de excitație cu o tensiune constantă sunt:

Fig.1.3.Motorul de curent continuucu excitație separată

Relația (1.3) prezintă o dependență neliniară în ceea ce privește viteza, ce este în raport cu fluxul.De aici rezultând curentul de excitație.Legea de control se complică din pricina acestei neliniarități,iar reglajul turației ce realizează controlul curentului în regim de excitație devine foarte puțin folosit în sistemele de acționare a sistemelor robotice.

Motoarelede curent continuu au trebuință în sisteme de acționare variate, care prezintă turație variabilă și ies în evidență printr-un cuplu mare la pornire, cum ar fi mașini unelte,tramvai și locomotive electrice,laminoare etc.

Având în vedere o bobină într-un câmp magnetic de densitate a unui flux B atunci când cele două capete ale bobinei sunt conectate între o sursă de tensiune de curent continuu, în timp ce curentul I curge prin ea,o forță este exercitată pe bobină, ca urmare a interacțiunii dintre câmpul magnetic și curentul electric. Cele două părți ale bobinei este de așa natură încât bobina începe să se miște în direcția forței.Într-un motor, mai multe astfel de bobine sunt dizolvate pe rotor.În același timp, acest cuplu este produs, conductorii se deplasează într-un câmp magnetic. La poziții diaport cu fluxul.De aici rezultând curentul de excitație.Legea de control se complică din pricina acestei neliniarități,iar reglajul turației ce realizează controlul curentului în regim de excitație devine foarte puțin folosit în sistemele de acționare a sistemelor robotice.

Motoarelede curent continuu au trebuință în sisteme de acționare variate, care prezintă turație variabilă și ies în evidență printr-un cuplu mare la pornire, cum ar fi mașini unelte,tramvai și locomotive electrice,laminoare etc.

Având în vedere o bobină într-un câmp magnetic de densitate a unui flux B atunci când cele două capete ale bobinei sunt conectate între o sursă de tensiune de curent continuu, în timp ce curentul I curge prin ea,o forță este exercitată pe bobină, ca urmare a interacțiunii dintre câmpul magnetic și curentul electric. Cele două părți ale bobinei este de așa natură încât bobina începe să se miște în direcția forței.Într-un motor, mai multe astfel de bobine sunt dizolvate pe rotor.În același timp, acest cuplu este produs, conductorii se deplasează într-un câmp magnetic. La poziții diferite, fluxul fiind într-o legătură directă cu acesta se schimbă, ceea ce provoacă o contra-tensiune ce urmează să fie indusă (e = d / dt) așa cum se arată în Figura 1.4. Această tensiune este în opoziție cu tensiunea care provoacă fluxul de curent prin conductor.

Fig.1.4.Tensiunea indusă în armatura a motorului de curent continuu

Valoarea curentului prin armătură depinde de diferența între tensiunea aplicată și această contra-tensiune. Curentul, din cauza acestei contra-tensiunei tinde să se opună cauzei care îl produce,conform legii lui Lenz. Aceasta duce la încetinirea rotorului,dar în cele din urmă, rotorul încetinește doar suficient, astfel încât forța creată de câmpul magnetic (F = Bil), este egală cu forța de sarcină aplicată pe arbore. Atunci sistemul se deplasează cu viteză constantă.

Ecuația pentru cuplul dezvoltat poate fi derivat după cum urmează: forța pe o bobină de sârmă:

iar L și B sunt cantități vectoriale și

unde A este zona de bobină. Prin urmare, cuplul pentu mai multe bobine cu un curent de armătură Ia:

unde ,este fluxul, K este o constantă în funcție de geometria bobinei și Ia este curentul care trece prin înfășurarea armăturii. Puterea mecanică generată este produsul dintre cuplul mașinii și viteza mecanică de rotație,, sau:

Este interesant de remarcat faptul că aceeași mașină de curent continuupoate fi folosită, fie ca motor sau ca generator, prin inversarea conexiunile terminale.

Fig.1.5.Mașina reversibilă de curent continuu

Diagrama schematică pentru motorul de curent continuu este realizată mai jos.Motorul de curent continuu are două circuite distincte: circuit de câmp și circuit de armătură. Intrarea este de energie electrică și ieșirea este puterea mecanică. În acest circuit echivalent, înfășurarea de câmp este alimentată de la o sursă separată de tensiune de curent continuu, cu tensiune Vf, Rf și Lf, reprezentând rezistența și inductanța bobinei. Curentul produs în înfășurare stabilește câmpul magnetic necesar pentru funcționarea motorului. În circuit, este tensiunea aplicată motorului,Ia este curentul care trece prin armătură, Ra este rezistența înfășurării armăturii, iar Eb este tensiunea totală indusă în armătură.

Fig.1.6.Reprezentarea motorului de curent continuu

Modul de schimbare a sensului de rotație constă,fie în schimbarea polarității tensiunii de alimntare,fie în schimbarea sensului de câmp magnetic în regim de excitație.Prin urmare,dacă shimbam polaritatea tensiunii de alimentare,la motorul serie, se produce schimbarea ambelor situații specificate mai sus,singurul care rămâne neschimbat este sensul de rotație.Motorul serie se poate alimenta și cu tensiune alternativă, unde se poate inversa polaritatea tensiunii pe durata unei perioade.Un motor ca acesta poartă numele de motor universal,iar el se găsește în toate aparatele care au viteze mari de rotație și totodată de puteri mici.

1.3Tipuri de motoare electrice de curent continuu

Motoare de curent continuu cu perii

Motoarele de curent continuucu perii colectoare sunt utilizate pe scară largă în foarte multe aplicații larg răspândite în toată lumea. Acestea sunt ieftine și totodată sunt ușor de manevrat și sunt disponibile în toate mărimile și formele.

Din punct de vedere constructiv, un motor simplu cu perii este prezentat în figura de mai jos. Toate sunt alcătuite din aceleași componente de bază: un stator, rotor, perii și un comutator. Statorul generează un câmp magnetic staționar ce înconjoară rotorul. Acest câmp este generat de oricare dintre magneții permanenți sau de bobinaj electromagnetic. Multe astfel de motoare se disting prin construcția statorului sau,mai bine spus,prin înfășurările electromagnetice ce sunt conectate la o sursă de alimentare.

Rotorul, de asemenea, numit armătură, este alcătuit din unul sau mai multe înfășurări care produc un câmp magnetic. Polii magnetici ai acestui rotor vor fi atrase de la poluri opuse generate de stator, provocând pornirea rotorului la rândul său. Atunci când motorul funcționează,înfășurările sunt în mod constant străbătute de o tensiune, într-o secvență diferită, astfel încât din punct de vedere magnetic polii generați în rotor nu depășește polii generați în stator.

Fig.1.7.Motorul de curent continuu cu perii

Spre deosebire de alte tipuri de motoare electrice (cele fără perii), motoarele cu perii nu necesită un controler pentru a comuta curentul în înfășurările motorului. În schimb,realizarea comutării înfășurărilor motorului de curent continuu,cu perii, se face mecanic. Un manșon de cupru segmentat, numit comutator, se află pe axul m de curent continuucu perii. Ca să funcționeze motorul, periile de carbon, vine în contact cu diferite segmente ale comutatorului. Segmentele sunt atașate la diferite înfășurări rotorice, prin urmare, un câmp magnetic dinamic este generat în interiorul motorului atunci când se aplică o tensiune peste periile acestuia.

Așa cum am menționat mai devreme, modul în care câmpul magnetic staționar este produs în stator,realizează o diferențiere între motoarele cu perii. Motoarele de curent continuucu magnet permanent sunt cele mai frecvente motoare din această gamă.

Dezavantajul acestor motoare este acela că magneții își pierd proprietățile lor magnetice de-a lungul timpului.Unele motoare au înfășurări construite înlăuntrul lor pentru a preveni acest lucru. Consumul de curent, de asemenea, variază liniar cu cuplu.Circuitele de acționare sunt utilizate în aplicații în care un controler de un anumit tip utilizat în controlul vitezei este necesar. Scopul unui astfel de circuit este de a oferi controlerului o modalitate de a varia curent în înfășurările motorului de curent continuu cu perii. Din punct de vedere al puterii, această metodă de control al vitezei reprezintă o modalitate mult mai eficientă de a varia viteza motorului în comparație cu metodele tradiționale de control analogic.Metodele tradiționale de control analogic necesită adăugarea unei rezistențe variabile.

Controlul bidirecțional al motorului necesită un circuit numit Punte H,iar curentul este capabil să se deplaseze în oricare direcție prin înfășurarea motorului. Referindu-se la figura de mai jos, Q1 și Q2 se completează până jumătate, în timp ce T3 și T4 completează cealaltă jumătate.Fiecare dintre aceste jumătăți permite schimbarea unei părți a motorului cu perii la potențialul de aprovizionare de tensiune. Când Q1 este pornit și Q2 este oprit,de exemplu, în partea stângă a motorului va fi tensiune potențială de alimentare.Săgeata etichetat IFWDarată fluxul de curent pentru această configurație.Condensatorii (C1-C4) sunt opționali. Valoarea acestor condensatori este, în general, în intervalul 10 pF.Există un aspect foarte important, care trebuie să fie luat în considerare la proiectarea unui circuit Punte H.Toate circuitele MOSFET trebuie să fie părtinitoare pentru a se opri atunci când intrările de circuit sunt imprevizibile. MOSFET-urile de pe fiecare jumătate de pod din Puntea H nu va porni niciodată în același timp.Viteza unui astfel de motor este proporțională cu tensiunea aplicată motorului.

Fig 1.8.Motorul de curent continuu cu perii.Circuitul H-BRIDGE

Toate motoarele de curent continuuce au perii, se comportă ușor diferit față de alte motoare de curent continuu, din cauza diferențelor de eficiență și de material.Motoarele de curent continuu sunt încă adesea utilizate pentru aplicații cu viteză variabilă. Viteza motorului poate fi variată liniar (adică proporțional) cu tensiunea aplicată.

Așadar,aceste motoare sunt foarte simplu de utilizat și de controlat,în special de microcontrolere cum ar fi:PIC,Atmega.

1.3.2 Motoare de curent continuu fără perii

Aceasta este o clasă relativ nouă de motoare ale căror cereri au fost în creștere într-un ritm rapid în fiecare an, datorită, atât costurilor în scădere, precum și a funcționalitii care este în creștere. Acest motor este similar cu motorul cu perii, care are o poziție de feedback al arborelui intern. Acest feedback intern oferă, atât motorului de curent continuu ce au perii,dar și aceluia fără perii, caracteristici unice,cum ar fi: viteza liniară, cuplu liniar, ce sunt bine adaptate, atât pentru viteză cât și pentru controlul poziției și a cuplului de pornire.Feedback-ul intern este dat de motorul cu perii cu comutator mecanic (o serie de bare de cupru, care sunt izolate unele de altele) și periile mecanice prin care curentul este alimentat în barele colectorului și comutate secvențial în înfășurarea corespunzătoare în armătură. Această poziție de feedback al arborelui intern oferă, de asemenea, caracteristicile motorului fără perii care sunt identice cu cele ale motorului continuu: caracteristicile de viteză, cuplu liniar și cuplu de pornire. Poate funcționa în curent continuu, dar poate funcționa, de asemenea în curent alternativ, dacă unitatea electronică are circuitele necesare pentru a converti curentul alternativ în curent continuu.

În cazul motoarelor cu perii, feedback-ul este un comutator mecanic și perii, iar în cazul motoarelor de curent continuufără perii, feedback-ul este realizat de senzorul de autoreglare electronic,cum ar fi senzori magnetici Hall,senzori optici.

Componentele motorului:

Rotorul unui motor de curent continuu fără perii tipic, este alcătuit dintr-un arbore, butuc (la care magneții sunt lipiți), magneți și rulmenți.

Statorul unui motor de curent continuu fără perii are în componentă tole metalice (lamele). Stvuirea lamelelor este un pas foarte important.Acest lucru se face în moduri diferite, cum ar fi sudura, fixarea sau lipire, în funcție de experiența producătorului.

Fig.1.9.Statoare; motoare de curent continuu fărăperii

Un aspect important în construcția acestora sunt circuitele electronice,adesea numite controlere.

Există patru elemente principale în unitatea electronică:

Invertorul (tranzistorii, acestea sunt cele mai scumpe piese și se folosesc în general 6 tranzistori pentru trei faze ale unui motor trifazat).

Circuite logice, care pot include un DSP și alte dispozitive logice pentru a decoda poziția arborelui, informațiile de feedback și tranzistori care afectează modul de rotație a arborelui motorului. Circuitul logic generează PWM (Pulse Width Modulation), un mijloc foarte inteligent de reglare a tensiunii de intrare a motorului),semnale de reglare a vitezei.

Radiatorul termic pentru a gestiona căldura generată în procesul de comutare.

Conversia din curent alternativ în curent continuu.

Fig.1.10.Schema circuitului electronic

Motoarele de curent continuu care nu au perii au mai multe avantaje față de tehnologiile concurente. În primul rând motorul este mult mai eficient,are o viteză mai mare,nu are nevoie de mentenanță, au un răspuns foarte rapid și au o controlabilitate mult mai buna.

Principalul dezavantaj al acestor motoarelor este legat de cost.Acestea sunt mai scumpe față de motoarele de curent continuu cu perii.Costul mai ridicat al acestor motoare în unele aplicații se datorează faptului că necesită circuite electronice.Totodată, costul depinde și de viteza reglabilă sau poziția de control.Este important de remarcat faptul că toate componentele electronice de acționare pentru motoare și motoare convenționale este exact la fel și, prin urmare, are exact același cost.

1.4 Comanda motoarelor de curent continuu

Lucrarea prezintă schema de control al vitezei în buclă pentru controlul vitezei motorului DC cu magnet permanent, cu ajutorul unui microcontroler AVR. Microcontrolerul a fost programat pentru a schimba automat viteza de deplazare a robotului, în funcție de mișcarea realizată de telefonul mobil.

Motoarele de curent continuu. sunt utilizate pentru foarte multe aplicații,atât în controlul vitezei cât și a direcției, din cauza faptului că sunt controlate ușor. Amega328 este o soluție flexibilă, atât datorită costului,cât și a eficienței pentru multe aplicații de control.Controlul direcției motorului este foarte simplu, doar inversând polaritatea, înseamnă că fiecare motor are două terminale.Când vom aplica tensiunea la motoarele de curent continuu și curentul adecvat la un motor,se rotește într-o anumită direcție, iar când se inversează modul conexiunilor între cele două terminale, motorul se rotește într-o altă direcție.Când vine vorba de viteză, greutate, dimensiune, costuri, motoarele de curent continuu sunt întotdeauna de preferat față de motoarele pas cu pas. Microcontrolerul poate controla viteza motorului, poate controla direcția de rotație, codificarea de rotație este realizată de motorul de curent continuu.

Principalii factori ai unei mișcări de poziționare sunt:accelerarea, frânarea și deplasarea cu o viteză ce este constantă.

Fig.1.11.Traiectoria de viteză

Controlul motoarelor de curent continuu folosind microcontrolere are in vedere urmatoarele particularitati:

Microcontrolerele lucrează in logica digitala (1 sau o).

Polaritațile microcontrolerului nu se poate furniza.

Nu se pot conecta motoarele direct la microcontroler, deoarece cea mai mare parte a motoarelor funcționează pe o tensiune mai mare de 5 V, însă acest lucru poate fi eliminat prin utilizarea unuei punți H și totodată a unui driver de motoare L298N .

L298N este un driver de motoare,H-Bridge (Punte-H), deci poate comanda două motoare de curent continuu, care pot fi controlate atât în ​​sensul acelor de ceasornic, cât și contra. L298N este un driver de tip Punte-H. Poate controla cu ușurință 2 motoare în regim continuu sau pas cu pas cu motor bidirecțional. Denumirea "H-bridge" este derivată din forma efectivă a circuitului de comutare care controlează mișcarea motorului. De asemenea, este cunoscut sub numele de "Punte completă". În principiu, există patru elemente de comutare în H-Bridge, așa cum se arată în figura de mai jos.

Fig.1.12.Puntea H

În figura de mai sus, există patru elemente de comutație numit ca "high side left","hight side right", "low side left", "low side right". Atunci când aceste switch-uri sunt pornite în perechi motorului schimbă direcția în consecință. În cazul în care comutatorul de pe partea stângă (high side left) și partea joasă din dreapta (low side right), apoi motorul se rotește în direcția înainte, iar fluxurile de curent la sursa de alimentare prin bobina motorului merge în jos prin intermediul comutatorului cu partea dreaptă. Similar se întâmplă și cu celelalte swich-uri,atunci când fluxul de curent se află în direcția opusă, motorul se rotește înapoi. Circuitul L298N include 4 LED-uri de direcție (2 pe motor),terminale, precum și opt diode EMF de protecție. Două rezistențe de mare putere,care permit monitorizarea curentului absorbit de la fiecare motor prin intermediul microcontrolerului.

Sunt mai multe căi prin care se poate controla viteza motorului: variind tensiunea de alimentare și impulsurile prin tehnica de modulare. Primul sistem nu este convenabil mai ales în sistemele digitale. Este nevoie de circuit anolog. Sistemul trebuie să fie ales, astfel încât să fie foarte convenabil pentru sistemele digitale, deoarece toate comenzile se face folosind un semnal digital. Semnalele PWM sunt produse de microcontroler însuși. Un avantaj în scopul de a folosi microcontroler pentru a genera semnalul PWM este că, odată ce acesta a fost configurat corect, semnalul PWM va continua să fie generat automat.

Astfel, aceste semnale PWM sunt aplicate la pinul enable a driverului L298N. Ciclul de undă de ieșire de la microcontroler este variat pentru a oferi o ieșire pentru diferite motoare de curent continuu. Frecvența de bază se menține constantă la 1 kHz, iar ciclul de funcționare variază în funcție de nivelul analogic la ieșire PIN P1.1 a microcontrolerului. Acesta este conceptul de bază din spate, a controlului vitezei și direcției la motorul de curent continuu.

În schema de mai jos se arată modul de comandă PWM în ambele sensuri.Dacă cuplăm un motor de curent continuu între PWM1P0 și PWM2P0 se obține o rotire în ambele sensuri,cu o viteză variabilă.Având în vedere că tensiunea aplicată se află sub formă de impulsuri, putem spune că motorul se rotește proporțional cu o valoare medie a tensiunii.

Fig.1.13.Comanda unui motor de curent continuu.

1.5 Simularea funcționării motorului de curent continuu

Se folosește o simulare Simulink pentru a arăta valabilitatea acestei modalități de control.Pentru motorul de curent continuuse folosește un model din Simulink și generatoare de impulsuri pentru cele două impulsuri PWM.Viteza motorului poate varia prin controlul fluxului de câmp, rezistență, armătură sau borna de tensiune aplicată circuitului. Cele trei metode frecvente de control al vitezei sunt: controlul rezistenței, controlul armăturii și controlul tensiunii.

Fig.1.14.Simularea funcționării motorului de curent continuu

În figura următoare sunt reprezentate rezultatele acestei simulări. Forma curentului prin motor este reprezentată în figura din stânga sus,iar jos este reprezentată turația.Toate acestea au fost obținute pentru un factor de umplere de 90 % și 10 %.

Fig.1.15.Rezultatul simulării

Un model liniar al sistemului poate fi extras de la un modelul Simulink din MATLAB. Acest lucru se realizează prin utilizarea de blocuri de conectare in și Out și funcția linmod.

Așadar, putem spune că motorul de curent continuu ce au perii colectoare este asociat cu un număr foarte mare de perturbații electromagnetice. Rotirea câmpului magnetic are loc prin comutarea curentului electric din înfășurări, cu un sistem colector și perii.Însă motorul de curent continuu ce nu au în componență perii, este mult mai eficint, are o viteză mai mare, nu necesită niciun fel de mentenanță specială față de motoarele de curent continuu cu perii.

Aceste comenzi ale motoarelor de curent continuu,folosind microcontrolere, sunt foarte utilizate în domeniul roboticii.Datorită conceptului de a asigura o mobilitate crescută,roboții sunt alimentați de la surse de curent continuu, în special acumulatori.Motoarele de curent continuu și cele pas cu pas, sunt cele mai folosite motoare în ceea ce privește deplasarea roboților.

Reglarea vitezei se face prin comanda PWM,ce asigură un consum de enegie foarte mic și fiind, totodată, soluția cea mai eficientă.

CAPITOLUL 2.Microcontrolere

2.1.Introducere

Un microcontroler reprezintă un microcircuit care integrează un microprocesor,împreună cu alte funcții periferice și sunt încapsulate în același chip,aducând un consum redus de energie electrică,cât și un cost redus. Microcontrolere există în foarte multe alicatii,atât în aparatele de consum(cuptoare cu microunde,frigidere,telefoane etc), cât și în cnstructii de roboți, mașini, industria aerospațială și alte dispozitive high-tech sunt, de asemenea, construite cu microcontrolere. Roboții au fost concepuți pentru a face orice, de la a-i ajută pe elevi să învețe mai multe despre microcontrolere, la tunderea gazonului, la rezolvarea unor probleme mecanice complexe. Cu ajutorul microcontrolerelor, roboții vor avea, de asemenea, sarcinile de zi cu zi, cum ar fitunderea gazonului,roboți vopsitori etc.Microcontrolerele sunt, de asemenea, utilizate în tehnologia științifică și proiecte aerospațiale.

Astăzi, producția de microcontrolere sunt de ordinul miliardelor pe an, iar ele sunt integrate în mai multe aplicații, cum ar fi:

aparate de uz casnic (mașina de spălat, mașina de cafea etc)

telecomunicații (telefoane mobile)

industria auto (injecție de combustibil, ABS)

industria aerospațială

automatizări industriale

Folosind microcontrolere putem realiza foarte multe lucruri,cum ar fi:

cititirea periodică a temperaturii (valoare analogică, este digitizată de senzor; folosește interfata 4-bit),

încălzire în funcție de temperatura pe care o dorim

afișarea temperaturii actuale pe un ecran numeric de 3 cifre

poate permite utilizatorului să ajusteze praguri de temperatură

poate configura / moderniza un sistem pe o interfață serială

În general există foarte multe microprocesoare adaptate pentru aplicații specifice și totodată există o mare varietate de microprocesoare din care putem alege,în funcție de ce dorim să realizăm și de costul acestuia. Toate controlerele de o familie conțin același nucleu de procesor și prin urmare, codul este compatibil,dar ele diferă în ceea ce privește componentele suplimentare, cum ar fi numărul de cronometre sau cantitatea de memorie.Există numeroase microcontrolere pe piață astăzi, cum ar fi 8051, PIC, HC, ARM,AVR.

Tabel 2.1.Comparație între microcontrolerele AVR,Atmega,ATtiny

Tabelul 2.1 prezintă o selecție de microcontrolere Atmel AVR din aceiași familie. Un singur lucru au toate aceste controlere în comun: procesorul AVR, care conține 32 de registre de uz general și execută cele mai multe instrucțiuni în termen de un ciclu de ceas. În funcție de memorie, există o regulă care afirmă că o cerere ar trebui să nu ia mai mult de 80% din memoria controlerului- acest lucru va oferi un tampon pentru completări ulterioare.Regula poate fi, probabil, extinsă la toate resursele de controlere.

Diagram bloc a unui microcontroler tipic. Toate componentele sunt conectate printr-un bus intern și sunt toate integrate pe un singur chip. Modulele sunt conectate la lumea exterioară prin intermediul pinilor I / O.

Figura 2.1.Schema de bază a unui microcontroler

Lista de mai jos conține modulele de obicei găsite într-un microcontroler.

Procesor Core-reprezinta CPU al microcontrolerului. Acesta conține unitatea logică aritmetică, unitatea de control și a registrelor (indicatorul de stivă, contorul programului, acumulator registru, fișier registru).

Memorie- Memoria este uneori împărțită în memorie program și memorie de date. În controlere mai mari, cum ar fi un controler DMA se ocupă de transferuri de date între componentele periferice și memorie.

Interrupt Controller- Întreruperile sunt utile pentru a întrerupe fluxul normal de program, în cazul unor evenimente (importante) externe sau interne. Ele ajută la conservarea puterii.

Timer/Counter-cele mai multe controlere au cel puțin unul sau mai mult de 2-3 Timer / Counters, care pot fi folosite la evenimente timestamp, intervale de măsurare.Multe plăci de achiziție conțin ieșiri PWM (Pulse Width Modulation ), care este folosit în controlul motoarelor,aplicații pentru siguranță (ABS).

Digital I/O- Porturile paralele I/O digitale reprezintă una dintre principalele caracteristici ale microcontrolerelor. Numărul de pini I / O variază între 3-4, la peste 90 %, în funcție de familia și tipul controlerului.

Analog I / O: În afară de câteva controlere mici, cele mai multe microcontrolere au integrate convertoare analog / digitale, care diferă prin numărul de canale (2-16) și prin rezolutia lor (8-12 biți).

Modul analogic are un comparator analogic.În unele cazuri,microcontrolerul include convertoare digitale / analogice.

Interfaces-controlerele au, în general, cel puțin o interfață serială ce poate fi utilizată pentru a descărca programul și pentru comunicarea cu calculatorul. Interfețele seriale pot fi de asemenea folosite pentru a putea realiza comunicarea cu dispozitivele periferice externe, cele mai multe controlere oferind câteva interfețe,cum ar fi SPI și SCI. Foarte multe microcontrolere conțin PCI,USB sau interfața Ethernet.

Watchdog Timer-Pentru siguranta- sistemele critice formează o zonă principală de aplicații în ceea ce privește microcontrolerele, fiind important să nu existe erori în program și / sau hardware. Timer-ul watchdog este folosit pentru a reseta controlerul în cazul în care softul este "bușit".

Debuggibg Unit-Unele controlere sunt echipate cu hardware suplimentar pentru a permite depanarea de la distanță a cip-ului folosindu-se un calculator. Așadar, nu este nevoie să se sescarce un software special de depănare.

Controlerele nu conțin MMU (Memory Management Unit) și nu au instrucțiuni foarte simplificate, deoarece atât costurile cât și capacitatea de a calcula timpii de execuție (unele sisteme utilizează sisteme de timp real, cum ar fi sistemele X-by-wire în controlul auto) sunt aspecte importante pe piața microcontrolerelor.

Așadar, un microcontroler este un procesor care este echipat cu memorie, timere, pini I / O și alte periferice on-chip. Elementul principal din spatele tuturor acestor lucruri este costul: integrarea tuturor elementelor pe un singur cip ajută la economisirea spațiuui și duce atât la costuri reduse,cât și la producții mai mari.Se economisește timp,bani, și există un consum de energie electrică redus.

Un dezavantaj ar fi faptul că atunci când se alege să se resolve o aplicație folosind microcontrolere,viteza este mai mică în comparație cu soluțiile hardware,atunci când acea aplicație se putea rezolva și cu o soluție hardware.De aceea, atunci când se care un timp de rezolvare foarte scurt,se apelează la o soluție hardware.

2.2.Componentele unui Microcontroler

2.2.1.Processor Core

Processor Core (CPU) reprezintă partea principală a oricărui microcontroler. Arhitectura de bază a unui procesor este prezentată în figură 2.2. Acesta constă în data path (calea de date), care execută instrucțiuni și de unitatea de control, care spune acesteia ce să facă.

Figura 2.2.Arhitectura de bază a unui processor

La baza procesorului este unitatea logică aritmetică (ALU), care este utilizată pentru a efectua calcule (ȘI, ADD, INC). ALU se folosește de două intrări și întoarce rezultatul operației ca ieșiri(output). Sursa și destinația sunt luate din registre sau din memorie. În plus, ALU stochează unele informații cu privire la natura rezultatului în registrul de stare (de asemenea, numit condition code register). Fișierul Registrul conține registre de lucru ale procesorului. În orice caz, procesorul poate lua operanzii pentru ALU din dosar și poate stoca rezultatul înapoi în fișierul registru. Cu toate acestea, accesul memoriei este mult mai încet decât cel la dosarul registru, așa că este ,de obicei mai înțelept să se utilizeze fișierul registru, dacă este posibil.

În afară de anumite situații speciale, cum ar fi o instrucțiune de oprire sau, procesorul execută în mod constant instrucțiunile de program. Sarcina unității de control este de a determina care operație trebuie executată și de a configura calea de date în consecință. Configurararea datelor include furnizarea de intrări adecvate pentru ALU (de la registre sau memorie), selectând operația ALU și asigurându-ne că rezultatul este scris la destinația corectă (registru sau o memorie). PC-ul este incrementat pentru a indica următoarele instrucțiuni de secvență, sau încarcă o adresă nouă, în cazul unui salt sau apel de subrutină.

Arhitectura RISC are instrucțiuni simple, care de multe ori ia doar una sau câteva cicluri de ceas pentru a le executa. Mașinile RISC au o dimensiune mică și un cod fix ​ având, relativ,câteva instrucțiuni și câteva moduri de adresare. Prin urmare, executarea de instrucțiunilor este foarte rapidă,iar setul de instrucțiuni este destul de simplu.

Arhitectura CISC se caracterizează prin instrucțiuni microcoded complexe care iau mai multe cicluri de ceas pentru a le putea executa Arhitectura are, adesea,o dimensiune mare și variabilă iar codul oferă multe instrucțiuni puternice și moduri de adresare. În comparație cu arhitectură RISC, CISC ia mai mult timp pentru a executa instrucțiunile sale, dar setul de instrucțiuni este mult mai puternic.

Arhitectura Von Neumann, programul și datele sunt stocate împreună și sunt accesate în același bus. Din păcate, acest lucru înseamnă că programul și datele de acces pot intra în conflictul (rezultând faimosul termen de ștrangulare von Neumann), ceea ce duce la întârzieri nedorite.

Arhitectura Harvard, cere ca programul și datele să se afle în memorii separate,care sunt accesate prin intermediul unor bus-uri separate. În consecință, codul de acces nu intră în conflict cu datele de acces care îmbunătățește performanța sistemului. Un ușor dezavantaj reprezintă această arhitectură care necesită mai mult hardware-ul, deoarece este nevoie de două bus-uri și două cipuri de memorie sau de o memorie dual-portate (Un cip de memorie care permite două accese independente în același timp).

Viteza de execuție a unei instrucțiuni depinde de mai mulți factori. Aceasta este în mare parte influențată de complexitatea arhitecturii, astfel încât, o mașină CISC solicită mai multe cicluri deexecuție a instrucțiunii decât o mașină RISC. În cele din urmă, frecvența oscilatorului definește viteza absolută de execuție, deoarece un procesor care poate funcționa la 20 MHz poate permite să ia de două ori mai multe cicluri și va fi în continuare mai rapid decât un procesor cu o frecvență maximă de funcționare de 8 MHz.

2.2.2 Memory (Memoria)

Tipuri de memorii utlizate de microcontroler:

Register File- sunt,de obicei,memorii relativ mici, integrate pe CPU. Aceasta este utilizată ca un scratchpad pentru depozitarea temporară a valorilor CPU .

Data Memory- pentru depozitarea pe termen lung, folosesc de obicei,procesoare care au o memorie externă mult mai mare față de fișierul registru (register file).Datele stocate pot fi de scurtă durată, dar sunt valide atât timp cât procesorul rulează.Desigur că se pot atașa memorii,dar asta însemnând costuri mai mari.

Instruction Memory-Ca memorie de date, acesta memorie, este o memorie externă relativ mare. De fapt,cu arhitecura von-Neumann, aceasta poate fi chiar aceeași memorie fizică ca și memoria de date(Data memory). În microcontrolere, memoria de instruire, este de obicei integrată direct în MCU.

Acestea sunt cele mai proeminente memorii care se învârt în jurul unui CPU. În funcție de tipul de procesor, pot exista registri pipeline, cache, diverse tampoane și așa mai departe.

Există diferite tipuri de memorii care pot fi implementate. Memoriile volatile pot fi statice sau dinamice și există o varietate de tipuri de memorii nevolatile: ROM, PROM, EPROM, EEPROM, FLASH, NV-RAM (figura 2.3). Memoria volatilă își păstrează conținutul numai atât timp cât sistemul este pornit. SRAM a fost primul tip de memorie volatilă realizată să fie utilizată pe scară largă. Un cip SRAM constă într-o matrice de celule, capabilă să stocheze un bit de informație. Memoria SRAM are nevoie, de obicei,de șase tranzistori pentru a stoca un singur bit de informație. Desigur, este nevoie de mai mulți tranzistori per celulă, deoarece cu atât mai mare va fi zona de siliciu. Dacă reducem numărul de componente necesare–daca vom folosi doar jumătate din tranzistori -, atunci capacitatea de stocare ar fi redusă aproximativ de două ori.

Figura 2.3.Tipuri de memorii semiconductoare.

Memoria Dinamic Random Access Memory – DRAM: numărul de tranzistori per bit de informație a fost redus la unu. Aceasta, desigur, a redus suprafata de siliciu pentru un număr de celule dat. Prin accesarea DRAM, informațiile sunt actualizate (condensatoarele sunt reîncărcate). DRAM trebuie să fie accesat la fiecare câteva milisecunde sau cam așa ceva, altfel informația este pierdută.Un dezavantaj în folosirea DRAM îl reprezintă faptul că este mult prea lent față de SRAM,însă costul celor din urmă este mult mai ridicat. În microcontrolere există, de obicei, memorii SRAM, cantități moderate de memorii necesare.

Contrar SRAM și DRAM, memoriile nevolatile păstrează conținututul chiar și atunci când puterea lor este redusă. Scrierea pe tipuri de memorii non-volatile este de obicei, mult mai lentă și relativ complicată,. Una din memoriile nevolatile este Read Only Memories (ROM) și au fost primele tipuri de memorii semiconductoare nevolatile.Însă,nu se poate scrie pe ROM. Un tip comun de ROM este așa-numitul Mask-ROM (MROM). Un MROM, ca orice chip-IC, este compus din straturi. Aspectul geometric ale acestor straturi definește funcția cip-ului. Doar că o memorie RAM, și un MROM conține o matrice de celule de memorie. În timpul fabricării unui IC, măștile sunt utilizate pentru a crea straturi. Numele este Mask-ROM și definește conexiunile rând-coloană.

Ca o alternativă, se folosește Programmable Read Only Memory (PROM) și sunt, practic, matrici de celule de memorie. Prin selectarea unei celule și aplicarea unui impuls scurt dar mare, de curent, siguranța celulei poate fi distrusă, programând cu un 0 logic în celula selectată. Uneori, se întâlnesc așa-numitele microcontrolere One Time Programmable (OTP). Acestea conțin PROM ca memorie de instrucțiuni pe cip.

Erasable PROM (EPROM), în care memoria este stocată în așa-numitele tranzistoare cu efect de câmp (FET) și este este complet izolată de restul circuitului. De altfel, EPROM sunt folosite ca memoriile PROM. Trecerea de la EPROM la PROM ar implica componente diferite, cu caracteristici electrice diferite și eventual, chiar pini diferiți de ieșire. EEPROM ( Electrically EPROM) au toate avantajele unui EPROM fără alte complicații. EEPROM funcționează foarte asemănător cu EPROM, cu excepția faptului că electronii pot fi îndepărtați de la poarta plutitoare (floating gate ),aplicând o tensiune ridicată. Memoriile EEPROM sunt folosite destul de regulat în aplicațiile cu microcontroler. Flash EEPROM este frecvent utilizat pentru program, nu pentru memoria de date. Prin urmare, Flash, EEPROM, de multe ori au o scriere / ștergere mai mică față de EEPROM- aproximativ 1.000-10.000 cicluri.

Non-Volatile RAM (NVRAM), se realizează în diferite moduri. Unul este de a adăuga o mică baterie internă la un dispozitiv SRAM, astfel încât atunci când sursa de alimentare externă este oprită, SRAM să păstreaze conținutul său. O altă variantă este de a combina un SRAM cu un EEPROM într-un singur pachet,atunci datele sunt copiate din EEPROM la SRAM. În timpul funcționării, datele sunt citite și scrise la SRAM. Când alimentarea este întreruptă, datele sunt copiate la EEPROM.

Multe microcontrolere vin cu programul on-chip și memoria de date. De obicei, memoria program va fi de tip Flash-EEPROM, iar memoria de date va fi compus din SRAM și unele EEPROM.

2.2.3 Digital I/O

Digital I / O, sau, pentru a fi mai general, capacitatea de a monitoriza și controla hardware-ul direct, este principala caracteristică a microcontrolerelor. Ca urmare, practic, toate microcontrolerele au cel puțin 1-2 pini I / O digitali, care pot fi conectați direct la hardware. În general, sunt cam 8-32 pini la cele mai multe controlere,iar unele chiar au mult mai mulți (cum ar fi HCS12 Motorola, cu peste 90 de pini I / O). Pinii I / O sunt în general grupați în porturi de 8 pini, care pot fi accesați cu un singur octet. Marcajele pot fi, fie numai de intrare, numai ieșire, sau-cel mai frecvent- bidirecțional, ce are capacitatea de a fi atât de intrare cât și de ieșire. În afară de capacitățile lor digitale I / O, cei mai multi pini au una sau mai multe funcții alternative pentru a salva pinii și pentru a păstra chip-ul mic. Toate celelalte module, care necesită pini I / O, cum ar fi modulul analogic sau timer-ul, folosesc, de fapt, funcții alternative ai acesor pini I / O. În primul rând, să vedem ce înseamnă "digital": atunci când citim nivelul de tensiune de pe un pin cu un voltmetru (cu privire la GND), vom vedea o tensiune analogică. Cu toate acestea, microcontrolerul digitizează această tensiune la 0 logic sau 1 logic. Așa că atunci când vorbim despre Digital I / O, înseamnă că valoarea pinilor este 1 sau 0. Microcontrolere utilizează în general logica pozitivă (starea "high").

În legătură cu pinii Digital I / O, trei regiștri pot controla comportamentul acestora:

Data Direction Register (DDR)- fiecare port bidirecțional are propriul DDR, care conține un bit pentru fiecare pin al portului. Funcționalitatea unui pin (intrare sau ieșire) este determinată prin compensare sau stabilirea unui bit din DDR. Unii pini pot fi configurați diferit, deci este perfect în regulă să existe trei pini configurați pentru a transmite și a folosi ceilalți cinci ca intrări. După o resetare, biții DDR sunt, în general, inițializați la intrare. Citirea registrului întoarce valoarea acestuia.

Port Register (PORT)- acest registru controlează nivelul de tensiune a pinilor de ieșire. Presupunând că un pin a fost configurat pentru ieșire, apoi, atunci când bit-ul registrul port este setat, pinul respectiv va fi "high";dacă bitul este șters, pinul va fi "low".Pentru pinii de ieșire, citirea registrului returnează valoarea care a fost citită. Pentru pinii de intrare, funcționalitatea depinde de controler. Unele controlere permit citirea stării pinilor de intrare prin intermediul registrului portului. Alte controlere, de exemplu ATmega16, folosesc biții pentru alte scopuri, pinii corespunzători sunt stabiliți la intrare, așa că se citește din nou valoarea care a fost scrisă în registru.

Port Input Register (PIN)- pin-ul de registru este, în general, read-only și conține starea curentă (high sau low) pentru toți pinii, indiferent dacă au fost configurați ca pini de ieșire sau de intrare. Este utilizat pentru a citi starea pinilor de intrare, dar poate fi, de asemenea, folosit pentru a citi starea pinilor de ieșire.

Intrările digitale sunt utilizate pentru fiecare semnal monitorizat ce trebuie să fie interpretat digital, ce se realizează, atunci când avem de ales pentru a modifica cele două straturi "high" (corespunzător pentru logică 1) și "low" (corespunzător pentru 0). Dacă un semnal dat ar trebui să fie interpretat ca:high" sau "low" va depinde de nivelul de tensiune, care trebuie să fie conform cu specificațiile controlerului, care, la rândul lui depinde de tensiunea de funcționare a acestuia. De exemplu, tensiunea Vcc de funcționare pentru ATmega328 trebuie să fie în intervalul [4.5,5.5] V,pentru tensiune de intrare “slow” trebuie să fie între [-0.5, 0.2VCC] V, iar tensiune de intrare “high” trebuie să fie între [0.6VCC, VCC +0.5] V. Acest lucru impune interval (0.2VCC, 0.6VCC) în care semnalul este declarat a fi nedefinit.

Digital Output este folosit pentru a seta pinii de ieșire la nivelul de tensiune dat. Nivelurile corespunzătoare pentru "high" și "slow" sunt din nou specificate de către operator și depinde de tensiunea de funcționare a regulatorului. Pentru ATmega328 la Vcc = 5V, ieșirea maximă pentru tensiune "high", este de 0,7 V, iar cea minimă de ieșire pentru tensiune "high", este de 4.2 V. Când DDR este setat la ieșire, controlerul conduce pin-ul în funcție de valoarea dată în registrul port. Pinii de ieșire sunt mult mai critici decât pinii de intrare, în sensul că ei depind foarte mult de curentul exterior, de protecție. Totuși, putem conecta un pin de ieșire direct la GND și apoi să fie setat la 1, creând astfel un scurt-circuit. Deși controlerele au tendința de a tolera astfel de scurt-circuite pentru o scurtă perioadă de timp, (în general mai puțin de o secundă), un scurt îl va "distruge" în cele din urmă. Așadar,trebuie să se ia în calcul toate lucrurile astfel ca hardware-ul extern să nu poată produce un scurt-circuit. Dacă se poate, sau în cazul în care programatorul aplicației preferă să fie în siguranță, controlerul oferă posibilitatea de a citi din nou starea actuală a pinului prin intermediul registrului PIN. Dacă este detectată o nepotrivire, programul de aplicație ar trebui să stabilească pinii de intrare și să alarmeze utilizatorul. După o resetare, pin-ul este setat la intrare.

2.2.4. Analog I/O

Există semnale analogice ce au fost trasate la două valori discrete 0 și 1. Pe de altă parte, microcontrolerul este în mod inerent digital, deci avem nevoie de modalități adecvate de conversie a semnalelor analogice în lumea digitală.

Această problemă este abordată de modulul analogic de la microcontroler. Conversia digital-analog este o condiție prealabilă pentru unele convertoare analog-digitale. Dacă aplicația necesită un convertor d/a,de cele mai multe ori trebuie să fie montate extern. Din fericire, este destul de ușor de a construi un convertor D / A simplu și ieftin folosind ieșiri PWM (pulse-width modulation) împreună cu un filtru RC trece-jos. Dezavantajul folosirii PWM este că trebuie să existe un timer dedicat pentru a genera semnalul PWM și este nevoie de o perioadă de timp până când semnalul de ieșire este stabilizat. Principalul dezavantaj al circuitului rezistorului binar este că necesită mai multe tipuri diferiti de rezistori ce trebuie să fie de înaltă precizie pentru a menține raportul corect. Acest lucru este greu de realizat. Ca o alternativă,poate fi folosit un rezistor R-2R ladder (figura 2.4). Acesta are avantajul că nu necesită decât două tipuri de rezistențe, R și 2R.

Figura 2.4. Conversie digital-analogică pe baza unui rezistor R-2R ladder

Figua 2.5.Comparator Analog

Comparatorul analogic are două intrări analogice și unul (digital) de ieșire. Tensiunile de intrare pot fi semnale analogice externe, sau poate fi un semnal extern și o tensiune de referință generată intern. Ieșirea comparatorului poate fi citit de la un registru a modulului analogic. Dacă cele două tensiuni comparate sunt aproape una de alta și/sau fluctuează, ieșirea comparatorului poate comuta în mod repetat și pot apărea aspecte nedorite atunci când se utilizează întreruperi.Modalitatea de a reprezenta valoarea analog în format digital constă în următoarea afirmație: multe microprocesoare includ un convertor analog-digital (ADC), care convertește o valoare de intrare analogic la o valoare binară. Timpul de conversie, care este dată de la începutul conversiei înainte ca rezultatul conversiei să fie disponibil, este diferit de zero.

Microcontrolerele echipate cu intrări analogice oferă în mod normal 4-16 canale de intrare analogice, care sunt multiplexate și duse la un singur ADC. În consecință, mai multe canale analogice nu pot fi citite simultan, de aceea trebuie citite unul după altul. După ce o conversie a fost pornită, ADC are nevoie de ceva timp pentru a încărca un eșantion, iar apoi ceva mai mult pentru a face conversia. Deoarece microcontrolerele folosesc, în general convertoare de aproximare, timpul de conversie este constant. Pentru o funcționare corectă, ADC are nevoie de un semnal de ceas, care este scris într-un anumit interval. Dacă semnalul este derivat de la un semnal de ceas extern, cum ar fi în ATmega328, trebuie configurat un prescaler în mod corespunzător. Cu cât frecvența de ceas este mai mare, precizia devine mai scăzută.Dacă frecvența devine prea mare, rezultatul poate fi chiar complet greșit.Rezultatul unei conversii este stocată într-un registru de date. Pentru a evita deteriorarea la modulul analogic, tensiunea trebuie să rămână în limitele prevăzute a regulatorului,specificat în datasheet.

Întreruperi

Microcontrolerele au tendința de a fi utilizate în sistemele ce trebuie să reacționeze la anumite evenimente. Evenimentele semnifică modificări în sistemul controlat și în general, necesită un fel de reacție a microcontrolerului. Reacțiile variază de la răspunsuri simple, cum ar fi incrementarea unui contor de fiecare dată când o piesă traversează o barieră fotoelectrică pe banda de măsuri critice de timp, cum ar fi închiderea sistemului, dacă cineva ajunge în zona de lucru a mașinii. Însă microcontrolerul nu așteaptă un singur eveniment, astfel încât evenimentul devine chestionat periodic, în așa fel încât restul programului să poată fi executat la fel de bine. Pe de altă parte, semnalul poate avea o anumită perioadă maximă pentru a fi interogat, pentru a evita evenimentele ce lipsesc, iar codul ar putea să fi apelat din mai multe locuri în programul principal. Microcontrolerul oferă o modalitate convenabilă în formă de întreruperi. Microcontrolerul interoghează semnalul și întrerupe programul principal numai dacă se detectează o schimbare de stare. Atâta timp cât nu există nici o schimbare, programul principal pur și simplu se execută fără alte probleme cu privire la eveniment. De îndată ce se produce evenimentul, microcontrolerul numește o rutină de serviciu de întrerupere (ISR), care se ocupă de eveniment. ISR trebuie să fie furnizat de către programatorul aplicației.

Interfața principală pentru întreruperea logică a microcontrolerului este formată din: întrerupere enable (IE), este stabilit de programator pentru a indica faptul că operatorul ar trebui să ceară un ISR în reacție la eveniment. Interrupt flag (IF) bit, este stabilit de către microcontroler ori de câte ori are loc evenimentul, iar acesta este eliminat fie automat la intrarea ISR, fie manual de către programator. Practic, bitul IF arată că starea de întrerupere a avut loc, în timp ce bit-ul IE permite să apară întreruperea în sine.Mai multe surse de întrerupere sunt uneori mapate la un singur bit IE. Cu toate acestea, există doar un singur bit IE și prin urmare, doar un singur ISR pentru întregul port. Dezactivarea întreruperilor nu înseamnă neapărat că va fi lipsit de evenimente. Apariția unui eveniment este stocat în propriul bit IF, indiferent dacă bit-ul IE este setat sau nu (acest lucru se referă atât la IE global cât și local). Așadar, dacă un eveniment are loc într-o perioadă când întreruperea acestuia a fost dezactivată, iar această întrerupere este activată din nou mai târziu, atunci ISR se va activa,oarecum cu întârziere. După un reset, întreruperile sunt dezactivate atât la sursă cât și la nivel global.

Cele mai multe controlere cu multe întreruperi și un tabel de vectori vor folosi vectorul de întrerupere ca o indicație de prioritate. Evenimentele externe au proprietăți nefavorabile, deoarece acestea sunt generate de hardware-ul extern, care este cel mai probabil conectat la un controler prin circuite mai mult sau mai puțin neprotejate. Pentru evenimentele interne, cum ar fi un eveniment timer sau notificarea în care un octet a fost primit de la interfața serială, modulul corespunzător oferă posibilitatea hardware-ului să seteze IF în cazul în care evenimentul s-a produs. Evenimentele interne nu sunt afectate de zgomot și nu au nevoie de nicio măsură contra,în acest sens.

Pentru a rezuma, pentru detectarea evenimentelor,executarea întreruperilor constă:

Set interrupt flag: controlerul stochează apariția stării de întrerupere în IF.

Finish curent instruction: respingerea instrucțiunilor pe jumătate completate, de aceea este mai ușor să se termine instrucțiunea curentă înainte de a reacționa la eveniment.

Identify ISR: apariția unui eveniment nu implică în mod necesar un ISR.Dacă bit-ul IE corespunzător nu este setat, atunci utilizatorul nu dorește o întrerupere. Mai mult, deoarece controlerul are mai multe surse de întrerupere, care pot produce evenimente simultan, mai multe flag-uri IF pot fi setate.

Call ISR: după ce adresa de început a fost stabilită, în cele din urmă va executa ISR.

Întregul lanț de acțiuni de la apariția evenimentului, până la efectuarea primei instruiri în ISR cauzează o întârziere în reacție la eveniment, care este inclusă într-o latentă întrerupere. Aceasta tinde să se încadreze între 2-20 cicluri, în funcție de ce face controlerul înainte de a executa ISR. Întreruperea de rutină de serviciu conține codul necesar pentru a reacționa la întrerupere. ISR poate conține, de asemenea, cod ce reacționează la evenimentul care a declanșat întreruperi.

Pentru a rezuma, indicațiile de utilizare a întreruperilor sunt:

Evenimentul are loc rar

Intervale lungi între evenimente

Modificarea este importantă

Impulsuri scurte

Evenimentul este generat de HW, nu are efect viguros

Nimic altceva de făcut, în principal, ar putea intra în modul sleep.

Așadar, nu este indicat să se folosesca întreruperi doar pentru că se poate, trebuie să se analizeze ce fel de informații sunt necesare, moment în care trebuie limitate la strictul necesar.

Timer

Modulul timer este o parte importantă pentru orice microcontroler și cele mai multe oferă una sau mai multe cronometre cu 8 și/sau 16 biți rezoluție. Timer-ele sunt folosite pentru o varietate de sarcini, de la întârzieri simple, peste măsură, la perioade de generații de undă. Utilizarea cea mai de bază a timer-ului reprezintă în funcția sa ca un contor, dar acestea în general, permite utilizatorului să observe evenimente externe, pentru a declanșa întreruperi după un anumit număr de cicluri de ceas și chiar pentru a genera semnale PWM de control al motorului. Fiecare timer este de fapt un contor care poate fi incrementat sau decrementat la fiecare ciclu de ceas bifat. Valoarea curentului poate fi citită prin intermediul unui registru și poate fi setat la o valoare specifică de către utilizator. Accesul la valoarea numărătorului de 16 biți trebuie să fie făcut în două treceri, ceea ce ar putea conduce la valori incompatibile. Pentru a contracara astfel de probleme,controlerul ATmega328 de exemplu, folosește un registru tampon pentru a stoca bit-ul "high" în timer. Timer-ele pot ridica, în general, o întrerupere ori de câte ori acestea se abate de la valoarea reală a numărului. O metodă pentru a obține perioade exacte este dată utilizând PWM.

Ori de câte ori se produce un eveniment, timer-ul copiază automat valoarea sa de cont curent la un registru de captură de intrare, unde poate fi citită de program. Microcontrolere pot oferi unul sau mai mulți pini cu funcționalitate de captare de intrare. În ieșirea de comparație (output compare), ceva se întâmplă pe o linie de ieșire atunci când se ajunge la un anumit moment. Se poate seta automat să se șteargă o linie de ieșire, sau chiar să se comute starea sa. Se poate face pur și simplu o întrerupere internă. Output compare, de multe ori vine cu o opțiune de resetare, care resetează automat contorul atunci când este atinsă valoarea de comparare.Acest lucru permite să seteze o întrerupere periodică (sau semnal de ieșire), cu un minim de efort.

Modulația impulsurilor în lățime (PWM) este un caz special de ieșire de comparație. Aici, timer-ul generează un semnal periodic de ieșire digitală. Două registre formează interfața principală a PWM, una pentru perioadă (de asemenea, numit ciclu) și una pentru high-time. Semnale PWM sunt utile pentru o mulțime de lucruri. În afară de utilizarea lor în convertoarele D/A, ele pot fi utilizate pentru a pune în aplicare ABS la mașini, pentru LED-uri obscure sau afișaje numerice, sau de control al motorului (motoare pas cu pas, control al vitezei,motoare de curent continuu).

Figura.2.6. PWM semnal generat de up-counter și rezultatele actualizării

Realizarea internă a PWM este destul de simplă și folosește un "counter " și două comparatoare. Există două implementări posibile, unul folosind un "up-counter" (sau down-counter) și unul folosind up-downcounter.

În up-counter, a se vedea figura 2.6 de mai sus, ieșirea este setată la maxim dacă contorul atinge valoarea la zero și este stabilită la minim, dacă contorul ajunge la compararea valorilor. De îndată ce este atinsă valoarea de sus, contorul este resetat la zero. Avantajul acestei metode este dată de eficiența resurselor.

Figura.2.7.Semnal PWM generat de up-down-counter

Contorul începe prin setarea de ieșire la maxim și începe numărarea de la zero (up-down-counterfigura 2.7). Actualizările de comparare pot duce la erori, deci controlerul trebuie să aibă un tampon până când se ajunge la valoarea zero. Așadar,în ambele versiuni, perioada de atins este determinată de rezoluția dată de timer.

Watchdog Timer

Watchdog timer, uneori numit COP (computer operates properly), este folosit pentru a monitoriza execuția software. Ideea de bază din spatele acestui timer este că, odată ce a fost activat, începe numărătoarea inversă. În cazul în care valoarea numărul ajunge la zero, o resetare se declanșează, apoi se reinițializează controlerul și repornește programul. Pentru a evita această resetare a controlerului,software-ul trebuie să reseteze Watchdog înainte ca numărul să ajungă la zero ("kick dog").Aplicațiile țintă ale WatchdogTimer sunt vizibile imediat: este folosit pentru a verifica dacă anumite poziții în codul programului sunt atinse într-o anumită perioadă de timp. Prin urmare, ori de câte ori programul deviază de la fluxul normal de execuție și nu se resetează Watchdog în timp, o resetare va fi declanșata, care sperăm că va rezolva problema. Având în vedere că watchdog este folosit pentru a monitoriza executarea corectă a programului, dacă operatorul execută instrucțiunile și dacă software-ul reușește să execute instrucțiunile de resetare watchdog, în timp,acesta este separat de celelalte module și controlerul permite funcționarea autonomă. Ca urmare, watchdog are propriul oscilator intern și prin urmare, nu sunt afectate de modurile de somn (sleep) care închide ceasul de sistem. Pentru a evita oprirea accidentală, o anumită procedură trebuie să fie urmată pentru a modifica setările. Microcontrolerele sunt adesea utilizate în dispozitive mobile care rulează pe baterii. În consecință, reduce consumul de energie, ceea este un atu important pentru un microcontroler.

Prin urmare, o reducere a tensiunii de operare are un impact semnificativ asupra consumului de energie. Din păcate, aceasta nu reduce tensiunea arbitrar. Controlerul este specificat pentru un anumit interval de tensiune. Ca și în cazul reducerii frecvenței, reducerea voltajul poate fi realizat să fie static sau dinamic.

Oprirea modulelor neutilizate- această metodă utilizează faptul că regulatorul este format din mai multe module, care nu pot fi utilizate simultan. Deoarece fiecare modul activ este alimentat cu energie,este o idee bună aceea de a închide modulele neutilizate. Această metodă este utilizată, în general, pentru modurile de sleep ale unui controler.

Resetarea este o altă caracteristică importantă a microcontrolerelor, care sunt adesea utilizate în condiții de mediu care pot duce la unele probleme în software sau hardware. În aceste condiții, o resetare a sistemului este un mijloc simplu de a se reveni la o stare bine-cunoscută și pentru funcționare fără defecțiuni. Power-on reset (POR) provoacă o resetare atunci când tensiunea de alimentare depășește un anumit nivel de prag. Brown-out Reset (BOR) este util pentru medii aspre în cazul în care o tensiune stabilă de alimentare nu poate fi garantată. Resetare externă este declanșată printr-o resetare a pinului. Unele controlere oferă o instrucțiune care provoacă o resetare software.

Debugging (Depanarea)

Depanarea este realizată cu echipamente de măsurare externe cum ar fi logica analizoare. Inginerul de software vizualizează fluxul programului, indicând dacă și în ce ordine programul a ajuns la anumite adrese de memorie. Acestea constă într-un RAM de aceeași dimensiune, care folosește o logică suplimentară pentru a simula comportamentul ROM respectiv EPROM, în ceea ce privește hardware-ul, dar a fost în același timp accesibil din exterior pentru a facilita și programarea. Cu aceste emulatoare, programul și datele pot fi descărcate direct de pe un PC gazdă pe hardware-ul țintă, mai mult de atât putem programa o memorie flash. Aceste emulatoare ROM au salvat o foarte mult timp, dar nu a facilitat procesul de depănare în sine.

Elemente care sunt utile pentru depanare includ conținutul registrelor și de memorie, locația curentă a indicatorului de stivă, istoria apelurilor de funcție, parametrii de funcție,chiar și anumite secțiuni ale codului sunt atinse. De exemplu, LED-urile pot fi folosite cu ușurință pentru a urmări execuția programului. Monitorul ROM este o parte de software care rulează pe controlerul țintă care poate fi văzut ca un sistem de operare rudimentar. În forma sa cea mai simplă, folosește un ecran numeric și o tastatură hex pentru a permite depanarea. Pentru a implementa valori critice, monitorul înlocuiește instrucțiunile la adresa de întrerupere, cu un salt la codul de monitor, ceea ce le permite să verifice conținutul regiștrilor.

Desigur, monitorul ROM, deși utilizat în mod obișnuit, are dezavantajele sale. În primul rând, este nevoie de o parte din memoria controlerului țintă. În al doilea rând, atâta timp cât regulatorul țintă nu furnizează valori critice, programul de aplicație trebuie să fie localizat în RAM și trebuie să fie scris de operator.

Interfețe de comunicare

Microcontrolerele conțin, în general, mai multe interfețe de comunicare și uneori, chiar mai multe interfațe speciale, cum ar fi două module UART. Scopul de bază al oricărei astfel de interfață este de a permite microcontrolerului să comunice cu alte unități, fie că sunt alte microcontrolere, periferice, sau calculatoare. Punerea în aplicare a acestor interfețe pot lua multe forme, dar în esență, interfețele pot fi ierarhizate în funcție de proprietăți: acestea pot fi, fie serial sau paralel, sincron sau asincron, fie full-duplex sau half-duplex. O interfață serială trimite date secvențiale. În mod evident, această metodă necesită doar o singură linie de date, astfel încât comunicarea este eficientă privind resursele. O interfață paralelă, pe de altă parte, utilizează mai multe linii de date pentru a transfera mai mult de un bit la un moment dat. Numărul de biți ce sunt transferatei în paralel variază. Modul de comunicare se referă la relația dintre receive clock și send clock. Într-o interfață sincronă, receive clock este legat de send clock. Avantajul acestei metode este că receptorul nu are nevoie să genereze propriul ceas și este, prin urmare, mai puțin susceptibil la erori de sincronizare. Într-o interfață asincronă, aceste două particularități nu sunt conectate. În schimb, receptorul trebuie să cunoască momentul transmiterii în prealabil și trebuie să primească la aceeași frecvență ca și cea a expeditorului. Comunicare necesită, de asemenea, pornirea și oprirea specială a biților pentru a permite receptorului să recunoască începutul unui bloc de date. Comunicarea asincronă este, prin urmare, mai lentă decât comunicarea sincronă, deoarece comunicarea este mai puțin eficientă.

Într-o topologie bus, mai mult de două dispozitive pot fi conectate la mediul de comunicare. Alternativ, conexiunile punct-la-punct sunt concepute pentru comunicare doar între două dispozitive. În cele mai multe cazuri, comunicarea de date între un operator și perifericele sale este bi-directională. În sistemele master-slave, numai master poate iniția o transmisie. Slaves trebuie să aștepte master-ul pentru a le permite accesul la mediu de comunicare. Interfețele diferențiale, pe de altă parte, utilizează două fire pentru a transmite un semnal. Aici, diferența de tensiune dintre aceste două fire transmite semnalul. Desigur, conexiunile diferențiale necesită două fire în comparație cu conexiunile cu un singur capăt, dar pe partea de plus, nu este nevoie de o bază comună. Orice zgomot poate afecta ambele fire în același mod, astfel încât diferența de tensiune nu se va schimba. În consecință, interfețelor diferențiale permit transmiterea mai multor linii decât cele single-ende.

CAPITOLUL 3.

Arhitectura și funcționalitatea aplicației

3.1. Prezentarea generală a aplicației

Scopul lucrării este acela de a realiza un sistem robotic ce poate fi controlat de la distanță folosind un dispozitiv portabil. Poate fi orice dispozitiv ce dispune de un mijloc de comunicare tip Bluetooth,în acest caz, un telefon mobil cu sistemul de operare Android.

Principalele componente ale acestui sistem robotic (Figura 1.3),ce vor fi descrise în cele ce urmează, sunt: o placă Arduino Uno împreună cu microcontrolerul ATmega 328, două motoare de curent continuu ce funcționează între 3-6 V,driver de motoare l298n, modulul bluetooth mate silver,partea mecanică (șasiu,roți etc) și partea electrică (fire de conexiune, baterii etc).

Figura.3.1.Diagrama sistemului robotic

Pe lângă toate acestea, un aspect foarte important îl reprezintă partea de soft (software),necesară pentru programarea microcontrolerului Atmega 328,ce reprezintă „creierul robotului”. Programarea microcontrolerului se realizează cu ajutorul limbajului de programare Arduino, iar ca mediu de programare se folosește Arduino IDE (Mediul Integrat de Dezvoltare) 1.03.

3.2. Componentele harware

3.2.1. Arduino Uno R3

Arduino Uno (Figura3.2), este un dispozitiv open-source de calcul fizic și are în componență un microcontroler ATmega328.Are 14 pini digitali de intrări / ieșiri (6 pot fi folosiți ca ieșiri PWM), 6 intrări analogice, un rezonator 16 MHz, o conexiune USB, o mufă de alimentare,chiar un antet ICSP,iar pe lângă acestea și buton de RESET. Arduino poate fi folosit pentru a dezvolta obiecte interactive, luând intrări dintr-o varietate de comutatoare sau senzori, și controlând o varietate de lumini, motoare, și alte lucruri fizice.Proiectele Arduino pot fi de sine stătătoare, sau ele pot comunica cu software-ul care rulează pe calculator (de exemplu Flash, procesare). Acesta conține tot ce este nevoie pentru a sprijini microcontrolerul; se conectează la un calculator cu un cablu USB sau,în cazul de față, se alimentează de la o baterie de 9V.

Figura 3.2.Tensiunea de alimentare a driver-ului de motoare

Tabel 3.1.Caracteristicileplăcii Arduino Uno

Arduino Uno poate fi alimentat de la o sursă de alimentare externă sau prin conexiune USB.

Figura 3.3.Arduino Uno R3.

Funcționează cu o sursă externă având de la 6 la 20 volți. Dacă are mai puțin de 7V, pinul 5V poate furniza mai puțin de cinci volți iar placa poate fi instabilă si se poate deteriora. Gama recomandată este de 7 la 12 volți.

Pinii de putere sunt detaliați în tabelul următor:

Tabel 3.2.Pinii de putere a-i plăcii Arduino Uno

Memoria. ATmega328 are în componență 32 KB (din aceștia 0,5 KB sunt utilizați pentru bootloader).Totodată dispune de 2 KB SRAM și 1 KB de EEPROM (ce poate fi scris și citit cu biblioteca EEPROM), printre care din cei 14 pini digitali ai plăcii pot fi utilizați ca o intrare sau ieșire utilizând funcțiile pinMode (), digitalWrite () și digitalRead ().Funcționează la 5 volți, iar fiecare pin primește sau oferă un maxim de 40 mA. Aceștia au un rezistor intern pull-up (mod implicit) de 20-50 kOhm.

Totodată, unii pini au anumite funcții specializate:

Tabel 3.3.Pinii cu funcțiispeciale.

Arduino Uno R3 dispune de 6 intrări analogice fiind etichetate, începând cu A0 și terminând cu A5, cu o rezoluție dată de fiecare în parte, de 10 biți.

Pe lângă toate acestea, pinii și-au specializat funcționalitatea astfel:

I2C: A4 (SDA) și A5 (SCL)- asigură lui I2C(TWI), comunicarea împreună cu librăria WIRE;

Aref- de la 0 la 5V (tensiunea de referință), doar pentru intrări analogice. Utilizează analogReference ().

Reset- resetarea microcontrolerului.

Comunicarea:

Arduino Uno R3 dispune de mai multe facilități pentru a putea comunica cu alte periferice, ca de exemplu cu un alt microcontroler, cu un PC, cu altă placă de achiziție. Microcontrolerul Atmega 328, are în componență UART TTL (5V), comunicație serială, ce se găsește pe pinii 0 (Rx) și 1 (Tx). LED-urile RX și TX de pe placa Arduino clipește atunci când datele sunt transmise prin intermediul cip-ului USB-to-serial și prin conexiunea USB la calculator (însă pentru comunicația serială atât pe pinii 0 cât și pe 1 nu vor clipi).

O bibliotecă Software Serial admite comunicația serială pe oricare dintre pinii digitali ai lui Arduino Uno. Software-ul beneficiază de un monitor serial Arduino ce îngăduie datelor cu caracter simplu text să fie transmise și de la placa Arduino.

De asemenea microcontrolerul ATmega328,permite comunicarea dintre I2C (DST) și SPI. Software-ul beneficiază de o bibliotecă Wire care ajută la simplificarea și utilizarea I2C bus. Comunicarea SPI se realizează folosind o bibliotecă SPI.

Arduino Uno este realizat astfel încât să permită să fie resetat prin software-ul care funcționează pe o conexiune la calculator. Liniile de control ale fluxului de hardware (DTR) a ATmega8U2 este conectat la linia de reset al ATmega328 datorită unui condensator 100 nanofarad. Când această linie este alocată , linia de reset scade suficient de mult timp astfel încât să poată reseta cipul. Însă,resetarea diferă la fiecare sistem de operare.

Arduino Uno deține o polyfuse (siguranță fuzibilă) resetabilă ce protejează porturile USB ale calculatorului de curenții mici și/sau supracurenți.Chiar dacă majoritatea calculatoarelor oferă o protecție internă proprie, aceasta oferă un strat în plus de protecție. Dacă există mai mult de 500 mA aplicat la portul USB, siguranța va închide în mod automat conexiunea până când suprasarcina este eliminată.

3.2.2. Microcontrolerul ATmega 328

ATmega 328 (Figura 3.3) este un microcontroler CMOS, realizat pe 8 biți, de mică putere, realizat pe modulul AVR RISC. ATmega 328, prin executarea unor instrucțiuni puternice într-un singur ciclu orar, realizează debite aproape de 1 MIPS/MHz permițând operatorului să optimizeze consumul de energie în comparație cu viteza de procesare. Procesorul AVR combină un set de instrucțiuni cu 32 de registre de lucru. Toate aceste 32 de registre sunt legate în mod direct la Arithmetic Logic Unit (ALU). Arhitectura ce urmează a fi realizată este un cod mai productiv, având debite mult mai rapide decât microcontrolerele CISC convenționale.

Figura 3.4. Schema bloc

Microcontrolerul ATmega 328 diferă doar în privința dimensiunii memoriei, a boot-loader-ului, cât și a dimensiunilor vectorului de întrerupere (Flash 32 Kbytes, EEPROM 1Kbyte,SRAM 2 kbyte, Interrupt Vector Size 2 instructions words/vector) . Totodată, acesta beneficiază și de un mecanism autoprogramabil de tipul Read-While-Write (Citește-în timp ce-Scrie).

Figura 3.5.Pinii de ieșire ai microcontrolerului.

Caracteristici:

Tabel 3.4.Caracteristicile microcontrolerului ATmega 328.

3.2.3. Cutia de viteze dublă Tamiya.Motoare de curent continuu

Pentru deplasarea robotului s-a folosit cutia de viteze dublă Tamiya 70097 (Figură 3.2), ce conține două motoare de curent continuu și angrenajele necesare pentru a putea construi un robot. În primul rând cele două motoare de curent continuu cu perii colectoare,controlabile separat, funcționează între 3 și 6 V. Axele pot lucra cu oricare dintre roți pentru transport, oferind mai multe opțiuni pentru viteza robotului. Există două modalități de construcție: cu un raport de transmisie 58:1 de mare viteză sau cu un raport mai lent viteze 203:1.

Figura.3.6.Asamblarea cutiei de viteze

Oricum, motoarele oferă o putere suficientă pentru a conduce orice robot de dimensiuni mici,pe șenile,pe roți.De asemenea această cutie de viteză poate conduce două roți ale robotului,separat în orice direcție se dorește.

Figura 3.7.Inserarea celor doua motoare de curent continuu

Figura 3.8.Cutia de viteze dubla Tamiya impreuna cu sasiul

Motorul de curent continuu cu perii (Figura 3.3),ce se regăsește în cutia de viteze Tamiya, este un motor electric comutat pe plan intern,conceput pentru a rula cu energie direct de la sursă (în cazul de față de la 6 baterii de 1.5 V). Acestea pot varia în funcție de viteză, prin schimbarea tensiunii de funcționare sau intensitatea câmpului magnetic. În funcție de conexiunile câmpului la sursa de alimentare, viteza și cuplul unui motor acesta poate fi modificat pentru a oferi viteză constantă sau viteză invers proporțională cu sarcina mecanică. Atunci când un curent trece prin bobina înfășurată în jurul unui miez de fier moale, partea de la polul pozitiv este acționat de o forță ascendentă, în timp ce cealaltă parte este acționat de o forță descendentă.

Figura 3.9.Motoarele de curent continuu

Un motor de curent continuu cu perii oferă un control de precizie al vitezei.În cazul de fată comanda motoarelor este realizată de driverul de motoare l298n. Cunoscut pentru un raport deosebit de mare de cuplu la inerție,motorul de curent continuu cu perii are potențial pentru a furniza un cuplu de trei-patru ori mai mare decât cel inițial. Motorul este format din șase componente diferite: axe, armatura/rotor, comutator, stator, magneți, și perii. Acestea oferă curent stabil și continuu. Poate unul dintre cele mai vechi motoarele folosite,acestea sunt frecvent utilizate din cauza capacității de a varia în raportul viteza-cuplu. Curentul prin intermediul motorului scade pe măsură ce crește viteza de rotație,iar un motor cu rotire liberă are foarte puțin curent.

Forța electromotoare, cunoscută și sub numele de CEMF, reprezintă tensiunea, sau forța electromotoare, care împinge împotriva curentului pe care îl induce. CEMF este cauzată de un câmp electromagnetic în schimbare. Acesta este efectul Legii de electromagnetism a lui Lenz.

Curentul printr-un motor este dat de ecuația următoare:

Puterea mecanică produsă de motor este dată de:

3.2.4. Driver-ul de motoare l298n

Amplificatorul de putere, adesea numit driver de motoare l298n, este folosit pentru a controla motoarele de curent continuu. L298 este un circuit integrat și încorporează 2 punți H într-un ansamblu de 15 pini.Datorită faptului că placa Arduino scoate o putere extrem de mică pe porturile acestuia,putem spune că puterea dobândită este incapabilă să învârtă un motor.Pe lângă acestea, dacă se conectează motoarele direct la placa Arduino, există o mare probabilitate ca procesorul după această placă să se ardă. Pentru ca să nu se producă acest lucru, trebuie un amplificator de putere. Acest amplificator de putere este capabil să obțină putere dintr-o sursă externă de alimentare (ca de exemplu baterie) și să o transmită motoarelor după cum îi „spune” Arduino.

Figura 3.10.Driver de motoare l298n

Caracteristici:

Curent total DC de până la 2A

Tensiune joasa de saturație

Protecție supra-temperatură

Imunitate ridicata la zgomot.

LN298 este proiectat special pentru a accepta nivelele logice standard TTL și pentru a conduce sarcini inductive, cum ar fi relee, solenoizi, motoare de curent continuu și motoarele pas cu pas.Sunt foarte multe astfel de drivere de motoare, însă unele produc o putere mai mare, iar altele o putere mai mică,în funcție de cât de puternice sunt motoarele pe care acesta le conduce. Acest driver de motoare l298n, este un driver mediu și poate comanda motoare cu un curent de cel mult 2 A. Este realizat din multe tranzistoare ce sunt legate în cascadă (în Figură 3.5 sunt legate 4 tranzistoare în cascadă).

Figura 3.11. Punte H cu tranzistoare bipolare

Schema de mai sus este formată din mai multe tranzistoare bipolare. Motorul se regăsește simbolizat cu M,iar rolul diodelor este de protecție. Dacă se aplică tensiune pe unele din punctele A,B,C,D, se vor obține mai multe situații (vezi tabelul 6), însă dacă nu se va aplica nicio tensiune, motorul va rămâne în starea inițială.Aceste puncte A,B,C,D se vor lega la porturile de pe placa Arduino.

Tabel 3.5.Situațiile în funcție de tensiunea aplicată

Acest shield conține 3 conectori cu șurub.La conectorii MOTOR1 și MOTOR2 se leagă cele două motoare, iar la conectorul înscris cu Vin și GND se leagă la sursa externă de alimentare necesară celor două motoare.Pinii 3,5,6,9 de pe placa Arduino sunt pinii de comandă prin care se conectează acest driver de motoare.Shield-ul se montează peste placa Arduino,exact ca în figura:

Figura 3.12.Conectarea driver-ului de motoare peste Arduino

Figura 3.13. Diagrama bloc a driver-ului l298

Driver-ul de motoare este alimentat separat față de Arduino,prin pinii Vin și GND,deoarece motoarele consumă extrem de mult curent, iar dacă ar fi alimentate împreună ar apărea erori.Pe lângă acestea, la schimbarea sensului de deplasare, motoarele ar produce un zgomot intens datorită faptului că nu sunt decuplate în mod corect cu condensatorii.De aceea am folosit o cutie de baterii (6 baterii de 1.5 V) pentru alimentarea motoarelor și o baterie de 9 V pentru alimentarea plăcii Arduino.Valorile maxime admise de driver-ul de motoare sunt:

Tabel 3.6. Valorile maxime absolute pentru driverul de motoare L298N

Schema de mai sus prezintă modul în care este controlat acesta.Putem spune că 6 biți sunt utilizați pentru a controla motoarele.Următorii 4 biți realizează direcția celor două motoare, iar 2 biți arată starea motoarelor (pornit/oprit). Bit-ul 1 este utilizat pentru voltajul de referință. Alți 4 biți sunt utilizați pentru conexiunea celor două motoare,în timp ce alt bit pentru alimentarea motoarelor.Restul de 3 biți sunt GND.

;

Figura 3.14.Conectarea motoarelor pe driver;Integratul l298N

Funcțiile pinilor sunt detaliate în tabelul de mai jos:

Tabel 3.7. Funcțiile pinilor driverului de motoare L298N

Un dezavantaj al acestui driver l298n constă în faptul că nu beneficiază de protecție la spikuri de voltaj.Tocmai de aceea, s-au folosit pe placă 8 diode Schotky 1N5819,pentru fiecare motor câte patru.

3.2.5. Modulul Bluetooth Mate silver

Bluetooth Mate RN-42 (Figura 3.8) este proiectat special pentru a fi utilizat împreună cu placa Arduino. Aceste modemuri lucrează în mod serial (RX / TX) și înlocuiește cablurile seriale cu conexiuni fără fir. Orice flux serial de la 2400 la 115200 bps poate fi trecut fără probleme de pe PC la ținta dorită.Acesta funcționează cu o rată de transfer de 9600 bps. Bluetooth Mate este menit să fie conectat direct la Arduino.

RN-42 este perfect pentru intervale scurte, utilizeazand doar 26 A în modul Sleep când e încă vizibil și conectabil. Acesta beneficiază de regulatoare de tensiune, astfel încât să poată fi alimentat de la o sursă de alimentare 3.3 la 6V, curent continuu.Astfel, pinii RX și TX de pe acesta funcționează între 3-6V.

Tipul acesta de Bluetooth are o stare de funcționare bună și este foarte ușor de utilizat, întrucât datele ce vor fi implementate pe pinii RX/TX sunt utilizate la receptor.Se poate realiza că și cum pinii RX/TX sunt legați prin fire normale între emițător și receptor.

Figura 3.15. Bluetooth Mate RN-42

Caracteristici:

Bluetooth clasa 2

Distanță de transmisie de maxim 10 m

Consum redus de energie: in medie 25 mA

Conexiune criptată 128 biți

80dBm sensivitate pentru recepție

Frecvență intre 2402~2480 MHz

Tensiunea de operare: 3.3 – 6 V

Rata de transfer:2400-115200 bps

Antenă încorporată

Auto-descoperire/conectare

Temperatura de operare: -40 ~ +70 C

Pinii modulului bluetooth se conectează astfel:

Figura 3.16.Conectarea modulului Bluetooth

Antetul principal (interfața), cu șase pini are tot ce trebuie pentru a alimenta dispozitivul și pentru a trimite și primi date. Etichetele de pe partea de jos sunt "GND", "CTS-I", "VCC", "TX-O", "RX-I", și "RTS-O". GND și VCC sunt pinii de putere, RX-I și TX-O primesc și transmit, iar RTS-O și CTS-MI sunt semnale de control al fluxului, care pot fi într-adevăr ignorate în majoritatea aplicațiilor.

Figura 3.17.Schema bloc a modulului

Alături de RN-42 există o serie de regulatoare de tensiune, tranzistori, rezistențe, etc, ce sunt folosite pentru a schimba tensiunile care vin și pleacă din RN-42. Tensiunile care converg în RN-42 nu se pot abate prea mult de la 3.3V. Cele două LED-uri indică starea bluetooth-ului (Figura 3.11). Atunci când LED-ul clipește nu este conectat niciun dispozitiv, iar când LED-ul verde se aprinde atunci se formează o conexiune fără fir,deci este "Connect", în timp ce LED-ul "Stat" roșu clipește la viteze diferite pentru a indica starea RN-42.

Bluetooth Mate a fost proiectat să funcționeze perfect în ambele sisteme pe 5V și 3.3V. Tensiunile furnizate la pinii VCC / GND pot fi între 3.3V și 8V. Tensiunile pe intrarea serială și semnalele de control (RX-I și CTS-I) pot fi între 3.3V și 5V.

Semnalele de ieșire (TX-O și RTS-O) variază de la 0V pentru un nivel "scăzut" logic și VCC "ridicat". Asta înseamnă că dacă puterea este la 6V, semnalele RTS,TX va funcționa până la 6V. Consumul de curent poate fi începând cu nivelul de 0.026 mA atunci când dispozitivul este în modul sleep, până la 50 mA atunci când se transmit date.

Figura 3.18.Modulul Bluetooth conectat

3.3. Componentele software

Pentru a putea pune în mișcare acest robot, trebuie programat microcontrolerul ATmega 328. Programarea se realizează în limbajul ”Arduino programming language”, ce este bazat pe ”Wiring”.

Programele Arduino pot fi divizate în 3 părți componente:

structuri

variabile și constante

funcții

Programul îndeplinește atât scrierea de cod,cât și încărcarea pe placă. În esență, limbajul pe care Arduino îl folosește este C. Arduino IDE admite scrierea programului pe PC, ce este realizat dintr-un pachet de instrucțiuni, linie cu linie, care urmează să fie încărcate în Arduino. După ce programul este uploadat pe placa de dezvoltare, Arduino realizează instrucțiunile și interacționează cu mediul. Aceste programe sunt numite “Sketches” (schițe).

3.3.1.Mediul de programare Arduino IDE

Software-ul Arduino constă dintr-un mediu de dezvoltare (IDE) (Figura 3.12) și bibliotecile de bază. Arduino IDE este scris în Java și constă în mediul de dezvoltare și de procesare. Bibliotecile de bază sunt scrise în C și C + + și sunt compilate folosind AVR-GCC și AVR libc. Atunci când se apasă butonul "compile", IDE salvează fișierul curent arduino.c în directorul "lib / build".

Mediul de programare este relativ simplu și ușor de utilizat.În primul rând se conectează placa Arduino la PC,după care se alege din mediul de programare placa dorită (Tools-board).Se deschide o nouă schiță (Sketches) și se scrie programul ce urmează a fi compilat și urcat pe microcontroler.

Figura 3.19.Mediul de programare Arduino ID.

Un lucru foarte important constă în selectarea corectă a portului serial (COM 1). Noul COM reprezintă portul Arduino, care va fi salvat de către acesta.Dacă nu se realizează acest lucru,mediul de programare nu va recunoaște placa Arduino,astfel programul nu va putea fi încărcat pe microcontroler. Atunci când se realizează acest lucru, placa Arduino trebuie deconectată de la portul USB.

După ce toate aceste lucruri sunt bine puse la punct, programul se va scrie în sketch,va fi compilat, iar dacă nu apare nicio eroare (done compiling), va fi încărcat pe microcontroler apăsând butonul upload.

3.3.2. Controlul robotului

Pentru a putea controla robotul de la distanță, printr-un dispozitiv portabil, se folosește o aplicație java pentru telefoane mobile (smarthphone-uri Android)

Controlul robotului este asigurat în funcție de datele primite de la accelerometrul unui telefon mobil,având sistemul de operare Android.Comunicația cu circuitul robotului, chiar și informațiile oferite de senzorii telefonului mobil, se realizează folosind pachetul “Amarino”.Practic, este un toolkit ce a fost dezvoltat pentru aceste smathphone-uri. Pe lângă această aplicație, pachetul beneficiază și de o bibliotecă ce se alătură mediului de programare Arduino,ce va fi folositoare pentru a putea programa microcontrolerul ATmega 328,așa cum va fi prezentat în subcapitolul următor.

În principiu,aplicația Amarino este realizată din 3 părți:

Aplicația folosită pentru telefon-“Amarino”.

Biblioteca folosită pentru softul Arduino-“MeetAndroid”.

Biblioteca de evenimente pentru aplicație,ce urmează să fie instalată în telefon-“Amarino Plug-in Bundle”.

Pentru realizarea interconectării telefonului cu circuitul robotului se realizează pașii următori:

Instalarea aplicației “Amarino” în telefon.

Deschiderea aplicației și adăugarea unui nou dispozitiv Bluetooth- “Add BT Device”.

După ce dispozitivul Bluetooth a fost adăugat, se apasă pe iconița roșie din stânga aplicației pentru a putea adăuga evenimentele dorite care vor fi asociate dispozitivului (Figura 3.12).

Figura 3.20. Aplicatia ”Amarino”

După aceasta, se apasă butonul “Add Event”,pentru adăugarea evenimentelor.

Se selectează evenimentul dorit din listă (Figura 3.13 a.).

În cazul de față se va alege evenimentul“Orientation sensor“, pentru a putea folosi datele furnizate de către acel senzor. Programul admite configurarea anumitor setări,precum:viteza de transmisie a datelor dintre circuitul robotului și telefon;modul de vizualizare a datelor în aplicație (text,graphic,sau bare).Totodată,sunt furnizate informații în legătură cu modul de citire și transmitere a datelor.

Setările se vor lăsa default și se va salva evenimentul.

Pentru că datele să fie citite de accelerometru,se va apăsa pe evenimentul recent salvat și se va selecta opțiunea “Force enable”

După toate acestea,aplicația este configurată și poate începe să citească date oferite de accelerometru.Mai trebuie să se apese doar butonul “Connect”. Odată ce acest buton a fost apăsat, conexiunea cu robotul devine activa și începe transmisia de date între aceste dispozitive.Pentru deconectarea se va apăsa butonul “Disconnect” (Figura 3.15 a).

Atât comunicarea,cât și datele trimise se pot monitoriza,apăsând butonul “Monitoring” (Figura 3.15 b), din aplicație.Aici există două funcții:se poate trimite manual datele,caz în care se folosește funcția “Send”,sau se pot șterge datele salvate cu ajutorul funcției “Clear log”.

Mișcarea propriu-zisă a robotului se realizează prin înclinația telefonului mobil.Atunci când se înclină telefonul în față,se trimite date,iar robotul va merge înainte,când telefonul se înclină în spate,robotul va merge cu spatele,când înclinația telefonului este în stânga,robotul va întoarce prin staga, la fel se va întâmpla și pentru dreapta.

Figura 3.22.a)Aplicatia este activa. b)Interfata de monitorizare

Evenimentul care este folosit pentru controlul robotului:senzorul de orientare( Orientation Sensor ) constă în faptul că valorile reprezintă unghiuri în grade, forma unui vector cu 3 componente:

3.3.3. Codul-sursă încărcat în microcontroler

În cele ce urmează voi încerca să explic programul încărcat în memoria microcontrolerului ATmega328.

Mai întâi trebuie ca folderul cu biblioteca “MeetAndroid” să fie copiat în directorul “librării” din Arduino IDE.

Programul începe cu biblioteca aceasta, având rolul de a stabili o legătură cu aplicația “Amarino”,ce este instalată pe telefonul mobil și care facilitează un schimb de date între părțile aferente.

Pasul urmator permite definirea pinilor:

Funcția de mai jos configurează conexiunile și se folosește pentru a deschide portul serial pentru comunicații:

Secvența următoaredeschide portul serial șistabilește rata de transfer în biți pe secundă (baud).Rata de transfer al modulului Bluetooth este configurată la un anumit interval.În cazul de față, atât microcontrolerul ATmega328,cât și modulul Bluetooth funcționează cel mai bine 9600 bps.

Linia a doua, de mai sus,înregistrează o funcție ce este apelată atunci când are loc un eveniment ce este asociat din biblioteca ”meetAndroid”. Primul parametru înseamnă numele funcției,iar al doilea parametru admite un flag folosit în aplicația Android. Se folosesc litere mici pentru evenimente realizate de către utilizator și majuscule pentru evenimente ce sunt implementate în Amarino .

Secvența de mai jos, configurează pinul x al microcontrolerului ca ieșire.Așadar în primele 4 linii setăm pinii INPUT1, pană la INPUT4, (3,5,6,9) ca ieșiri pentru ATmega328.

Funcția Boolean este, fie o valoare adevărată,fie falsă.

Funcția loop() este indenticacu funcția main(), care este, foarte bine cunoscută în limbajele de programare, doar că aceasta se repetă la fiecare ciclu:

Linia a doua,se folosește în interiorul funcției loop() pentru a putea recepționa mesajele de la telefon, prin interfața bluetooth.

Linia de cod ce va urma crează un vector unde se va memora toate evenimentele:

Tipul floatdata, pentru numere în virgulă mobilă, sunt numere ce au un punct zecimal.

Secvența de mai jos realizează funcția de preluare pentru valorile oferite de “Amarino”, în acel vector “data”.

Pe Arduino Uno int stochează o valoarea de 16-bit. Se obține o gamă de la -32.768 la 32.767.

Secvența de mai jos transformă în valori întregi:

Iar ultimele două linii de cod prezintă viteza dorită pe motoarele din stânga,respectiv dreapta.

Datele ce sunt preluate de la accelerometru prin intermediul aplicației Amarino și trimise către circuitul robotului prin Bluetooth, sunt primite sunt forma unui vector de 3 numere reale, data[]

data [0] admite valoarea accelerației pe axa x;

data [1] admite valoarea accelerației pe axa y;

data [2] admite valoarea accelerației pe axa z.

Pentru înclinația telefonului valoarea maximă dată de senzorul accelerometru este de 255.

Figura 3.23.Controlul robotului.

Dacă oricare dintre comenzi este mai mare sau mai mică în valoare absolută decât 255, valoarea este egalată cu 255 /-255.Se folosește următoarea secvență de cod pentru a limita valorile,în funcție de înclinația telefonului mobil:

În cele ce urmează se va explica funcția void go, ce comandă motoarele:

Parametrii funcției, SpeedLeft (mișcare față – spate) și SpeedRight (manevră stânga-dreapta), sunt două valori întregi între -255 și 255 ce dau comandă către motoare:

dacă valoarea SpeedLeft este pozitivă, robotul trebuie să meargă în față, deci pinul INPUT1 primește valoarea speedLeft, iar pinul INPUT2 primește valoarea 0;

dacă valoarea speedLeft, este negativă, robotul mearge în spate, pinul INPUT1primește valoarea 0, iar pinul INPUT2 primește valoarea -speedLeft;

dacă valoarea speedRight este pozitivă, robotul virează roțile spre stânga, pinul (INPUT3, primește valoarea speedRight, iar pinul INPUT4, primește valoarea 0;

dacă valoarea speedRight este negativă, robotul virează roțile spre dreapta, pinul INPUT3 preiavaloarea 0, iar pinul INPUT4, primește valoarea -speedRight;

Valorile pentru SpeedLeft și SpeedRight sunt calculate în program (vezi anexa 1), în funcție de înclinația telefonului mobil.

Datele furnizate de senzorul accelerometru, ce sunt convertite în întreg și scalate,comandă cele două motoare.

CAPITOLUL 4. CONCLUZII ȘI RECOMANDĂRI

Despre această temă se mai pot adăuga foarte multe informații,atât tehnice despre componentele acestei aplicații, detalii mai complicate despre modul de funcționare a acestora, cât și amănunte în legătură cu modul de fabricare și alte lucruri; dar scopul lucrării este acela de a prezenta baza de unde putem porni pentru a construi aplicații specializate, necesare pentru a rezolva problemele actuale.

Am reușit să duc la bun sfârșit construcția unui robot care este controlat cu ajutorul unui telefon mobil ce dispune de sistemul de operare Android, prevăzut cu o interfața bluetooth.Totodată, am pus cap la cap componentele necesare construirii acestui robot,din care amintesc cele mai importante: cutia de viteze Tamiya,împreună cu cele două motoare,driver-ul de motoare ce are în componență două punți H L298N, microcontrolerul,modulul bluetooth și alte componente auxiliare.

Am explicat fiecare componentă majoră, detaliind rolul acestora în sistem și totodată realizând o descriere sumară în ceea ce privește modul de funcționare, a componentelor importante din datasheet, configurația, descrierea pinilor,cât și caracteristicile principale, condițiile de operare, modul de interconectare și totodată de comunicație cu restul elementelor din sistem.

De asemenea, am prezentat și teoria din spatele interfeței de comunicație bluetooth, precum și lucrurile cele mai interesante legate de acesta.Totodată, am prezentat o descriere teoretică în ceea ce privește controlul motoarelor.

Un alt aspect foarte important al acestui document îl reprezintă aplicația instalată în telefonul mobil și anume Amarino. Rolul aplicației este de a prelua date, atât de la de senzori,cât și de la alte evenimente ce sunt predefinite sau create de operator, iar comunicația și totodată transmiterea de date la modulul de control al robotului este vital în ceea ce privește realizarea proiectului.Placa de dezvoltare este la fel de importantă, deoarece permite utilizarea limbajului de programare Arduino, ce admite scrierea de cod, testarea acestuia, debugul,iar în final uploadul programului de comandă al robotului în microcontrolerul Atmega328.

Partea finală a lucrării este datorată prezentării și explicării modului de construcție a robotului,al componentelor hardware cât și software, care realizează programul-sursă ce este folosit de microcontroler pentru a putea îndeplini cu succes cerințele impuse.

Trebuie făcută menționea că se pot realiza aplicații foarte complexe,plecând de la acest modul de bază, singura piedică fiind aspectul financiar. La componentele deja existente se pot insera foarte ușor mulți senzori, sisteme de acționare, camere de înregistrat audio-video,pinii microcontrolerului Atmega328 fiind disponibili pe platformă.

Un exemplu, ar putea fi adăugarea senzorilor de distanță,care au un rolul de a evita coliziunea cu alte obstacole din mediu prin măsurarea distanței.

Pentru ca distanța de comunicare să fie mai mare se poate folosi un modem bluetooth clasa 1, care extinde distanța până la 100 de metri.

Totodată se pot folosi motoare mult mai mari și mult mai puternice, care pot executa manevre mai complexe și acțiuni ce au nevoie forță mare. Însă, aceste elemente adiționale cresc consumul total al robotului și se recomandă utilizarea unor acumulatori reîncărcabili.

De asemenea, există foarte mule domenii în care se poate utiliza aceasta aplicație,dintre care amintesc:

De exemplu,un robot controlat de la distanță,căruia i se atașează o cameră video sau anumiți senzori de detecție, pot pătrunde în spații înguste, periculoase,în care omul nu poate intra.Totodată,robotul poate pătrunde în locuri în care omul nu poate intra datorită faptului că există factori ce îi pot afecta viața,pot dăuna corpului,sănătății,cum ar fi substanțele periculoase,radioactive,scurgeri de gaze.Robotul poate fi controlat din camera de comandă pentru a putea aduna date.

Un alt exemplu constă în faptul că un robot controlat de la distanță,care pentru a ușura puțin controlul se poate adăuga un modem wireless și senzorii aferenți, pot inspecta anumite pachete suspecte care sunt abandonate în locuri publice,aglomerate (aeroport,stații de autobuz etc) și care par a fi un atac terorist.În acest mod, viețile oamenilor nu au de ce sa fie puse în pericol.

Un alt exemplu în care aplicația prezentată poate fi folosită este spionajul.Astel,cu acest robot controlat de la distanță,dacă se adaugă o cameră video,se pot obține informații destul de interesante în ceea ce privește rețelele de trafic uman,furturi,trafic de droguri,criminali etc.

Totodată,când se întâmplă dezastre naturale,cum ar fi cutremure,un robot comandat de la distanță și realizat corespunzător,poate fi utilizat pentru căutarea supraviețuitorilor,printre dărâmături și spații strâmte.În cazul în care robotul este echipat cu anumiți senzori,cu un motor mai puternic,acumulatori mai rezistenți și totodată cu o cameră de înregistrat audio,video, acest sistem robotic poate fi utilizat fără probleme pentru detectarea persoanelor ce au rămas blocate

În concluzie, această lucrare poate fi utilizată în foarte multe scopuri.Se pot adăuga multe alte componente față de cele prezentate și folosite aici, în funcție de necesități.În mod clar, aceasta reprezintă baza pentru oricare sistem controlat de la distanță.Desigur, lucrarea poate fi implementată și dezvoltată ușor, în funcție de ceea ce se dorește, dar ținând cont și de aspectele economice.

BIBLIOGRAFIE

[1]. Avram M.:Acționari hidraulice și pneumatice,Editura Universitară,București,2005.

[2].Andronescu P.: Bazele electrotehnicii – vol.I și II, Editura Didactică și Pedagogică, București, 1972.

[3]. Bălan R.: Microcontrolere – Structura și aplicații, Editura Todesco, Cluj-Napoca, 2002.

[4]. Ciascai I.: Sisteme electronice dedicate cu microcontrolere AVR RISC,Editura Casa Cărții de Știință, Cluj-Napoca, 2002

[5]. Ciascai I.: Microcontrolerul AT90S2313 în 12 lucrări practice, Ed. Casa Cărții de Știință, Cluj-Napoca, 2002.

[6]. Gavrilă H., Centea O.: Teoria modernă a câmpului electromagnetic și aplicații, Editura All, București, 1998.

[7].Kloetzer M.:Strategii de planificare automată a roboților mobili,Editura Matrixrom,Iași,2012.

[8]. Lupu, E., Sisteme cu microprocesoare. Resurse hardware. Prezentare, programare și aplicații, Editura Albastră, Cluj-Napoca, 2003.

[9]. Nițulescu M:Roboți mobili,Editura SITECH,Craiova 1998.

[10]. Topa I.,Diaconu L.:Acționari electrice reglabile cu mașini de curent continuu,Editura Matrixrom,București,2009.

[11]. Valer D.: Proiectarea sistemelor mecatronice, Editura Politehnica, București,2007.

ANEXA

BIBLIOGRAFIE

[1]. Avram M.:Acționari hidraulice și pneumatice,Editura Universitară,București,2005.

[2].Andronescu P.: Bazele electrotehnicii – vol.I și II, Editura Didactică și Pedagogică, București, 1972.

[3]. Bălan R.: Microcontrolere – Structura și aplicații, Editura Todesco, Cluj-Napoca, 2002.

[4]. Ciascai I.: Sisteme electronice dedicate cu microcontrolere AVR RISC,Editura Casa Cărții de Știință, Cluj-Napoca, 2002

[5]. Ciascai I.: Microcontrolerul AT90S2313 în 12 lucrări practice, Ed. Casa Cărții de Știință, Cluj-Napoca, 2002.

[6]. Gavrilă H., Centea O.: Teoria modernă a câmpului electromagnetic și aplicații, Editura All, București, 1998.

[7].Kloetzer M.:Strategii de planificare automată a roboților mobili,Editura Matrixrom,Iași,2012.

[8]. Lupu, E., Sisteme cu microprocesoare. Resurse hardware. Prezentare, programare și aplicații, Editura Albastră, Cluj-Napoca, 2003.

[9]. Nițulescu M:Roboți mobili,Editura SITECH,Craiova 1998.

[10]. Topa I.,Diaconu L.:Acționari electrice reglabile cu mașini de curent continuu,Editura Matrixrom,București,2009.

[11]. Valer D.: Proiectarea sistemelor mecatronice, Editura Politehnica, București,2007.

ANEXA

Similar Posts

  • Sistem DE Partajare AL Fișierelor ÎN Rețea

    SISTEM DE PARTAJARE AL FIȘIERELOR ÎN REȚEA Cuprins Introducere……………………………………………………………………………………….4 1.1. Utilizarea rețelelor ………………………………………………………………………………………….4 1.1.1. Rețele pentru firme ……………………………………………………………………………5 1.1.2. Rețele pentru oameni………………………………………………………………………….6 1.2. Partea hardware a rețelelor……………………………………………………………………………….7 1.2.1. Rețele locale……………………………………………………………………………………..8 1.2.2. Rețele metropolitane………………………………………………………………………….8 1.2.3. Rețele larg răspândite geografic…………………………………………………………..9 Modele de referință………………………………………………………………………….10 2.1. Modelul de referință OSI………………………………………………………………………………..10 2.1.1. Nivelul Fizic……………………………………………………………………………………10 2.1.2. Nivelul Legătură de date…………………………………………………………………..10 2.1.3….

  • Tehnologia Frezarii Lemnului Masiv la Masina de Freazat cu Ax Vertical Tip M.n.f

    Proiect – Tehnologia frezarii lemnului masiv la masina de freazat cu ax vertical tip m.n.f. 1. ARGUMENT Transformarea materiei prime in produse de mobila se face printrun sir de operatii si procese de fabricatie urmarind modificarea dimensiunilor, formei si calitatii materielelor prin operatii si mijloace specifice. Procesul de fabricatie cuprinde urmatoarele procese tehnologice: debitarea lemnului,…

  • Mecatronica

    CAPITOLUL I Introducere Mecatronica tehnologie compatibila cu societatea informationala Exemple de produse si sisteme mecatronice CAPITOLUL II 2.1 Mecatronica in tehnologia auto 2.2 Principalele module care intervin in automobilul modern. 2.2.1 Sistemele ABS (anti-lock brake system) 2.2.2 SBC ( Sensotronic brake control) 2.2.3 Sistemul SAGE(de asistare si gestionare a traiectoriei) 2.2.4. Sistemul ASR(antipatinaj) 2.2.5 Sistemul…

  • Repararea Si Intretinerea Transmisiei Cardanice

    === Repararea si Intretinerea Transmisiei Cardanice === Memoriu justificativ Transmisia automobilului are rolul de a transmite momentul motorului la roțile motoare, modificându-i, în același timp, și valoarea în funcție de mărimea rezistențelor la înaintare. Ea este cuprinsă din: ambreiaj, cutia de viteze, transmisia longitudinală, transmisia principală (angrenajul în unghi), diferențial, arbori planetari și transmisia finală….

  • . Analiza Transferului DE Tehnologie Si Implicatiile Sale LA Nivelul Intreprinderii

    CUPRINS CAPITOLUL 1 Managementul cercetării-dezvoltării (C & D) Inventarul tehnologiilor întreprinderilor Estimarea potențialului de competitivitate Variația potențialului tehnologic Marketingul produselor specifice tehnologiilor de vârf CAPITOLUL 2. Transferul internațional de tehnologie 2.1. Evoluția unei tehnologii și transferul de tehnologie 2.1.1. Evoluția unei tehnologii 2.1.2. Caracteristici ale transferului de tehnologie 2.1.3. Cunoștințele tehnologice și mecanismul transferului de…

  • Sisteme Hibride de Producere a Energiei Electrice

    Energia electria este larg utilizata in domeniul casnic si industrial, datorita usurintei de a transforma aceasta forma de energie in altele, de tip cinetic, termic, optic, manipulari electronice si telecomunicatii. Aceasta usurinta de utilizare aduce avantaje ridicate, mai ales prin realizarea unei mase mari de utilizatori. Aceasta duce la un necesar crescut de producere si…