Czech English

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 QRD11142x
    rezistor miniaturní - 2k72x
    SMD rezistor velikost 1206 - 220ohm1x
    SMD rezistor velikost 1206 - 4k72x
    SMD keramický kondenzátor velikost 1206 - 100nF1x
    SMD integrovaný obvod 74HC141x
    č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.