Kapacitní klávesnice u PIC a PICAXE 1

Moderní mikrokontroléry umožňují připojení kapacitních senzorů, které fungují jako bezkontaktní spínače, aktivované přiblížením prstu. V tomto článku si popíšeme jejich princip, přiblížíme vám strukturu vnitřního zapojení obslužného obvodu tohoto senzoru u mikrokontrolérů PIC a podíváme se i na mikrokontrolér PICAXE.

Z obrázku je patrné vnitřní zapojení obvodu, který se v mikrokontrolérech PIC stará o obsluhu kapacitních senzorů. Protože tímto obvodem nejsou vybaveny všechny mikrokontroléry, budeme vycházet ze struktury PIC12F1840. touch

Při pohledu na obrázek vám bude jistě zapojení v jeho horní polovině cosi připomínat. Ano, je téměř shodné s vnitřní strukturou starého známého obvodu 555.

Interní referenční zdroje (přímo v tomto bloku, uvnitř PIC) určují horní a dolní mez napětí, při které napěťové komparátory překlápějí výstupní klopný obvod RS. Výstup z klopného obvodu RS také přepíná dva proudové zdroje. Jeden proudový zdroj přivádí proud na vstup, druhý jej ze vstupu odvádí; podle stavu výstupu klopného obvodu RS je vždy zapnut jen jeden z nich. Protože vstup má určitou kapacitu, definovanou připojenou dotekovou ploškou, proudové zdroje tuto kapacitu nabíjejí a vybíjejí a tím orčitou frekvencí překlápí klopný obvod RS. Celé to funguje stejně jako obvod NE555 v astabilním zapojení, jen s tím rozdílem, že kapacita se v tomto případě nenabíjí a nevybíjí přes rezistory, ale přes zdroje proudu, protože ve struktuře CMOS je vytvoření proudových zdrojů snadné. Tímto způsobem je zajištěn trojuhelníkový průběh napětí na pinu mikrokontroléru (externí kapacitě, plošce).

Pokud k plošce přiblížíme prst (přes izolaci, plošky se přímo nedotýkáme), zvyší se její kapacita a tím sníží frekvence výše popsaného oscilátoru. Pro zjištění doteku na plošku tedy stačí jen porovnávat kmitočet tohoto oscilátoru (prst na plošce je nebo není).

Modul oscilátoru je v mikrokontroléru PIC vestavěn jen jeden, ale je možno ho programově připojovat na více vstupů (více vstupních pinu/plošek). Můžeme tedy programem zvolit pin (plošku), tam zjistit stisk/nestisk, a pak pokračovat na další.

Celé obvod produkuje kmity určité frekvence a jeho výstupem je signál CPSCLK, pokračující dále do vnitřní struktury mikrokontroléru. Abychom mohli měřit kmitočet takového oscilátoru, je signál CPSCLK přiveden do čítace pulzů (přepnutím v registrech PIC, propojení je přepínatelné ve vnitřní struktuře), tedy do Timer1, přepnutého do funkce čítaní. Tímto způsobem pulzy ale jen počítáme. Abychom mohli zjistit jejich frekvenci, musíme zajistit, aby Timer1 tyto pulzy počítal jen po určenou dobu (frekvence je počet pulzů za daný čas). K tomu použijeme Timer0, který je taktován interním oscilatorem PIC (frekvencí, na ktere beží jádro PIC) a je schopen povolovat a zakazovat čítaní Timer1. Není to samozřejmě nutné, čítaní Timer1 můžeme v případe potřeby povolovat a zkazovat i jinak (třeba čekacími smyčkami v software), je jen nutné, aby doba povolení čítání byla vždy stejná.

Mikrokontrolér PIC obsahuje uvnitř své struktury všechno potřebné k měření kapacity dotekové plošky a úlohou software je pouze číst ze správně nastavené periferie kmitočty a posoudit, kdy se považuje „klávesa“ za stisknutou a kdy ne. Protože kapacita dotekových plošek se může v určitých mezích měnit (velikost kláves, jejich tvar atp.), je idealní zjistit tyto hodnoty při oživování zařízení experimentálně.