Vývojové práce na tomto robotu probíhaly bez větších problémů, takže před nedávnem mohl být vývoj robota úspěšně ukončen a jeho funkčnost odzkoušena v praxi. Jelikož všechny mechanické díly, elektronika a řídicí program robota pracují správně a spolehlivě, rozhodl jsem se, že o tomto svém výrobku budu informovat i širokou veřejnost čtenářů www.hw.cz.
Základní parametry:
- Napájení:
- 8x Ni-MH akumulátor (9,6V)
- Spotřeba:
- v pohotovostním režimu - 50mA
- při zapnutých motorech - 290mA
- při rozběhu motorů - 400mA
- Hmotnost:
- bez baterií - 680g
- s bateriemi - 875g
Stručný popis
Na konstrukci robota jsem použil součástky ze stavebnice LEGO. Pro pohon robota bylo potřeba zvolit dostatečně silný motor. Nejlépe se mi osvědčila upravená modelářská serva Hi-Tec HS-311. Pro orientaci v prostoru a pro sledování černé čáry na bílém povrchu bylo potřeba navrhnout vhodná čidla. Napájení celého robota je zajištěno pomocí osmi nikl-metalhydriových (Ni-MH) baterií.
Elektronika robota se skládá z hlavní řídicí desky a vedlejší desky externích rozhraní. Vedlejší deska sestává ze dvou LED, které slouží jako reflektory, čárových čidel a zdroje, jenž stabilizuje napětí z baterií. Hlavní úlohou vedlejší desky je zobrazování nastaveného módu činnosti robota a ovládání LED (reflektorů).
Popis zapojení hlavní desky
Jak je patrné ze schématu, nejdůležitější součástkou hlavní desky a v podstatě i celého robota, je mikrokontrolér IC1 (MC68HC08QB8), v pouzdru PDIP, který si je možno zdarma objednat jako vzorek na stránkách výrobce Freescale [1]. Rád bych uvedl, že tato součástka je pinově kompatibilní s mikrokontrolérem MC68HC08QY4, který je běžně dostupný a velmi rozšířený na našem trhu. Na svého prvního robota jsem tedy použil mikrokontrolér MC68HC08QY4, ale řídicí program se často z neznámých důvodů restartoval.
Tento problém jsem se nejprve snažil vyřešit technicky, ale nakonec jediným možným řešením bylo vyměnit součástku MC68HC08QY4 za novější MC68HC08QB8. V dalších částech článku se zaměřím na popis elektronických obvodů robota a výčet činností mikrokontroléru IC1. Základní činností mikrokontroléru je nejprve vybrat odpovídající mód pomocí tlačítka SW2, spustit jej a posílat řádící povely, prostřednictvím softwarově generované I2C sběrnice, do vedlejší desky.
Mikrokontrolér rovněž ovládá chod motorů podle signálů ze vstupních čidel. Napájení mikrokontroléru je realizováno přes odrušovací kondenzátor C1 (napětím 5V). Resetování mikrokontroléru se provádí odpojením napájecího napětí přepínacím tlačítkem S1. Pro taktování jsem použil interní oscilátor, který generuje kmitočet 12,8MHz, jehož přesnost je pro naše potřeby dostatečná.
Další periférií, která je umístěna na hlavní desce, je čidlo detekce překážky. Zapojení tohoto čidla jsem našel na Internetu [7]. Toto čidlo vyniká svou jednoduchostí a vynikající citlivostí. Praktické testy ukázaly, že čidlo dokáže detekovat překážky vzdálené až 50cm, což u čidel s integrovanými obvody 567 nebo 555, které jsem z počátku používal, nebylo dosažitelné. Zapojení čidel se skládá pouze z mikrokontrolérů IC2 a IC3 (PIC12F508), které střídavě posílají impulzy o kmitočtu 40KHz na IR diody IR1, IR3 a IR2, IR4 (2.5ms levá a 2.5ms pravá) a následně zjišťují zda IC5, IC6 (SFH506-36) zachytili signál IR diod. Pokud ano, pak na odpovídajících výstupech bude logická 1.
Na svorky SV1 a SV2 se připojují čidla pro sledování čar. Výstupy čidel bylo potřeba oddělit. Samozřejmě by bylo možné je oddělit hradlem OR, ale použití diod D10 až D12 ušetří místo na DPS. Přes rezistory R6 až R9 jsou na výstupy čidel připojeny LED4 až LED7 s nízkým proudovým odběrem. Další funkcí mikrokontroléru IC1 je programové spouštění čidel pomocí tranzistorů T1 (BC327) a T3 (BC337).
Poslední částí hlavní desky je ovládání motoru. Pro první pokusy jsem použil dva tranzistory zabezpečující spouštění motorů a pomocí ovládacích relé jsem přepínal polaritu a zároveň tedy i směr otáčení motoru. Hned jak jsem toto první zapojení sestavil, věděl jsem, že ve finální verzi zapojení musí být ovládací relé nahrazeny méně hlučným a proudově hospodárnějším řídicím elementem. Proto jsem v další fázi nahradil relé integrovanými budiči motorů IC4 (L298). K těmto budičům stačí přidat odrušovací kondenzátor C4 a pro každý motor jeden diodový můstek složený z diod D1 až D8 (1N4007). Logika budiče je napájena napětím 5V, kdežto silová část budiče a diodové můstky jsou napájeny napětím 6V.
Nakonec bylo potřeba vyvést konektor SV3, na který se připojuje vedlejší deska, s kterou mikrokontrolér komunikuje přes I2C. Hlavní deska byla také doplněna bzučákem, které pípá při nalezení překážky, nebo při detekci čar.
Seznam součástek pro hlavní desku:
R1, R6 až R9 | 2k2 |
R2, R4, R5 | 1k0 |
R3, R10 až R13 | 10k |
P1 až P4 | ležatý trimr 4k0 |
C1 | 100nF |
D1 až D8 | 1N4007 |
D9 až D12 | 1N4148 |
IR1 až IR4 | IRS5 |
T1 | BC327 |
T2, T3 | BC337 |
IC1 | MC68HC908QB8CPE (možno i QY4) |
IC2, IC3 | PIC12F508 |
IC4 | L298 |
IC5, IC6 | SFH506-36 |
BUZ1 | LP-12SP42 |
S1 | P-B170H |
S2 | P-B170G |
SV1,SV2 | 4pinový konektor |
SV3 | 5pinový konektor |
X1 až X4 | ARK500/2 |
Popis zapojení vedlejší desky
Hlavní úlohou vedlejší desky je, jak již bylo řečeno, zobrazovat uživatelem zvolený program a také rozsvěcet LED diody, které slouží jako reflektory. Vše se provádí pomocí dvou I2C expandérů. První expandér IC1 (PCF8472P) se stará o zobrazování čísla programu na DIS1 (HD-A101). Druhý I2C expandér řídí spínaní LED diod, které zobrazují stav aktivních periférií robota při zvoleném programu, a zároveň slouží pro ovládání tranzistoru T1 (BC327), který řídí přední světla robota, tedy konkrétně dvě vysoce svítivé modré diody LED7 a LED8. K hlavní desce se tato deska připojuje pomocí konektoru SV1. Druhý konektor SV2 slouží pro připojení dalších periférií pomocí sběrnice I2C.
Seznam součástek pro vedlejší desku:
R1 | 10k |
R2,R3 | 22k |
R4 | 470R |
R5 až R10 | 2k2 |
R11,R12 | 300R |
LED1 | LED 3MM ZEL 2mA |
LED2 až LED6 | LED 3MM CER 2mA |
LED7, LED8 | LED 5MM MODRA 20mA |
DIS1 | HD-A101 |
IC1,IC2 | PCF8574P |
SV1,SV2 | 5pinový konektor |
Popis zapojení čárového čidla
Toto čidlo je velice jednoduché. Pomocí trimru R3 se nastavuje proud, který bude protékat IR diodami D1 a D2 (IRS5). Tranzistor T2 (BC327) je k fototranzistoru T1 (IRE5) připojen jako emitorový sledovač. Pomocí trimru R2 se nastavuje citlivost zapojení na infračervené záření, odražené z IR diod do fototranzistoru T1. Čidlo se k hlavní desce připojuje pomocí konektoru SV1.
Seznam součástek pro čárové čidlo:
R1,R4 | 1k0 |
R2,R3 | ležatý 1k0 |
D1,D2 | IRS5 |
D3 | LED 3MM ZEL 2MA |
T1 | IRE5 |
T2 | BC327-16 |
SV1 | 4pinový konektor |
Popis zapojení zdroje
Zdroj je velice jednoduchý. Na svorkovnici X1 se připojuje napětí z osmi tužkových baterií Ni-MH. Dioda D1 (1N4007) slouží jako ochrana stabilizátorů proti přepólování. Kondenzátor C3 slouží pro pokrytí proudových špiček. Kondenzátory C1 a C2 jsou zde použity ve funkci odrušovacích prvků. Pro napájení hlavní desky jsem použil přesný stabilizátor IC1 (78T05). Druhý stabilizátor IC2 (7806) stabilizuje napětí pro motory.
Seznam součástek pro zdroj:
R1 | 2k2 |
C1 | 100nF |
C2 | 330nF |
C3 | 2200uF /16V |
D1 | 1N4007 |
D2 | LED 3MM ZEL |
IC1 | 78T05 |
IC2 | 7806 |
X1 až X3 | AK500/ |
Popis Firmwaru hlavního mikrokontroléru
Hlavní funkcí mikrokontroléru je vyhodnocovat stavy zvolených čidel a podle zvoleného módu jimi řídit dva motory. Módy se volí pomocí tlačítka S2, které je umístěno nad resetovacím tlačítkem S1. Při krátkém stisknutí, dojde ke změně programu a na displeji se zobrazí, jaký program je právě zvolen a na LED se zobrazí, jaké periférie se budou používat. Tyto diody budou svítit následovně:
Jak už bylo zmíněno, robot může pracovat v několika režimech, které se volí krátkým stisknutím tlačítka. Pro spuštění vybraného módu, musíme program potvrdit delším stiskem stejného tlačítka do doby, než se robot nerozjede. Robot je schopen pracovat v devíti modech.
- 1 - Překážkové čidlo
- 2 - Překážkové čidlo + pípání
- 3 - Překážkové čidlo + světlo
- 4 - Překážkové čidlo + pípání + světlo
- 5 - Čárové čidlo
- 6 - Čárové čidlo + pípání
- 7 - Čárové čidlo + světlo
- 8 - Čárové čidlo + pípání + světlo
- 9 - Předváděcí mód
Jak se Robot rozhoduje, podle vstupních stavů, je patrné z přiloženého programu, a jelikož je ovládací program naprogramován ve jazyce C, je velmi přehledný a nebude problém jej v budoucnosti různě upravovat. Pro ovládání I2C sběrnice bylo potřeba naprogramovat jednoduchou softwarovou rutinu. Jelikož slouží jenom pro ovládání zobrazovacích prvků, není její rychlost kritická.
Popis mechanických částí robota
Celý robot je postaven ze součástek LEGO, kterých jsem měl dostatek pro stavbu jednoduchého dvoukolového robota. Díly LEGA byly spojovány lepením vteřinovým lepidlem, takže další dodatečné úpravy konstrukce robota jsou těžce proveditelné.
Pro pohon kola byla zvolena dvě levná modelářská serva Hitec HS-311, která mají vysoký točivý moment. Aby se tato serva netočila pouze o 180 stupňů, jak to je u modelářských pohonů zvykem, bylo nutno jednoduše upravit polohovací elektroniku a provést malou úpravu převodovky serva. Na serva byla rovnou přišroubována kola.
Robot nemá, jak je zvykem, třetí kolo, ale pouze jakési "sáňky". Ty se ukázaly jako nejlepší, protože použití malého kolečka mělo řadu nevýhod. Nejhorší vlastností kolečka byla nedotáčivost (kolečko se při zatočení otočilo, ale když měl robot jet opět rovně, kolečko se již nevrátilo nazpátek), což způsobovalo nekontrolovatelné zatáčení robota. Odstraňování tohoto problému bylo s využitím dílců ve stavebnici LEGO náročné, a proto bylo jednodušší, přejít k "sáňkám", a to i za cenu většího tření.
Konstrukce a oživení
Při konstrukci postupujeme klasickým způsobem, ale jediné co je neobvyklé je osazení IC5 a IC6 na hlavní desce. Ty jsou totiž připájeny k DPS vzhůru nohama (Obr. 20.), aby je bylo možné lépe nastavit při ladění čidel. Dále postupujeme tak, že osadíme nejprve pasivní součástky (propojky, následně odpory, kondenzátory, patice pro integrované obvody) a nakonec zbylé aktivní součástky (diody, LEDky, Integrované obvody). Jelikož nebylo možné osadit desku konektorem ICP, je často potřeba, při upravování programu hlavního programu IC1, mikrokontrolér vyndávat z hlavní desky a dávat jej do programátoru. Proto se mi osvědčilo do hlavní desky přiletovat obyčejnou patici a na mikrokontrolér napevno přidělat precizní patici. Tím předejdeme, při časté manipulaci s čipem, možnému poškození jeho nožiček.
Pro oživení celého robota je potřeba nejprve naprogramovat hlavní MCU. To je možné udělat pomocí programátoru, jehož schéma je uvedeno v manuálu nebo pomocí kitu JANUS [8]. Ten je určen pro variantu mikrokontrolér QY, ale díky komptabilitě pinů v Q rodině, není problém procesor MC68HC908QB8 tímto kitem naprogramovat. Pro naprogramování mikrokontrolérů PIC12F508 se mi osvědčil JDM programátor [9].
Poté je potřeba nastavit všechny trimry na největší odpor, aby nedošlo k poškození IR diody, osadit mikrokontroléry. Zvolit program 1 až 4, nastavit pomocí trimrů na hlavní desce rozsah překážkových čidel a resetovat mikrokontrolér. Poté je potřeba zvolit program 5 až 8, nastavit pomocí trimrů na čárových čidlech správnou citlivost na černou a bílou barvu a nakonec připojíme motory a vše je hotovo. Pro vyzkoušení všech periférií můžeme pro jistotu spustit ještě předváděcí mód 9.
Závěr
Tento robot splnil svůj účel: naučil jsem se programovat mikrokontroléry v jazyce C, ale také jsem se zároveň celkově zlepšil v navrhování a konstruování elektronických obvodů, což je jistě velice užitečné. Zároveň doufám, že poslouží jako inspirace dalším ?bastlířům?.
Popsané obvody je možno přidělat na jakýkoliv jiný podvozek a použít jiné motory, a jelikož je software pro hlavní mikrokontrolér napsán v jazyce C, a tedy nebude problém jej doladit či případně vylepšit. Při problémech při stavbě apod. mě můžete kontaktovat pomocí emailu (michalhrouda@ seznam.cz).
Použitá literatura
- http://www.freescale.com
- Datasheet pro mikrokontroler Freescale MC68HC908QB8
- Datasheet pro I2C expandér Philips PCF8574
- Datasheet pro H-můstek Thomson L298
- Datasheet pro stabilizátor řady 78XX
- Vladimír Váňa - Začínáme s mikrokontrolery HC08
- Dennis Clark - IR Obstruction Detektor http://users.frii.com/dlc/robotics/projects/irpd-d2.pdf
- JANUS kit
- Ing. Jaroslav Belza - JDM Programátor http://www.belza.cz
- Petr Stehlík - I2C Školka, několik zapojení na I2C http://www.stehlik.net/i2c/i2cskolka.html
Download:
- Zdrojové kódy pro hlavní MCU (*.zip, 65kB)
- Zdrojové kódy pro MCU PIC12F508 (*.zip, 4kB)
- Archív s obrázky a DPS (*.zip, 5,56MB)
Komentáře
Robot v1.1 - Video
Důkaz, že robot funguje :)
http://video.google.com/videoplay?docid=7992249886269316997
Předem se omlouvám za délku a nudnost videa... :)
Díky za ukázku
Děkuji za ukázku.
Lidi jako Vy potřebujeme ve firmě, kde dělám.
Neslo by aby sme sa niejak
Neslo by aby sme sa niejak skontaktovaly?Napr ICQ 190612193 alebo skype karyah.Potreboval by som pomoct s citackou Cipou RFID ak mate niejake skusenosty.Dakujem
Eagle
Asi byl bohatý ježíšek, že máš v 17 letech Eagle a používáš ho pro obohacení se.
pokud ten článek psal bez
pokud ten článek psal bez nároku na autorský honorář, tak mohl použít Light ne? Jinak se mi článek libí....
honorar
I kdyby za clanek dostal mega, light muze pouzit. Nemeli byste byt tak zavistivi a radsi neco udelat sami pro zlepseni sve financni situace
Myslím, že ta deska není
Myslím, že ta deska není 8x10cm (omezení light verze). Navíc existují i opensource řešení. Asi to je pozůstatek komunismu, že každý krade co se dá a už mu to připadá normální. Napadlo vás někdy, že tím, že například nelegálně používáte windows, tak posilujete jeho standardy. Kdyby byla situace, že 50% PC by běželo na linuxu, tak by musel MS své produkty výrazně zlevnit. Stéjné je to i s ostatní sw. Každý si stáhne profi program, ze kterého využije jen pár procent jeho schopností, než by raději použil nějaký volně dostupný, který by mu posloužil stéjně dobře.
cena
No kdyby ta cena produktů nebyla tak přemrštěná, tak si ho každý koupí. Náč mě bude eagle za xtisíc, když elektroniku má člověk jako koníček a jen ho baví a nedělá to ani pro peníze ale pro potěšení. Tomu borcovi by se mel dat metal. Za to co sestrojil a ne řešit kde vzal na eagle..
zajímavé, jak od eagle
zajímavé, jak od eagle přecházíte k microsoftu...
Závist je hrozná, asi ta
Závist je hrozná, asi ta nejhorší, lidská vlastnost.
Proč by nemohl mít, legální třeba standart verzi eaglu? Z čeho vycházíš, v 17-ti to není možné?
Kdyby jí měl legálně,
Kdyby jí měl legálně, tak by se již v diskuzi ohradil. Jak jsi z mého přízpěvku vydedukoval, že závidím? Jinak chceš říci, že závist je horší, než případná krádež?
Proti cemu se mel autor
A vy v mojich
A vy v mojich bezpředmětných přízpěvcích pod tímto článkem vidíte něco ohledně honoráře? Dále jsem o krádeži nazačal mluvit já, ale až lidé reagující na můj příspěvek. Jinak jsem to tady pochopil tak, že devadesátidevíti procentům návštěvníků včetně Vás, je jedno jestli pracují na kradeném nebo legálním softu. Hlavní je pro ně výsledek. K tomuto přístupu si každý může gratulovat a takovým lidem jako já by jste měl okamžitě zamezit v přístupu na tento server.
Na istych www strankach v
Na istych www strankach v diskusii pod clankami sa miesto komentara nachadza text "Komentar bol zmazany pre hlupost diskutujuceho". Pri citani vasich prispevkov som pochopil ze taketo spravanie od moderatora diskuzie je skutocne v niektorych pripadoch akceptovatelne a nie je cenzurou.
Kradez nie je ludska
Kradez nie je ludska vlastnost, kradeze sa vacsinou dopusta hladny alebo zavistlivy clovek.
Radšej nech sa chlapec
Radšej nech sa chlapec venuje konštruovaniu, ako reakciám na vaše komentáre. Fakt sa nemá proti čomu ohradiť. Fandím mu, aby bol vzorom pre svojich vrstovníkov. Neviem, či aj vy môžete byť niekomu vzorom.
vor ondracch
Néchapu, co vám vadí na tom ,že 17-ti letý kluk umí v Eaglu?!já mám 18 roků a učíli nás v tom dělat ve škole. Na internetu je verze legálně ke stáhnutí, tak by jste se měl zamyslel než něco napíšete nad něčím, o čem nemáte vůbec žádné informace. Mě se tenhle čánek líbil, akorát mi tam chybí program v C, který by tam autor mohl přidat.
Program v C
Program v Cčku je k dispozici pouze pro Freescale. PIC byl naprogramován v assemleru....
vor: Michal Hrouda
A nešel by ten program v C a assembleru někde sehnat?Chtěl bych si takového robota vyrobit ale bez toho pogramu to nemá cenu :-( Díky za odpověd.
Zdrojové kódy
Co třeba si stáhnout soubory nazvané "Zdrojové kódy" uvedené pod nadpisem Download: ? :)
Nesmyslné napadání
že Vás to baví, tady i jinde.Místo, abyste uznal, že ten člověk vytvořil zajímavou konstrukci,nepodloženě ho napadáte kůli softwaru.Asi Vaše oblíbená zábava.
Na kolik te to celkove
Na kolik te to celkove prislo? Kolik jsi tomu venoval casu?
PS: Tvuj clanek a video se mi libi... Jen tak dal....
Merkur
Nebylo by jednodussi pouzit stavebnici Merku?
Pomoc
Prosím je zde obrázek konstrukce DPS (všech) a nevím jak je mám v dostatečné kvalitě dostat na plošák. Zkoušel jsem fotocestu ,ale moc jemné rozmístění mělo za následek spojení jednotlivých cest. Rozhodl jsem se odeslat data jako zakázku do nějaké firmy. Ale nevím do jaké firmy, která mi to udělá z dat poskytnutých v tomto příspěvku. Nevíte o nějaké firmě která mi to udělá na základě obrázkové předlohy? Nebo je tu někdo komu fotocesta vyšla a je ochoten mi to za nějaký peníz udělat? Prosím o pomoc....... petrkukan@centrum.cz Děkuju
je to povedené jen škoda že s picem
je to dobrý projekt, motivovalo mě to k něčemu podobnému ovšem mám jednodušší desku a bez předních senzorů překážek, ale na těch se sem tam snažím zapracovat :)
Pekna konstrukce
Neco podobneho vyslo v AR 12/84, Kyberneticke Zelvatko. Vite o tom?