jueves, 20 de junio de 2013

ARDUINO 004: SENSOR DE LUMINOSIDAD

    Para este ejemplo vamos a utilizar un fototransistor, un diodo led y como no nuestro Arduino UNO. Además de estos componentes vamos a necesitar varias resistencias para que el led y el fototransistor puedan funcionar. 
    Lo que pretendemos hacer en este ejemplo es medir la luminosidad ambiental, mediante el fototransistor y reflejar ese efecto en un diodo led. Es decir, cuando el fototransistor detecte que hay poca luz el diodo led emitirá poca luz mientras que cuando el fototransistor detecte mucha luz el diodo led emitirá más luz.  
     La conexión del fototransistor es la siguiente:
 

     Como podemos observar en el gráfico la luz incidente en el transistor hará que aumente o disminuya la corriente en el emisor del transistor con lo que hará que la tensión en la resistencia R cambie. Si esa tensión la medimos mediante un PIN Analógico-Digital del Arduino ya podemos saber si hay mucha luz, tensión en A0 más cerca de 5V, o hay poca luz, tensión en A0 más cerca de 0V. 
     El montaje que vamos hacer en nuestro arduino es el que se representa en la siguiente imagen:





     El programa para controlar nuestro montaje es:

int pinSensor = A0;   //Entrada para el potenciometro
int ledPin = 6; // selecciona el pin para el LED
void setup() 
{
 pinMode(ledPin, OUTPUT);     
}
void loop()
{
int valor_pot = analogRead(A2); //lee el valor del sensor
int valor_luz = int((float(valor_pot) * 255.0) / 1023.0); 
//marca la luminosidad
analogWrite(ledPin, valor_luz); 
//da el valor del temporizador al led
delay(30); // detiene el programa por un tiempo
} 

     Introducimos lo primero, la selección del Pin del Led (int ledPin = 6),así marcaremos la salida para conectarla al Led. A continuación, pondremos void setup() para inicializar o cargar el programa si no aparece, void setup(), marca error y no podremos realizar el ejercicio. Void loop() lo colocamos seguido a void setup(), el apartado donde se realiza la lógica del programa. Dentro del ejercicio, las operaciones serán variadas, por ejemplo int valor_pot = analogRead(A2), con esta operaciones leeremos el valor del fototransistor, cuanto es el valor que obtenga el sensor se lo marcara al led también. Int valor_luz = int((float(valor_pot) * 255.0) / 1023.0), marca la luminosidad, la operación consiste en que el valor de luz sea el valor del sensor. AnalogWrite(ledPin, valor_luz), esta operación da el valor de luz del sensor al led y así sincronizar las dos partes. Delay(30), detiene el tiempo del programa durante un tiempo ajustado por nosotros, el tiempo puede variar a opinión de cada uno.

    Bueno y si ahora os preguntáis para que puede servir este montaje, es que se utiliza más de lo que creemos, y sólo os tenéis que preguntar que hace vuestro smartphone. Si os fijáis bien veréis que la pantalla se ilumina más cuando hay mucha luz y que se ilumina menos cuando hay poco luz. De esta forma podemos ahorrar batería en un móvil.

    Esperamos que os haya parecido interesante este pequeño montaje. Agur hasta la próxima entrada.

Ander Iñigo G1E