czech english

Připojujeme tlačítko

jak fungují vstupy jednočipu

Pokud má robot reagovat na své okolí, potřebuje senzory. Nejjednodušším typem senzoru je obyčejné tlačítko, kterým se dá realizovat třeba nárazník. Nárazník byl i jediným senzorem robota Berta, který zvítězil v uklízecí soutěži ve Švýcarsku. Jak tedy fungují vstupy jednočipu a jak k nim připojit tlačítko tak, aby fungovalo spolehlivě, se dozvíte v tomto článku.


TODO: fotku mikrospínače
Jednočip je schopen měřit napětí na svých vstupech a to buď relativně hrubě (0/1) nebo jemněji (A/D převodník). První zásada proto zní: každý vstupní pin musí být stále připojen k definovanému napětí. Proč? Pokud tomu tak není, jeho vstup je nedefinován a jedná se o tzv. floating input. Pin se pak chová jako anténa a čeká Vás spousta překvapení. Budete-li mít např. takto zapojen melodický zvonek, tak Vám může „z ničeho nic” o půlnoci začít hrát .
A pokud říkáme stále, myslíme tím opravdu stále. Na prvním obrázku vidíte zapojení typu „anténa”, kdy je na pinu definovaný stav pouze při připojení k 5V. Na druhém obrázku je pokus o zlepšení, kdy je tlačítko zapojené jako přepínač mezi 0V a 5V. Nicméně ani toto řešení není dokonalé. Vstup stále ještě může být v nedefinovaném stavu při přepínání, kdy není k ničemu připojen.
Anténa
Anténa
Robustnější zapojení
Robustnější zapojení
S pull-upem
S pull-upem
Správné řešení je pomocí pull-up odporů. Jejich funkce je opravdu doslova „vytahovat nahoru” napětí v případech, kdy není řečeno jinak (některé jednočipy mají dokonce tyto odpory zabudovány interně). K pochopení jejich funkce nám pomohou vzpomínky na středoškolskou fyziku (elektroniku). Zajímat nás bude zejména něco, čemu se říká odporový dělič (anglicky voltage divider).
Odporový dělič jsou v podstatě dva odpory zapojené do série. Odporový dělič se tomuto zapojení říká z toho důvodu, že připojené napětí se mezi odpory „rozdělí” v poměru jednotlivých odporů. Je to jednoduchá aplikace druhého Kirchhoffova zákona zákona, který říká, že součet napětí zdrojů v obvodu se rovná součtu napětí na jednotlivých spotřebičích.
Zapojení jednočipu s pull-up odporem je v podstatě odporový dělič, kde se jednočip chová jako velmi velmi velký odpor. Při rozpojeném tlačítku je napětí na vstupním pinu blízké 5V, protože jednočip má řádově větší odpor než náš pull-up. Při sepnutém tlačítku se nám vytvoří jiný odporový dělič. Náš pull-up je stále jeho součástí, pouze jeho druhá část jaksi „degenerovala” na spoj s minimálním odporem. Proto je na vstupním pinu napětí blízké 0V.
Možná vás to překvapí (až budete mít větší zkušenosti s robotikou, tak by už nemělo ), ale ani při zapojení s pull-upem nemusíme mít úplně vyhráno. Problém může být ještě i v samotném tlačítku. Při spínání a rozpínání tlačítka může dojít k zákmitu a jednočip může detekovat několik rychlých zapnutí a rozepnutí tlačítka. Hodnota napětí může přecházet relativně pomalu a v oblasti 2.5V se může lehce zachvět, což čip mylně interpretuje jako několik sepnutí. Toto se stává zejména při použití starších či nekvalitních tlačítek.
Většina dnešních čipů je na něco takového již připravena. Vstupní piny jsou typu schmitt trigger. Od obyčejných vstupních pinů se liší využitím dvou prahových hodnot pro detekci logické jedničky a nuly. Pokud je na pinu logická jednička je třeba s napětím klesnout např. pod úroveň 2V pro přepnutí do logické nuly. Obráceně, pro přepnutí z logické nuly je třeba napětí zvýšit až třeba na 3V. Drobné zákmity kolem jednotlivých hranic (thresholdů) tedy nezpůsobují falešné přechody. Obecně se tomuto principu říká prahování s hysterezí a v robotice je to velmi užitečný algoritmus.
Pokud nám nepomohou ani schmitt trigger vstupy, je čas na softwarové řešení (v případě, že zákmity jsou tak velké, že je threshold s hysterezí nezachytí). Metoda se nazývá softwarový debouncing (v překladu snad něco jako „odstranění přeskoků”). Je velmi jednoduchá a spočívá v ignorování rychlých změn pinu. Tj. pro detekci změny stavu vyžadujeme, aby pin v daném stavu zůstal po určitý minimální čas.

Související odkazy

Závěr

Pokud se Vám něco z toho nepodařilo nebo Vám některá část přišla méně srozumitelná, můžete se nám ozvat pomocí našeho kontaktního formuláře.

Pošlete email redakci.
Všechny materiály, které máme k dispozici, jsou již součástí článku, na který reagujete (tj. pokud tam tedy není např. plánek na stavbu, je to proto, že nic takového nemáme).

Vaši zprávu se bohužel nepodařilo odeslat, ale můžete nám napsat sami na adresu

Vaše zpráva byla úspěšně odeslána

Pro odeslání formulář je třeba mít zapnutý javascript.