
Robotul Minisumo MR1
Incepem cu mini-sumo,
Aceste sisteme electro-mecanice, care executa miscari controlate si au o complexitate suficient de ridicata, pot fi puse sa faca multe treburi utile...
Nu ne putem permite sa construim roboti industriali sau de exploatare numai din pasiune…dar conceperea unui robot adaptat pentru o activitate specifica nu mai este o problema asa de mare pentru cel care a gandit si realizat integral un mini-sumo.
Conceperea si realizarea unui robot, chiar si "mini-sumo", dar precis in miscari, fiabil si robust, presupune cunostinte de mecanica si electronica - intervin calcule de forte, energii cinetice, lucru mecanic, impuls….rezistenta materialelor; in electronica avem partea de programare si electronica de putere (daca lucram cu forte mari); transmisie de date(daca sistemul este telecomandat)- .
Oricum un mini-sumo poate deveni o mini-uzina.
Se poate citi in numarul 2 al acestei reviste articolul "Aspecte Mecanice in Controlul Miscarii"
comentariu InfoElectronica
Minisumo este un joc de roboti, nedistructiv si foarte simpatic. Implica doi robotei autonomi si un ring de joc(numit dohyo). Scopul fiecarui robot este sa impinga adversarul in afara ringului. Pentru frumusetea jocului, exista anumite restrictii impuse, iar cele mai importante, dupa mine, sunt :
Restrictiile impuse pentru minisumo imi par a fi o provocare foarte interesanta. La prima vedere, pot parea a fi contradictorii: robotul trebuie sa fie puternic si in acelasi timp trebuie sa indeplineasca restrictii severe de dimensiuni si greutate. Asta-i doar la prima vedere! Cred ca regulile minisumo deschid o usa larga pentru o gramada de creativitate si inventivitate si forteaza robotul sa fie mai mult "destept" decat puternic. Si abia de-aici incepe distractia! Fa-ti o jucarie desteapta, pune intr-insa cat vrei din desteptaciunea si indemanarea ta, apoi stai si vezi ce face...
Si mai e un motiv important. Un robot minisumo poate fi facut acasa si e acceptabil de ieftin (sigur, cineva poate sa-l faca foarte complex si scump si sa cheltuie o avere ca sa-l construiasca, daca vrea). Asta-i foarte important pentru mine fiindca-s un tip orientat pe practica. Dupa mine, minisumo e un foarte bun mod sa te apuci de robotica datorita complexitatii medii si a relativei usurinte de a fi construit. Ca sa-mi construiesc primul meu robotel minisumo, n-am avut nevoie de scule deosebite. Doar suruburi, piulite, cabluri, masina de gaurit, scule obisnuite cu care sa faci un cablaj, nimic special.
|
Specificatii |
|
|
Nume |
MR1 |
|
Dimensiuni |
97mm x 96mm x 94mm (lungime x latime x inaltime) |
|
Masa |
360g fara baterii |
|
Alimentare |
1 baterie de 9V pentru partea electronica |
|
Microcontroler |
PIC16LF877A - I/P la 20MHz, 5V |
|
Motoare |
|
|
Circuit de comanda pentru motoare |
2 x L293D , cate un integrat pentru fiecare motor |
|
Roti |
2 x GMPW-9, 67mm diametru |
|
Caucicuri |
2 x GMTT, 71mm diametru |
|
Senzori pentru detectia obiectelor |
circuit separat bazat pe un PIC16F88 si 4 LED-uri IR cu 4 receptoare TSOP1738 |
|
Senzori pentru detectia marginii |
2 x RPR-220 ROHM |
|
Senzori pentru detectia liniei (in modul de functionare line follower) |
3 x RPR-220 ROHM |
|
Putere de impingere |
testat pe o cutie de vopsea de 1600g |
|
Comunicatie cu PC |
comunicatie seriala RS232, 57600baud |
|
Moduri de functionare |
modul de functionare controlat prin telecomdanda |
|
Programe executate |
programul de auto-calibrare |
|
Soft-ul pentru microcontroler |
Softul a fost scris in limbajul C pentru compilatorul Hi-Tech PICC |
|
Schema placii de control |
O puteti vedea aici. |
|
Schema senzorului pentru detectia adversarului |
O puteti vedea aici. In schema pinii 5 si 14 ai PIC-ului sunt gresit conectati la Vcc si GND. |
Vedere de sus
1 = microcontrolerul PIC16F877A
2 = conectorul de alimentare de 9V si butonul ON / OFF
3 = cuartz de 20MHz si condensatori de 22pF
4 = mufa seriala, MAX232 si condensatorii de 1uF
5 = stabilizatorul de tensiune 78L05 si ledul de prezenta a tensiunii
6 = jumper-ii de selectie a programului
7 = conectorul ICSP
8 = conectorul pentru driver-ul de motoare
9 = conectorul pentru modulul de detectie a adversarului
10 = conectorul pentru senzorii de detectie a liniei
11 = conectorul pentru senzorii de detectie a marginii
12 = ledul indicator de stare
13 = TSOP1738
1 = motorul din stanga
2 = roata din stanga
3 = roata libera din spate(de fapt e o bila)
4 = lama de impins din fata
5 = conectorul de alimentare de 9V si butonul ON / OFF
6 = microcontrolerul PIC16F877A
7 = bateriile de 1.5V de jos
8 = jumper-ii de selectie a programului
1 = motorul din dreapta
2 = roata din dreapta
3 = roata libera din spate(de fapt e o bila)
4 = lama de impins din fata
5 = mufa seriala
6 = microcontrolerul PIC16F877A
7 = bateriile de 1.5V de jos
8 = receptorul IR TSOP1738
1 = LED-uri IR ce emit pulsuri de 38kHz pentru detectia adversarului
2 = receptoare IR de 38kHz
3 = lama de impins din fata
4 = conectorul pentru senzorii de detectie a liniei
5 = conectorul pentru senzorii de detectie a marginii
6 = conectorul pentru modulul de detectie a adversarului
7 = conectorul de alimentare de 6V pentru dirver-ul de motoare
Modulul de detectie a adversarului, usor vizibil din fata, este bazat pe emisia si receptia radiatiei IR modulata la 38kHz. Modulul este controlat de un microcontroler PIC16F88 ce comunica prin bus-ul I2C cu controlerul principal. Lama de impins din fata (in egleza ii zice "front scoop", o traducere mai desteapta n-am gasit) are forma concava jos.
1 = bateria de 9V pentru alimentarea partii electronice de control
2 = motoarele cu reductor
3 = conectorul pentru driver-ul de motoare
4 = roata libera din spate
5 = suportul si bateriile de 1.5V pentru alimentarea driver-elor de motoare(L293D)
6 = receptor IR de 38kHz
7 = LED IR ce emite pulsuri de 38kHz pentru detectia adversarului
1 = baterii de 1.5V
2 = roata libera din spate
3 = lama de impins din fata
4 = senzorii de detectie a marginii
5 = senzorii de detectie a liniei
Am pus bateriile (toate 5 au 180-220g) si motoarele cat mai jos posibil pentru a cobora centrul de greutate al robotului.
1 = driver-ele de motor L293D
2, 4 = LED IR ce emite pulsuri de 38kHz pentru detectia adversarului
3, 5 = receptor IR de 38kHz
6 = conectorul de alimentare de 6V pentru dirver-ul de motoare
7 = motoarele cu reductor
8 = conectorii de alimentare a motoarelor
1 = motoarele cu reductor
2 = bateria de 9V
3 = LED IR ce emite pulsuri de 38kHz pentru detectia adversarului
4 = receptor IR de 38kHz
5 = conectorul de alimentare de 9V pentru electronica de control

