Nastaviteľné dotykové tlačidlo
Dotykové tlačidlá sú čoraz populárnejšie a ich úlohou je plnohodnotná náhrada za mechanické tlačidlá. Vyžívajú sa skoro v každom elektronickom zariadení a svoje uplatnenie si pomaly nachádzajú aj vo svete rádioamatérov. Jednak z pohľadu dizajnu, údržby pripadne vodotesnosti. Na trhu je možne nájsť niekoľko druhov tlačidiel a zvyčajne ide o kapacitne dotykové tlačidlá, avšak bežne dostupné modely majú niektoré nevyhody:
- sťažená montáž,
- chýbajúce podsvietenie,
- obťiažne pripojenie,
- chýbajúce nastavenie citlivosti na dotyk.
No a to ma inšpirovalo k vytvoreniu vlastného tlačidla. Jedná sa o tlačidlo s nastaviteľným podsvietením, komunikujúce cez I2C ako slave zariadenie. Môže byť s minimálnym úsilím integrovane do rôznych projektov ako náhrada za klasické mechanické tlačidlo, kde môže ovládať osvetlenie, ventilátory, relé pripadne iné spotrebiče ... jednoduchým dotykom.
Technické parametre
- Napájacie napätie a prúd: +5VDC max. 60mA
- I2C komunikácia: rýchlosť max. 100Khz, dĺžka zbernice max.1 meter
- Maximálny prúd SCL/SDA: 20mA
- Maximálny prúd INT1/2: 20mA
- Maximálna hrúbka panelu : 8mm (testovaný materiál sklo, plexisklo)
- Svietivosť: Červena – max. 550mcd, Zelena – max 1100mcd, Modra – max 200mcd
- Rozmery: 22mmx18mm
Typy dotykových tlačidiel
Existujú niekoľko typov dotykových tlačidiel a medzi najrozšírenejšie patria :
Rezistívne dotykové tlačidlá
Ako už z názvu vyplýva, pri dotyku sa zmení odpor tlačidla, čím sa zaznamená stlačenie. Princíp je znázornený na obr. č. 1 a keďže je pomerne jednoduchý, nebudeme ho ďalej podrobne rozpisovať.

Obr.č.1 Rezistívny dotykový display [1]
Piezoelektrické dotykové tlačidlá
Piezoelektrické dotykové tlačidlá využívajú piezoelektrický jav. Ide o snímače, ktoré pri mechanickom pôsobení (tlaku) generujú elektrický náboj, ktorý je následne vyhodnotený ako signál stlačenia.

Obr.č.2 Piezoelektrické dotykové tlačidlo
Pri dotyku na tlačidlo pôsobí používateľ mechanickým tlakom, ktorým sa vygeneruje elektrický náboj, ktorý je následne zmeraný elektronikou, čím sa zaznamená stlačenie. Výhodou týchto tlačidiel je možnosť ich umiestnenia pod rôzne materiály, vrátane kovových panelov, čo zvyšuje ich odolnosť a životnosť.
Kapacitne dotykové tlačidlá
Daný typ tlačidla je použitý aj v tomto projekte. Tlačidlo sa skladá z dvoch elektród medzi ktoré je vložený dielektricky materiál (plast, sklo ... ) čim sa vytvorí jednoduchý kondenzátor. Prvá elektróda je väčšinou tvorená meďou na samotnom plošnom spoji a druha elektróda je samotný prst. Senzor reaguje na zmenu kapacity, ktorá nastáva pri dotyku prsta s dielektrickým materiálom viď obrázok nižšie

Obr.č.3 Kapacitné dotykové tlačidlo [2]
Meranie zmení kapacity tlačidla prebieha nasledovne :
Ako prvé je potrebne zmerať kapacitu samotného tlačidla keď nie je priložení prst, daná kapacita sa skladá z parazitnej kapacity Cp, kapacity senzora Cs a kapacitou medzi samotnou DPS a uzemnením Cg.

