Robot FSBot 1.5

13. Máj, 2009, Autor článku: Gustafík David, Elektrotechnika, Študentské práce
Ročník 2, číslo 5 This page as PDF Pridať príspevok

Táto práca dokumentuje robota FSBot 1.5 ktorý bol vytvorený v rámci môjho hobby len tak, pre moje potešenie a pre lepšie pochopenie niektorých oblastí robotiky. Jedná sa o veľkostne malého mobilného robota, ktorého hlavnou prednosťou je rýchlosť a to pri zachovaní minimálnej zložitosti jeho mechanickej stránky. Robot je autonómny a je použiteľný aj na rôzne súťaže mobilných robotov, ako je sledovanie čiary.

Robotika je v súčasnosti veľmi rýchlo sa rozvíjajúcou vedou ktorá zaujala ako profesionálov, tak amatérov. Jej popularita medzi mládežou je veľmi vysoká a je to často ona, ktorá budí záujem o elektroniku v študentoch. Ako taká ma fascinovala už na strednej škole, čo bol aj čas, kedy som spravil základnú mechaniku tohto robota. Odvtedy som sa mnohému naučil a svoje poznatky som aplikoval aj na tohto robota (bolo na ňom vykonaných mnoho vylepšení od prvej verzie). Robot je riadený procesorom ATMega8. Má na sebe 5 senzorov na sledovanie povrchu pod ním, senzor na vzdialenosť a dostatok indikačných prvkov. Mechanicky je riešený minimalisticky – hlavná časť, ktorá ho celého drží pokope je jedna DPS, vyfrézovaná do špeciálneho tvaru. Na nej sú uchytené všetky mechanické diely – motory, upevnenie batérií, dekoračné stĺpiky a držiak na senzor, ako aj všetka elektronika robota.

Konštrukcia robota FSBot 1.5

Celková konštrukcia
Mechanická konštrukcia robota je riešená ako DPS s presným tvarom, na ktorú sa pripevnia všetky súčasti robota. Celkový pohľad na robota je na obr. 1.


Obr. 1. FSB Robot 1.5

Jedná sa o klasický systém robota s tromi opornými bodmi – jeden je pasívny, tvorený plastovým nosníkom s nízkym trením. Na obr. 2. je označený písmenom C. Ďalšie dva aktívne oporné body sú tvorené motormi po stranách – B a D.


Obr. 2. Oporné body robota

Robot je vyvážený tak, aby sa aj pri rýchlom zabrzdení nenahol vpred. V prípade, že by sa tak malo stať je v bode A ďalší oporný bod, ktorý je väčšinu času nepoužívaný. Na upevnenie motorov má DPS po bokoch drážky 3,5cm dlhé a 1cm široké. Každý z motorov je uchytený o DPS trojicou sťahovacích pásikov prevlečených cez 3mm diery. Batérie sú na robota položené a potom upevnené hliníkovou doskou, ktorá je o DPS upevnená pomocou štyroch dištančných stĺpikov. Pod batériami sú nalepené špeciálne mäkké podložky aby sa zabránilo poškodeniu DPS a batérií príliš veľkým stlačením. Celá konštrukcia sa nesie v znamení jednoduchosti a minimalistickej mechaniky.

Pohon
Na pohon sú použité dva rovnaké jednosmerné motory so vstavanou prevodovkou na 24V. Sú typu MXG-12WH. Výstupný hriadeľ je napojený rovno na koleso. Koleso je sústružené z plastového valca a je pripevnené na úchytku, ktorá má presný tvar hriadeľa (nie je teda potrebné používať červík).
Motory sú upevnené pomocou trojice sťahovacích pásikov a teplom taviteľného lepidla. Motory sú riadené dvojitým H-mostom L293. Bola možnosť použiť L293D – ten istý obvod, ale s integrovanými ochrannými diódami, no ten bol schopný spínať len nižšie prúdy. Ochranné diódy sú teda externé rýchle kremíkové diódy. Na obr. 2. sú vyznačené bledomodrými rámčekmi.

Upevenenie senzorov
Senzory na čiaru sú umiestnené na spodku v prednej časti robota. Ich hlavné uchytenie spočíva v tom, že sú vložené do pätíc v hlavnej DPS. Predná strana je miestom, ktoré utŕži najviac nárazov pri jazde, preto sú senzory tiež zaliate v teplom taviteľnom lepidle. Týmto sa získava dokonalá stálosť polohy senzorov, ako aj spevnenie prednej časti konštrukcie. Snímacie časti senzorov sú umiestnené cca. 5mm nad povrchom dráhy. Ich tienenie proti externým zdrojom svetla nebolo nutné, vzhľadom na to, že aj s tienením dávali pri kontrastných farbách pod nimi prakticky rovnaké výsledky ako bez tienenia. Senzory sú jednoduché reflexné snímače typu CNY70. Na obr. 3. sú označené rámčekom B.


