Jste zde

Robot v1.1

Již dlouhou dobu se zajímám o elektrotechniku, ale také o velmi rychle se rozvíjející obor, kterým je robotika. Proto jsem chtěl vyrobit robota a zároveň se naučit programovat mikrokontroléry ve vyšším programovacím jazyce C. Rozhodl jsem se tedy, že se ve svých 17 letech pustím do výroby svého prvního jednoduchého robota, postaveného na 8bitovém a pro vyšší jazyky vhodném mikrokontroléru s jádrem HC08.

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 Robot v1.1č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ů).

Hotová hlavní deska

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á.

Schéma hlavní desky

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.

Návrh DPS hlavní desky
Osazení hlavní desky

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.

Schéma vedlejší desky
Návrh DPS vedlejší desky
Osazení vedlejší desky

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.

Deska čárového čidla Nainstalovaná čárová čidla
Návrh DPS čárového čidla Osazení DPS čárového čidla

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.

Zdroj Schéma zapojení zdroje
Návrh DPS pro zdroj Osazení součástek zdroje

Seznam součástek pro zdroj:

R12k2
C1100nF
C2330nF
C32200uF /16V
D11N4007
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ě:

Stav čidel a programu

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.

Detail kola Sáňky

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].

Zapojení desek

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

  1. http://www.freescale.com
  2. Datasheet pro mikrokontroler Freescale MC68HC908QB8
  3. Datasheet pro I2C expandér Philips PCF8574
  4. Datasheet pro H-můstek Thomson L298
  5. Datasheet pro stabilizátor řady 78XX
  6. Vladimír Váňa - Začínáme s mikrokontrolery HC08
  7. Dennis Clark - IR Obstruction Detektor http://users.frii.com/dlc/robotics/projects/irpd-d2.pdf
  8. JANUS kit
  9. Ing. Jaroslav Belza - JDM Programátor http://www.belza.cz
  10. Petr Stehlík - I2C Školka, několik zapojení na I2C http://www.stehlik.net/i2c/i2cskolka.html

Download:

Hodnocení článku: 

Komentáře

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

Asi byl bohatý ježíšek, že máš v 17 letech Eagle a používáš ho pro obohacení se.

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í 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.

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..

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ě, 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 ohradit? Proti Vasemu nepodlozenemu narceni z kradeze nebo z obohacovani se? Je to jiz Vas druhy prispevek, kde mate starost o autorsky honorar aniz by Vam do toho co bylo. Pritom sam jste zadny clanek ke zverejneni neposkytl - at jiz za honorar, nebo jen tak jako motivaci pro jine kontruktery (pravdepodobne mate obavy z toho, aby se na Vasi praci nekdo "neobohatil"). Vzhledem k Vasemu vystupovani je jakakoliv diskuze s Vami zcela bezpredmetna. Chcete-li i nadale za kazdou cenu vyvolavat nesmyslene hadky radi Vase navstevy HW.cz ozelime.

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 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.

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.

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.

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.

ž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.

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

Neco podobneho vyslo v AR 12/84, Kyberneticke Zelvatko. Vite o tom?