Steve

myš/micromouse, deník

Úvodní slovo

Ještě jsem úplně nedokončil prvního robota - Fuzeeho (kvůli technickým potížím, které mě zdržely), a už jsem začal s druhým. Tentokrát to bude myš do bludiště. Základní myšlenka na stavbu přišla již začátkem roku 2011 a potvrzena byla v Bratislavě na soutěži Istrobot. Myší zde bylo k zhlédnutí dost, ale žádná neprojížděla bludištěm tak, jako myši, které jsem viděl již dříve na internetu (např. Decimus, Bee...). Proto chci postavit vlastní myš, která by bludiště prozkoumala a našla v něm nejkratší cestu. Bude určení pro klasické bludiště - rozměr jednoho čtverce je 18x18 cm, bludiště se skládá z 16x16 čtverců a uprostřed je cíl. Existuje i nová verze zvaná Half Size Micromouse (čtverec: 9x9 cm, bludiště: 32x32), ale v okolí jsem nenašel žádnou soutěž, která by byla určena pro malé myši. Ostatně kromě Istrobotu zatím nevím ani o žádné další soutěži pro klasické myši.
Ukázka myši v bludišti



Jméno Steve
Jméno pro robota jsem měl vybráno snad jako první věc k němu. Pár dnů před maturitou jsem sledoval jeden film, kde se jméno Steve opakovalo velmi často, až mi utkvělo v paměti.

Aktuálně vybrané součástky


Pozn.: IR diody a fototranzistory mi zaslala firma OSRAM jako vzorky. Tímto bych jí chtěl poděkovat.

Deník

XX.6.2011 - YY.7.2011

Motory
Jako první mě napadlo koupit rovnou motorky i s převodovkou. Jasným favoritem byly motorky Pololu, kterými je vybaven 3pí robot. Jsou rychlé a malé... a docela drahé. Alespoň tolik zatím za motorky utratit neplánuju.


Motorek s hotovou převodovkou

Dále mě napadlo použít motorky z malých vrtulníků, nezabírají skoro žádné místo, jsou lehké, a přesto výkoné. A i cena (100 Kč za dva) není tak vysoká. Problém však nastal při shánění převodů, ozubená kolečka, která jsou použita ve vrtulnících, se běžně neprodávají, maximálně by se daly koupit motorky i s kolečky, ale ty jsem na internetu našel za vysoké ceny. Tento typ motorků asi taky nebude to pravé.

Motorky z vrtulníku

Při zkoumání různých webů týkajících se myší jsem zjistil, že se téměř výhradně používají motorky Faulhaber 1717 se zabudovanými enkodéry. Na většině myší jdou vidět černé motorky a od nich jde šestižilný kabel. Použitím těchto motorků by se rovnou vyřešila i otázka enkodérů, a byly by kvalitní. Jenže se naplnilo to, čeho jsem se obával, cena je extrémně vysoká. Tuto možnost jsem hned zavrhnul.
Začal jsem hledat klasické elektromotory malých rozměrů, které by se daly napájet jedním li-pol článkem, měly slušné otáčky a ne extrémní odběr. Do oka mi padly motory MIG 2025. Vhodné rozměry včetně průměru hřídele, ucházející proudový odběr, nízká cena. Jako naschvál je však v blízkém modeláři neměli.

Motorek MIG 2025

Nakonec to svými parametry vyhrály motorky Pololu1117. Dva jsem objednal a druhý nebo třetí den přišly. Jediná věc, která mě mrzí, je, že nemají žádné závity na upevnění, takže si budu muset pohrát s úchyty...

Motorek Pololu1117


Mikročip
Pokud má myš projíždět bludištěm jinak než jen pomocí pravidla pravé či levé ruky, bude si o něm muset zaznamenávat informace. To znamená zajistit dostatek paměti, která je součástí čipu (o nějakých externích jsem ani neuvažoval). Prozatím jsem vždy pracoval s Atmegou8A, která má 1 kB RAM paměti, program může být velký max 8 kB a v smd provedení obsahuje 23 programovatelných pinů (celkem 32). Dělal jsem nějaké výpočty, kolik paměti bude potřeba (i když teď zjišťuju že byly pravděpodobně mylné), a rozhodl jsem se, že to chce výkonnější čip. Kromě větší paměti by se hodila taky vyšší rychlost, především co se čtení A/D převodníků týká. A jako řešení jsem zvolil nové čipy ATxmega. Přímo výběr určitého typu jsem měl hodně zjednodušený - čip potřebuju nějak naprogramovat, minimálně do něj nahrát bootloader. Vhodný programátor nemám, ale v mém blízkém okolí má kámoš Adam Heinrich programátor PRESTO, které zvládá 5 typů čipů ATxmega naprogramovat. Mezi těmito pěti byly tři čipy 64 pinové a dva 100 pinové. 64 pinů bohatě stačí, i tak jich nejspíš spousta bude ležet ladem. A nejlevnější a zároveň skladem dostupný na Farnellu byl čip ATxmega128A3. Jeho konkurencí byl chvíli starší čip Atmega64, ale za cca stejnou cenu u Xmegy získám daleko vyšší rychlost, 7 UARTů, více paměti pro program i data (128 kB + 8kB), 16 AD převodníků s 12 bitovým rozlišením, 2 DA převodníky, přerušení vyvolané kterýmkoliv pinem a spoustu dalších věcí, navíc vše při nižší spotřebě. Parametry pr oba čipy můžete najít na stránkách Atmelu: ATxmega128A3, Atmega64
Jen pro představu, udávaná rychlost pro AD převodník u Xmegy je 2000 ks/s, u megy jen 15 ks/s (jednotka kilo samples per second). Celkem velký rozdíl. A když vezmu v potaz, že základem pro orientaci myši bude nejspíš 6 odrazových senzorů, ze kterých se budou číst údaje právě AD převodníky, je jejich rychlost určitě podstatná. Čím rychleji myš zjistí, co je kolem ní, tím rychleji bude moct zareagovat, takže o to rychleji bude moct jet nebo brzdit před překážkou.


