Sensores capacitivos con arandelas

Sensores capacitivos con arandelas y Arduino

Arduino tiene activa la salida del pin D5 que da voltaje a las dos arandelas a través de dos resistencias de 6,8 MOhms y detecta el voltaje recibido por los pin D4 y D6 cuando se acerca el dedo a las arandelas. Los pin D4 y D6 están protegidos por una resistencias de 1 KOhm para proteger de los picos de la electricidad estática.

Al pulsar o acercar el dedo a las arandelas, debido a la electricidad estática del cuerpo, en los pin D4 y D6 se recibe la variación de voltaje.

Se puede usar cualquier otro metal que no sean arandelas.

Las resistencias de 6,8 MOhms se pueden sustituir por otros valores entre 100.000 Ohms y 10.000.000 Ohms. Cuanto mayor sea la resistencia se aumenta la sensibilidad y se hace más lenta la detección.

Vídeo del funcionamiento de este montaje (Archivo MP4. Tamaño: 3,2 MB)

Este montaje se ha realizado en base al descrito en la página PJRC de Paul Badger:
https://www.pjrc.com/teensy/td_libs_CapacitiveSensor.html

Para probar el funcionamiento de este sensor se ha utilizado el Arduino Nano y el mismo programa de ejemplo que ofrece esa página web con alguna ligera modificación en cuanto a los pins del Arduino que se utilizan y que se usan solo 2 sensores.

#include 

/*
 * CapitiveSense Library Demo Sketch
 * Paul Badger 2008
 * Uses a high value resistor e.g. 10M between send pin and receive pin
 * Resistor effects sensitivity, experiment with values, 50K - 50M. Larger resistor values yield larger sensor values.
 * Receive pin is the sensor pin - try different amounts of foil/metal on this pin
 */

CapacitiveSensor   cs_5_4 = CapacitiveSensor(5,4);        // 10M resistor between pins 5 & 4, pin 4 is sensor pin, add a wire and or foil if desired
CapacitiveSensor   cs_5_6 = CapacitiveSensor(5,6);        // 10M resistor between pins 5 & 6, pin 6 is sensor pin, add a wire and or foil
// CapacitiveSensor   cs_5_8 = CapacitiveSensor(5,8);        // 10M resistor between pins 5 & 8, pin 8 is sensor pin, add a wire and or foil

#define LED1_PIN 9
#define LED2_PIN 10

void setup()                    
{
  pinMode(LED1_PIN, OUTPUT);    
  pinMode(LED2_PIN, OUTPUT);    
   //cs_4_2.set_CS_AutocaL_Millis(0xFFFFFFFF);     // turn off autocalibrate on channel 1 - just as an example
   //cs_4_6.set_CS_AutocaL_Millis(0xFFFFFFFF);     // turn off autocalibrate on channel 1 - just as an example
   Serial.begin(115200);
}

void loop()                    
{
    long start = millis();
    long total1 =  cs_5_4.capacitiveSensor(30);
    long total2 =  cs_5_6.capacitiveSensor(30);
    // long total3 =  cs_5_8.capacitiveSensor(30);

    Serial.print(millis() - start);        // check on performance in milliseconds
    Serial.print("\t");                    // tab character for debug windown spacing

    Serial.print(total1);                  // print sensor output 1
    Serial.print("\t");
    Serial.println(total2);                  // print sensor output 2
    // Serial.print("\t");
    // Serial.println(total3);                // print sensor output 3


    if (total1 > 200) {
      digitalWrite(LED1_PIN, HIGH);
    } else {
      digitalWrite(LED1_PIN, LOW);
    }

    if (total2 > 200) {
      digitalWrite(LED2_PIN, HIGH);
    } else {
      digitalWrite(LED2_PIN, LOW);
    }

    delay(10);                             // arbitrary delay to limit data to serial port 
}

Pulsa aquí para descargar el código "sensores-capacitivos-con-arandelas.ino"