07.01.2013Hardwarový debouncing tlačítka

Problém s "bouncingem" je následující. Když je tlačítko zmáčknuto, nejde jen o přechod z hodnoty 0 na hodnotu 1 (nebo naopak).
Debouncing má za cíl odfiltrovat nežádoucí odskoky
Mezi těmito hraničními hodnotamy je jistý "šum", nebo-li "odskok". Ukázka takového odskoku je na následujícím obrázku.

Pokud budete programem naslouchat změnám stavu tlačítka, "uslyšíte" falešná stisknutí několikrát za sebou. Aby se tomu předešlo, je potřeba dělat takzvaný "debouncing". Debouncing má za cíl odfiltrovat nežádoucí odskoky. Toho se dá dosáhnout buď softwarově, kdy se při prvním stisknutí chvíli počká, než se začne naslouchat dalším změnám, nebo hardwarově pomocí kondenzátoru, který takové odskoky vyhladí.

Bounce, nebo-li odskok



Debounce
pulldown zapojení tlačítka
Je důležité si nejdříve uvědomit, že aby na pinu microcontrolleru byla při nestisknutém tlačítku nula, je potřeba tento pin stáhnout k nule (pulldown) pomocí odporu (např. 1K). Bez toho by se na pinu při nestisknutém tlačítku objevovaly náhodné hodnoty závislé na okolí. Pulldown se provede jednoduše, viz. nákres. Do tohoto zapojení lze jednoduše přidat debouncing kondenzátor, který vyhladí křivku změny stavu tlačítka. Kapacitu je potřeba volit podle obvodu, ale pro MSP430 se ukázaly jako vhodné kondenzátory kolem 1uF. Já používám elektrolytový kondenzátor 1uF, ale také s úspěchem používám keramický 0.6uF, který je menší a rychlejší.

Křivka po vyhlazení kondenzátorem


comments powered by Disqus