Introducere
Prezentarea pe scurt a proiectului:
Proiectul este o masinuta “obstacle avoidance”: capabila sa recunoasca obstacole si evite coliziunea. Scopul acestui proiect este familiarizarea mea cu lucrul cu motoare, folosirea unor senzori, citirea de la senzori. Am ales proiectul pentru ca doream sa fac un robotel sau o masinuta. Utilitatea lui, momentat lipseste. Cu toate acestea poate fi foarte usor imbunatatit astfel incat sa aibe si o intrebuintare practica. De exemplu adaugand o camera wireless se pot transmite imagini catre calculator dintr-o incapere ce se doreste a fi explorata. De asemenea poate fi folosit ca si “caine de paza” adaugand un difuzor…etc,etc. Ideea de la care am pornit: am vazut pe un site dedicat proiectelor cu roboti : www.robotroom.com un proiect asemanator si mi-a placut.
Descriere generală
Misiunea masinutei este: odata pornita, trebuie sa mearga prin incapere si sa ocoleasca obstacole, fara sa se loveasca.
Dupa cum se poate observa in schema de mai sus folosesc puntea H L293D pentru comanda celor 2 motoare DC si 2 senzori (momentan, doar 1) foarte simplii. Senzorii sunt compusi dintr-un LED IR si un fototranzistor. Citesc de pe fototranzistor tensiunea. Cand tensiunea scade sub o anumita valoare inseamna ca obstacolul s-a apropiat prea mult si il ocolesc. De precizat este ca acest senzor IR nu recunoaste obstacolele negre.
Hardware Design
Lista de piese:
- *Cutie de viteza dubla Tamiya 70097 → cu 2 motoare DC controlabile separat
- *Roti camion 36mm Tamiya 70101
- *Al treilea punct de sprijin este o bila
- Punte H L293DNE → 0xt5w1akzx8dd88ewqdxi35wa9py.pdf
- Led IR + fototranzistor
- ATmega 16 → doc2466.pdf
*Piese cumparate de pe shop.turuga.ro
Schema placii imprimate ce contine uC (de baza):
Elementele adaugate:
- senzor IR
- comanda motoare
Software Design
Codul scris in C, compilat cu avr-gcc, hexul “ars” prin USB cu ajutorul bootloaderului.
Incep prin citirea de valorii tensiunii de pe fototranzistor. Daca aceasta tensiune depaseste o anumita valoare, atunci masina poate merge inainte. Daca tensiunea citita pe canalul ADC este mai mica decat acea valoare, cotesc in partea opusa senzorului de la care am citit acea valoare. De exemplu, daca senzorul din dreapta observa obstacol, deci prin ADC citesc o tensiune mai mica decat valoarea cu care compar, atunci cotesc stanga. Si viceversa.
Pentru comanda motoarelor am folosit PWM software, deoarece de la microcontroller obtin 5V iar motoarele erau de 3V. Se puteau folosi la fel de bine si cele 4 timere hardware puse la dispozitie de ATmega16.
Rezultate Obţinute
Care au fost rezultatele obţinute în urma realizării proiectului?
Rezultatul obtinut corespunde aproape 100% proiectului initial. In faza finala proiectul are doar 1 senzor deoarece in ultima zi un fototranzistor a incetat sa mai functioneze. Avand un singur “ochi” este destul de rudimentar. Totusi mecanismul de upgradare cu inca un “ochi” este extrem de usor.
Poze:
Concluzii
Un proiect foarte intersant, incitant.
Download
Arhiva → pm_prj2010_cc_sinorchian_remus.zip :
+ .c
+ .hex
+ Makefile
Bibliografie/Resurse
http://www.atmel.com/dyn/resources/prod_documents/doc2466.pdf
http://www.datasheetcatalog.org/datasheet/texasinstruments/l293d.pdf
http://www.extremeelectronics.co.in/avrtutorials/pdf/avr_tutorial7---motor-control.pdf