Obr. 3. Rozmiestnenie snímačov

Senzor na detekciu prítomnosti stola/povrchu je inteligentný reflexný snímač GP2A11 s TTL výstupom. Je uchytený na prednom bloku ochranného materiálu čiarových snímačov prilepením pomocou teplom taviteľného lepidla. Je umiestnený cca. 4mm nad povrchom dráhy. Na obr. 3. je označený rámčekom A. Senzory na zistenie prítomnosti prekážky sú dva. Jeden je jednoduchý mechanický spínač umiestnený úplne vpredu na robotovi, aby mohol zistiť narazenie do prekážky. Jeho upevnenie je takisto riešené teplom taviteľným lepidlom. Na obr. 4. je označený rámčekom B. V súčasnosti ho nevyužívam.


Obr. 4. Snímače prítomnosti prekážky

Druhý snímač prekážky sa nachádza nad hlavnou DPS. Uchytený je na špeciálnom bloku hliníka, ktorý je uchytený o hlavnú DPS pomocou dištančných stĺpikov. Jeho stred je umiestnený cca. 4,5cm nad povrchom dráhy. Na obr. 4. je označený rámčekom A.

Ovládacie prvky
Ovládacie prvky pozostávajú z hlavného vypínača napájania, štvorice nastavovacích tlačidiel a šiestich indikačných LED. Všetky prvky sú vyznačené na obr. 5.


Obr. 5. Ovládacie prvky robota

Hlavný vypínač je ľahko dostupný zozadu. Nie sú okolo neho žiadne vyššie súčiastky, aby sa dal jednoducho a rýchlo ovládať. Na obr. 5 je označený písmenom A. Štvorica ovládacích tlačidiel slúži na komunikáciu s užívateľom. Ich funkcia závisí od stavu menu. RESET je farebne odlíšený od ostatných tlačidiel. Tlačidlá sú ľahko stlačiteľné a umiestnené na boku, kde sú ľahko dostupné. Na obrázku sú označené písmenom B. Šestica indikačných vysoko svietivých LED má na starosti indikáciu stavu robota. Tri z nich sú zelené, tri červené (farebné odlíšenie stavu). Z väčšiny bežných uhlov pohľadu sú prijateľne viditeľné. Na obrázku sú naznačené písmenom C.

Servisné pripojenie
Servisné prípojky robota sú miesta, kde je možné sa napojiť pri jeho údržbe. Ich polohy sú vyznačené na obr. 6.


Obr. 6. Servisné prípojky

Na jeho údržbu stačia 2 pripojenia. Jedno na programovanie procesora firmwarom a druhé na pripojenie externej nabíjačky pre batérie. Interface pre programátor je zapojený podla appnote 910 od Atmelu (štandardné rozloženie 6 pinového ISP programátora). Je umiestnený pri riadiacich tlačidlách pre jednoduchšiu prístupnosť ako aj preto, lebo s tlačidlami zdieľa signály. Jeho poloha je naznačená písmenom A. Na pripojenie externej nabíjačky slúži 5 pinový konektor so zámkom umiestnený v zadnej časti robota (v oblasti napájania a pripojenia bateriek). Je okolo neho dostatok priestoru aby sa dal bez problémov pripojiť kábel z nabíjačky. Na obrázku je označený písmenom B.

Mechanické riešenie ostatných blokov
Doska malého DC-DC meniča je napojená na hlavnú dosku jednoduchým konektorom v jeho bočnej časti. Okrem toho je lepšie upevnená teplom taviteľným lepidlom. Otočená je tak, aby bol dostupný trimer ktorým je možné doladiť výstupné napätie. Jedná sa o zdroj s vysokou účinnosťou. Jeho stratové teplo je zanedbateľné a chladenie nie je potrebné. Chladenie hlavného H-mostu tiež nie je potrebné, no pre istotu som pridal chladič riešený ako masívny blok hliníku. Jedná sa v tomto prípade o lepšie riešenie ako použiť chladič zložitého tvaru a malého objemu, keďže robot je púšťaný len na krátke doby. Pre tvorbu horného (na obrázkoch nie je namontovaný, aby boli prehľadnejšie) krycieho plechu som experimentoval s leptaním do hliníkového povrchu chloridom železitým s maskou riešenou bežnou alkoholovou fixkou. Presný postup tejto technológie som zdokumentoval v [1]. Výsledný blok je zobrazený na obr. 7. Panel som po leptaní ešte nasprejoval načierno pre lepší vzhľad.


Obr. 7. Krycí plech

