È possibile utilizzare pad di connessione resistivi come mostrato, ma i pad capacitivi sono generalmente migliori. I pad resistivi lasciano un collegamento diretto al circuito aperto verso l'esterno. Sono quindi sensibili ai danni causati da scariche statiche e rumore.
I pad capacitivi sono un metodo migliore, anche se richiedono un po 'più di firmware per rilevare, almeno se si desidera farlo bene. Nota che per ottenere un'immunità al rumore anche rudimentale, anche i pad resistivi richiedono un firmware. Collegare due pad a qualcosa di sensibile, come il gate di un FET, è una cattiva idea. Non sarà possibile annullare la modalità comune e altri rumori ambientali.
Ecco il layout di una piccola scheda che ho fatto di recente solo per cercare pulsanti capacitivi:
I tappi di protezione sono piccoli dischi con diametro di 150 mm (3,8 mm) e comunque circondati da terra sullo strato superiore. Il microcontrollore è un PIC 16LF1786. Esso e tutte le altre parti che non sono destinate all'interfaccia diretta con l'utente sono montate sul fondo di questa scheda a due strati.
Il PIC scansiona continuamente i pad. Quando rileva un cambiamento nel senso premuto / rilasciato di un pad, invia un messaggio sulla porta seriale, aggiorna le luci in alto a destra ed emette un segnale acustico alla stampa.
Per i test, posso fare in modo che il PIC invii regolarmente i suoi valori interni per la pressione di ciascun pad. Ecco un grafico di tutti e cinque i valori di rilevamento non elaborati, oltre allo stato digitale generale di qualcosa che viene premuto mentre premo ogni pad in successione con il dito:
Come puoi vedere, l'immunità al rumore è eccezionale. Anche il segnale più debole era ben oltre 300, mentre il rumore era di ± 2 o giù di lì.
La traccia magenta etichettata "Pressed" mostra l'OR dei singoli stati di pulsante premuto. I suoi livelli mostrano le soglie di stampa e rilascio. C'è molto segnale extra che non viene utilizzato in questo caso. Queste soglie particolari sono state modificate per poter tollerare alcuni strati di carta sopra i pulsanti.
Ovviamente c'è una gestione intelligente delle linee e dell'elaborazione dei pulsanti, anche se lo dico io stesso, ma chiaramente i risultati sono raggiungibili con un microcontrollore piuttosto modesto.
Lo sto usando in un prodotto reale in cui lo stesso micro gestisce anche un display a caratteri. È un sottosistema di base dell'interfaccia utente che intendo riutilizzare in diversi prodotti futuri. Si interfaccia al controller di sistema principale tramite una porta seriale. Il controller principale invia comandi per la scrittura sul display e riceve messaggi asincroni ogni volta che cambia lo stato di un pulsante.