Scopul proiectului este de a crea un robot cu doua roti, care sa aiba capacitatea de a isi mentine singur echilibrul.
Am ales acest proiect deoarece am vrut sa invat cat mai multe despre controlul unui motor cu ajutorul microcontrollerului si despre folosirea unor anumiti senzori.
Inima robotului este microcontrollerul ATMEGA16. La acesta se leaga driverul de motor L293D pentru a controla cele doua motoare, accelerometrul MMA7260 si LCD-ul alfanumeric.
Principiul de functionare este urmatorul: accelerometrul masoara unghiul de inclinatie al robotului, iar daca acesta nu este la verticala se pornesc motoarele in directia corespunzatoare aducerii acestuia la verticala.
Pe langa placa standard, am mai folosit o placa auxiliara unde am montat driverul de motor, accelerometrul si LCD-ul. Acestea le-am legat pe pinii de extensie ai placutei standard, coform schemei:
Cele doua axe folosite ale accelerometrului sunt contectate pe doi dintre pinii portului A, pentru a putea fi folosit convertorul A/D;
Cei doi pini de enable ai driverului de motor sunt conectati la pinii: PB4 si PB5 pentru a putea beneficia de PWM
Display-ul este legat la Portul C.
Am folosit pentru partea mecanica piesa din imaginea de mai jos, deoarece avand o “cutie de viteze” permite o forta mai mare celor doua motoare, in detrimentul unei viteze mai mici.
Problema consta in prelucrarea semnalului de la accelerometru si traducerea acestuia intr-o directie si o viteza pentru cele doua motoare.
Programul ruleaza o bucla infinita, in care se realizeaza urmatoarele lucruri:
Softul a fost scris pe parcur, odata cu montarea unui nou modul. Mai intai pentru LCD, apoi pentru citirea accelerometrului apoi pentru controlul motoarelor.
Principalele functii:
Din nefericire, datorita lipsei de timp si experienta nu am reusit sa fac robotul sa functioneze cum mi-am propus. Prezint cauzele acestui lucru:
Functionalitatile pe module sunt in regula( LCD merge, Accelerometru merge, Motor merge), problema fiind sincronizarea acestora si legarea lor eficienta.
Acest proiect mi-a acordat sansa sa invat cate un pic din utilizarea microcontrolerelor, a senzorilor, interfatarea motoarelor. Am invatat sa lipesc componente, sa fac debug la o placa defectuasa. Datorita lipsei de timp nu am reusit sa obtin exact ce mi-am propus, dar consider ca acest proiect este o reusita si un pas inainte.
Atasez in continuare cateva imagini cu proiectul: