micro:bit a modelářské servomechanismy

Serva (servomechanismy) byla původně určena pro použití v radiem řízených (RC) modelech. Jsou však také dobře použitelná pro řadu školních experimentů, řízení laboratorních zařízení, automatizaci domácnosti (například polohování žaluzií) a podobné použití.

Základem serva je stejnosměrný elektromotorek, vícestupňová převodovka sestavená z ozubených kol, zpětnovazební snímač polohy výstupního hřídele (potenciometr nebo bezkontaktní snímač) a řídící elektronika. Požadovaná pozice výstupní osy serva je přenášena do řídící elektroniky z nadřazeného řídícího systému pomocí pulzně šířkově (PWM) modulovaného řídícího signálu.

Napájení a připojení

Do serva vedou tři vodiče; dva servo napájejí a po třetím jsou přenášeny povely. Jako připojovací konektor se obvykle používá plochý trojpinový typ s roztečí dutinek 2,54 mm. Tvar pouzdra konektoru je závislý na výrobci, ale kterýkoli z nich lze nasunout na pinovou lištu se správnou roztečí kolíků.

Napájecí napětí běžných serv se pohybuje v rozmezí 4,8 až 6 V. Takzvaná mikroserva pracují většinou už od napájecího napětí 3 V, ovšem při tomto napětí jsou už nespolehlivá a točivý moment zcela zanedbatelný.

Moderní serva mohou naopak pracovat i při vyšších napájecích napětích (7,2; 8,4 nebo i 12 V), jejich cena je ale vysoká a pro běžné aplikace jsou zbytečná.

Aby servo mohlo správně pracovat, je třeba, aby napájecí zdroj dodal odpovídající proud; většina serv má špičkový odběr v řádu jednotek ampér.

Obr. 1: Barevné značení kabelů serv

Řídící signál serva

Poloha výstupního hřídele serva odpovídá proporcionálně šířce řídícího impulzu. Řídící impulz je pozitivní s amplitudou od 3 V do napájecího napětí, aktivní dobou trvání proměnnou od 1 do 2 ms a opakovací frekvencí obvykle 50 Hz (Evropa) nebo 60 Hz (USA a Japonsko). U takzvaných digitálních serv ale může být opakovací frekvence i mnohem vyšší. Době trvání řídícího pulzu odpovídá rozsah polohy výstupního hřídele serva ±45°. Většina serv dovoluje zvětšit mechanický rozsah pohybu výstupní osy na ±90° zvětšením rozsahu řídících impulzů na 0,5 až 2,5 ms. Řídící impulzy mimo uvedený rozsah, mohou způsobit najíždění serva na mechanický doraz a tím jeho poškození.

Obr. 2: Řídící signály

Řídící impulz se obvykle opakuje 50x za sekundu (perioda 20 ms). Tato hodnota však není kritická, protože na ní závisí především dosažitelný točivý moment a klidový přídržný moment serva. Výstupní hřídel serva se do střední polohy nastavuje impulzem délky 1,5 ms.

Bezpečné připojení serva k micro:bitu

Obr. 3: Schéma zapojení

Elektrické schéma z obrázku 3 se proti jiným doporučovaným zapojení zdá dost složité. Optický izolační člen PC817 ale spolehlivě oddělí napájení micro:bitu a napájení serva, protože k přenosu řídících pulzů mezi oběma elektrickými okruhy dochází uvnitř izolátoru prostřednictvím světla. Drobné zvýšení složitosti zapojení a zcela zanedbatelné zvýšení ceny je ovšem bohatě  vyváženo tím, že při chybném připojení nebo při poruše serva zůstane váš micro:bit v bezpečí.

Obr. 4: Praktické zapojení na nepájivém poli

Servo samozřejmě můžete na vlastní nebezpečí připojit přímo k micro:bitu, ale je nutné dodržet jeho napájecí napětí v rozsahu 4,8 až 6 V, protože ačkoli různé návody tvrdí opak, je při nižším napětí funkce serv již dost nejistá a servo se často bez příčiny chvěje nebo škubá.

Nejprve servo otestujte

V programovacím jazyku JavaScript jsou funkce pro ovládání modelářského serva již připraveny a pro větší pohodlí se poloha páky serva udává přímo v úhlových stupních v rozsahu 0 až 180.

Smyslem tohoto testu je především zjistit, zda jste servo správně zapojili a zda skutečně zvládá rozsah otáčení v rozsahu 180 stupňů. Pokud ne a v některé krajní poloze najíždí servo na mechanické dorazy, (to znamená, že na konci své dráhy cvaká a vrčí) pak je třeba experimenálně (změnou čísla, určujícího požadovaný úhel natočení serva) zjistit jeho konkrétní možnosti.

Blok forever je již připraven na pracovní ploše nebo ho najdete v kategorii basic, blok pause je v téže kategorii a blok servo write pin je v kategorii pins, kterou najdete po kliknutí na volbu advanced v panelu kategorií.

Testovací program nastavuje periodicky servo, připojené na pin P1, do jedné krajní polohy, na střed dráhy, do druhé krajní polohy a zpět v opačném pořadí. V každé z těchto poloh setrvá 1 sekundu; to určuje příkaz pause. Můžete zkusit měnit parametr (v tomto případě číslo) příkazu servo write pin, abyste si vyzkoušeli možnosti vašeho serva.

A nyní zkuste servo řídit …

Předchozí test byl jistě úspěšný a tak nyní zkuste řídit polohu serva pomocí vestavěných senzorů micro:bitu.

… akcelerometrem

Číslo v proměnné sklon nám udává, o kolik se micro:bit odchýlil od vodorovné polohy v ose X.

Protože  micro:bit můžete naklánět z vodorovné polohy doleva i doprava, může číslo nabývat hodnot od -1023 do 1023.

Ovšem proměnná uhel, určující polohu serva, může mít rozsah jen 0 až 180. Abyste nemuseli složitě počítat, použijte funkci map z kategorie pins, která to udělá za vás. Zvolte, že aktuální rozsah proměnné sklon se má přepočíst na požadovaný rozsah a vložit do proměnné uhel.

Servo se vám nyní bude natáčet zleva doprava a zpět v rozsahu 180 stupňů podle toho, jak micro:bit nakláníte a když ho budete držet přesně vodorovně, tak se servo zastaví uprostřed své dráhy.

… kompasem

Jak vidíte, program je téměř stejný, jen mimo sklonu sleduje údaj kompasu. Ale pozor – v prostředí, kde se vyskytuje mnoho kovových předmětů nebo rušivých magnetických polí asi tenhle pokus nebude příliš uspokojivý, protože údaj z kompasu bude značně zarušený a nepřesný.

Pokud používáte kompas poprvé nebo v odlišném prostředí, budete asi při prvním spuštění programu požádáni o kalibraci a budete muset na displeji micro:bitu jeho otáčením a nakláněním nakreslit kroužek.

… intenzitou vnějšího osvětlení

Displej micro:bitu má jednu zajímavou vlastnost: nejen, že umí zobrazovat, ale také umí změřit intenzitu světla, které na něj dopadá.

Údaj o okamžité intenzitě dopadajícího světla je v interním registru light level, jehož hodnotu překopírujte do proměnné svetlo. Rozsah údaje light level je 0 až 255, takže opět pro přepočet na rozsah 0 až 180 využijte služeb funkce map.

A když nyní na displej micro:bitu posvítíme, servo se bude natáčet v závislosti na intenzitě dopadajícího světla.

Řízení serva externími ovladači

Vyzkoušeli jste si ovládání serva vnitřními senzory micro:bitu a teď si ukážeme, že to jde i jinak.

Potenciometr

K napájení micro:bitu připojte podle obrázku 5 potenciometr (dělič napětí), na jehož běžci, připojeném k pinu 0 se mění velikost napětí v závislosti na natočení jeho osičky.

Příkazem analog read pin lze toto napětí přečíst, přeměnit ho na číslo v rozsahu 0 až 1023 a pak ho uložit do proměnné pot.

Pomocí funkce map přepočteme rozsah proměnné pot z 0 až 1023 na 0 až 180 a ten vložíme do proměnné uhel, která už přímo určuje okamžitou polohu serva.

Tímto programem jste si z micro:bitu vytvořili zařízení, kterému modeláři říkají servotester. Program je možno samozřejmě různě modifikovat a místo řízení polohy serva potenciometrem použít vnější napětí v rozsahu 0 až 3 V, které připojené na pin 0 micro:bitu.

Pamatujete ale stále na to, že napětí vyšší než 3,6 V micro:bit spolehlivě zničí!

Odrazový senzor

Tohle si asi budeme muset  vysvětlit podrobněji.

Senzor TCRT5000 (a jemu podobné) pracuje na principu odrazu infračerveného světla, vysílaného LED, od překážky a jeho příjmem pomocí fototranzistoru.

Fototranzistor v TCRT5000 je celkem běžný tranzistor, ale jeho vodivost řídí místo proudu, tekoucího do báze intenzita světla, dopadajícího na jeho polovodičový přechod. Proto je také umístěn v průsvitném pouzdře, připomínajícím LED.

Jak je vidět ze schématu na obrázku 7, fototranzistor je zapojen jako emitorový sledovač s emitorovým rezistorem o hodnotě 1 megaohm, pracuje tedy jako aktivní rezistor, jehož odpor je nepřímo úměrný intenzitě dopadajícího světla a jeho citlivost na dopadající světlo je značná.

Obr. 7: Zapojení odrazového senzoru

Fototranzistor tvoří spolu s emitorovým rezistorem napěťový dělič, v jehož uzlu měří micro:bit napětí pomocí ADC převodníku, připojeného uvnitř micro:bitu na pin 0.

Jakmile se před senzorem objeví odrazná plocha, tedy překážka, infračervený paprsek vysílaný LED se odrazí zpět k senzoru, dosud uzavřený fototranzistor v TCRT5000 se pootevře, napětí na děliči se zvýší, program tuto změnu vyhodnotí a servo se natočí do polohy, která přibližně odpovídá vzdálenosti odrazné plochy od senzoru.

Obr. 8: Princip funkce

Tento způsob vyhodnocení vzdálenosti samozřejmě není dokonalý, protože intenzita odrazu závisí nejen na vzdálenosti odrazné plochy, členitosti a odraznosti jejího povrchu, ale i na úhlu, pod kterým na ni paprsek infračerveného světla dopadá.

Přesto ale takový senzor může dobře posloužit při konstrukci různých hříček nebo robotů.