Tank

Úvod

Po dvou složitějších robotech (Eurobot2008 a Robot2) jsem se rozhodl postavit si vozítko malé a jednoduché. Volba padla na plastový tančík, který byl ovládaný dvěma tužkovými monočlánky AA - podobných hraček se dá v hračkářstvích, na půdách nebo v bazarech sehnat plno. Další nabízejí na Internetu (například na Snailinstruments.cz jich několik je - navíc podvozek nemusí být nutně pásový, stačí i dvě hnací kolečka a jedno otočné). Pásový (diferenciální) podvozek je pro malého robotka jako dělaný například proto, že se umí otočit na místě. Robotek může být řízen mobilním telefonem pomocí technologie Bluetooth, což mi darováním Bluetoth modulu OEMSPA310 výrobce ConnectBlue umožnila firma Spezial Electronic - tímto bych jí chtěl ještě jednou poděkovat.

temp.adamh.cz_robot-tank_fotka.jpg temp.adamh.cz_robot-tank_foto_09042009733.jpg

Elektronika

Deska

Jako mozek vozítka jsem použil svůj oblíbený mikrokontrolér ATmega48 - je relativně levný a má dostatek periferií. Deska plošných spojů obsahuje minimum drátových propojek a je navrhnuta tak, aby šla postavit na univerzálním plošném spoji s pady v rastru 2,54 mm, která se dá běžně koupit (já s ní pracuji tak, že jednotlivé pady propojuji cínovými cestičkami - chce to trochu cviku, ale zvládne to i programátor :-) ), nicméně připravil jsem i verzi, kterou si můžete vyrobit doma fotocestou. Díry jsou určeny pro uchycení šroubky a distančními sloupky M3 a jsou umístěny tak, aby pasovaly do stavebnice Merkur (násobky 10 mm). Kromě jednočipu ATmega48 obsahuje tyto části:

  • Stabilizátor 7805 - stabilizuje napájecí napětí 5 V pro desku.
  • Resetovací tlačítko - při stisku se program v procesoru spustí od začátku.
  • Červená LED dioda připojená k jednočipu (pin PD7).
  • DIP switch (4-bitový přepínač) - dá se použít například pro nastavení parametrů programu (volitelný)
  • Hřebínky pro vyvedení všech důležitých pinů jednočipu - zapojeny jako PIN|GND nebo PIN|5V|GND pro připojení analogových senzorů nebo modelářských serv (port C jednočipu).
  • H-můstek L293D pro spínání dvou motorů - maximálně 0,5 A (umožňuje měnit směr a řízení pomocí pulzně-šířkové moduleace - PWM). Při větších proudech se poměrně dost zahřívá, pro klid duše je dobré jej doplnit chladičem (chladič pro DIP16 - například v GM je to korunová položa). Ten pak stačí přilepit například vteřinovým lepidlem. Dobré je si předtím poznačit, kde se na obvodu nachází pin č. 1 - klasický prolis je totiž chladičem zakryt.

Soubory nakreslené v programu Eagle si můžete stáhnout zde. Stisknutím tlačítka Ratsnest Eagle vykreslí rolitou měď (GND) pod H-můstkem, která pomáhá integrovaný obvod uchladit.

Popis konektorů

  • pokud je JUMPER zkratován, jsou motory napájeny 5 V přímo z desky. Pokud ne, je napájen z konektoru MOTOR SUPPLY.
  • konektor UART slouží k vyvedení sériového kanálu TTL úrovních, například pro připojení Bluetooth modulu.
  • konektor POWER může sloužit k přímému napájení desky 5 V nebo k napájení periferií (senzory, Bluetooth modul) - pozor na polaritu!
  • konektory MOTOR1 a MOTOR2 slouží k připojení motorů, prostřední pin (GND) může být přiveden na kostru motoru, je li potřeba odrušení.
  • modré konektory u H-můstku a jednočipu znázorňují propojení dvoužilovými kablíky - slouží k ovládání motorů a je možné je jednoduše zaměnit nebo otočit.
  • Fialové konektory značí způsob připojení programátoru.
  • Žluté tlačítko reset slouží k resetování programu v jednočipu.
  • Svorkovnice v levém dolním rohu slouží k přivedení nestabilizovaného napájení 7-15 V pro desku.

Kablíky

Je potřeba připravit si následující kablíky:

  • 2x propojovací kablík jednočipu a h-můstku -dvoužilný (nebo trojžilný, chcete-li z nějakého důvodu měnit pin enable h-můtku)
  • propojovací kablík h-můstek-motory - na jedné straně připájený k motorům, na straně druhé PIN A|GND|PIN B. Piny A a B se připojují na svorky motoru, pin GND může zůstat volný nebo může být přiveden na kovovou kostru motoru, chcete-li použít odrušení.

