Esquema:

PCB:

Montado en una caja para probar:

Publico una pruebas hechas con la librería QTouch de Atmel y un AtMega16. Es un teclado capacitivo de 16 teclas usando la opción QMATRIX (8x2) de la librería. Utiliza 14 pines del micro para la librería (8 para las líneas X, 4 para las líneas Y, 1 del SMP y 1 del AIN0), utilizando 4 pines más puede manejar 32 teclas. La librería también obliga para su uso a desactivar todas las pull-ups.
SFIOR |= (1u << PUD); Los electrodos están diseñados considerando un grosor de panel de 1mm. Incluye una aplicación de línea de comandos para generar electrodos en el formato de KiCAD para otros espesores de panel. Para las pruebas el propio PCB de 0.8mm hace de panel. Realice los puentes por la misma cara de los componentes para que la otra cara quedase perfectamente plana y poder pegarla a otra superficie sin ningún problema.
Todas las teclas están puestas dentro del mismo grupo de AKS por lo que el teclado sólo da una tecla pulsada a la vez, si se pulsan varias devolverá la primera pulsada. Si se desea poder detectar varias teclas pulsadas a la vez sería recomendable dejar mas espacio entre las teclas y ajustar el threshold para que el teclado no detecte pulsaciones indeseadas de las teclas próximas.
El LED conectado en PC3 se enciende cuando hay una tecla pulsada.
En PB3 tenemos un PWM que filtrado nos da una tensión de salida proporcional a la tecla pulsada, de 0 ninguna tecla pulsada a VCC con la tecla G.
Tambien podemos leer la tecla pulsada leyendo el micro por I2C. Si queremos leer el micro solo cuando haya una tecla pulsada se puede usar la salida de interrupcion (PC2) para lo que hay que conectar una pull-up en este pin.
Se puede cambiar el valor de treshold y la histerisis por i2c. Para hacerlo hay que mandar una escritura por I2C mandando el nuevo threshold, el nuevo threshold negado, la nueva histerisis y la nueva histeris negada.
Treshold tamaño byte. (Por defecto 75)
Histerisis tamaño byte. (De 0 a 3) (Por defecto 3)
Si queremos un treshold de 32 y una histerisis de 1 habría que mandar:
0x20,0xDF,0x01,0xFE
Adjunto una par de vídeos en el primero probamos la salida PWM del teclado y en el segundo utilizando la comunicación I2C. En este segundo vídeo el código utilizado no es exactamente el mismo, en este las teclas 4,8,C y G están configurados como un "slider" pero el resultado no es muy lineal por la colocación y diseño de los electrodos.
Video 1Video 2Esquema y PCBCodigo fuente y HEX Saludos,
ma4826.