Enkodéry
Variantu enkodérů, které jsou součástí motorků jsem zavrhl. Nejpravděpodobnější je použít optické enkodéry, a to buď reflexní, nebo ty, které pracují na principu závory (nevím jak bych je mě správně nazvat, jsou to ty, které se používaly ve starých myších).
Enkodéry by měly mít určitě vhodné rozlišení, takových 8 tiků na otáčku by bylo opravdu málo (odhad). U reflexních by šel kotouč navrhnout na počítači a vytisknout, ale těžko říct jak moc by obyčejný papír odrážel záření. U typu závory by mohly jít použít kolečka přímo z myši, alespoň to byla první rada od Adama. Koupil jsem proto na vyzkoušení v GME optické závory TCST1103. Umístit je do konstrukce vhodně spolu s kolečky z myši by bylo dost složité, proto pokud je použiji, vyrobím si vlastní enkodérová kolečka. Výhodou těchto senzorů by měl být podle datasheetu (dál ds) digitální výstupní signál, který by nemělo být potřeba měřit AD převodníkem. Jenže v ds je také uvedeno doporučené napětí 5 V, a já plánuji stavět myš na 3V3 logice (nejen plánuji, ale jsem už rozhodnut, ATxmega na 5 voltů nejede). Po prvních testech s využitím pouhého multimetru jsem při otevřeném stavu dostal napětí 1,5 V, a napájecí napětí bylo 3 V. Ale byl to jen první pokus, chce to vyzkoušet jiné odpory (připojil jsem odpory uvedené v ds, 50 ohmů před diodu a 100 ohmů pull-down u fototranzistoru). Navíc Xmega obsahuje řadu periferií (analogové komparátory, DA převodníky,...), které se dají použít pro zpracování kvadraturního signálu z enkodérů.
Co se enkodérů týká, je to ještě otevřené. Musím pořádně otestovat optické závory a popřemýšlet, kam bych je v konstrukci myši umístil. Přecejen reflexní enkodéry by byly skladnější.


Kola a převody
Další podstatnou součástí myši jsou její kola. Po dlouhém prohledávání internetu jsem objevil, že Peter Harrison používá u svých myší (Primus, Decimus, Decimus 2) pneumatiky z RC aut typu Mini-Z, jejich průměr je cca 22 mm. Pneumatiky by byly vymyšleny, problémem zůstávají převody. Pastorky na motorky jsem sehnal v modeláři, jenže nějaký protikus - větší ozubené kolo - se jaksik neprodává...
Jelikož mě už nenapadalo, kde najít ozubená kolečka, napsal jsem Peteru Harrisonovi. Na obrázcích jde vidět, že má disky na pneumatiky přímo vyráběné i s ozubenými kolečky, ale nějak začínat musel. Odpověď přišla ještě tentýž den. Pro převody používá ozubená kolečka z autodráhy Scaletrix, průměr 19 mm. Teď ještě najít obchod, kde bych mohl vyzkoušet, zda budou pasovat do pastorků a kde bych je vůbec sehnal. Objednávat z netu se mi je nechce.
Naopak gumy (gumičky) jsou nakonec z ebaye, nejlevnější co byly, protože v žádném z blízkých modelářů je neměli, ani rozměrově podobné. Ebay byl nejschůdnější cesta. Na výběr je spousta položek za různé ceny, ty nejlevnější, které mám již doma, nejsou úplně nejpreciznější, ale měly by bohatě stačit.

Balíček dvou gumiček

Detail gumičky (která je již špinavá)
Disky si budu muset vyrobit, jelikož ty, které se dají koupit, se mi nijak nezamlouvají. Působí na mě dojmem, že nepůjdou pořádně upevnit. Prvotní plán je vysoustružit disky ze dřeva, druhotný pak z kovu. Pro ten druhý plán bude ale potřeba nejprve zprovoznit soustruh na kov.


15.7.2011

