Arduino – Capítulo 15 – Lámpara táctil

Lámpara táctil. Creo que el título de este capítulo lo dice todo.

En este capítulo vamos a construir una lámpara que se enciende y se apaga en función de que toquemos con la mano una lámina de material conductor. Para realizar esto vamos a usar la librería CapacitiveSensor, creada por Paul Badger. Dicha librería nos proporcionará el código necesario para que podamos medir la capacidad eléctrica de nuestro cuerpo.

La capacidad eléctrica es la propiedad que tienen los cuerpos para mantener una carga eléctrica. La librería que vamos a utilizar en este proyecto, comprueba dos pins en nuestro Arduino (uno emisor y otro receptor), midiendo el tiempo que tardan ambos en alcanzar el mismo estado. Estos pins los conectaremos a un objeto metálico, como por ejemplo un trozo de papel de aluminio. Al tocar la lámina metálica, nuestro cuerpo absorberá parte de la carga eléctrica, provocando que ambos pines tarden más tiempo en tener el mismo estado.

Para instalar la nueva librería debemos seguir los siguientes pasos:

1 – Descargamos la versión más reciente desde la siguiente url: arduino.cc/capacitive y la descomprimimos.

2 – Abrimos la carpeta sketchbook de nuestro Arduino, la cual, se encuentra por defecto en nuestra carpeta de documentos.

3 – Creamos un nuevo directorio llamado “libraries” y metemos dentro la carpeta descomprimida con anterioridad.

4 – Reiniciamos el IDE de Arduino.

5 – Una vez reiniciado, hacemos clic en File > Examples, en donde veremos la opción “CapacitiveSensor”.

6 – La librería que hemos añadido contiene un proyecto de ejemplo llamado CapacitiveSensorSketch. Lo abrimos y lo compilamos. Si no nos aparece ningún error, es que la librería se ha instalado con éxito.

 

Montando el circuito

Para montar el circuito de este proyecto necesitamos los siguientes componentes:

– 1 Led rojo.

– 1 Resistencia de 220Ω.

– 1 Resistencia de 1MΩ.

– Una lámina de material conductor. Por ejemplo, un trozo de papel de aluminio.

Una vez tenemos los componentes necesarios, debemos seguir los pasos siguientes:

1 – Conectamos el ánodo del led al pin 12 del Arduino y cátodo a tierra mediante la resistencia de 220Ω.

2 – A continuación, conectamos los pines 2 y 4 a la protoboard.

3 – Seguidamente, unimos ambos pines mediante la resistencia de 1MΩ.

4 – Ahora cogemos un cable que tenga un mínimo de entre 8 y 10cm de longitud y lo unimos al mismo punto de la protoboard en donde hemos conectado el pin 2. Al otro lado del cable no conectaremos nada, lo dejamos al aire, ya que será donde coloquemos el sensor táctil.

5 – Para finalizar, tengamos en cuenta que no es necesario conectar la alimentación de 5V a la protoboard, ya que el pin digital 4 proporcionará la corriente necesaria al sensor.

Terminado de montar el circuito, deberíamos de tener algo parecido al mostrado en la siguiente figura.

Diseño de protoboard

El esquema eléctrico correspondiente sería:

Esquema de conexiones

El código

Comencemos por comentar paso a paso el código fuente con el que vamos a programar nuestro Arduino.

Lo primero que vamos a hacer en el programa es importar la librería CapacitiveSensor y crear una instancia de la misma. Seguidamente, le decimos a dicha instancia que pines vamos a utilizar para enviar y recibir información. En nuestro caso, el pin 4 es el emisor y el número 2 es el receptor.

#include <CapacitiveSensor.h>
CapacitiveSensor capSensor = CapacitiveSensor(4,2);

Creamos una variable para almacenar el valor del umbral al que se encenderá la lámpara. Más adelante, cuando empecemos a probar la lámpara, tendremos que ajustar dicho valor. A continuación, definimos el pin correspondiente al led.

int threshold = 1000;
const int ledPin = 12;

Dentro de la función setup(), abrimos una conexión serie de 9600bps, la cual, usaremos para ver los valores que lee el sensor. También estableceremos la variable ledPin como salida.

void setup() {

    Serial.begin(9600);
    pinMode(ledPin, OUTPUT);

}//Fin de la funcion setup.

Lo primero que haremos en la función loop() es crear una variable de tipo long que almacene el valor del sensor. La librería devuelve el valor del sensor utilizando un comando llamado capacitiveSensor(), el cual recibe como argumento el número de muestras que queremos leer. Si solo leemos unas pocas muestras, es posible que veamos mucha variación en el sensor. Si leemos diversas muestras, podemos introducir un retraso para poder leer el sensor múltiples veces. Para empezar, 30 muestras es un buen número. Finalmente, mostraremos el valor del sensor por el monitor serie.

void loop() {

    long sensorValue = capSensor.capacitiveSensor(30);
    Serial.println(sensorValue);

Mediante una sentencia if() …else, comprobaremos si el valor del sensor es mayor que el umbral establecido. Si se cumple dicha condición, encenderemos el led. De lo contrario, lo apagaremos.

    if(sensorValue > threshold) {
        digitalWrite(ledPin, HIGH);
    }
    else {
        digitalWrite(ledPin, LOW);
    }

Para finalizar, añadiremos un pequeño delay() antes de acabar la función loop().

    delay(10);

}//Fin de la funcion loop.

 

Puesta en marcha

Tras programar nuestro Arduino, tendremos que averiguar cuales son los valores cuando toquemos el circuito. Abriremos el monitor serie y apuntaremos el valor que nos llega del sensor cuando no lo estamos tocando. Presionemos ligeramente la lámina metálica que tenemos conectada a la protoboard. El valor anterior aumentará. Probemos de presionar con más firmeza y observemos los cambios.

Una vez que hayamos identificado aproximadamente el rango de valores que obtenemos del sensor, volveremos al código fuente y cambiaremos el valor de la variable threshold a un número mayor que el proporcionado por el sensor cuando no lo presionábamos, pero menor que el valor obtenido al presionarlo. Subamos el programa con el nuevo valor. La luz debería de encenderse al tocar la lámina metálica y apagarse al retirar el dedo. Si la luz no se enciende, tendremos que probar a rebajar el umbral un poco más.

Conclusión

En este proyecto hemos aprendido a instalar una librería de un tercero y a utilizar una lámina metálica como sensor de entrada. Pero…, Si nos fijamos bien en los valores que nos proporciona el sensor de entrada, veremos que hay todo un abanico de ellos. ¿Podríamos darle uso a esos otros valores? ¿Tal vez colocar diversos leds de salida que reaccionen en función de los diferentes valores de entrada?

 

 

Espero que os haya gustado.

Un saludo y muchas gracias por leer este artículo.  ^_^

 

Referencias

– Artículo basado en el capítulo “Project 13 – Touchy-Feely Lamp” del libro “Arduino Projects Book” distribuido por Arduino.cc junto con su “The Arduino Starter Kit“.

– Más información acerca de la librería capacitiveSensor: arduino.cc/capacitive

– Wikipedia: Capacidad eléctrica.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s