Pro výrobu stačí samotný kablík (například šedý desetižilný), dutink, plastové obaly a kleštičky - vše se dá koupit v GM pod názvem KONPC. Je dobré nakoupit si jich několik do zásoby. Pokud nemáte krimpovací kleště, doporučuji tento článek, který výrobu pěkně popisuje - nesnažte se je pájet.

Napájení

Díky stabilizátru 7805 (lze nahradit za nějakou lowdrop verzi) je možné desku napájet napětím 7-15 V - například klasickou 9 V baterií nebo 12 V trafem od starého routeru. Přestože je napájení před stabilizátorem chráněno diodou, je dobré si na svorkovnici poznačit, kam se připojuje kladné napětí. Na přívodní kabel do svorkovnice je dobré umístit malý vypínač.

Celou desku je možné napájet čtyřmi tužkovými monočlánky, napětí musí být přivedeno na některý z konektorů (nejlépe na třířadý hřebínek u portu C) - zde si ale musíte dát pozor na polaritu, přímé napájení pěti volty chráněno diodou není.

Na desce je jedinný jumper, kterým se nastavuje napájení motorů. pokud je zapojen, jsou motory napájeny 5 V napájením desky, pokud je rozpojen, berou si proud ze svého napájecího konektoru. Jumper nesmí být zapojen, pokud je na napájecí konektor motorů přivedeno větší naptí než 5 V - zničilo by elektroniku.

Vypínač může být například vteřinovým lepidlem přilepen přímo pod desku:

temp.adamh.cz_robot-tank_foto_09042009731.jpg

Programování jednočipu

Pokud jste v oblasti jednočipů začítečníky, doporučuji navštívit stránku Blikáme LED diodou, která vysvětluje, co je to jednočip, jak funguje a jak jej naprogramovat pomocí jednoduchého programátoru do paralelního portu, který se zkládá z několika odporů a kusu kablelu. Jednotlivé piny kablíku (je jich celkem pět) můžete osadit dutinkami, které jsem popsal výše, samostatně, nebo je sloučit do dvou konektorů: RESET|GND a MOSI|MISO|SCK.

ATmega48 má interní oscilátor nastaven na 8 MHz, není tedy třeba nic nastavovat (zrušení osminásobné děličky je řešeno v programu) a stačí nahrát hex soubor. Ten si i s kompletními zdrojovými kódy v jazyce C (AVR-LIBC) můžete stáhnout zde.

Seznam součástek

  • IO ATmega48 + patice28 (stačí klasická, nemusí být precizní)
  • IO L293D (písmeno D je důležité - obvod obsahuje ochranné diody) + patice DIP16 (stačí klasická, nemusí být precizní) + volitelně chladič na DIP16, pokud se přiliš zahřívá
  • IO 7805(P) (NE verze L - ta má příliš malý proud) + volitelně chladič na TO220, pokud se příliš zahřívá
  • 4-bitový DIP switch (volitelně)
  • Mikrospínač (tact-switch)
  • Svorkovnice do DPS (2 piny)
  • Jednořadě a dvouřadé přímé lámací kolíkové lišty (hřebínky)
  • LED červená, 3 mm
  • Dioda 1N4007
  • R 330 ohmů
  • R 1k5 - 2x
  • C 2,2 uF (elektrolyt)
  • C 100 uF (elektrolyt)
  • C 0,1 uF - 2x (keramika)
  • Zkratovací propojka (jumper)
  • Kablíky, dutinky a krytky konektorů
  • Šroubky M3, distanční sloupky, …

Bluetooth

Aby šel tančík řídit z počítače nebo mobilního telefonu bezdrátově, rozhodl jsem se pro použití Bluetooth modulu, konkrétně OEMSPA310, vyráběného firmou ConnectBlue a dodávaného firmou Spezial Electronic. Firmě Spezial Electronic bych tímto za darování modulu chtěl poděkovat.

Modul jsem si nechal nastavit na komunikaci 9600 bd 8N1 (9600 kbps, 8 datových bitů, jeden stop bit, bez parity) a povolení nastavování přes bluetooth přímo firmou Spezial, doma jsem proto nemusel stahovat speciální konfigurační program. Připojení k modulu je možno realizovat buď připájením přímo na desku plošných spojů, použitím speciálního konektoru, nebo přímým připájením kablíků k vybraným pinům - to je znázorněno na horním obrázku. Po připájení jsem nakrimpoval dva konektory - jeden na pár Rx a Tx, druhý na Vcc a GND. Modul vyžaduje napájení od 3-6 V, proto je možné připojit napájecí kablík přímo k desce. Místo, kde jsou kablíky připájeny, jsem přelepil izolační páskou, aby případný tah za kablíky nepůsobil na pájený spoj - ten by byl velice náchylný na zlomení nebo vytrhnutí. Modul lze připevnit dvěma šroubky M2, v tanku je schován v prostoru pod hlavní deskou.

