-
Este programa es un disparador, que activa una salida lógica si detecta un cambio de tensión en su entrada analógica, dentro de un rango establecido por el usuario.
-
Las aplicaciones pueden ser por ejemplo, como detector en alguna aplicación que use un sensor que pueda producir variaciones de tensión.
-
El circuito de ejemplo usa una resistencia fotoeléctrica (LDR) para hacer un detector de presencia o de movimiento, de los del tipo PIR.
-
NOTA: ESTE DETECTOR ACTIVA EL LED SI LA VARIACIÓN DE TENSIÓN SUPERA UN DETERMINADO RANGO CON RESPECTO A LA ÚLTIMA VEZ QUE SE ACTIVO.
/*
- Este programa es un disparador, que activa una salida lógica si detecta un cambio de tensión en su entrada analógica, dentro de un rango establecido por el usuario.
- Las aplicaciones pueden ser por ejemplo, como detector en alguna aplicación que use un sensor que pueda producir variaciones de tensión.
- El circuito de ejemplo usa una resistencia fotoeléctrica (LDR) para hacer un detector de presencia o de movimiento, de los del tipo PIR.
CONEXIONADO.
CONECTAR LA LDR AL TERMINAL POSITIVO
CONECTAR UNA RESISTENCIA DE 33k EN SERIE CON LA RESISTENCIA FOTOELÉCTRICA (LDR) Y CONECTAR EL EXTREMO LIBRE A MASA.
CONECTAR LA ENTRADA ANALÓGICA "CERO" DEL ARDUINO ENTRE LA RESISTENCIA LDR Y LA RESISTENCIA DE 33k. ES DECIR, ENTRE LOS DOS COMPONENTES.
CONECTAR UN EL ÁNODO DE UN DIODO LED AL TERMINA DIGITAL 2
CONECTAR EL CÁTODO DEL DIODO LED A UNA RESISTENCIA DE 220 OHMIOS Y LA RESISTENCIA A MASA.
FUNCIONAMIENTO
EL LED SE ENCENDERÁ SI LA VARIACIÓN DE TENSIÓN DETECTADA POR LA ENTRADA ANALÓGICA 0 DEL ARDUINO SUPERA UN DETERMINADO RANGO, ESTABLECIDO POR LA CONSTANTE.
Si pasamos la mano frente a la resistencia LDR el LED se encenderá, por la variación de tensión detectada por el arduino en su entrada.
Si al LDR lo colocamos en el interior de un capuchón de un bolígrafo BIC (de esos que tienen un agujero), usaremos el capuchón como cámara oscura rudimentaria, que permitirá a la LDR detectar el movimiento a distancias mayores.
ESTE CIRCUITO A SIDO PROBADO Y FUNCIONA CORRECTAMENTE
EL USUARIO TENDRÁ QUE AJUSTAR LA SENSIBILIDAD DEL DISPOSITIVO, CAMBIANDO EL VALOR DE LA VARIABLE LLAMADA RANGO QUE POR DEFECTO ESTÁN EN 5, PUDIENDO SE PONER ENTRE 1 (MÁXIMA SENSIBILIDAD) O VALORES MAYORES, QUE DEPENDERÁN DE LA TENSIÓN DE ENTRADA Y LAS VARIACIONES.
AUTOR: Mario R.P - mariorp@terra.es - 13-6-2012
*/
const long rango=5; // este es el rango por el que se disparará la salida 2 y pasa a estado lógico 1
const long tiempo=1000; // tiempo que permanecerá activa la salida 2 en caso de pasar a estado lógico 1
long ultimamedicion; // contiene el valor de la última medición que disparó a lógico 1, la salida 2
void setup() {
Serial.begin(9600);
pinMode(A0, INPUT);
pinMode(2, OUTPUT);
}
void loop() {
long sensorValue = analogRead(A0);
if (sensorValue >= ( ultimamedicion+rango)) // La salida 2 pasa a 1 lógico si la tensión medida en la entrada analógica 0 es mayor que la anterior lectura + la tensión de RANGO
{
digitalWrite(2, HIGH);
ultimamedicion = sensorValue;
delay(tiempo);
}
else // La salida 2 pasa a 0 si la tensión medida en la entrada analógica 0 no es mayor
{
digitalWrite(2, LOW);
}
if (sensorValue <= ( ultimamedicion-rango)) // La salida 2 pasa a 1 lógico si la tensión medida en la entrada analógica 0 es menor que la anterior lectura - la tensión de RANGO
{
digitalWrite(2, HIGH);
ultimamedicion = sensorValue;
delay(tiempo);
}
else
{
digitalWrite(2, LOW);
}
// Serial.println(sensorValue); // Por si quieres ver por el puerto serie las lecturas tomadas
// Serial.println(ultimamedicion); // Por si quieres ver por el puerto serie las lecturas tomadas
}