Přišly první součástky na Steva z Farnellu - čipy a tranzistory na spínání motorů. Bohužel objednaný gyroskop nedorazil, aktuálně není skladem, i když při objednávání byl. Snad ho budou brzo mít. Není to to nejdůležitější, teoreticky by měly stačit enkodéry, ale chci s ním zkusit pracovat a třeba objevím jak ho využít lépe než enkodéry, především k zatáčení. Údaje z něj by mohly být přesnější.
V Cinemě 4D jsem udělal první návrh myši, abych vyzkoušel, jak upevním motorky.


Detail gumičky (která je již špinavá)


16.7.2011

Počítačový model jsem trochu převedl do reality - udělal jsem ho z překližky. Sice je 4 mm hrubá, a konstrukce by měla být z 2 mm silného plechu (popř. dřeva), ale je to jen model, tak to nevadí.


Dřevěný model (nekvalitní foto z mobilu)


17.7.2011

Byl jsem v Shopping parku, kde má být obchod s autodráhami, ve kterém by měly být ozubená kolečka. On to vlastně moc obchod není, jen velká autodráha a vedle ní jedan vytrýnka, ale co je podstatné, ozubená kolečka tam byla, a perfektně pasují do pastorků! A jsou černé, co víc si přát. Takže tento problém je vyřešen.

Balíček ozubených koleček

Detail ozubeného kolečka


18.7.2011

Dnes ráno mi přišla obálka a v ní vzorky IR diod a fototranzistorů od firmy OSRAM. Dlouho jsem hledal na internetu v různých obchodech ty správné součástky (jejich správnost je zatím z větší části jen teoretická, ale našel jsme je na pár myších). Je vhodné, aby vysílací IR dioda měla malý vyzařovací úhel (SFH4550 ho má ±3°), aby svítila pouze ve směru, do kterého je natočena. Díky tomu se záření může odrážet pouze od překážky, která je ve směru diody. U fototranzistoru by pozorovací úhel také neměl být moc velký, aby nechytaly záření z jiné diody, než té potřebné, ale měl by být větší než úhel od diody (SFH313FA ho má ±10°).
Takovéto součástky jsem však v žádném obchodě nenašel a chtěl bych firmě OSRAM poděkovat za velkou pomoc při jejich shánění.


25.7.2011

Z třešňového dřeva jsem vysoustružil disky - průměr 21 mm, šířka 9 až 10 mm. A mají i malý "rantl", pro který je na gumičkách výřez, aby se neposouvaly dál. Mohl jsem je ale udělat užší, 8 mm by mělo stačit. Je to ale jen prozatímní řešení, nakonec bych měl mít disky vysoustružené z kovu, s přesnými dírkami (obávám se že na těchto mi to přecejen trošku ujelo při vrtání, i když je to jen zlomek milimetru).

Kolečko na cvičné hřídeli

Detail kolečka
Teď ještě nakreslit pořádně konstrukci na upevnění kol a motorků + započítat místo pro enkodéry. Čím díl tím víc to vypadá na reflexní enkodéry, především kvůli místa a možnosti černobílá kolečka pouze vytisknout. Otázkou je, zda to bude dostačující.


26.7.2011

Na kousek čtverečkovaného papíru jsem si načrtl Steva. Zatím ho kreslím hranatého, ale okraje budou ve finále kulaté, aby se zredukovala možnost zaseknutí se o překážku. Mezi oba motorky by se měly vejít i enkodéry závorového typu, ale muselo by se mi podařit udělat vhodná kolečka se zářezy. S hodně zářezy...


Nákres


4.8.2011

V posledních dnech jsem dal dohromady desku s ATmegou128A3, která půjde dát do nepájivého pole. Samotný plošňák mi udělal kámoš, jelikož můj pokus dopadl katastrofálně. Po připájení 64 pinů (i přes ten počet pájení se dalo, vrtání dírek je horší ;-) ) následovalo přidělání čipu. Důležité je mít hlavně čistý hrot a používat tavidlo. Návodů na pájení čipů je na internetu spousta. A samo o sobě s xmegou nebyl problém, až si někdy vyzkoušíte pájet čipy bez pinů s extra malými mezerami mezi ploškami, budete pájet takové čipy jako je xmega rádi :D Teď ještě aby byla funkční. To posoudím o víkendu, kdy budu mít k dispozici vhodný programátor na nahrání bootloaderu.


Deska s ATxmegou do nepájivého pole (potřebuje ještě vyčistit)



Taky jsem v posledních dnech (myslím že včera) rozluštil algoritmus pro hledání cesty v bludišti, který běžně používají myši na youtube. Částečně teda ne rozluštil ale přečetl si základní pravidla a zbytek odvodil.
Prvním požadavkem je zaznamenávat tvar bludiště, kde jsou stěny a kde ne. Z tohoto důvodu se každému čtverci bludiště přiřadí proměnná typu char (v C, velikost 1 byte). Čtyři bity slouží k určení, zda se v okolních místech nachází zeď či nikoliv (pořadí je samozřejmě libovolné, i reprezentace stěny, praktičtější asi bude stav 1 - stěna, 0 - volno), pátý pak pro určení, zda již myš byla na tomto čtverci, zbylé tři jsou nevyužity. Základní myšlenkou je mít tyto proměnné uložené v dvojrozměrném poli, asi nemá cenu tvořit nějakou svou strukturu.
K samotnému prohledávání bludiště pak slouží druhé pole a platí následující pravidla:


Pro pochopení je dobré si to nakreslit, já používal excel. Také jsem našel pěkný simulační program, který můžete stáhnout zde. Pro spuštění musíte mít nainstalovanou javu (jako programátor mám JDK - Java Development Kit). Otevřete příkazový řádek (start/spustit/cmd), najedete do adresáře, kde máte uložený daný soubor (nejprve přepnout na správný disk, např. H: a zmáčknout enter, poté chdir cesta_k_adresari a enter) a následně napiště java -jar MicroMouse-r194.jar a dejte enter (pokud jste soubor přejmenovali, použijte správný název). Následně se již spustí simulátor. Umožňuje navrhovat nová bludiště, i zadávat jiné algoritmy. Výše popsaný se jmenuje "Flood Fill", tzn. rozlévání (setkal jsem se s "rozléváním barvy", ale probíhalo to trochu jinak, někdy mohu doplnit popis).
Napoprvé se spuštění algoritmu může zdát trochu nesmyslné a nejspíš budete hledat, odkud se dané číslo vzalo. Musíte si ještě uvědomit, že zobrazené bludiště myš nezná, má uloženy pouze ty stěny, kolem kterých již projela (světlá políčka). Doporučuji nastavit nejnižší rychlost a po každém kroku pauzovat, pomáhá to v pochopení.


7.8.2011

Již je to delší dobu, co jsem se rozhodl, že Steve bude mít displej. Po vzoru Decimuse jsem nejprve uvažoval o displeji z Nokie 3410, kterou mám doma na součástky. Vedle ní leží i Nokia 3120, ale k jejímu displeji jsem nenašel žádný DS. Barevný displej by byl ale opravdu pěkný, v albu Petera Harrisona z All Japan Micromouse 2009 jsou krásné ukázky (fotky 108 až 110). Shodou okolností se mi dnes do ruky dostal další starý mobil, který tu mám na součástky - Sony Ericsson T230. Rozebral jsme ho a vytáhl displej. Jeho konektro mi byl povědomý, podobný používám na Fuzeem - 8 žilový Molex. Zkusil jsem to přiměřit, a skvěle pasuje. Navíc jsem našel i DS čipu, který je v displeji, i další info + displej je upraven pro komunikaci i2c, co víc si přát. Teď mám dva nové cíle - zprovoznit komunikaci přes i2c a rozchodit displej.


Displej z SOny Ericssonu T230


8.8.2011

Programátor mi dneska přišel, ale objevilo se další zdržení. Zakoupená stabilizátor LE33 měl na výstupu pouhý 1 V. Trochu málo, ne? S tím nemůžu naprogramovat desku s Xmegou... No, budu potřebovat koupit nový.
Zatím alespoň experimentuju s displejem. Použil jsem knihovny z návodu, který vychází na stránkách květákov.net. V souboru s mým programem inkluduji pouze *.c soubor, při inkludování hlavičkového souboru mi to nejede.
edit 18.9.2011 - problém s inkludováním byl na mé straně, místo zápisu souboru do uvozovek jsem použil apostrofy. Každý chybuje.
Pro nastavení displeje se používá adresa (v i2c) 0x78, pro zápis dat pak 0x7A (pro čtení 0x79 a 0x7B). Vše, co najdete v DS jako příkazy, které se posílají do čipu klasicky přes 8 bitovou sběrnici, se posílají přes i2c. Následně pro zápis dat se zasílají bajt (nebo bajty, podle nastavení barevnosti), které určují barvu pixelu.
S displejem si jde dost vyhrát, například vykreslovat pixely jen určité oblasti, invertovat barvy, a další věci. Až dodělám něco celistvého, vložím sem ukázku kódu. Dalším velkým cílem bude napsat na displej text, co nejrozumnějším způsobem.


9.8.2011

Přišel mi gyroskop z Farnellu. Je to celkem prcek bez pinů, pouze pady zespod, tak snad půjde připájet. A pak se s ním ještě naučit


11.8.2011