Ovládání

Dálkové ovládání je řešeno SPP (Serial Port Protocol) - to znamená, že se bluetooth modul chová jako sériový port - v tomto případě je nastaven na 9600 8N1. Přijímá dvouznakové příkazy oddělené novým řádkem (CR LF); První znak řídí levý motor, druhý pravý. Můžou se točit buď dopředu (F), dozadu (B) nebo se zastavit (S). Kombinace pak vypadá nějak takto:

  • FF - jeď dopředu
  • SS - stůj
  • BF - otoč se na místě

Na každý příkaz posílá odpověď OK, jak se můžete přesvědčit například v Hyperterminálu.

Počítač

Nejdříve je potřeba ve správci bluetooth zařízení spárovat bluetooth modul s počítačem. Systém pak oznámí, jaké číslo portu bude zařízení používat (u mě je to COM9). Pro řízení byla napsaána jednoduchá aplikace v Delphi (vývojové prosředí Delphi 7 personal edition, které je zdarma). Aplikace se připojí k sériovému portu a posílá příkazy - lze buď klikat na tlačítka nebo použít šipky na klávesnici. Pro zastavení je použita šipka dolů.

Pro ladění má aplikace jednoduchou konzoli, díky které můžeme posílat/přijímat příkazy - například SS pro zastavení. Je zde hlavně pro vyplnění místa a kvůli ladění :-)

Aplikace je volně ke stažení jako TankControl.exe nebo jako ZIP archív se zdrojovými kódy. Pro upravování zdrojových kódů a kompilaci je potřeba knihovna synaser (soubory *.pas stačí nakopírovat do library adresáře Delphi), více o knihovně v článku na programator.cz.

Lidé, kteří z trucu nebo ze záliby v příkazové řádce používají nějaký minoritní operační systém postavný na Linuxu, by aplikaci měli spustit pomocí programu wine (zatím netestováno).

Mobilní telefon

Většina dnešních mobilních telefonů disponuje bluetoothem a javou (J2ME), takže jsem se rozhodl napsat ovládací aplikaci i pro ně. Zatím je velice jednoduchá - po spuštění je potřeba kliknou na adresu našeho zařízení (ne na položku fake mode - ta slouží poue k testování), potvrdit připojení k němu a je to. Ovládá se klávesnicí:

  • 2 - dopředu
  • 5 - stůj
  • 8 - dozadu
  • 4 - doleva na místě
  • 6 - doprava na místě
  • 1 - doleva (točí se pouze jeden motor)
  • 3 - doprava (točí se pouze jeden motor)

Aplikace je napsána (a naklikána) ve výjovovém prostředí Netbeans 6.5, které je rovněž volně ke stažení. Zatím není odzkoušena na jiných telefonech, než na symbianových Nokiích (s60 3rd ed.) - například N78. Ke stažení jsou jak zdrojové kódy, tak i JAR a JAD soubory.

Videa

Odkazy na YouTube: první a druhé video.

Kdo si již tančk postavil?

Pokud jste se rozhodli pro stavbu tančíku, napište mi prosím na můj e-mail :-)

Následující obrázky poskytl Miroslav Kubánek:

temp.adamh.cz_robot-tank_foto_miroslav_kubanek_tancik1.jpg temp.adamh.cz_robot-tank_foto_miroslav_kubanek_tancik2.jpg

Možná vylepšení

Deska je vybvena spoustou volných pinů a slušným množstvům rozhraní, stačí tedy přidat jeden nebo dva senzory a napsat jednoduché algoritmy umělé inteligence, aby se z tančíku stal robot jak má být. Robotika je pro spoustu programátorů určitě zajímavým odvětvím, odzkoušet si algoritmy na něčem, co bzučí a jezdí po podlaze je bezesporu lákavé :-)

Pro ladění se dá použít jak sériový port, tak i čtyřbitový DIP switch. Možností vylepšení je plno, například:

  • Vyšperkování ovládacích programů.
  • Úprava řídícího programu, aby pomocí PWM (pulzně-šířková modulace) mohl měnit rychlost otáček → plynulejší zatáčení.
  • připojení analogového infračerveného měřiče vzdálenosti (například GP2D120) - vyhýbání se překážkám.
  • připojení ultrazvukového měřče vzdálenosti (například SRF02, komunikuje přes I2C) - vyhýbání se překážkám.

Některá z těchto vylepšení byla použita na daší verzi, robotovi BlueBot.

Odkazy

 
tank.txt · Poslední úprava: 2010/02/17 13:16 autor: adamh
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki

© 2008-2010 Adam Heinrich, adamh.cz, a.heinrich@seznam.cz