Tank

English version

Stránka vznikla v roce 2009 a slouží jako dokumentace popisující stavbu vozítka ovládaného technologií Bluetooth.
Dnes si jsem vědom toho, že návrh obsahuje chyby (v elektronice či ve způsobu psaní programu), nicméně pro poměrnou oblíbenost stránky (několik lidí si podle ní fungující vozítko postavilo nebo jim ulehčila seznámení se s mobilní robotikou) ji na webu nechávám.

Ú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 díky modulu OEMSPA310.

dir.adamh.cz_robot-tank_fotka.jpg dir.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. Bluetooth modul poskytl dodavatel pro Českou republiku, firma Spezial Electronic.

Modul je potřeba správně nastavit. O nastavení jsem požádal firmu Spezial Electronic, k nastavení doma totiž potřebujete speciální program a převodník:

  • 8N1 (8 datových bitů, 1 stop bit, bez parity)
  • Bez HW flow control (RTS/CTS)
  • Rychlost 9600 kbps
  • Configuration Over Air (povolení nastavení Bluetooth modulu bezdrátově)

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.

Pozor: Kablíky z modulu nepřipojujeme k mikrokontroleru přímo, protože výstupní signály OEMSPA310 jsou v 3 V úrovních a 5 V úrovně z ATmega48 by jej mohly zničit. Pro ochranu postačí, když vysílací (Tx - transmit) pin mikrokontroléru a přijímací (Rx - receive) pin Bluetooth modulu propojíme odporovým děličem 1k8/2k2:

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:

dir.adamh.cz_robot-tank_foto_miroslav_kubanek_tancik1.jpg dir.adamh.cz_robot-tank_foto_miroslav_kubanek_tancik2.jpg

Jiří Škvára se rozhodl pro bezpásovou variantu se dvěma kolečky, původní desku vylepšil a svého robota doplnil o autonomní chování s využitím pěkně zpracovaných dotykových čidel:

dir.adamh.cz_robot-tank_foto_jiri_skvara_jirka1.jpg dir.adamh.cz_robot-tank_foto_jiri_skvara_jirka2.jpg

Odkazy

 
tank.txt · Poslední úprava: 2017/10/10 17:32 (upraveno mimo DokuWiki)
 
Driven by DokuWiki

© 2008-2012 Adam Heinrich, adamh.cz, adam@adamh.cz