Sensor táctil capacitivo

Descrición:

[Sensor capacitivo comercial]
Un sensor táctil capacitivo ten o mesmo comportamento que un pulsador, pero pode ser activado con moi pouca presión ou a moi pouca distancia (a 1-5mm do sensor). Iso faino interesante para algunhas aplicacións, por exemplo para colocar o sensor debaixo de materiais non condutores coma o plástico, papel ou cristal, sempre e cando teñan pouco grosor.

O seu funcionamento baséase na medición da variación da capacitancia. Ao achegarse ou poñerse en contacto o sensor e un dedo prodúcese unha acumulación de carga eléctrica que pode ser detectada, xerando un sinal dixital cando supera certo valor. O sensor e o corpo humano actúan coma un condensador.

Podes adquirir un sensor táctil capacitivo comercial por moi pouco prezo, e tamén hai a posibilidade de fabricarte un ti mesmo con papel de aluminio, cartolina, cable e  unha resistencia de 100 KΩ ou máis.

[Sensor capacitivo caseiro]

Montaxe:

1. Sensor comercial

  • Alimentación: Vcc a 5V e GND a GND
  • Datos: SIG nun pin dixital de arduino (D9 neste exemplo)

2. Sensor caseiro

  • Papel de aluminio
  • Cartolina
  • 1 cable dupont
  • pegamento de barra e cinta illante
  • Unha resistencia de 1 MΩ ou máis

Fabrica o sensor pegando un pouco de papel de aluminio sobre un anaco de cartolina. Pela un cable dupont por un lado e pono en contacto co papel de aluminio e suxéitao cun pouco de cinta illante.

Despois conecta a resistencia entre dous pins dixitais. Neste exemplo eliximos os pins 2 e 4. O cable do sensor irá conectado no pin 2, tal e como aparece na imaxe.

Canto máis alto sexa o valor da resistencia, máis capaz será o sensor de detectar un obxecto a distancia (por exemplo, 10MΩ). Se non precisas moita sensibilidade podes usar unha resistencia de 100kΩ)

Sensor capacitivo caseiro
[Sensor capacitivo caseiro. tecnoloxia.org]

Programa:

1. Sensor comercial

Prográmase da mesma maneira que un pulsador. No seguinte exemplo imos acender un LED conectado no pin 13 xunto cunha resistencia de 220Ω (para facer a proba tamén pode valer o propio LED da placa arduino).

// Declaración de variables:
 
const int led = 13;        // Pin 13 asignado a un LED
const int sensor = 2;    // Pin 2 asignado ao sensor táctil
int estado = 0;            // Variable na que apuntamos o estado do sensor
 
// Configuración:
 
void setup(){
  pinMode(led, OUTPUT);      // Configuramos o LED como saída
}
 
// Programa:
 
void loop() {
  estado=digitalRead(sensor);  // Lemos o estado do pulsador (0 ou 1) e gardámolo na variable "estado"
  digitalWrite(led,estado);    // Transmitimos ese valor ao LED
}

2. Sensor caseiro

Temos que incluír a librería CapacitiveSensor. Búscaa no repositorio. O primeiro que imos facer é visualizar na consola os valores que dá o sensor cando prememos e cando non. Tendo en conta eses valores lidos establecemos o valor “rango”, a partir do cal imos ordenar que se acenda o led conectado no pin 13. (O que visualizamos na consola é un valor promedio das lecturas do sensor)

//Librerías

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


//Parámetros

bool autocal  = 0;
const int numReadings  = 20;
long readings [numReadings];
int readIndex  = 0;
long total  = 0;
const int sensitivity  = 1000;    // Sensibilidade
const int thresh  = 200;
const int csStep  = 10000;

int led = 13;

int rango= 70;       // Axustar este rango segundo a lectura na consola

CapacitiveSensor cs  = CapacitiveSensor(4, 2);  // Sensor conectado no pin 2


// Configuración

void setup() {
  
  Serial.begin(9600);
  Serial.println(F("Iniciando o sensor"));

  if (autocal == 0) {
      cs.set_CS_AutocaL_Millis(0xFFFFFFFF);
  }
  promedio();

  pinMode(led,OUTPUT);
}


// LOOP

void loop() {
  
  Serial.println(promedio());     // obtemos a lectura do sensor coa función promedio()

  if(promedio() > rango){
      digitalWrite(led,HIGH);
  }
  else {
      digitalWrite(13,LOW);
  }
  delay(10);
  
}


// Función promedio 

long promedio() { 
  
  long media;                             // Realiza a media das lecturas do sensor
  total = total - readings[readIndex];    // restamos a última lectura
  readings[readIndex] = cs.capacitiveSensor(sensitivity);   // lectura do sensor
  total = total + readings[readIndex];    // engadimo o valor ao total
  
  readIndex = readIndex + 1;              // índice
  if (readIndex >= numReadings) {
    readIndex = 0;
  }
  
  media = total/numReadings;              // calculamos a media

  return media;
  
}

Propostas:

  • Fai probas para determinar a que distancia mínima somos capaces de activar o sensor táctil.
  • Proba cubrir o sensor con diferentes materiais non condutores de pouco espesor e verifica se somos capaces de acender o LED con cada un deles.