Un fotorresistor es un componente electrónico que mide la luz ambiental. Este componente es útil en algunos proyectos, como un seguidor de luz del panel solar o la automatización del hogar para crear una lámpara inteligente que solo se enciende cuando está oscuro o para configurar una alarma con un diodo láser.
Requisito: Dale sentido a su robot
Material
- Computadora
- Arduino UNO
- Cable USB para conectar Arduino a la computadora
- 1x resistencia 10kOhm
- 1x fotorresistencia
Esquema
El fotoresistor, o resistencia dependiente de la luz (LDR), es un componente pasivo. Para medir un cambio de resistencia tenemos que enviar una corriente en el componente entre dos potenciales. Por lo tanto, creamos un puente divisor de voltaje usando fotorresistencia y una resistencia de 10kOhm.
Código
Para mostrar el valor físico del sensor, necesitamos conocer la regla de conversión e implementarla en una función.
/* Photocell reading program */ // Constants #define DELAY 500 // Delay between two measurements in ms #define VIN 5 // V power voltage #define R 10000 //ohm resistance value // Parameters const int sensorPin = A0; // Pin connected to sensor //Variables int sensorVal; // Analog value from the sensor int lux; //Lux value void setup(void) { Serial.begin(9600); } void loop(void) { sensorVal = analogRead(sensorPin); lux=sensorRawToPhys(sensorVal); Serial.print("Raw value from sensor= "); Serial.println(sensorVal); // the analog reading Serial.print("Physical value from sensor = "); Serial.print(lux); // the analog reading Serial.println(" lumen"); // the analog reading delay(DELAY); } int sensorRawToPhys(int raw){ // Conversion rule float Vout = float(raw) * (VIN / float(1023));// Conversion analog to voltage float RLDR = (R * (VIN - Vout))/Vout; // Conversion voltage to resistance int phys=500/(RLDR/1000); // Conversion resitance to lumen return phys; }
Solicitud
Una posible aplicación para un fotorresistor es controlar una lámpara LED dependiendo de la luminosidad de la habitación. Para hacerlo, simplemente necesitamos convertir la señal del sensor en un valor PWM para ordenar el LED.
/* Photocell controlling lamp program */ // Constants #define DELAY 200 // Delay between two measurements in ms #define MIN_RAW 0 // Analog minimum value #define MAX_RAW 500 // Analog maximum value #define MIN_CMD 0 // Digital minimum value #define MAX_CMD 255 // Digital maximum value // Parameters const int sensorPin = A0; // Pin connected to sensor const int ledPin = 3; // Pin connected to sensor //Variables int sensorVal; // Analog value from the sensor int cmd; //Led command value //Main void setup(void) { Serial.begin(9600); pinMode(ledPin,OUTPUT); } void loop(void) { sensorVal = analogRead(sensorPin); cmd=sensorToLed(sensorVal); analogWrite(ledPin,cmd); delay(DELAY); Serial.print("Sensor : "); Serial.println(sensorVal); Serial.print("Command : "); Serial.println(cmd); } //Functions int sensorToLed(int raw){ // The LED shine when the room is dark int val = map(sensorVal, 0, 500, 255, 0); val=max(val,MIN_CMD); val=min(val,MAX_CMD); return val; }
Fuentes
http://www.instructables.com/id/How-to-Use-a-Light-Dependent-Resistor-LDR/
http://www.manuel-esteban.com/arduino-capteur-de-luminosite/
Encuentre otros tutoriales y ejemplos en el generador de código automático
Arquitecto de Código
Hola una prgunta, en la conversion de resistencia lumen por que pusiste los valores de 500 y 1000? Cómo hiciste esa conversión?
el valor 500 corresponde a la conversión de lux a R(en kOhm) lux=500/R y el valor 1000 para pasar de kOhm a Ohm.
BUENA NOCHE, PODRIAMOS MEDIR LA INTENSIDAD QUE LE LLEGA AUN FOTORRESISTOR LDR EN EL DIA DESDE QUE MANECE HASTA QUE ANOCHESE Y POSTERIOR VER LA CAMPA DE RADIACION QUE HUBO EN EL EXTERIOR. ESTO CON EL FIN DE HACER UNA CAMPANA DE RADIACION Y CLARO HACIANDO UN MAPEO DE EL MAXIMO Y MINIMO QUE MANEJA LA LDR CONTRA LA RADIACION DEL EXTERIOR, Y POR ULTIMO QUE VALORES MIDE LA LDR.
SALUDOS Y MUCHISIMAS GRACIAS POR TU APORTE Y TIEMPO.