Obr.č.4 Kapacita tlačidla v nestlačenom stave [3]
Kapacita tlačidla sa zmeria tak že kondenzátor Cx (parazitné kapacity zanedbáme) sa nechá nabiť konštantným prúdom I počas niektorého časového intervalu t ktorý je konštantný a následne sa zmeria (pomocou napríklad ADC prevodníka) hodnota napätia na ktorú sa kondenzátor Cx nabil. Prípadne je možne merať časový interval za ktorý sa kondenzátor nabije na zvolenú hodnotu napätia, ktorá bude v danom prípadne konštantná. Kapacita sa meria pri zopnutí senzora (kalibrácia) a je použitá ako referenčná hodnota kedy tlačidlo nie je stlačene. Keďže daná kapacita sa môže sa v čase meniť vplyvom vonkajších faktorov, tlačidlo si zvyčajne danú kapacitu periodicky prekalibruje.
Pri dotyku sa kapacita tlačidla zvýši o kapacitu prsta Ct ktorá je zvyčajne medzi 1pf až 10pf, čo nám spôsobí pri meraní pokles napätia na ADC prevodníku, prípadne predĺženie časového intervalu za ktorý sa kondenzátor nabije.

Obr.č.5 Kapacita tlačidla v stlačenom stave [3]
Kapacita Ct sa vypočíta pomocou vzťahu :
Kde :
- ԑ0 – je permitivita vákua 8.85*10^(-12) F/m
- ԑr – je relatívna permitivita a je závislá od materiálu viď tabuľka nižšie
- A - je plocha dotyku 20 – 110 mm2, zvyčajne sa vôli priemer tlačidla vzhľadom k veľkosti prsta medzi 5mm až 12mm
- d – je hrúbka dielektrika, záleží od materiálu ale pre spoľahlivú detekciu stlačenia je odporúčane nepresahovať hodnotu 10mm.
| Materiál | Relatívna permitivita εr |
|---|---|
| Vzduch | 1,00 |
| Sklo | 7,0 – 10,0 |
| Plexisklo | 2,6 – 3,5 |
| FR-4 | 4,0 – 5,0 |
| Nylon | 3,0 – 5,0 |
| Papier | 3,80 |
| Voda | 80,00 |
Tab.č.1 Relatívna permitivita rôznych materiálov
Popis činnosti
Popis tlačidla
Ako už bolo spomenuté v tomto projekte je použite kapacitne dotykové tlačidlo. Schéma zapojenia je zobrazená na obr.č.12. Srdcom celého zariadenia je 32bitovy mikrokontrolér CH32X035F8U6 od firmy WCH ktorý zabezpečuje snímanie a vyhodnocovanie stavu tlačidla, komunikáciu cez I2C, riadenie podsvietenia tlačidla a nastavenie jeho citlivosti. Pre snímanie dotyku bol použitý špecializovaný obvod SB8223 [5] od firmy SHOUDING, ktorý je pinovo kompatibilný s veľmi rozšírením čipom TTP223 [6], ale má oveľa vyššiu citlivosť.
Návrh mal kompenzovať niektoré nedostatky a tu sú hlavne vyhody:
- Jednoduchá montáž tlačidiel, čo umožňuje 6pinovy vstupný konektor typu micromatch ktorý je možne jednoducho nakrimpovať na plochy kábel s roztečou žil 1.27mm.
- Vďaka zbernici I2C je možne zapájať tlačidla paralelne za sebou (reťazovo) na ten istý kábel, teoreticky maximum takto zapojených tlačidiel je 127ks. Prakticky sme obmedzený prúdovo nakoľko plochy kábel zvládne okolo 1A prúdu, teda pri plnom jase a bielej farbe je možne mať takto zapojene 16 tlačidiel.
- Pre dosiahnutie čo najvyššej citlivosti na dotyk je nutne zabezpečiť čo najlepší kontakt medzi snímacou elektródou tlačidla a dielektrickým materiálom (panelom zariadenia). S tohto dôvodu bola použitá pružinka viď obr.č.6 ktorá kompenzuje niektoré nerovnosti pri montáži a umožňuje tlačidlo namontovať v niektorej vzdialenosti od samotného panelu.
- Zmena citlivosti tlačidla umožni flexibilne prispôsobovať sa rôznym hrúbkam panelu bez nutnosti zásahu do hardvéru. Citlivosť je možne meniť príkazmi cez I2C a ma 4 úrovne.
- O podsvietenie tlačidla sa stará inteligentná led dióda WS2812B ktorej je možne nastaviť ľubovoľnú farbu a intenzitu. Farba a intenzita sa nastavuje zvlášť pre stlačene tlačidlo a nestlačene tlačidlo čo umožňuje pri stlačení mať spätnú väzbu či tlačidlo reaguje na dotyk.