Senzorul de detectie a adversarului emite periodic 5 impulsuri modulate de aproximativ 600us, intercalate 5 perioade de pauza de aproximativ 600us. Aceasta se intampla, pe rand, pe fiecare din cele 4 led-uri emitatoare(3 in fata si 1 in spate). In acelasi timp cu emiterea impulsurilor, sunt numarate( folosind sistemul de intreruperi) reflexiile detectate de TSOP1738. Daca sunt numarate cel putin 3 reflexii, MR1 decide ca are un obiect in directia LED-ului emitator respectiv. Prin constructie, am protejat cu tub termocontractil fiecare led emitator, astfel incat sa un poata emite direct in vreo unul din TSOP-uri. In acest fel, in modul ideal, TSOP-urile "prind" doar reflexiile.
Afisajul LCD cu interfata I2C nu face parte din constructia robotului deoarece ar depasi masa admisa de 500g. Acesta poate fi adaugat pentru a inlesni depanarea soft-ului.
In filmuletul asta, MR1 trebuie sa scoata afara din ring o cutie alba cu vopsea, cantarind aproximativ 650g.
In filmuletul asta, MR1 trebuie sa scoata afara din ring o cutie galbena cu vopsea, cantarind aproximativ 1600g.
In filmuletul asta, MR1 da afara din ring camera foto.
Modul de functionare controlat prin telecomanda
Acest mod de functionare este cel mai prioritar. In momentul in care MR1 receptioneaza un cod valid de la telecomanda IR, executa comanda asociata acelui cod imediat, indiferent de ce anume facea la acel moment. MR1 intra in acest mod de functionare imediat ce a primit un cod valid si iese din modul de functionare controlat prin telecomanda doar atunci cand se apasa tasta OFF a telecomenzii.
Modul de functionare in diagnoza
Acest mod de functionare este al doilea ca prioritate. MR1 intra in modul diagnoza imediat ce primeste o comanda de diagnoza valida si iese din acest mod automat daca trec 5 secunde in care nu primeste nici o comanda de diagnoza. MR1 primeste comenzile de diagnoza prin interfata de comunicatie seriala, de la un software de diagnoza ce ruleaza pe PC. Fiecare comanda de diagnoza este compusa dintr-o cerere (de la PC catre MR1) si un raspuns (de la MR1 catre PC), dupa urmatoarea logica:
MR1 primeste cerere de la PC ---> MR1 executa cererea ---> MR1 trimite raspunsul catre PC
Rolul software-ului de diagnoza rulat pe PC este de a trimite comenzi simple de diagnoza catre MR1, cum ar fi: comenzi de control al miscarii robotului, comenzi de control al rotatiei motoarelor (directie de rotatie, viteza), comenzi de citire a senzorilor, comenzi de calibrare a senzorilor. Aceste comenzi sunt foarte utlile atunci cand doresc sa testez functionarea robotului.
De exemplu, mi s-a intamplat sa fac o modificare importanta in software si dupa ce am scris hex-ul in microcontroler sa vad ca robotul minisumo nu mai misca deloc. Intr-o asemenea situatie, prima intrebare care-mi trece in cap este: "oare s-a busit vreun motor sau senzor sau noul soft are un bug?". La intrebarea asta se poate raspunde foarte usor conectand cablul serial, pornind softul de diagnoza si trimitand comenzi de diagnoza catre MR1.
Modul de functionare autonom
Acesta este modul de functionare in care robotul minisumo se afla cea mai mare parte a timpului. In acest mod de functionare MR1 intra imediat dupa pornire si de fiecare data cand iese din unul din modurile de functionare de mai sus. In acest mod de functionare, robotul executa programul selectat prin jumperii de selectie a programului.
Robotul meu minisumo poate executa 4 programe diferite. Cele 4 programe sunt selectate cu ajutorul jump-erilor de selectie a programului.
Programul de auto-calibrare
Acest program are rolul de a calibra pragurile de "alb" si "negru" pentru senzorii de detectia a marginii si a liniei si de a stabili factorul de umplere pentru impulsurile de 38kHz ale senzorului de detectie a adversarului.
Pentru a calibra robotelul meu de minisumo sunt necesari urmatorii pasi:
1) pornesc robotul si astept ca ledul de stare sa clipeasca de 5 ori
2) pun robotul pe ring in zona neagra
3) astept ca ledul de stare sa clipeasca de 5 ori
4) pun robotul cu toti senzorii deasupra marginii albe
5) astept ca ledul de stare sa clipeasca de 5 ori
6) pun robotul la aproximativ 25-30 cm de obiectul pe care vreau sa-l detecteze
7) astept ca ledul de stare sa ramana aprins
8) in acest moment calibrarea este incheiata
Dar ce se intampla "inauntru", totusi? MR1 memoreaza valorile masurate de convertorul analogic-digital pentru fiecare senzor si pentru fiecare zona (alba/neagra). Pentru fiecare senzor, face o medie intre valoarea de alb si valoarea de negru si decide ca acea medie este valoarea de prag intre alb si negru. Apoi scrie in EEPROM toate valorile de prag. Fiecare senzor are, in acest fel, valoarea sa proprie de prag. Ceva asemanator face si cu senzorul de detectia a adversarului. Schimba factorul de umplere al impulsurilor de 38kHz pana cand "gaseste" obiectul din fata sa. Valorile posibile pentru factorul de umplere sunt 25%, 50% si 75%. Odata gasit factorul de umplere corect, acesta este memorat in EEPROM.
Programul minisumo defensiv
Executand acest program, robotul minisumo trebuie sa detecteze adversarul si sa incerce sa-l scoata afara din ring. In plus, MR1 trebuie sa nu iasa de unul singur afara din ring. O caracteristica care diferentiaza acest program de programul minisumo ofensiv, este ca MR1 face o manevra de eschivare imediat dupa trecerea celor 5 secunde de asteptare. Aceasta manevra are rolul de a evita un robot mai rapid care ar putea ataca direct si imediat dupa cele 5 secunde.
In diagrama urmatoare se pot vedea starile prin care trece robotul minisumo in timpul executiei acestui program:
Programul minisumo ofensiv
Este aproape identic cu programul minisumo defensiv, singura diferenta fiind ca lipseste manevra de eschivare dupa expirarea celor 5 secunde de asteptare.
Programul de urmarire a liniei (line follower)
Executand acest program, MR1 trebuie sa urmareasca traseul unei linii negre, de latime minim 1.5cm. MR1 este un robot minisumo, functionalitatea de urmarire a unei linii fiind secundara, nu insist asupra acestui program (si nici in software nu m-am complicat cu el).
Comentarii:
Adauga comentariul tau:

