miercuri, 10 aprilie 2013

Un robot … în Bistriţa

       "gândul  zboarã liber"



La un moment dat, m-au interesat mici automatizãri care pot fi realizate "la domiciliu", cu utilizarea calculatorului, şi am dat peste platforma Arduino. La inceput mi s-a pãrut o joacã, dar apoi ...   
  Dupã un efort ( consistent )  de informare/documentare la modul autodidact şi multe încercãri, am realizat primul meu robot, cu microprocesor Atmel ( pe o placa Arduino Uno), un senzor IR Sharp digital pentru distanţã 2-10cm; un servomecanism PWM , douã motoare DC cu reductor. de la  o jucãrie defectã
  La prima vedere, pare o jucãrie. In spate, ascunde multã muncã, timp şi .... merge !

Ce face :  
funcţioneazã autonom, pe baza programului încãrcat în microprocesor:
- merge înainte; dacã întâlneşte un obstacol, se opreşte şi se retrage puţin înapoi;
- cautã drumul liber:   “priveşte” la dreapta , apoi la stânga şi reţine dacã senzorul IR a sesizat vre-un obstacol în pãrţile laterale, la o distanţã sub 10 cm.
- dacã nu existã nici un obstacol, sau dacã a sesizat un obstacol spre partea dreaptã , atunci întoarce spre  stînga şi  reia mersul,  pânã întîlneşte alt obstacol;
- dacã a gãsit  un obstacol spre dreapta la cãutarea drumului liber, atunci executã întoarcerea spre stânga şi reia mersul.
Ca bibliografie şi mod de lucru m-am inspirat  din “How to make your first robot using arduino”, (  http://communityofrobots.com/tutorial/kawal/how-make-your-first-robot-using-arduino?page=2 )
 Faţã de autorul articolului:
- am utilizat un senzor IR Sharp GP2Y0D810Z0F digital  2-10 cm (pentru ca era cel mai ieftin – 28 Ron ) ;
- puntea H pentru comanda motoarelor de curent continuu , e fãcutã de mine cu L298;
- 2 motoare cu reductor,  de la o jucãrie defectã;
- 2 roţi mari şi 2 roti mici,  de la o jucãrie defectã ;
- 1 servomecanism PWM de 16 g, marca  Robbe ;            
- un modul cu 3 LED-uri colorate, pentru a semnala  detectarea obstacolelor stânga/dreapta şi înainte  ( îmi aratã valoarea variabilelor dn program).
- şasiul, suportii şi placa de montaj sânt facute din PVC de 2 mm, cu traforajul.    
 Prima încercare:  nu a fost reuşitã – la conectarea bateriilor, când l-am pus sã meargã, bâţâia pe parchet ca o pisicã pe gheaţã !
 A fost şocant pentru mine, am respectat tot ce era în site-ul autorului, eram convins cã e o simplã jucãrie – şi nu mi-a venit sã cred cã am fãcut ...un  nimica !
 Pânã la urmã, l-am fãcut sã meargã – deşi  am fost nevoit sã reiau toatã partea mecanicã şi programarea de la început, cu încercãri, verificãri şi corecţii pe fiecare etapã de lucru.            
 
 Observaţii :
Partea mecanicã – este la fel de importantã ca şi partea electronicã şi cea de programare .  
Pe net sînt  multe variante de roboţi , de toate formele şi tipurile – de nu ştii ce sã alegi .
Iniţial, mi-am propus ca şasiul  meu sã fie “low cost” , “home made”, şi dacã se poate, sã nu trebuiascã bani.
Nu mi-au plãcut roboţii gen triciclu si mai ales cei cu o bilã în loc de roatã şi am zis sã aibã 4 roţi (altã greşealã) cã doar e robot care circulã ca o maşinã.
 De ce este greşit :

  1. Un scaun cu 3 picioare , nu se clatinã niciodatã (este un sistem static determinat) ! Triciclul atinge permanent solul cu cele trei roţi (puncte de sprijin) chiar dacã suprafaţa pe care se aşeazã este cu denivelãri !
  1. Un scaun cu 4 picioare , foarte rar stã sprijinit pe toate picioarele. Chiar dacã acestea sânt la fel de lungi, dacã solul pe care e aşezat are denivelãri oricât de mici, scaunul va sta numai pe 3 din cele 4 picioare şi la cea mai micã mişcare balanseazã. Un şasiu cu 4 roţi , montate “rigid” o sã aiba mereu o roatã în aer, va balansa, va trepida şi nu va merge niciodatã drept Ca sã stea in contact cu solul, cu toate cele 4 roţi, ar trebui sa aibã suspensie independentã  pe fiecare roatã. Scopul, simplitatea  şi dimensiunile nu justificã acest lucru.) 
In final, am apropiat roţile din spate foarte mult, ca sã formeze un singur “punct” de sprijin, şi am transformat practic şasiul într-un triciclu.    
-am ales douã  roţi cu bandaj “creţ” de cauciuc moale, cu diametru de 44 mm (în ideea sã nu patineze  pe parchet laminat) de la o jucãrie chinezeascã demolatã de nepoţelul meu.
-am luat douã roţi mici , de 12 mm diametru pentru partea din spate , de la o maşinuţã de jucãrie (astea mi-au fãcut ulterior cel mai mare necaz), am fãcut pentru ele un suport  le-am montat apropiate între ele (10mm ).
-am alimentat motoarele, şi a pus micul “monstru”  pe parchet, sã vãd dacã pot sã-l fac sã meargã drept ; au trebuit modificãri la  suportul motoarelor şi la saşiu , ca sã se poatã fi aliniate roţile ;
  Dupã ce am reuşit sã aduc la “normal “ partea mecanicã , am montat din nou senzorul IR, servomecanismul, driverul motoarelor  şi “creierul”. Am reluat programul linie cu linie , şi am refãcut complect timpii de aşteptare dintre comenzile programate
In final , a funcţionat bine.
Concluzii:
- cele mai bune componente pentru asfel de lucrãri sunt cele profesiunale, luate din comerţ , chiar dacã costã !
- distracţia asta cere multa muncã, cunoştinţe de electronicã, programare în C / C++ şi mecanicã, dar pot fi asimilate progresiv chiar si de copii !    
-o asemenea preocupare are caracter de cercetare, de la început pânã la sfârşit, oricâtã bibliografie ai folosi.