Obr.č.6 Pružinka
Popis vstupného konektora
Schému zapojenia vstupného konektora je možne vidieť na obr.č.7

Obr.č.7 Schéma konektora
- INT1 – Výstup s otvoreným kolektorom, aktivuje sa pri zatlačení tlačidla a uvoľni sa ak tlačidlo uvoľníme.
- SCL – I2C hodinový signál, výstup s otvoreným kolektorom
- GND - Zem
- SDA – I2C dátová linka , vstup/výstup s otvoreným kolektorom
- +5VDC – Napájanie, chránene 500mA poistkou
- INT2 – výstup s otvoreným kolektorom, aktivuje sa pri stlačení tlačidla, uvoľná sa až po prečítaní stavu tlačidla cez I2C zbernicu.
I2C komunikácia
I2C komunikácia prebieha na rýchlosti do 100Khz a umožňuje snímať stav tlačidla (stlačené/nestlačené) tak aj samotné tlačidlo konfigurovať. Po naprogramovaní tlačidlo má I2C adresu 0x13, ktorú je možné zmeniť pomocou príkazu 0xC4. I2C komunikačný protokol ma jednoduchý formát definovaný nasledovne: Ako prvé do tlačidla zašleme príkaz počkáme 5ms a následne prečítame odpoveď.
a) Ak chceme do tlačidla zapisovať musíme poslať Start bit + Address + Write bit následne pošleme 8bitovy príkaz ktorý nám definuje čo konkrétne budeme zapisovať nakoniec zašleme Data(n) (kde n – je počet 8bitovych dát (byte) ktorý je závislí od príkazu viď Tab.2) a ukončime prenos Stop bitom viď obrázok č.8.

Obr.č.8 Ukážka zápisu
b) Ak chceme s tlačidla čítať musíme poslať Start bit + Address + Read bit a následne prečítať Data(n) (kde n – je počet 8bitovych dát (byte) ktorý je závislí od príkazu viď Tab.2), prenos ukončime Stop bitom viď obrázok č.9.

