Enkodér do serva
senzor pro odometrii jednoduchého robota
Jedním z hojně užívaných pohonů pro malé mobilní roboty je upravené modelářské servo. Popisů na úpravu pro kontinuální otáčení existuje na webu mnoho. Pro kvalitní řízení robota však ještě potřebujeme vědět, jakou vzdálenost robot ujel a jak rychle se pohybuje. Potřebujeme tedy snímač, který nám tuto informaci zajistí...
Tento článek je prvním a doufám, že ne posledním, na téma stavby
jednoduchého mobilního robota. Robotikou na hobby úrovni se
zabývám již tři roky, a tak bych se chtěl o své zkušenosti
podělit.
Motivace
Jedním z hojně užívaných pohonů pro malé mobilní roboty
je upravené modelářské servo. Je poměrně levné, má dostatečný
výkon, kvalitní převodovku (lze koupit náhradní díly) a
vestavěnou elektroniku. Popisů na úpravu pro kontinuální otáčení
existuje na webu mnoho. Pro kvalitní řízení robota však ještě
potřebujeme vědět, jakou vzdálenost robot ujel a jak rychle se
pohybuje. Nejpoužívanější metodou pro určení polohy robota je
odometrie, která používá informace o otočení kol pro výpočet
robotovy pozice (viz. průvodce Odometrie).
Potřebujeme tedy
snímač, který nám tuto informaci zajistí. Nejčastěji se
používají optické inkrementální snímače, buď jako průchozí nebo
reflexní optická závora. Bližší popis v průvodci kapitola
Enkodéry.
Realizace enkodéru
Nejjednodušší je realizovat tento snímač na kole
robota. Má to však mnoho nevýhod (citlivost na okolní osvětlení,
možnost poškození při nárazech a nutnost seřizování polohy při
každé montáži robota). Proto jsem se pokusil umístit
enkodér přímo do serva a tím vytvořit kompaktní pohonnou
jednotku i se snímačem. Prvním pokusem bylo použití snímače z
kuličkové myši. Přímo do serva jsem namísto původního
potenciometru umístil osičku s clonkou z myši, na bok skříně
serva přilepil fotozávoru tvořenou LED a dvojicí fototranzistorů
z myši. Fungovalo to a funguje již dva roky, ale naladit
správnou pozici fotozávory vůči clonce byl horor :-(. Proto jsem
přemýšlel o řešení, které by bylo opakovatelně realizovatelné.
Impulsem k tomu se stal popis u RoboKrysy
Pavla Jiroutka. Chtěl jsem
však realizovat úplný kvadraturní enkodér, který umožní i
zjištění směru otáčení serva. Běžně používané snímače CNY70 jsou
však příliš velké pro vestavbu do serva. Rozhodl jsem se použít
snímače QRD1114 (lze získat díky
p. Hanzalovi).
Tyto snímače jsou levnější, menší a dle mého subjektivního pocitu i
citlivější než CNY70.
Současnou variantu vestavby enkodéru do
serva lze realizovat poměrně snadno. Je nutné se pouze obrnit
trochou trpělivosti. Celá úprava stojí meně než 100 Kč, a při
troše šikovnosti ji lze zvládnout za cca 1 hodinu práce. Odměnou
je dobrý pocit z fungující pohonné jednotky. Pro úpravu zvolíme asi nejběžnější
standardní servo Hitec HS-322.
Co budeme potřebovat kromě serva?
Součástky:
IR reflexní optozávoru QRD1114 | 2x |
rezistor miniaturní - 2k7 | 2x |
SMD rezistor velikost 1206 - 220ohm | 1x |
SMD rezistor velikost 1206 - 4k7 | 2x |
SMD keramický kondenzátor velikost 1206 - 100nF | 1x |
SMD integrovaný obvod 74HC14 | 1x |
čtyřžilový kabel (průřez jako má přívodní kabel servu) | |
desku plošného spoje (viz. dále), lze se obejít i bez ní, ale konstrukce pak již není tak odolná |
Nářadí:
- páječku (nejlépe mikropáječku)
- jehlové pilníky
- vrtačku a vrták (3-4mm)
- křížový šroubovák
- štípací kleště
- nůž
- štětec a černou matnou barvu (např. na kity)
- lepicí pásku
Postup
Vestavbu začneme kompletní demontáží serva. Odšroubujeme spodní kryt.
Odpájíme přívody elektromotoru a desku s elektronikou vyjmeme. U
posledních sérií serv to jde trochu ztuha kvůli použití
nějakého lepidla.
Odskřípneme vodiče od potenciometru. Sejmeme
kryt převodovky a převodovku rozebereme. U výstupního kola
odstraníme výstupek, který brání otáčení o více než 180°, např.
odskřípnutím kleštěmi a začištěním nožem. Odšroubujeme
potenciometr a vyjmeme jej.
Nyní nás čeká nejpracnější část, zhotovení otvorů pro snímače. Pro určení polohy otvorů použijeme
šablonu (vytisknout v rozlišení 600 DPI).
Přiložíme ji na servo tak, aby kruhový otvor v
šabloně byl na výstupku pro osu prvního ozubeného kola, a
označíme si otvory. Kouskem lepicí pásky zalepíme pastorek
motoru, aby se do něj nedostal prach (jde to velmi obtížně
vyčistit). Vyvrtáme do obou otvorů díry průměru < 4mm a
jehlovým pilníčkem dopilujeme otvory do správných rozměrů.
Nejlépe je zkontrolujeme přímo zkoušením vložení snímače. Dále
vypilujeme vybrání pro kabel od snímače. Prohloubíme a rozšíříme
původní vybrání a šikmo dovnitř vypilujeme zkosení.
Dále nabarvíme první ozubené kolo z poloviny černou barvou. Nejprve ho
odmastíme, poté polovinu přelepíme lepicí páskou a natřeme.
Doporučuji matnou černou barvu na kity. Po zaschnutí sejmeme
pásku, a pokud nám barva zatekla i pod ni, opatrně nožem
zaškrábneme.
Při zkoušení jsem zjistil, že kvalita signálu přímo
ze snímačů velmi překračuje všechna moje očekávání (viz. obrázek
z osciloskopu).
Proto by bylo možné výstupy snímačů použít
přímo, ale z hlediska možného rušení blízkým motorem je vhodné
signály upravit hradlem se Smittovým vstupem. Hodnoty odporů
byly určeny experimentálně.
Osadíme desku s plošnými spoji
rezistory, kondenzátorem a integrovaným obvodem.
Snímače jsou orientovány fototranzistorem, tj. tmavší částí ven.
Zapájíme je tak, aby horní plocha lícovala s povrchem serva (viz. obrázek).
Tzn. snímače zapájíme spodní hranou 3,5mm nad deskou nebo raději přímo v servu.
Snímače umístíme do serva tak, aby horní plochou lícovaly s povrchem serva,
vložíme DPS a zápájíme (je tam sice málo místa, ale máme jistotu, že snímač bude
tam, kde má být).
Protože snímače nemají fixovánu LED a fototranzistor v tělese,
zalepíme jejich vývody (nepoužívejte vteřinové lepidlo, výpary
nohou "orosit" optoprvky). Připájíme vodiče k desce.
Nyní snímač vyzkoušíme. Vložíme desku do serva, upevníme šroubem od
potenciometru, pod který vložíme izolační podložku. Sestavíme
převodovku. Připojíme napájení 5V a zkontrolujeme výstupy
enkodéru. Pokud je vše v pořádku a při otáčení serva se na
výstupech objevuje požadovaný průběh, máme vyhráno. Nakonec
upravíme původní desku elektroniky. Odpájíme zbytky přívodních
vodičů od potenciometru a nahradíme je odpory 2k7 dle obrázku.
Kabel od enkodéru umístíme do rozšířeného vybrání,
desku s elektronikou serva vložíme na původní místo a přípájíme vývody motoru. Nyní
vyzkoušíme funkci enkodéru při běžícím motoru. Jak řídit motor
serva se můžete dočíst v průvodci Řízení serva a jak
vyhodnotit signál z enkodéru je předmětem dalšího pokračování.
Moje aktuální varianta enkodéru má kódovací kolečko rozdělené na šest
výsečí (tři černé a tři bílé). Tím je dozaženo 3x většího rozlišení
enkodéru (cca 500 tiků na otáčku). Zároveň bylo potřeba zvětšit hodnoty
pull-up rezistorů R2 a R3 na 10k.