Icono del sitio AranaCorp

Creando un sensor capacitivo con Arduino

Los sensores capacitivos se utilizan comúnmente para la detección de objetos. Pueden utilizarse, por ejemplo, para detectar el paso de un objeto en una cinta transportadora o para detectar el nivel de un líquido en un tanque. Más cerca de casa, los sensores capacitivos se usan en pantallas táctiles o como interruptores. En este tutorial veremos cómo crear un sensor capacitivo utilizando un simple conductor y un microcontrolador.

Hardware

Principio de funcionamiento

Un sensor capacitivo funciona como una antena que genera un campo eléctrico. Cuando un material se acerca a la antena, cambiará la capacidad de este campo. El microcontrolador detecta esta diferencia y puede determinar la proximidad del objeto. Con esta tecnología, es posible transformar cualquier objeto conductor en un sensor.

Esquema

Para crear un sensor táctil en un tablero de Arduino. Necesitará una resistencia y un cable y/o pintura conductora. La resistencia conecta la clavija de medición con la clavija de referencia y el cable va desde la clavija de medición a una hoja de papel de aluminio, pintura conductora o similar. El valor de la resistencia definirá la sensibilidad del sensor. Cuanto más alto sea el valor de la resistencia, más capaz será el sensor de detectar un objeto a distancia. Usamos una resistencia de 1MOhm pero puede elegir la más adecuada para su aplicación entre 500k y 40Mohm.

Hay microcontroladores como el NodeMCU (ESP8266 o ESP32) con sensores táctiles integrados. En este caso, un solo conductor conectado a la clavija es suficiente para crear un sensor capacitivo.

Código

Para usar el objeto Capacitivo usamos la biblioteca CapacitiveSensor.h. Para inicializar el sensor, tenemos que especificar los pines utilizados (aquí, 2 y 3). Es posible ajustar la sensibilidad del sensor durante la función de llamada cs.capacitiveSensor(sensitivity). Para tener más control sobre la precisión del sensor, usamos un promedio móvil gestionado por la función smooth() para filtrar las mediciones del sensor.

//Libraries
#include <CapacitiveSensor.h>//https://github.com/PaulStoffregen/CapacitiveSensor

//Parameters
bool autocal  = 0;
const int numReadings  = 10;
long readings [numReadings];
int readIndex  = 0;
long total  = 0;
const int sensitivity  = 1000;
const int thresh  = 200;
const int csStep  = 10000;
CapacitiveSensor cs  = CapacitiveSensor(2, 3);

void setup() {
  //Init Serial USB
  Serial.begin(9600);
  Serial.println(F("Initialize System"));
  //Init cs
  if (autocal == 0) {
    {
      cs.set_CS_AutocaL_Millis(0xFFFFFFFF);
    }
  }
}

void loop() {
  Serial.println(smooth());
}

long smooth() { /* function smooth */
  ////Perform average on sensor readings
  long average;
  // subtract the last reading:
  total = total - readings[readIndex];
  // read the sensor:
  readings[readIndex] = cs.capacitiveSensor(sensitivity);
  // add value to total:
  total = total + readings[readIndex];
  // handle index
  readIndex = readIndex + 1;
  if (readIndex >= numReadings) {
    readIndex = 0;
  }
  // calculate the average:
  average = total / numReadings;

  return average;
}

Aplicaciones

Fuentes

Encuentre otros tutoriales y ejemplos en el generador de código automático
Arquitecto de Código

Salir de la versión móvil