Obr.č.9 Ukážka čítania
Medzi zápisom bod a) a čítaním bod b) je nutné počkať minimálne 5ms čo ke čas potrebný pre vykonanie zápisu dát do flash pamäte mikrokontroléra. To neplatí pre príkaz na čítanie stavu tlačidla, nakoľko tam nie je potrebné čakať a dáta je možne čítať ihneď po odoslaní príkazu. Taktiež po odoslaní príkazu o zmene citlivosti (čakáme 5ms), a po prečítaní odpovede, ďalší príkaz je možne zaslať až po 1100ms čo je čas potrebný pre kalibráciu SB8223.
| Command Value | Data(n) | Command Name | Receive String | ||||||
|---|---|---|---|---|---|---|---|---|---|
| R Value | G Value | B Value | Intensity Value | "OK\r" | "UNK\r" | "ERR\r" | "OVF\r" | ||
| 0xC1 | 0-255 | 0-255 | 0-255 | 0-100 | SET TOUCH COLOR | "OK\r" | "UNK\r" | "ERR\r" | "OVF\r" |
| 0xC2 | 0-255 | 0-255 | 0-255 | 0-100 | SET NOTOUCH COLOR | ||||
| Command Value | Sensitivity Level Value | not send | Command Name | Receive String | |||||
| 0xC3 | 1-4 | not send | Sensitivity | "OK\r" | "UNK\r" | "ERR\r" | "OVF\r" | ||
| Command Value | I2C Address | not send | Command Name | Receive String | |||||
| 0xC4 | 1-127 | not send | Change I2C Address | "OK\r" | "UNK\r" | "ERR\r" | "OVF\r" | ||
| Command Value | INT12 ENABLE Value | not send | Command Name | Receive String | |||||
| 0xC5 | 1 - Disable 2 - Enable |
not send | Enable Interrupt Pin | "OK\r" | "UNK\r" | "ERR\r" | "OVF\r" | ||
| Command Value | Data(n) | Command Name | Receive Value | Receive String | |||||
| 0xC6 | not send | BTN Status | 0xAA - press 0xBB - no press |
"UNK\r" | "ERR\r" | "OVF\r" | |||
Tab. č.2 Zoznam I2C príkazov
Čítanie stavu tlačidla
Stav tlačidla je možné priebežne monitorovať cez zbernicu I2C pomocou príkazu 0xC6. Ak zariadenie vráti hodnotu 0xAA, znamená to, že tlačidlo je stlačené; v prípade hodnoty 0xBB je tlačidlo uvoľnené. Aby sa predišlo neustálemu dotazovaniu (pollingu) cez zbernicu I2C, ktoré by mohlo zbytočne zaťažovať komunikáciu, tlačidlo disponuje výstupmi INT1 a INT2, ktoré slúžia ako prerušenia:
INT1– aktívny počas celej doby stlačenia tlačidla; po uvoľnení tlačidla sa okamžite vráti do neaktívneho stavu, čo umožňuje určiť dĺžku stlačenia.INT2– aktívny iba pri vzniku stlačenia; po vykonaní príkazu0xC6sa automaticky uvoľní, čím umožňuje identifikovať konkrétne tlačidlá, ktoré vyvolali prerušenie.
Pin INT1 je možné použiť aj samostatne ako jednoduchý vstup pre detekciu stlačenia, bez potreby použitia zbernice I2C. Výstupy INT1 a INT2 sú po inicializácii aktívne, avšak v prípade, že nie sú potrebné, je možné ich deaktivovať príkazom 0xC5.

Obr.č.10 Čítanie stavu tlačidla
Nastavenie podsvietenia
Príkazmi 0xC1 a 0xC2 je možne nastaviť farbu podsvietenia. Údaj o farbe je nutné zaslať vo formáte RGBI kde RGB sú zložky farieb 0 - 255 a I je intenzita 0 – 100% , kde pri 50% je intenzita farby pravé taká aká je nastavená zložkami RGB, nad 50% sa intenzita zvyšuje, pod 50% sa intenzita znižuje. Ak bol príkaz odoslaný správne odpoveďou bude „OK\r“ kde ‘\r’ – je ukončovací znak.

Obr.č.11 Nastavenie podsvietenia
Ostatné nastavenia sa realizujú rovnakým spôsobom. Zoznam dostupných príkazov a ich odpovedí je uvedený v tabuľke č. 2. Všetky nastavenia sa ukladajú do flash pamäte mikrokontroléra, takže ich nie je potrebné vykonávať opakovane po každom zapnutí zariadenia.
Popis chýb
- „UNK\r“ – Unknown: Neznámy príkaz, zariadenie nerozpoznalo odoslaný príkaz.
- „ERR\r“ – Error: Chybná hodnota, odoslané dáta sú mimo povoleného rozsahu.
- „OVF\r“ – Overflow: Prekročenie kapacity, bolo odoslaných viac dát, než je tlačidlo schopné prijať.
- „WAI\r“ – Wait: Aktuálne odoslaný príkaz bol ignorovaný, pretože predchádzajúci príkaz ešte nebol spracovaný.
Schéma zapojenia

