FOTOGRAFÍA                 

Comentarios    

    Construcción de un fotómetro con arduino
      

 


     A menudo nos encontramos que en nuestras antiguas reflex analógicas falla el fotómetro, bien poque su lectura es incorrecta o el fotómetro ha dejado de funcionar por una averia.

     Este sencillo proyecto nos permite contruir con muy pocos materiales un sencillo fotómetro.

     Material:
         - Arduino Nano
         - Servo motor 5V pequeño
         - Célula fotoeléctrica LDR
         - Resistecia de 6K2 oh.
         - Regulador 7805
         - 2 condensadores de 100K
         - Resistencia de 2K oh.
         - 2 resistencias de 470 oh
         - 3 led rojos
         - Un micropulsador
         - Un interruptor pequeño.

     Esquema:

     Programación del arduino:

             

// Arduino Nano mini (El que lleva conector USB)
// Fotometro electrónico con arduino
// Servo en Pin 9
// Célula fotoeléctrica en pin A0
// Botón para leer Pin 7
// Pines 12 y 13 para leds informativos dial

#include <Servo.h>

Servo aguja;
const int pinFot =0;

#define MEDIDA 7 //Boton para subir el retraso
int valor;
int angulo;
int veces;
int pos1;
int pos2;
int pos3;

void setup() {
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);

aguja.attach(9,600,2400);
pinMode(MEDIDA, INPUT_PULLUP);
Serial.begin(9600);
}

void loop() {
// Botón para hacer la lectura de luz
if(digitalRead(MEDIDA) == LOW)
{
valor = analogRead(pinFot); // Lectura de luz de la célula
// angulo = map(valor, 0, 1023, 0, 180);
pos1=0;
pos2=0;
pos3=0;

if (valor>0 && valor<25){angulo=130; pos3=6;}; // velocidad 1/5,6
if (valor>25 && valor<50){angulo=120; pos3=5;}; // velocidad 2/5,6
if (valor>50 && valor<150){angulo=110; pos3=4;}; // velocidad 4/5,6
if (valor>150 && valor<250){angulo=100; pos3=3;}; // velocidad 8/5,6
if (valor>250 && valor<350){angulo=90; pos3=2;}; // velocidad 16/5,6
if (valor>350 && valor<450){angulo=80; pos3=1;}; // velocidad 30/5,6
if (valor>450 && valor<550){angulo=70; pos2=4;}; // velocidad 60/5,6
if (valor>550 && valor<650){angulo=60; pos2=3;}; // velocidad 125/5,6
if (valor>650 && valor<700){angulo=50; pos2=2;}; // velocidad 250/5,6
if (valor>700 && valor<760){angulo=40; pos2=1;}; // velocidad 250/8
if (valor>760 && valor<830){angulo=30; pos1=4;}; // velocidad 250/11
if (valor>830 && valor<890){angulo=20; pos1=3;}; // velocidad 500/11
if (valor>890 && valor<950){angulo=10; pos1=2;}; // velocidad 1000/11
if (valor>950 && valor<1000){angulo=0; pos1=1;}; //velocidad 1000/16

aguja.write(angulo);
Serial.println(valor);
delay(100);
if (pos1>0){destello1(pos1);};
if (pos2>0){destello2(pos2);};
if (pos3>0){destello3(pos3);};
}
}

// SUBRUTINAS
// Cambia destellos para led 1 pin 13
void destello1(int veces){
for (int i = 0; i<veces; i++)
{
digitalWrite(13, HIGH); delay(100); digitalWrite(13, LOW); delay (100);
}

}

// Cambia destellos para led 2 pin 12
void destello2(int veces){
for (int i = 0; i<veces; i++)
{
digitalWrite(12, HIGH); delay(100); digitalWrite(12, LOW); delay (100);
}

}

// Cambia destellos para led 1 y 2 pin 12 y 13
void destello3(int veces){
for (int i = 0; i<veces; i++)
{
digitalWrite(12, HIGH);
digitalWrite(13, HIGH);
delay(100);
digitalWrite(12, LOW);
digitalWrite(13, LOW);
delay (100);
}

}