Detección capacitiva

¿Hay alguna manera de que pueda hacer que un Arduino u otro microcontrolador detecte un cambio en la capacitancia?

Estoy pensando en tener una pantalla en mi puerta que solo se enciende cuando tocas la manija de metal de la puerta.

Respuestas (6)

Sí.

La forma más sencilla sería usar una resistencia de alto valor (1-10M) y seguir las instrucciones en esta antigua publicación del foro de arduino: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1171076259

Aquí hay un tutorial http://www.nerdkits.com/videos/halloween_capacitive_touch_sensor/

El sensor real utilizado para detectar la presencia de una mano se explica en detalle en el video, pero aquí hay una descripción general. Nuestro sensor funciona según el mismo principio que un sensor táctil capacitivo funciona en el panel táctil de su computadora portátil. Estos sensores táctiles capacitivos funcionan bajo la premisa de que los humanos son en su mayoría agua. Cuando te acercas a un campo eléctrico, alteras la capacitancia lo suficiente como para que el sensor lo note.

En nuestro sistema montamos un circuito RC con un condensador y una resistencia en paralelo. Usamos la MCU para cargar el capacitor hasta 5V (un alto voltaje digital). Luego convertimos el pin en un pin de entrada, que esencialmente desconecta ese nodo. Esto permite que el capacitor se descargue a través de la resistencia. La cantidad de tiempo que tarda el capacitor en descargarse estará relacionada con el valor de la resistencia multiplicado por la capacitancia. Elegimos un valor de resistencia lo suficientemente grande como para que la constante de tiempo RC sea lo suficientemente larga para que podamos medirla con la MCU. En este caso, 100K ohmios funcionó muy bien. El sensor en este caso son dos láminas de papel de aluminio, una conectada al pin MCU y otra conectada a GND. Estas dos hojas crean un capacitor que nuestra MCU está cargando y descargando. Cuando tus manos se mueven entre las dos hojas, se altera el campo eléctrico, y por lo tanto la capacitancia de nuestro artilugio de papel de aluminio. Por lo tanto, el condensador tarda más en descargarse, ¡y eso lo detecta el código en nuestro microcontrolador!

Una de las mejores formas que he encontrado para medir la capacitancia es usar un circuito RC. Utilice un puerto de E/S digital en un microprocesador para cargar y descargar el sensor capacitivo a través de una resistencia fija. Inicie un temporizador cuando comience el ciclo de carga/descarga. Luego use un comparador para detectar cuándo el capacitor se ha cargado/descargado por completo. Detenga el temporizador cuando se dispare el comparador. El valor almacenado en el temporizador se puede usar para calcular la capacitancia del sensor.

No es una respuesta específica de Arduino, pero Microchip tiene una explicación de una forma de hacerlo en el PIC, que posiblemente funcionaría en un AVR

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en545264

La única preocupación con estos métodos es la falta de protección contra descargas estáticas.

Se puede hacer un sensor táctil capacitivo sin hardware adicional. El truco consiste en habilitar el pull-up interno de un pin digital y contar los ciclos de CPU que se necesitan para levantar el pin.

Código y explicación: http://playground.arduino.cc/Code/CapacitiveSensor

Prefiero quitarle la parte analógica del trabajo al microcontrolador usando el capacitor bajo prueba como parte de un oscilador y luego usando el controlador para medir el ancho del pulso. Es una parte extra, pero he tenido mejores resultados de esta manera.