Photo by Yoann Boyer / Unsplash

Añade un sensor capacitivo a tu Arduino con 2 cables y una resistencia, sin módulos.

Arduino 23 de oct. de 2023

Quizá te hayas preguntado cómo funcionan los sensores de tacto que puedes ver en multitud de aplicaciones, incluso en las pantallas de la mayoría de dispositivos hoy en día, o quieras añadir una forma de interactuar con tu proyecto que sea un poco más sofisticada que apretar un botón.

Pues bien, añadir un sensor de tacto es mucho más sencillo de lo que podrías imaginarte, ya que, aunque existen módulos especialmente creados para aportar esta funcionalidad, no son en absoluto necesarios, basta con un par de cables, una resistencia y una librería en nuestro código de Arduino.

💡
En calidad de Afiliado de Amazon, obtengo ingresos por las compras adscritas que cumplen los requisitos aplicables
AZDelivery 5 x TTP223B Módulo de Conmutador Capacitivo
Sensor táctil digital AZ-Delivery
Módulos específicos para la misma función.

En este artículo vamos a explorar como añadir un sensor capacitivo, de tacto, a tu Arduino sin necesidad de utilizar un módulo ni un sensor dedicado, únicamente con la librería capacitiveSensor.

¿Cómo funciona un sensor de tacto?

Un sensor de tacto capacitivo funciona como un circuito RC (es decir con condensador y resistencia), sencillo, con una diferencia ingeniosa, solo usamos la mitad de un condensador, es decir, conectamos algo parecido a una placa o antena en lugar del condensador.

¡La otra mitad de la antena serás tú! Al acercarte al circuito, cambiaras su capacitancia al actuar de condensador junto con la antena del circuito, por lo que cambiarás la respuesta temporal de unas señales periódicas que estará enviando el Arduino.

Sensor capacitivo.
Tu dedo hace de condensador con el circuito.

El Arduino es capaz de notar estos cambios en la respuesta y esto nos permite saber si alguien está tocando la antena o incluso a que distancia se encuentra, si primeramente calibramos el sensor.

Esquemático

El esquemático es muy sencillo, tal y como prometía al principio. Únicamente necesitamos conectar 2 pines del Arduino a una antena, algo conductivo, puede ser una placa de metal, papel de aluminio, un clip, etc. Pero recordando introducir una resistencia entre uno de los pines y el punto de conexión.

Conectamos los pines 2 y 12 a la antena, con una resistencia entre el pin 12 y el punto de conexión con el pin 2.

Para nuestro caso, hemos elegido utilizar los pines 2 y 12 del Arduino y una resistencia de 5.2MΩ (cuanto más elevada, más sensible será el sensor).

Código

Ver en Github

Una vez montado el circuito, vamos a examinar el código que hace que podamos detectar presencia. Como siempre, recuerda que el código está subido a nuestro repositorio, que puedes visitar haciendo clic en el enlace en la parte superior de esta sección o en este hipervínculo.

Lo primero que haremos es invocar la librería que usaremos para la detección capacitiva, CapacitiveSensor.h, y definimos un umbral a partir del cual daremos por válida una detección (el valor subirá con la distancia del dedo a la antena) y creamos un objeto de sensor, con dos pines, uno sin resistencia (2) y el otro con (12):

#include "CapacitiveSensor.h"

const long umbral=400;
CapacitiveSensor capSensor(2,12);
Ajusta el umbral según tus experimentos después.

En cuanto al setup, simplemente incializamos el puerto serie las siguientes líneas de código:

void setup() {
  Serial.begin(9600);
}
Setup del programa

Por fin llegamos al bucle principal. Aquí empezamos leyendo el valor de nuestra antena con el método capacitiveSensor(x), donde x es la cantidad de muestras que tomará antes de devolvernos un valor.

Este valor lo mostraremos en el monitor del puerto serie y además lo compararemos con nuestro umbral de activación. De esta manera, podemos ejecutar el código, ver que valores estamos recibiendo y modificar el umbral de activación tal que se active cuando lo consideremos apropiado:

void loop() {
  long valor=capSensor.capacitiveSensor(50);
  Serial.print("Valor: ");
  Serial.print(valor);
  Serial.print("; Activación: ");
  Serial.println(valor>umbral);
}
Loop del programa.

Finalmente, podemos ver el código completo a continuación:

#include "CapacitiveSensor.h"

const long umbral=400;
CapacitiveSensor capSensor(2,12);

void setup() {
  Serial.begin(9600);
  capSensor.set_CS_AutocaL_Millis(0xFFFFFFFF);
}

void loop() {
  long valor=capSensor.capacitiveSensor(50);
  Serial.print("Valor: ");
  Serial.print(valor);
  Serial.print("; Activación: ");
  Serial.println(valor>umbral);
}
Programa entero, es bastante compacto.
💡
¡Recuerda instalar la librería de CapacitiveSensor.h desde el administrador de librerías de Arduino!

Conclusiones

¡Ahora ya puedes añadir sensado de contacto o proximidad a tus proyectos! Ten en cuenta que se trata de un sistema mucho menos fiable que un simple botón, ya que puede activarse por cercanía a objetos que hagan de condensador y además el valor de activación puede variar según el entorno, por lo que son ideales para aplicaciones en las que tengas un buen control del entorno de trabajo.

Aún con estas limitaciones, se trata de un método de sensado muy interesante, sobre todo por su diseño ingenioso, de bajo coste y por las posibilidades que ofrece, ¡por lo que recomiendo encarecidamente que experimentes con ello!

Si necesitas esta funcionalidad con más precisión, recuerda que puedes comprar módulos para Arduino diseñados específicamente para esto.


Si estás buscando una alternativa económica a Arduino, sobre todo si es la segunda o tercera placa, recomiendo las alternativas económicas de Elegoo que puedes encontrar en Amazon, tal y como explico en mi guía de compras:

Elegoo compatible Arduino UNO

Ver en Amazon

Etiquetas