Mechanické vylepšenia oproti pôvodnej verzií
Hlavnej zmeny oproti pôvodnej verzii sa dočkali motory. Tie boli úplne vymenené kôli tomu, že pôvodné sa zasekli. Jednalo sa o veľmi rýchle, no staré motory. Tie boli nahradené novšími a väčšími motormi, ktoré mali naštastie výstupný hriadeľ z prevodovky takmer úplne rovnako vysoko ako pôvodné motory. No miesto pôvodných 12V vyžadovali dvojnásobné – 24V napájanie. To viedlo k ďalšej zásadnej zmene. V pôvodnej verzii boli na napájanie použité NiCd články. Tie zabezpečovali spolu napätie cca 12V, no za cenu dosť veľkej vlastnej hmotnosti. Množstvo batérii NiCd potrebných pre 24V zdroj by bolo neúnosné. Preto som sa rozhodol nahradiť ich šiestimi LiIon batériami organizovaných do batérií po dvoch, dokopy dávajúc napätie do cca. 25V, v závislosti od toho, ako boli nabité. Toto výrazne odľahčilo robota. Iné mechanické zmeny sa týkali hlavne estetických vlastností robota. Snažil som sa v novej verzií hlavne o nižší a elegantnejší profil. Na obr. 8 je stará verzia. Takisto bol odstránený dekoračný chrlič.


Obr. 8. FSBot

Použité materiály
Nosná DPS je z klasického FR4 cuprexitu. Dal som si ju vyrobiť na SAV z vlastného návrhu. Na letovanie som použil klasický olovnatý cín. Kolesá sú sústružené z nylonu. Na kovové časti (horné diely) som použil hliníkový plech 2mm hrubý.

Elektronika

Hlavná riadiaca doska
Na robotovi bolo nutné zabezpečiť viacero vecí:

  • Základné funkcie – napájanie, programovacie rozhranie…
  • Reakcia na vstupy od užívateľa
  • Senzorika a zisťovanie stavu senzorov
  • Vyhodnotenie stavu senzorov a reakcia naň
  • Riadenie motorov na základe požadovaného smeru

Všetky tieto funkcie sú implementované na hlavnej doske.

Základné funkcie
Napájanie pre celého robota je zabezpečované 6 Li-ion článkami. Tieto poskytujú napätie približne 25,2 – 21,6V v závislosti od toho, nakoľko sú nabité a aká je záťaž. Pôvodné boli použité NiMH batérie, ktoré dodávali 12V, no kvôli už spomínanej zmene motorov by bolo nevhodné (hlavne kvôli hmotnosti) zdvojnásobiť ich počet. Batérie sú odpájané spínačom na zadnej časti robota. Napätie priamo z batérii ide len na H-most, na ochranné diódy H-mostu, na pár filtračných kondenzátorov a na DC-DC menič napätia. DC-DC menič je v podstate len katalógové zapojenie obvodu LM2674, no funguje výborne a je na samostatnej DPS. Vytvoril som malý modul, ktorý mal v tomto robotovi nahradiť IO 7805, podobných rozmerov. Tento modul obsahuje cievku, IO, diódu, nastavovacie prvky a malé filtračné kondenzátory. Výstup je nastaviteľný v pomerne širokom rozsahu.+5V vetva je použitá na napájanie procesora a senzorov. Na programovanie procesora som použil jeho ISP rozhranie – 4 piny – MOSI, MISO, SCK a Reset.

Užívateľské rozhranie
Robota je potrebné neraz nastavovať. Aby ho nebolo nutné zakaždým pripájať na počítač, implementoval som naňho jednoduché užívateľské rozhranie. Ako vstupy sú použité 4 tlačidlá – Reset plní funkciu znovunastavenia. Tri ďalšie plnia rôzne funkcie, podľa toho, v ktorej časti „menu“ sa nachádzame. Ako spätná väzba pre užívateľa slúži rad šiestich LED, z ktorých sa dá vyčítať aktuálny stav robota, ako aj stav „menu“. Takisto som tu použil piezoreproduktor aby robot aj vydával zvuky. Počas behu môže teda hrať melódiu, alebo výraznejšie signalizovať, že niečo nie je v poriadku.
V menu je možné kalibrovať aj senzory.

Senzorika a zisťovanie stavu senzorov
Na robotovi sú použité nasledovné senzory:

  • 5x Senzor na čiaru – jedná sa o reflexné optické snímače povrchu. Zapojené tak, aby dávali analógový napäťový výstup. Ten je napojený na A/D prevodník procesora
  • 1x Senzor na prítomnosť povrchu – jedná sa o modul senzoru GP2A11. Výstup má digitálny, no pripojil som ho na A/D prevodník, lebo v pôvodnej konštrukcií som s ním nerátal
  • 1x Senzor na vzdialenosť – jedna sa o senzor GP2Y0A21YK0F s rozsahom ~5cm – 80cm. Jeho výstup je analógový napäťový signál nepriamo úmerný vzdialenosti od najbližšieho odrazivého objektu. Je napojený na A/D prevodník