Mám nový stabilizátor, LF33 (low drop, 3.3 V, 1 A), a funguje.
Když jsem asi před měsícem objednával součástky z Farnellu, hledal jsem i vhodný h-můstek. Aby nebyl drahý (90 Kč na jeden motor se mi zdá dost, jde to i levněji), aby pracoval v požadovaném rozsahu napětí (jeden li-pol článek) a aby zvládal proudovou zátěž z motorků. Nakonec mi Adam Heinrich poslal odkaz na schéma, kde je spínání motorků řešeno mosfety. Dneska jsem udělal malý plošňák, na kterém je pouze IRF7343 (mosfet) a výstupy do nepájivého pole. Vše jsem zapojil podle schématu (pouze jeden mosfet, motorek zapojím proti zemi), na místo pwm přivedl kladné napětí, spustil, a nic... Motor se nepohnul, měření dopadlo neúspěšně. Udělal jsme druhý plošňák, ten samý, a stejný výsledek. Pak jsem prozkoumal, jak vlastně mosfet funguje, co se jak a kdy spíná, a zjistil jsme, že jsme udělal chybu v mém zapojení, při tomto způsobu (na pwm je napětí) má být motorek zapojen oproti VDD a ne zemi. Už se točí tak, jak má. Vše je vpohodě, naštěstí.
V jiných myších bývá použit podobný způsob zapojení mosfetů, avšak jsou doplněny o driver pro rychlejší spínání. Celé zapojení budu muset ještě otestovat s pwm a nejlépe proměřit někde na osciloskopu, abych zjistil, jak moc by byly drivery nutné.


12.8.2011

Po urputném boji se mi ještě v noci povedlo zatlačit desku s Xmegou do nepájivých polí. Následně jsme připojil všechny piny k napětí a zemi. Na počítači mám nainstalován program Up, který služí k programování programátorem PRESTO firmy Asix. Opravdu kvalitní udělátko, které mám zapůjčené od Adama. Podle příručky, která je volně k dispozici na stránkách výrobce, jsem připojil Xmegu k PRESTU přes jtag (přes jiné rozhraní nelze xmegy k tomuto programátoru připojit). Následně jsem zkompiloval bootloader xboot (volně k dispozici, i s dokumentací) a přes PRESTO nahrál do čipu. Vše překvapivě vpohodě, prostředí Upu je příjemné. Poté jsem zapojil k vybranému UARTu bluetooth modul a nahrál přes bootloader první program - blikání ledkou. Taky bez potíží.
Jenže ty se dostavily po znovuzapnutí čipu. Frekvence spadla na 2 MHz z nastavených 32 MHz (hádám podle rychlosti blikání) a nemůžu sedostat do režimu pro nahrání programu. PRESTem jsem přečetl z paměti čipu program, a je tam blikání i bootloader, nic se nesmazalo. Nahrál jsem bootloader znovu, tentokrát s jiným nastavením - na začátku se neověřuje stav pinu, ale čeká se určitý čas, po který bliká ledka. Opět to samé, nejde se dostat do režimu nahrání programu. Čip prostě začne v paměti číst od začátku, a nespouští bootloader, který je umístěn na konci paměti. Při programování je v Upu okno Konfigurace, kde se dá nastavit pár věcí. Bohužel jim valně nerozumím, takže jsem napsal do firmy Asix o radu, co a jak nastavit. Již v dřívějších dobách jsem jim psal, když jsem se informoval na to jak zapojit PRESTO k Xmeze, jaké čipy jsou podporovány atd. Vždy odpovídali velice pohotově, a teď tomu nebylo jinak. A opravdu, stačilo přenastavit parametr BOOTRST na "Boot loader reset" a vše už běží tak, jak má. I frekvence již zůstává na 32 MHz. Paráda, teď jen studovat aplikační poznámky ze stránek atmelu a osvojit si základy programování Xmegy.


22.8.2011

V nabitém týdnu jsem se snažil najít alespoň nějaký čas na xmegu. Začínám se v jejím programování orientovat, ale stále to jsou základy, třeba i2c (twi) se mi napoprvé rozchodit nepovedlo. Ale mám pár nápadů, co opravit, tak uvidíme.

Cvičné bludiště jsem měl připravené už dlouho, ale teprve teď jsem ho dokončil - je natřené, a to včetně vrchní červené barvy, kterou neplánuju využít. Ale ať to alespoň nějak vypadá. Vše je ze dřeva, děláno podomácku, takže žádná extra kvalita, najdou se nepřesnosti, stěny jsou v některých místech zkosené, nejsou tlusté přesně 12 mm, ale na cvičení by to mělo být super :-) Navíc je základní deska doplněna o bílé čáry, které budou sloužit ke kontrole pohybu myši v bludišti - zda správně zatáčí, jede ve správné vzdálenosti,...


Bludiště


Bludiště shora


Když tak nad tím uvažuju, měl bych pomalu začít s návrhem plošného spoje. Ještě to chce ale některé věci vychytat a dozkoušet. Předemším ir diody a fototranistory, zkusit jak fungují. A taky si přečíst údaje k A/D převodníku xmegy, abych vše správně zapojil pro co nejrychlejší získávání údajů. Dále by to chtělo otestovat gyroskop, dořešit enkodéry, zkusit zapojený celý h-můstek, a nejlépe ho proměřit osciloskopem (někde), jestli to půjde bez mosfet driverů, začít na displeji konečně psát text (prozatímní pokusy neúspěšné),... Tak se mi zdá, že toho mám ještě přecejen dost před sebou :D


