Vytvořeno: 2007-11-06 12:47:22
Změněno: 2011-08-19 09:27:12
Upozornění: Následující konstrukce je velice zastaralá a zejména navržené plošné spoje trpí mnoha začátečnickými chybami, které způsobují tvorbu velkého množství měděných můstků při jeho výrobě a cínových můstků při osazovaní součástek, díky příliš blízko umístěným spojům. Pokud máte přesto zájem o tuto konstrukci, tak doporučuji navrhnout vlastní plošný spoj.
Již dlouhou dobu se zajímám o elektrotechniku, ale také o velmi rychle se rozvíjející se obor, kterým je robotika. Proto jsem chtel vyrobit robota a zároven se naucit programovat mikrokontrolery ,ve vyšším programovacím jazyku C. Rozhodl jsem se tedy pustit do výroby svého prvního jednoduchého robota, postaveného na 8 bitovém a pro vyšší jazyky vhodném mikrokontroleru s jádrem HC08, který vyrábí firma Freescale.
Na jeho konstrukci jsem použil soucástky ze stavebnice LEGO. Telo bylo hotovo, ale ješte bylo potreba zvolit dostatecne silný motor. Nejlépe se mi osvedcila upravená serva Hi-Tec HS-311. Pro orientaci v prostoru a pro sledování cerné cáry na bílém povrchu bylo potreba navrhnout cidla. Napájení celého robota je zajišteno 8 kusy Ni-MH baterií. Elektronika robota se skládá z hlavní desky, která vše rídí, vedlejší desky, která informuje o zvoleném programu a jsou na ní dve LED diody, které slouží jako reflektory, cárových cidel a zdroje, který stabilizuje napetí z baterií.
Jak je patrné ze schématu, nejdůležitější součástkou hlavní desky a v podstatě i celého robota, je mikrokontroler IC1 (MC68HC08QB8), v pouzdru PDIP, který si je možno zdarma objednat jako vzorek na stránkách výrobce Freescale[1]. Mohli jste si, ale všimnout, že je naprosto shodný s dostupnějším MC68HC08QY4. Také první pokusy jsem s tímto procesorem uskutečnil, ale z neznámých důvodu se celkem často restartoval. Tento problém jsem se snažil vyřešit. Nakonec jediným řešením bylo vyměnit ho za novější, již zmiňovaný typ QB8. Základní činností mikrokontroleru je nejprve vybrat odpovídající mód pomocí tlačítka SW2, spustit jej, poslat pomocí softwarove generované I2C informace do vedlejší a desky, a nakonec ovládat motory podle výstupních hodnot čidel. Mikrokontroler je napájen přes odrušovací kondenzátor C1 napětím 5V a jeho resetování se provádí odpojením napájecího napětí přepínacím tlačítkem S1. Pro taktování byl použit interní oscilátor, který generuje kmitočet 12,8MHz, jehož přesnost pro jednoduchý program bohaté stačí.
Další periférii umístěnou na hlavní desce je čidlo, které detekuje překážky. Jeho zapojení jsem našel na Internetu [7]. Toto čidlo je velmi jednoduché a zároveň dokáže detekovat překážky vzdálené až 50cm, což u čidel s integrovaným obvody 567 nebo s 555, které jsem s počátku používal, bylo nedosažitelné. Zapojení se skládá pouze z mikrokontroleru IC2 a IC3 (PIC12F508), kteří střídavě posílají impulzy o kmitočtu 36KHz na IR diody IR1,IR3 a IR2,IR4 (2.5ms levá a 2.5ms pravá) a následne zjištují zda IC5,IC6 (SFH506-36) zachytili signál IR diod. Jestli ano, tak na odpovídajících výstupech bude logická 1. Na svorky SV1 a SV2 se pripojují cidla pro sledování car. Výstupy cidel bylo potreba oddelit. Samozrejme by bylo možné je oddelit ORy, ale použití diod D10 až D12 ušetrí místo na DPS. Na výstupy cidel jsou navíc pripojeny pres odpory R6 až R9 nízkospotrebové LED diody LED4 až LED7. Mikrokontroler IC1 spouští cidla, podle zvoleného programu pomocí tranzistoru T1 (BC327) a T3 (BC337).
Poslední cástí hlavní desky je cást, která ovládá motory. Pro první pokusy jsem použil dva tranzistory pro spouštení motoru a relátky jsem prepínal polaritu a zároven tedy i smer otácení motoru. Hned jak jsem zapojení sestavil vedel jsem, že ve finální verzi relátka, díky své hlucnosti a spotrebe urcite nebudou. Proto jsem použil budic motoru IC4 (L298). Ke kterému stacil pridat odrušovací kondenzátor C4 a pro každý motor jeden diodový mustek složený z diod D1 až D8 (1N4007) a vše fungovalo spolehlive a bez problému. Logika budice je napájena napetím 5V a silová cást budice a diodové mustky jsou napájeny napetím 6V. Nakonec bylo potreba vyvést konektor SV3, na který se pripojuje vedlejší deska, s kterou mikrokontroler komunikuje pres I2C. Hlavní deska byla také doplnena piezem, které pípá pri nalezení prekážky, nebo pri detekci cár.
Hlavní úlohou vedlejší desky je, jak již bylo receno, zobrazovat, jaký program je zvolen a také rozsvecet LED diody, které slouží jako reflektory. Vše se provádí pomocí dvou I2C expandéru. První expandér IC1 (PCF8472P) se stará o zobrazování císla programu na DIS1 (HD-A101). Druhý I2C expandér IC2 se stará o LEDky, které zobrazují, jaké periférie budou aktivní pri zvoleném programu pomocí diod LED2 až LED6 a zároven muže ovládat tranzistor T1 (BC327), který rozsvecí dve vysoce svítivé modré LEDky LED7 a LED8. Tyto diody slouží jako prední svetla robota. K hlavní desce se tato deska pripojuje pomocí konektoru SV1. Druhý konektor SV2 slouží pro pripojení dalších periférií pomocí sbernice I2C.
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 |
Toto cidlo je velice jednoduché. Pomocí trimru R3 se nastavuje proud, který bude protékat IR diodami D1, D2 (IRS5). Tranzistor T2 (BC327) je k fototranzistoru T1 (IRE5) pripojen jako emitorový sledovac. Pomocí trimru R2 se nastavuje citlivost zapojení na infracervené zárení odražené z IR diod do fototranzistoru T1. Cidlo se k hlavní desce pripojuje pomocí konektoru SV1.
R1,R4 | 1k0 |
R2,R3 | ležatý 1k0 |
D1,D2 | IRS5 |
D3 | LED 3MM ZEL 2MA |
T1 | IRE5 |
T2 | BC327-16 |
SV1 | 4pinový konektor |
Zdroj je velice jednoduchý. Na svorkovnici X1 se pripojuje napetí z 8mi Ni-MH tužkových baterek. Dioda D1 (1N4007) slouží jako ochrana stabilizátoru proti prepólovaní. Kondenzátor C3 slouží pro pokrytí proudových špicek. Kondenzátory C1 a C2 slouží jako odrušovací kondenzátory. Pro napájení Hlavní desky a cidel, které jsou na ní umístené jsem použil presný stabilizátor IC1 (78T05). Druhý stabilizátor IC2 (7806) stabilizuje napetí pro motory.
R1 | 2k2 | |
C1 | 100nF | |
C2 | 330nF | |
C3 | 2200uF /16V | |
D1 | 1N4007 | |
D2 | LED 3MM ZEL | |
IC1 | 78T05 | |
IC2 | 7806 | |
X1 až X3 | AK500/ |
Hlavní funkcí mikrokontroleru je vyhodnocovat stavy zvolených cidel a podle zvoleného modu jimi rídit dva motory. Mody se volí pomocí tlacítka S2, které je umísteno nad resetovacím tlacítkem S1. Pri krátkém stisknutí, dojde ke zmene programu a na displeji se zobrazí, jaký program je práve zvolen a na LED diodách se zobrazí, jaké periférie se budou soužívat. Tyto diody budou svítit následovne:
Jak už bylo zmíneno, robot muže pracovat v nekolika modech, které se volí již krátkým stisknutím tlacítka. Pro spuštení vybraného modu, který jsme nastavili krátkým klikáním na tlacítko, musíme stejné tlacítko pridržet delší dobu, dokud se robot nerozjede. Robot je schopen pracovat v devíti modech.
Jak se Robot rozhoduje podle vstupních stavu je patrné z priloženého programu, a jelikož je ovládací program naprogramován ve vyšším jazyku C, je velmi prehledný a nebude problém jej v budoucnosti ruzne upravovat. Pro ovládání I2C sbernice bylo potreba naprogramovat jednoduchou softwarovou rutinu. Jelikož slouží jenom pro ovládání zobrazovacích prvku není její rychlost kritická.
Celý robot je postaven ze soucástek LEGO, kterých jsem mel dostatek pro stavbu jednoduchého dvoukolového robota. Pri spojování jednotlivých kostek bylo je bylo ale potreba lepit vterinovým lepidlem, takže další mechanické úpravy budou již nerealizovatelné. Jako pohon pro kola byla díky relativne vysokému tocivému momentu zvolena dve levná modelárská serva Hitec HS-311, která, aby se netocila pouze o 180 stupnu, ale dokola o 360 stupnu, bylo nutno jednoduše upravit. Úprava spocívala ve vyletování polohovací elektroniky a malou úpravou prevodovky serva. Na serva byla rovnou prišroubována kola. (Obr. 19.) Robot nemá, jak se zvykem tretí kolo, ale pouze jakési "sánky". (Obr. 20. a 21.) Ty se ukázali jako nejlepší, protože použití malého kolecka melo, radu nevýhod. Nejhorší vlastností kolecka byla nedotácivost (kolecko se pri zatocení, otocilo, ale, když mel robot jet zase rovne kolecko se nevrátilo nazpátek), což zpusobovalo nekontrolovatelné zatácení robota. Odstranování tohoto problému bylo jenom s pomocí stavebnice LEGO nárocné, a proto bylo jednoduší, prejít k "sánkám" prestože mají vetší trení než jedno kolecko.
Pri konstrukci postupujeme klasickým zpusobem, ale jediné co je neobvyklé je osazení IC5 a IC6 na Hlavní desce. Ty jsou totiž pripájeny k DPS vzhuru nohama (Obr. 20.), aby je bylo možné lépe nastavit pri ladení cidel. Dále postupujeme tak, že osadíme nejprve pasivní soucástky (propojky, následne odpory, kondenzátory, patice pro integrované obvody) a nakonec zbylé aktivní soucástky (diody, LEDky, Integrované obvody). Jelikož nebylo možné osadit desku konektorem ICP, je potreba , pri upravování programu hlavního programu IC1, casto mikrokontroler vyndávat z hlavní desky a dávat jej do programátoru. Proto se mi osvedcilo do hlavní desky priletovat obycejnou patici a na mikrokontroler napevno pridelat precizní patici. Tím predejdeme, pri castém manipulováním se ?švábem?, poškození jeho nožicek. Pro oživení celého robota je nejprve naprogramovat hlavní mikrokontroler Freescale. Ten je možno naprogramovat pomocí programátoru, jehož schéma je nakresleno v Datasheetu nebo pomocí kitu JANUS [8]. Ten je urcen pro variantu mikrokontroler QY, ale díky komptabilite pinu v Q rodine, není problém procesor MC68HC908QB8 kitem JANUS naprogramovat. Pro naprogramování mikrokontroleru PIC12F508 se mi osvedcil JDM programátor [9]. Po naprogramování mikrokontroleru je potreba nastavit trimry na nejvetší odpor, aby nedošlo k poškození IR diody, osadit mikrokontrolery. Zvolit program 1 až 4, nastavit pomocí trimru na hlavní desce rozsah prekážkových cidel. Resetovat mikrokontroler. Zvolit program 5 až 8, natavit pomocí trimru na Cárových cidlech správnou citlivost na cernou a bílou barvu a nakonec pripojíme motory a vše je hotovo. Pro vyzkoušení všech periférií mužeme pro jistotu spustit ješte predvádecí mód 9
Tento robot splnil svuj úcel: naucit se programovat mikrokontrolery v jazyku C, ale také jsem se zároven celkove zlepšil v navrhování a konstruování elektronických obvodu, což je jiste velice užitecné. Zároven doufám, že poslouží jako inspirace dalším?bastlírum?. Popsané obvody je možno pridelat na jakýkoliv jiný podvozek a použít jiné motory a jelikož je software pro hlavní mikrokontroler napsán v jazyku C nebude problém ho doladit ci jej vylepšit. Pri problémech pri stavbe apod. me mužete kontaktovat pomocí emailu (michalhrouda@seznam.cz).
Tweet |
Komentáře:
WWW
2011-08-19 09:25:59
Samozřejmě, že ano :)
2011-08-18 12:15:53
2009-10-19 01:59:23
Plošné spoje nevyrábím a ani k dispozici jiné nemám, pouze Vám mohu poskytnout zrevidovanou předlohu. A co se týče mikrokontroléru QB8, tak těch ještě pár k dispozici mám. Cena je 130,-Kč + poštovné... Pokud máte zájem, tak mě kontaktujte emailem...
2009-10-15 17:51:10
2009-10-11 21:41:39
Dobrý den, mikrokontrolér na stránkách výrobce je http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=HC08Q&tab=Buy_Parametric_Tab&fromSearch=false leč v současné době jej už není možné objednat jako vzorek a proto je potřeba se obrátit buď na mě nebo na nějakého většího distributora součástek, např. http://www.farnell.com.
A k QY4. Problém je v tom, že tohle je můj první robot a tudíž z postupem doby vidím, že návrh plošné spoje spoje jsou největším kamen úrazu toho to robota. Na požádání Vám mohu poskytnout lépe navržené plošné spoje. (Chystám se je zveřejnit, ale v současné době nevím jestli poupravit tento článek nebo napsat nový článek, který bude opravovat všechny nešvary staré verze tohoto robota).
Ale pokud již máte vyrobené plošné spoje, tak není potřeba vyrábět zrevidované verze. Hlavním problémem je špatná \\\"distribuce\\\" napětí na hlavní a vedlejší desce. Proto je vhodné obsypat všechny integrované obvody a mikrokontroléry elektrolitickými kondenzátory a případně kladný napájecí vodič připojit k \\\"rozvodu\\\" napájení přes tlumivku (třeba 100uH)...
2009-10-05 17:21:31
2009-03-20 09:31:35
2009-01-17 01:40:33
Ahoj. Já jsem konkrétně použil vlajkovou loď mezi mikrokontroléry s jádrem V1 a to MCF51QE128 a vývojovou desku jsem si koupil DEMOQE128, ale programovat a ladit za běhu by měl dokázat o mnoho levnější OBDM programátor, který se pokusím v nejbližších dnech s V1čkou pokusím otestovat... O tom OBDM se navíc chystám napsat na svoje stránky takovou malinkatou recenzi.
2009-01-16 08:54:28
2008-11-27 22:30:20
V podstatě ano :)
2008-10-03 16:40:28
2008-10-03 16:36:00
Jak? Řekl bych že nijak :) Tohodle robota není možné dálkově ovládat...
2008-10-02 20:46:43
2008-06-19 00:41:45
http://www.youtube.com/watch?v=6q9SDpgVtQg
Teda Robot Biped by měl chodit nesrovnatelně plynuleji a také rychleji
2008-06-19 00:37:16
No těmi "kotníkovými" servy a akcelerometrem. Prostě nastavím servo experimentálně zjištěné polohy, akcelerometrem zkontroluji náklon robota a když došlo k přenesení váhy, tak budu dál pohybovat příslušnejma servama, tak aby prostě chodil.
2008-06-16 21:51:07
2007-12-25 14:49:30