Inteligencia
Robot je riadený procesorom ATMega8 (obr. 9), taktovaným na 16MHz externým kryštálom. Jeho integrovaný A/D prevodník používam na vyhodnocovanie hodnoty napätia zo senzorov. Ako referenčné napätie je použité napájacie napätie 5V.


Obr. 9 Procesor ATMega8

Riadenie motorov
Na riadenie smeru motorov som použil H-most L293 spolu s ochrannými diódami. Jeho rýchlosť je riadená PWM, ktorá je generovaná procesorom. Smer mením polaritou ich napájania. PWM je frekvencie 2kHz. Vhodnú frekvenciu som určil metódou pokus a omyl. Napájanie 5V a 24V sú dostatočne oddelené a odrušené na to, aby sa ruchy spôsobené motormi neprenášali do citlivého merania A/D prevodníka. Pri návrhu DPS som takisto kládol dôraz na to, aby analógové cestičky boli dostatočne vzdialené od riadiacich PWM cestičiek, napájacích ciest a od iných možných zdrojov ruchu.

Software

Použitie HW, stručný opis
Firmware pre robota je písaný v C jazyku. Je štruktúrovaný tak, že väčšina práce je konaná v hlavnom programe, ktorý potom čaká na nastavenie príslušných flagov z prerušení. Prerušenia sú písané tak, aby ich vykonávanie zabralo čo najmenej času a hlavný program mal dostatok času na náročnejšie operácie. Dvojkanálové generovanie PWM je riešené hardwarovo – časovačom TIMER 1.
Ďalej je využívaný A/D prevodník na meranie napäťových výstupov zo senzorov. Ten je nastavený tak, aby po každom prevode spustil prerušenie. Toto prerušenie prestaví meraný kanál. Keď je zmeraných a uložených všetkých 8 kanálov, nastaví sa flag NewSensorDataAvailable na 1. Ten je kontrolovaný v hlavnom programe a používaný na jednotlivé kroky. Je tu použitá filozofia – nemá zmysel robiť rozhodnutia dokiaľ nemáme aktuálne dáta.
EEPROM je využitá na ukladanie kalibračných konštánt. Na robotovi je možné nastaviť viacero parametrov:

  • Treshold pre prekážku – vzdialenosť od ktorej sa považuje prekážka za hodnú obíjdenia
  • Treshold pre čiarové snímače – robot môže chodiť po viacerých povrchoch. Každý povrch má inú schopnosť odrážať infračervené svetlo. Robot si pamätá nastavenie istej hranice, ktorú mu nastavíme
  • Zvuky – robot je schopný vydávať zvuky. Občas je to ale nevhodné, preto je ich možné zakázať
  • Minimálny režim – robota je možné nastaviť tak, aby ignoroval prekážky a išiel iba po čiare
  • Rýchlosť otáčania – pre zákruty je nastaviteľné akou rýchlosťou má ísť jedno koliesko (týmto je možné doladiť priemer oblúkov ktoré robot robí)

Časovač TIMER 2 sa využíva na generovanie zvukov.

Použitie hysterézie pri snímačoch
Aby sa predišlo problémom ktoré vznikajú keď je signál zo senzorov v oblasti rozhodovacej úrovne je použitý jednoduchý hysterézny algoritmus, ktorý zabráni takémuto prekmitávaniu. Je použitý na čiarové senzory a senzor vzdialenosti. Bez tohto algoritmu boli výsledky robota trocha horšie. Hodnota hysterézie je pevne daná.

Autokalibrácia snímačov
Aby sa nemuseli snímače čiary zložito konfigurovať je použité jednoduché riešenie – robot sa položí najprv na čiaru, urobí 1024 meraní z čiarových senzorov. Tieto sčíta a potom z nich spraví priemer. Potom sa položí na povrch kde nie je čiara a spraví ďalších 1024 meraní, ktoré sa všetky sčítavajú. Z nich sa tiež spraví priemer. Rozhodovacia úroveň sa získa tak, že sa tieto priemery sčítajú a výsledok sa vydelí dvoma. Celý proces je indikovaný svetelnými diódami. Nastavovanie minimálnej vzdialenosti pre prekážku je riešené jednoducho – robot sa postaví pred prekážku vo vzdialenosti v akej chceme aby ju zistil a potvrdíme.

Použitá literátura
[1] David Gustafik – osobná stránka – www.daqq.eu
[2] Petr Novak “Mobilní roboty”, 2005
[3] Internetová komunita www.avrfreaks.net


Práca bola prednesená v súťaži ŠVOČ 2009 na FEI STU Bratislava v sekcií Automatizované systémy riadenia. Ďalšie informácie o autorovi a jeho práci nájdete na stránke www.daqq.eu 

Napísať príspevok