18.9.2011

V minulých dnech se událo hned několik věc:

  1. Taťkův kolega z práce mi vyrobil nové disky na kolečka a konstrukční díly. Disky jsou 4 - jeden pár je kovový a druhý silonový. Zkoušel jsem je zvážit, jedno kovové vyjde na cca 6 gramů, takže žádná velká váha, a líbí se mi více než silonové. Konstrukční díly jsou dělané z duralu - velmi lehké, a není problém si je doupravit, což jsem již udělal, potřeboval jsem přidat otvory pro enkodéry.

    Nové disky


    Konstrukční díly


  2. Enkodéry. Spousta hledání a bádání.
    • Optická závora - v jedné myši jsem našel kolečka o průměru 16 mm, takže by se vpohodě na myš vešla. Mají cca. 40 otvorů, tzn 80 tiků na otočku. Tyto enkodéry by byly připevněny na hřídel s kolečkem, tzn. při průměru kolečka 24 mm jeden tik odpovídá dráze 0,95 mm, což je víc než slušné. Nevím ovšem, jak velkou rychlost by byto enkodéry zvládaly. Navíc je zde problém se součástkami - na myši je fotodioda a dvojtý fototranzistor, který jsem celkem nikde nemohl najít. A když použiju věci z myši, co budu dělat, když se s nimi pak něco stane?
    • Reflexní - základem by bylo čidlo GP2S60 - ir dioda + fototranzistor, velmi malé, cena cca 24 Kč, relativně dostupné. Hlavním problémem jsou enkodérová kolečka - musejí mít správnou velikost, dostatečné rozlišení a rozdíl v odrazivosti barev musí být velký. Napadla mě jedna metoda tvorby koleček - samotný podklad vyříznu z plastu (bílého lesklého), poté na kolečko nalepím nálepku, na tu nakreslím dělící čáry (rozdělím jimi kruh na určitý počet částí), čáry rozříznu nožíkem, a pak každý druhý dílek odlepím. Takto připravené kolečko nabarvím černou barvou, a po zaschnutí odlepím zbylé dílky. Výsledek mě velice potěšil, stačí přesně narýsovat dělící čáry. Zkoušel jsme udělat kolečko s dvanácti černými proužky, tzn. 24 tiků na otočku, jenže na otočku hřídele motoru, ne kolečka. Pastorek od motoru má 11 zubů, ozubené kolečko na hřídeli kola 36, poměr 11:36. Pokud počítám dobře, hřídel motorku se otočí za jednu otáčku kolečka cca. 3,27 krát, což odpovídá 3,27 x 24 = 78,5 tiků. Ano, víceméně shodné rozlišení jako u prvního typu enkodérů, 0,96 mm je jeden tik.
      Navíc tento tip enkodérů by se do konstrukce lépe umisťoval. Začínám mít favorita, teď už jen vše otestovat. Udělal jsem minidestičku s GP2S60, k diodě je připojen odpor (na výšce nás teď učili, že správně je odporník) 100 ohmů, emitor připojen k zemi, kolektor přes pull-up 10 kOhmů na 3,3 V. napětí mezi kolektorem a zemí měřím multimetrem. Nejprve jsem zkoušel kolečko s černými proužky dělanými lihovým fixem (vzdálenost od čidla pod 1 mm). Výsledky nic moc, 1,6 V pro bílou, 1,8 V pro černou. Proužky jsem maloval ještě černou matnou barvou na kov. Nové výsledky byly naprosto úžasné - bílá opět 1,6 V, černá 3 V (podotýkám že 3V dostanu i při měření bez jakéhokoliv odrazového materiálu). Mezi tyto hodnoty nebude problém vložit mez u analogového komparátoru. Ještě mě tak napadlo zdvojnásobit pull-up. A světe div se, bílá 0,7 V, černá 2,9 V. S testy jsem spokojen a enkodéry mám vybrány. V konstrukci pak přijdou co možná nejvíc zakrýt, ať se zbavím okolního světla.

      Enkodérová kolečka


  3. Jelikož nebudu rozsvěcovat IR diody senzoru stěn současně, ale zvlášť, nepotřebuju získávat z AD převodníku dvě či více hodnot současně (co nejrychleji po sobě), takže na zapojení nějak nezáleží.
  4. Gyroskop - mám na Steva připraven LY330ALH. Nejprve jsem uvažoval o tom, jak ho zapojit. Ve schématu na myš Bee od Kata je výstup z gyroskopu veden přes operační zesilovač. Radil jsem se s jedním kamarádem, co do elektroniky vidí víc než já, a říkal, že v tomto zapojení to celkem nic nedělá. Hádám že může dojít k nějaké úpravě různých zákmitů, celkovému posunu průběhu v napětí víš nebo níž, popřípadě nějaká taková filtrace. Snad teda... Narazil jsem také na stránky Ng Beng Kiata (myši Min a Ning, různé verze), a ten má gyroskop připojen rovnou na AD převodník. A já se nakonec rozhodl pro stejný postup, zapojit výstup gyra rovnou na AD převodník (resp. přes napěťový dělič). Možná plošný spoj přizpůsobím i zapojení Kata, s tím že dané součástky zatím neosadím a potřebná místa propojím.
    Gyroskop nakonec nijak testovat nebudu, až na samotné myši. Tak jen doufám, že s tím pak nebude žádný problém.
  5. Na displeji jsem začal vypisovat text, což bylo velmi povzbuzující, beru to jako jede z mých významných úspěchů :D. Časem možná sepíšu nějaký samostatný návod, jak na to. Jediným problémem v této "větvi řešení" je zprovoznění i2c na xmeze, zatím neúspěšné.
  6. Zapojil jsem h-můstek pro jeden motor a snažil se ho proměřit logickým analyzátorem na lpt (stavěno podle návodu z pandatronu). Nepřišel jsem na žádné zpožďování, tudíž drivery mosfetů vynechám. Navíc v zapojení, ze kterého čerpám, také nejsou. Třeba je tento typ mosfetů sám o sobě dost rychlý, kdo ví. Mohl bych porovnat DS těch, co mám já, a nějakých dalších.
  7. Pokud se nic nestane, tak plánuju dnešním dnem začít s návrhem plošného spoje. První fází bude samozřejmě tvorba schématu (v Eaglu). Hlavně nesmím na nic zapomenout. Myslím, že tvorba plošňáku nějakou dobu potrvá. Ale snad to půjde.


