Sensor Capacitivo

Un sensor capacitivo se compone de una resistencia de valor alto (en este ejemplo 1MOhm) y una pieza de material conductor (papel de aluminio). Puede ser utilizado como un sensor de contacto, bien como un sensor analógico que lea los valores del mismo o como un interruptor digital. El sensor necesita estar conectado a través de una breadboard separada para que la electrónica del shield no interfiera la lectura.

Materiales

  • 1 placa Arduino Uno
  • 1 shield Educativa
  • 1 Breadboard
  • 1 resistencia 1MOhm
  • 3 cables
  • papel de aluminio
  • cinta adhesiva

Instrucciones

  1. Conecta un cable al Pin 2 y un cable al Pin 3.
  2. Conecta una resistencia de 1MOhm entre el Pin 2 y Pin 3.
  3. Conecta el Pin 3 con un cable suelto.
  4. Corta un trozo de papel de aluminio, conéctalo al cable suelto con cinta adhesiva (asegúrate de que las piezas de metal tengan buena conexión).

Para leer los valores del sensor

Carga el ejemplo Archivo -> Ejemplos -> EducationShield>Help>CapacitiveSwitchTest

/*	CapacitiveSwitch Test
*
*	When making use of sensor readings from CapacitiveSwitch,
*	This sketch helps you decide the threshold by showing
*	capacitive values of different materials.
*
*	Just touch the objects you're going to experiment with,
*	take note of the biggest and smallest values. In your
*	project code, use these values to map to your desired
*	outcome.
*
*	It can also be used for adjusting the threshold when using
*	capacitive sensor as a button.
*
*       (c) 2013 Arduino LLC
*/

#include <CapacitiveSensor.h>
#include <Servo.h>
#include <SPI.h>
#include <SD.h>
#include <EducationShield.h>

//The sensor is connected between 2 and 3 by default
CapacitiveSwitch me=CapacitiveSwitch(2,3);

void setup(){
  Serial.begin(9600);
}
void loop(){
  //Print out the value of the sensor
  me.test();
  delay(30);
}

Abre el monitor serial para asegurarte de que el sensor funciona. Lo que verás ahora son los valores leídos desde el sensor capacitivo. Si nada está tocando el sensor, el valor debe ser inferior a 10 la mayor parte del tiempo; y sube hasta 1000 o más si lo pulsas con más fuerza.

¿No funciona?

  1. Si la lectura no es normal, vuelve a comprobar la conexión. Tienes que tener especial cuidado con la conexión entre el papel de aluminio y el cable suelto, pueden perder contacto fácilmente.
  2. Asegúrate de que has conectado el sensor a los mismos terminales digitales indicadas en el código. En CapacitiveSwitch (2,3) es el Pin 2 quien envía y el Pin 3 quien recibe. Esto significa que el extremo que está suelto debe estar conectado al Pin 3.

Nota: Asegúrate de que los dos Pins digitales que utilizas están entre 2 y 8. Al usar la shield Educativa, los Pins digitales, 9, 10, 11, 12 o 13 no sirven para los sensores capacitivos.

Sensor como interruptor

Si quieres utilizar el sensor capacitivo como un interruptor, necesitas medir un valor de umbral. Anota el valor obtenido cuando nada está en contacto con el papel de aluminio y el valor cuando está en contacto con un objeto deseado.

Ahora abre el ejemplo Interruptor capacitivo. Carga el ejemplo Archivo -> Ejemplos -> EducationShield>Help>CapacitiveSwitch

/*	CapacitiveSwitch
*
*	CapacitiveSwitch can be constructed in various ways.
*	Typically a 1 million ohm resistor between sender pin
*	and receiver pin(we use 3 as sender, 2 as receiver
*	here), and conductive material connected to receive
*	pin.
*
*	When you touch the conductive material with hand, or
*	other objects(should be conductive), the sensor will
*	get a different reading.
*
*	The library includes some features for using the
*	capacitive sensor as a button, or get values directly.
*
*       (c) 2013 Arduino LLC
*/

//Always import CapacitiveSensor.h when using CapacitiveSwitch
#include <CapacitiveSensor.h>

#include <Servo.h>
#include <SPI.h>
#include <SD.h>
#include <EducationShield.h>

//The sensor is connected between 2 and 3 by default
CapacitiveSwitch me=CapacitiveSwitch(2,3);

void setup(){
  Serial.begin(9600);

  //Config the sensor, set threshold for the sensor used as
  //button. If sensor reading passes it, it's counted as
  //being pressed/released
  me.config(400);
}
void loop(){
  Serial.println("Please press...");
  //pressed(timeout)
  //	timeout: milliseconds within which the sensor should
  //		be pressed. If pressed within time, the function
  //		returns 1, otherwise 0. If not used, it waits
  //		untill being pressed.
  //
  //Wait until the capacitive sensor is pressed.
  Serial.println(me.pressed());

  delay(1000);

  Serial.println("Please release...");
  //released(timeout)
  //	timeout: same as in pressed(timeout).
  //
  //Wait untill the capacitive sensor is released.
  Serial.println(me.released());

  do{
	//getValue(mininum)
	//	minimum: minimum value that needs to be returned. If
	//		the sensor reading is smaller than minimum, it'll
	//		return 0.
	//
	//Print values bigger than 20. Print 0 otherwise.
	Serial.println(me.getValue(20));
  }while(true);
}

En la configuración de la línea me.config (umbral), sustituye umbral por un número entre los dos valores que anotaste anteriormente. El valor por defecto es 400, en la mayoría de los casos, no tendría que cambiarse a menos que necesites utilizar algo que no fuera el dedo para tocar el sensor.

Abre el monitor serial y sigue las instrucciones mostradas para ver si funciona. Cada vez que ejecutes una instrucción, el monitor serial imprimirá “1″.

Puedes utilizar varios sensores capacitivos para el mismo Arduino. En este caso, el Pin emisor (2 en este caso) puede ser compartido.