0 évaluation0% ont trouvé ce document utile (0 vote)
60 vues11 pages
Este documento presenta un tutorial sobre cómo usar un sensor LDR (fotorresistencia) con Arduino para simular un sistema de iluminación de 5 niveles. Se explica el hardware necesario, incluyendo el LDR, LEDs, resistencias y un potenciómetro. El circuito usa el LDR como divisor de tensión para medir la luz e incrementar progresivamente los LEDs a medida que disminuye la luz, y el potenciómetro ajusta el umbral. El código de Arduino lee el LDR, compara el valor y enciende los LEDs seg
Este documento presenta un tutorial sobre cómo usar un sensor LDR (fotorresistencia) con Arduino para simular un sistema de iluminación de 5 niveles. Se explica el hardware necesario, incluyendo el LDR, LEDs, resistencias y un potenciómetro. El circuito usa el LDR como divisor de tensión para medir la luz e incrementar progresivamente los LEDs a medida que disminuye la luz, y el potenciómetro ajusta el umbral. El código de Arduino lee el LDR, compara el valor y enciende los LEDs seg
Este documento presenta un tutorial sobre cómo usar un sensor LDR (fotorresistencia) con Arduino para simular un sistema de iluminación de 5 niveles. Se explica el hardware necesario, incluyendo el LDR, LEDs, resistencias y un potenciómetro. El circuito usa el LDR como divisor de tensión para medir la luz e incrementar progresivamente los LEDs a medida que disminuye la luz, y el potenciómetro ajusta el umbral. El código de Arduino lee el LDR, compara el valor y enciende los LEDs seg
Bienvenidos a un nuevo tutorial para sacar el mximo partido a vuestro Arduino,
comenzamos a introducir en nuestros proyectos sensores que respondern a situaciones fsicas concretas, empecemos por el LDR!! Nivel: Bsico Coste: < 30 Tiempo: 25
Parte 1: Qu vamos a hacer?
En este proyecto, vamos a utilizar un LDR (Light Dependent Resistor o resistencia dependiente de la luz) para simular una hipottica compensacin lumnica de 5 niveles, es decir, a travs de una resistencia que varia su valor dependiendo de la luz recibida, aprovecharemos dicha variacin para hacer un programa que nos encienda o apague una serie de LED dependiendo de si hay ms luz o menos luz, esto podramos extrapolarlo a un sistema de regulacin de luz de un jardn con cinco lineas de luz que se vayan encendiendo segn va cayendo la noche compensando progresivamente la deficiencia de luz. Adems le hemos implementado un potencimetro para ajustar el nivel crtico mnimo de luz que queremos soportar, a partir del cual se activar nuestro circuito y empezar a aumentar la luz del lugar progresivamente. Veamos un video con el resultado final!
Material necesario para este proyecto: 1 x Arduino Uno 1 x Protoboard 1 x LDR 1 x Potencimetro 10k 5 x Diodos LED 5 x Resistencias 220 1 x Resistencia 1K 1 x Juego de Cables
Parte 2: Diseando el hardware
En este proyecto lo que queremos conseguir es que, a partir de una resistencia que vara su valor hmico en funcin de que haya ms o menos luz, controlar 5 salidas de nuestro Arduino, a las que podramos conectar lneas de iluminacin para un jardn por ejemplo, de manera que segn va anocheciendo, nuestra iluminacin artificial va aumentando. Adems, vamos a colocar un potencimetro para regular el umbral de luz mnima, a partir del cual, comenzar a funcionar nuestro circuito de luz artificial para que sea adaptable a cualquier entorno. Dividamos el circuito en tres partes: Salidas LDR Regulador
Para las salidas, ya hemos aprendido en otros tutoriales como conectar unos diodos LED y como calcular su resistencia ptima. En cuanto al LDR, es nuevo para nosotros, en breve tendris disponible un tutorial sobre este componente, as que de momento nos vamos a quedar en que funciona como una resistencia variable de manera que, cuanta ms cantidad de luz reciba, menor ser su resistencia, para que quede claro, si en un potencimetro varibamos la resistencia deslizando un patn por la pista de material resistivo, aqu lo har la cantidad de luz que reciba la foto-resistencia. Qu podemos deducir con esto? Que si aadimos una resistencia ms, podemos utilizar el LDR para hacer el ya conocido divisor de tensin de donde sacaremos la seal para conectar a nuestra entrada analgica de Arduino. Podemos conectarlo de dos maneras diferentes:
Si utilizamos el LDR como resistencia inferior del divisor de tensin, nos dar la tensin mxima cuando tengamos el LDR en plena oscuridad, ya que estar oponiendo el mximo de su resistencia al paso de la corriente derivndose esta por Vout al completo, si lo utilizamos como resistencia superior, el resultado ser el inverso, tendremos la tensin mxima cuando est completamente iluminado, ya que se comportar prcticamente como un cortocircuito, con una resistencia de 50 o 100. En este caso lo hemos utilizado como resistencia superior, de manera que cuanta ms luz haya, ms tensin tendremos a la entrada de nuestra entrada analgica pudiendo ajustar as, de una manera muy intuitiva, la tensin de referencia que ahora explicar. Como tercera parte del circuito, hemos colocado un potencimetro configurado como divisor de tensin para hacer las funciones de regulacin del rango de iluminacin a partir del cual se activar nuestro circuito de iluminacin. Como hemos conseguido esto? Primero hay que pensar un par de cosas, nuestra foto-resistencia configurada como divisor resistivo, nos va a dar 0v cuando este COMPLETAMENTE a oscuras, y +5v cuando est COMPLETAMENTE iluminada, situaciones que pueden ser difciles de conseguir dependiendo del entorno en el que trabajemos, y por otra parte, ese rango de 0v a 5v habr que dividirlo en 1024 pasos que va a leer nuestro Arduino, pero quizs solo vayamos a trabajar en 500 o 600 pasos, desperdiciando mucha resolucin. Para solucionar esto, adems de evitar cambiar el programa de Arduino cada vez que lo cambiemos de entorno, he decido usa una funcin que nos proporciona Arduino muy internaste, el pin Aref Qu es el pin AREF? Cuando Arduino toma una seal analgica y la convierte a digital en 1024 cachitos, lo hace por defecto pensando que la seal que va a recibir puede variar entre 0v y 5v lo que nos da aproximadamente un valor por cada 4,88 mV, pero nosotros podemos decirle que no, que realmente va a trabajar entre 0v y 3v, obteniendo as 1024 cachitos distribuidos entre 0v y 3v, lo que nos da un valor por cada 2,9 mV, es decir una resolucin mucho mayor. Debemos tener en cuenta que este pin lleva internamente una resitencia de 32K para evitar daar el chip, de manera que si vamos a conectar el pin mediante una resistencia fija, se va a producir un nuevo divisor de tensin, con lo que habr que calcular la resistencia adecuada para la tensin exacta que queremos introducir mediante una sencilla frmula:
Donde: Vin = Tensin que introducimos a Vref Rinterna = Resistencia interna de Arduino de 32K Rexterna = Resistencia mediante la cual alimentamos Vref Vrefencia = La tensin sobre que tomar referencia nuestro programa.
De manera que si por ejemplo, estamos introduciendo una tensin de +3v a travs de una resistencia de 5K, la tensin real de referencia en nuestro Arduino ser de: (32000/(32000+5000)) x 3 = 2,59v Porqu evita cambiar el programa continuamente? Por que variando la seal de referencia, le estamos diciendo que nos tome 1024 valores entre 0v una determinada tensin mxima, y el reparto de esos valores ya los hemos fijado equitativamente en nuestro programa para que haga una activacin progresiva de las lneas de iluminacin, por tanto, aunque tengamos un rango muy bajo de iluminacin con el que jugar, de 1v por ejemplo, nos va a distribuir siempre proporcionalmente la activacin de las salidas. Esa tensin de referencia, ser el punto de iluminacin a partir del cual, si decrece la luz ambiente, empezar a decrecer los valores obtenidos en la seal analgica de entrada. Si ponemos esa referencia muy baja, empezar a funcionar los led con menos luz ambiente que si ponemos una seal muy alta, recordemos: Ms luz = Menos Resistencia = Mayor Vout Menos luz = Mayor resistencia = Menor Vout Veamos el esquema elctrico del circuito al completo:
Y aqu un a posible distribucin del circuito en vuestra protoboard:
Parte 3: Programando Este programa es algo ms largo que los anteriores, pero desgranndolo poco a poco seguro que seremos capaces de entenderlo. Primero veamos el cdigo al completo: ? 1 2 3 4 5 6 7 8 9 10 /* Tutorial # 0004 Arduino Academy - Sensor LDR
Conectamos una foto-resistencia a la entrada analgica para controlar cinco salidas en funcin de la luz ambiente.
//Decimos que pines vamos a utilizar para LED int pinLed1 = 12; int pinLed2 = 11; int pinLed3 = 10; int pinLed4 = 9; int pinLed5 = 8;
//Y que pin para la LDR int pinLDR = 0;
void setup() { //Establecemos como salida los pines para LED pinMode(pinLed1, OUTPUT); pinMode(pinLed2, OUTPUT); pinMode(pinLed3, OUTPUT); pinMode(pinLed4, OUTPUT); pinMode(pinLed5, OUTPUT);
//Le decimos que vamos a usar una referencia externa analogReference(EXTERNAL);
}
void loop() { //Guardamos el valor leido en una variable valorLDR = analogRead(pinLDR);
} ? 1 En este programa os tiene que resultar casi todo conocido de los anteriores proyectos, si no, os recomiendo echar un vistazo alos anteriores tutoriales Arduino que tenemos en la despensa. La instruccin que no hemos visto nunca es la siguiente: ? 1 analogReference(EXTERNAL); Con esta instruccin le estamos diciendo a nuestro Arduino, que no use su tensin de referencia por defecto (+5v) sino la que nosotros introduzcamos por el pin AREF de nuestra placa, como explicamos en la seccin de hardware. A continuacin podemos ver que en el loop, lo primero que hacemos es almacenar la lectura de la entrada analgica en una variable para luego, dependiendo de los datos obtenidos, hacer una cosa u otra. ? 1 valorLDR = analogRead(pinLDR); Y una vez obtenida la lectura empezamos la discriminacin mediante sentencias if.. if else.. else.. Utilizamos if else para aadir varias condiciones seguidas, y un ltimo else para cerrar las condiciones. En el siguiente diagrama de flujo de programa podemos ver como actuar Arduino a nuestras comparaciones:
Podramos haber acortado alguna lnea de programa con un par de cambios, pero creo que de esta manera se entiende mejor dado que estamos empezando, ya habr tiempo de complicar el tema!