Reálný model


Ještě mám do dalších dnů jeden úkol - nafotit některé fotky znovu normálním foťákem, teď jsem měl po ruce pouze mobil.


11.11.2011

Je to skoro dva měsíce, co jsem sem psal naposled. Děs a hrůza. Ale prostě jsem se k tomu nějak nedostal.
Alespoň tedy zkráceně, jak pokračuje stavba:

  1. Vytvořil jsem návrh plošného spoje a nechal si vyrobit dps. Desky už mám doma. Až později jsem na nich objevil pár chyb, způsobených mou osobou při návrhu, ale nic, co by znemožňovalo funkci, jen 3 ledky a piezo jsou připojeny k zemi místo k napájení. Ale propojení kouskem drátku to vyřeší.
    Zkoušel jsem na desku připevnit konstrukční díly a kolečka, a vypadá to moc pěkně. A hlavně, od desky k podložce jsou asi 4 mm místa, což je víc, než jsem počítal, takže jednotlivé věci mohu připevnit normálními šrouby, a nemusím jim upravovat hlavu.
  2. Na Vysoké škole Báňské jsem si v laboratoři desku zapekl - ne se všemi součástkami, jen s čipy. Je to pro mě ohromná pomoc, že všechny čipy nemusím pájet. Zvláště gyro, které nemá piny. Vypadá to pěkně, a naučil jsem se s novým náčiním. Zbytek součástek jsem ještě ani neměl koupený. Nyní již ano, a přidělávám je ručně mikropájkou. Jen odpory k senzorům stěn ještě nemám, budu muset ještě pár věcí dopočítat.
  3. Testoval jsem IR ledku a fototranzistor. Jako nutnost se ukázalo spínat ledku tranzistorem, ať jí může téct dost vysoký proud (po dobu 20 ms je povolen proud 100 mA, a po kratší dobu až 1 A). Napětí na fototranzistoru jsem pak měřil ad převodníkem a výsledek jsem si vykresloval na displej (kvůli procvičení jeho ovládání). Po pár opravách vše pěkně fungovalo, a fototranzistor reagoval na ledku i z větší vzdálenosti (přes 20 cm?), a to jsem jí mířil ručně, neměl jsem nic nikde upnuté. A taky jsem neměl ty správné odpory do zapojení, takže ani ten proud nebyl úplně vyštelovaný.
    Rýsoval jsem potom rozptyl světla z IR ledky a úhel, který zachytí fototranzistor. Nejkrajnější mez, kdy je záření zachyceno, vychází na cca 4 cm za předpokladu, že vzdálenost středů ledky a fototranzistoru je 6 mm. Ta minimální vzdálenost je celkem přijatelná, především proto, že asi polovina této délky je vzdálenost od senzoru k okraji dps, takže od okraje robota jsou to pouhé dva cm ke stěně. Ale jsou to víceméně jen odhady, uvidím, jak se senzory budou chovat, až budou namontované.
    Ještě jsem zjistil, že budu muset znovu natřít stěny bludiště, moc záření neodrážení. Nebo alespoň nalakovat.
  4. Při nákupu součástek se objevila otázka - jakou barvu mají mít signalizační ledky? Řešil jsem to, a nakonec jsou modré. Modrá je fajn. Uvažoval jsem, zda se modrá používá na robotech jen proto, že tak dobře vypadá, nebo proto, že modré diody jsou dražší než všechny ostatní, a nebo je zde ještě nějaký speciální důvod? Třeba to, že modrá led určitě neovlivní žádné IR přijímače ani IR fototranzistory? Těžko říct.
  5. Asi poslední nová věc - mám baterii na myš, lipolku, 900 mAh, se slušnými rozměry. A cena? Jen 120 Kč.