Obr.č.12 Schéma tlačidla
Zoznam komponentov
| Reference | Value | Footprint | Qty |
|---|---|---|---|
| B1 | Spring | F10-12-0.5-1.3UU | 1 |
| C1, C3, C6 | 10u | Capacitor_SMD:C_0603 | 3 |
| C2 | 100n | Capacitor_SMD:C_0603 | 1 |
| C4 | 5p | Capacitor_SMD:C_0603 | 1 |
| C5 | 10p | Capacitor_SMD:C_0603 | 1 |
| D1 | WS2812B | LED_SMD:LED_5.0x5.0mm | 1 |
| F1 | 500mA | Resistor_SMD:R_0603 | 1 |
| J1 | I2C | Connector:TE Connectivity 215079-6 | 1 |
| JP1, JP2 | J1 | Jumper:J_0402 | 2 |
| R1, R2, R3, R4 | 4k7 | Resistor_SMD:R_0603 | 4 |
| R5-R7 | 1k | Resistor_SMD:R_0603 | 3 |
| R8 | 330 | Resistor_SMD:R_0402 | 1 |
| U1 | CH32X035 | Package_QFN:QFN-20 | 1 |
| U2 | SD8223B | Package_SOT:SOT-23-6 | 1 |
Tab.č.3 Zoznam komponentov
Realizácia

Obr.č.13 Zapojenie tlačidiel

Obr.č.14 Osadená PCB pohľad zospodu

Obr.č.15 Osadená PCB pohľad zvrchu
Záver
Tlačidlo bolo navrhnuté tak, aby bolo čo najkompaktnejšie, univerzálne a jednoducho nastaviteľné pre rôzne hrúbky a materiály panelov. Ako vyplýva zo schémy na obr. č. 12, predpokladá sa, že zbernica I2C sa využije primárne iba na konfiguráciu zariadenia, pričom následná prevádzka tlačidla je nezávislá.
V prípade zapojenia viacerých tlačidiel na spoločnú zbernicu I2C je potrebné dbať na celkovú impedanciu zbernice (> 1 kΩ). Odporúčané je osadiť pull-up rezistory R1, R2, R3 a R4 buď len na strane Master zariadenia, alebo iba na prvom tlačidle. Na ostatných tlačidlách je možné namiesto týchto rezistorov osadiť ochranné diódy typu 1N4148 v puzdre Micromelf, ako je znázornené na obr. č. 14. Na programovanie mikrokontroléra CH32x035 slúžia piny 1 – DIO (INT1) a 2 – DCK (SCL) konektora Micromatch. Pre tento účel je potrebné použiť programátor WCH-LinkE. Na záver dokumentácie sú uvedené obrázky osadeného tlačidla, schéma zapojenia a zoznam použitých komponentov.
Zdroje
- [1] DUSH Co. Ltd. – Resistive Touchscreen Method
- [2] Azoteq – Capacitive Sensing Design Guide v1.1 (PDF)
- [3] Microchip – Capacitive Touch Sensor Design Guide (PDF)
- [4] Adafruit – WS2812 Datasheet (PDF)
- [5] LCSC – Shouding SB8223 Datasheet (PDF)
- [6] Tontek – TTP223-HA6 Datasheet (PDF)
Na stiahnutie
Máte aj vy zaujímavú konštrukciu, alebo článok a chceli by ste sa o to podeliť s viac ako 360.000 čitateľmi? Tak neváhajte a dajte nám vedieť, radi ju uverejníme a to vrátane obrazových a video príloh. Rovnako uvítame aj autorov teoretických článkov, či autorov zaujímavých videí z oblasti elektroniky / elektrotechniky.
Kontaktujte nás!
Komentár môžete adresovať buď diskutujúcemu priamo pomocou tlačidla „Odpovedať“, alebo ho môžete adresovať všeobecne do poľa nižšie.