Ještě by to chtělo vše zdokumentovat a nahrát sem obrázky. Tak snad se k tomu brzy dostanu.



Pokračování v bodech - konec rozsáhlého deníku

Půl roku jsem sem nic nenapsal. Ne že by se nic nestalo a vývoj se zastavil, to ne. Ale prostě jsem si na to nenašel čas, nové věci se začaly kupit,... Až budu chtít příště psát k něčemu deník, jednak si to důkladně rozmyslím a druhak budu k tomu přistupovat zodpovědněji. Nicméně pokud cokoliv chcete vědět, nějaké podrobnosti, napište mi mail.

Pracoval jsem na senzoru stěn. Velikost napětí v závislosti na vzdálenosti překážky exponenciálně klesá. Je nutné ji v čipu přepočítat na lineární závislost, aby s daným číslem šlo normálně pracovat a navázat na něj regulátory. K tomu se používá přepošet, ve kterém s evyskytují logaritmy. Moc náročná operace na výpočet za běhu, proto mám hodnoty logaritmů pro všechna možná čísla (až do pár tisíc) uložena v PGM paměti čipu a jen se načítají ve výpočtech. Také je potřeba mít kalibrační hodnoty pro dvě různé vzdálenosti. Velmi kvalitní postup kalibrace naleznete zde. Prováděl jsem hodně testů a excel mi byl pomocníkem. Nakonec jsem z měřených údajů odečítal okolní světlo i údaj, který jsem naměřil při rozsvícené IR led bez jakékoliv překážky.
Práce s enkodéry se nedařila ani povýměně součástek a dalších úpravách. Požádal jsem doktorandku ze školy, se kterou se známe přes buddy systém, zda bych si nemohl zapůjčit motory Faulhaber - špička mezi motory celkově, u myší ve světě nic jiného asi nenajdete. Bylo ale potřeba vytvořit novou konstrukci, precizně upevnit kolečka i s ložisky,... Kolečka jsou použita táke školní a novou konstrukci mi ve škole nechali vyrobit, je vyřezála laserem. Enkodéry od motorů pracují s 5V logikou, tak jsem pro mě musel udělat přepojovací desku a na robota dát nové baterie - dvě lipol 600 mAh. Také jsem byvral dva vyvedené piny a použil je k enkodérům, jelikož ty jsou kvadraturní. Ve výsledku vše funguje krásně, údaje o otáčkách se směle načítají a klesají podle strany, na kterou otáčím.
Programování není nijak slastné. Popsal jsme asi 7x A4 s programem pro myš. Část jsem testoval i přímo na pc - ukládání informací o blusišti a vyplňování bludiště čísly. Tuto část mám poměrně dobře odladěnou. Samotný algoritmus se mi ale nedařilo zkrotit, nakonec ho celý psal znovu v noci v Bratislav před soutěží, ale jelikož z robota se začalo kouřit, i po opravě, vzdal jsem jeho tvorbu a s Matějem jsme se věnovali jen Aimi.
Opravil jsem chybné spoje a robot je nyní připravený na další programování. Ve škole budeme mít testovací bludiště, nesrovnatelná kvalita oproti mým dřevěným deskám. Nejprve musím pořádně vyladit regulátory pro motory, aby robot jezdil opravdu rovně, rozjížděl se plynule,... Následně zatáčení. Nejlepší by bylo využívat k tomu gyroskop, ale s ním se zatím také moc nebavím, avšak budu muset, bez něj to dobře nepůjde. Pak je ještě podstatné vyuívat čelní stěnu k vyladění směru a vzdálenosti od ní před zatočením a také využívání okolních stěn k vyrovnání jízdy. S těmito věcmi už se dá projíždět bludiště a hledat cestu do cíle. Jako další vylepšení je možno zpracovat plynulé projíždění zatáček i samotného bludiště, můj nynější návrh počítal s popojížděním vždy o jednu délku čtverce.

Vyhledem k množství změn a chyb už vzniká návrh nové desky pro Steva 2. Měl by být přímo přizpůsoben na Faulhabery, tudíž bude moct mít lepší konstrukci než nyní Steve, a chci použít malá kolečka, taková jako u Steva na začátku. Budou v nich musel být malá kuličková ložiska, která už mám doma. Základem je ale nyní zprovoznit Steva po programové stránce tak, ať je schopen najít nejkratší cestu do bludiště. To je základ.


Steve s faulhabery a novou konstrukcí


Videa

První cesta
Popojíždění po určitou dobu dopředu a dozadu.



Pokusy s překážkou
Využíval jsem údaje z předních senzorů k nastavování otáček na motorech. Potíže byly s překážkou, která byla zešikma - senzory neurčovaly zrovna nejlépe. Hodilo by se využit i šikmé senzory. Tyto pokusy jsem následně dělal i s novými motory.