Go Down

Topic: Luxómetro projecto ayuda (Read 3059 times) previous topic - next topic

poli

hola a todos, estoy trabajando en hacer un pequeño luxometro, pensaba que lo había terminado hasta que me han dejado un loxometro de verdad y e visto que los valores que me da el luxometro son totalmente diferentes al que me da mi arduino. la formula que he utilizado es una que encontré en otro post. lo unico que estoy utilizando es un LDR
bueno aqui os dejo el código que e implementado :

Code: [Select]

#include <ks0108.h> //  library for LCD
#include "SystemFont5x7.h"   // we need this for character display, included with ks0108.h download
int LDRPINA4 = 5;
int LDRREADING4;
float Resistance = 10.0;
int val = 0;

void setup()
{
 
GLCD.Init(NON_INVERTED);   // load the GLCD library
GLCD.ClearScreen();
GLCD.SelectFont(System5x7);  // choose font to use (note this needs to match the #include above
  countdown(1);
  GLCD.ClearScreen();
GLCD.DrawRect(0, 0, 127, 63,BLACK);
GLCD.CursorTo(1, 1);
// set cursor to top left of LCD (uses character coordinates
// not pixel coordinates
GLCD.Puts("   Welcome To The"); // sends strings to LCD. Does not wrap to next line!
GLCD.CursorTo(1, 2);
GLCD.Puts("#AMAZING LUX METER#");
GLCD.CursorTo(0, 3);
GLCD.Puts("Project Developed by:");
GLCD.CursorTo(1, 4);
GLCD.Puts("--------------a");
GLCD.CursorTo(1, 5);
GLCD.Puts("S--------------");
delay(900);
GLCD.ClearScreen();
GLCD.DrawRect(0, 0, 127, 63,BLACK);
GLCD.CursorTo(1, 1);
GLCD.Puts("Lux Given in Lumens "); // sends strings to LCD. Does not wrap to next line!
GLCD.CursorTo(1, 3);
GLCD.Puts("       LUX\t=");
}
void loop(void)
{
LDRREADING4 = analogRead(LDRPINA4);
float Vout5=LDRREADING4*0.0048828125;
int lux4=104.1*Vout5;
GLCD.CursorTo(12,3);
GLCD.PrintNumber(lux4);
delay(1000);

delay (20);
}

void countdown(int count){
  while(count--){  // do countdown 
    GLCD.CursorTo(10,3);   // first column, second row (offset is from 0)
    GLCD.PutChar(count + '0');
    delay(1000); 
  }
}


Please can anyone help me on it? can anyone suggest me where I went wrong? or what formula will be giving me the right answer?
By the way, I am using analog input A5... does that affect? This is because in the other posts everybody uses the analog input 0, but because I am using a GLCD my analog input 0 has been used for the screen.

I really want to get this project done as I have been working on it for quite a while now, has anyone attempted it? And got the right values?

Thanks in advance

Sixto

Sorry for my english, Im spanish and I struggle to write it properly



poli

lo acabo de hacer y nada, sigue dándome los mismos valores

poli

lo e implementado asi:

                  X
5V >-- [ LDR ] ---+--- [ R ] ---<  GND
                  |
                  |
          Arduino pin A5

acabo de cambiar la formula... es asi a lo que te refieres?
Code: [Select]
LDRREADING4 = analogRead(LDRPINA4);
float Vout5=(LDRREADING4*0.0048828125);
float lux4=(104.1*(Vout5));


mirando el codigo, te parece que todo esta bien? repito estoy utilizando el analog input  A5! no deberia afectar verdad?


chiva

Tienes que tener en cuenta que las LDR no son muy precisas, tampoco son perfectamente lineales y dependen de la temperatura de la ambiente, por lo que deberás intentar minimizar cada uno de estos problemas.
Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

poli

Vale, alguna sugerencia de como implementar the wheatstone bridge en el breadboard? alguna pagina web con el circuito montado? tendri que modificar mucho el codigo?

gracias por adelantado!

poli

Si, pero que resistencias utilizo? que utilizo la esquematica de la foto para hacerlo? en la carrera lo di pero solo por encima y nunca me detuve a mirarme lo otra vez...

Pofenas

Me perdonareis mi estulticia, pero no veo cómo se puede hacer variar una resistencia con un Arduino hasta llegar a un equilibrio (sin entrar en complicados cálculos con transistores mosfet en zona ohmica). ¿Podria alguien explicar cómo se implementa un puente de Wheatestone con un Arduino?

Pofenas

¿Y para medir la corriente? ¿Con algun transistor?

chiva

Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

poli

entonces si uso un wheatstone bridge conseguir mejores resultados? es que si os digo la verdad no veo como van a cambiar los resultados que estoy obteniendo ahora mismo con los que obtendré usando el wheatstone bridge.

CFZ

Hola,  soy nuevo en el foro y por ahí esta información pueda servir.

Adjunto el siguiente link para poder comprender a modo de ejemplo como se relaciona el valor de una LDR en un valor LUX
http://sycelectronica.com.ar/optoelectronica/MLGXXXX.pdf

Si o si, dependerá del LDR que uno disponga y el paso siguiente sería encontrar el data sheet correspondiente donde informará los valores semejantes a los que figuran en el pdf adjuntado.

Espero sirva:::::: saludos

zigbe31416

Hola,


personalmente creo que el problema es que utilizar un LDR que puede no ser lineal y depende de la temperatura y se te está complicando el circuito para compensar todas las deficiencias. Mira en este link:

http://www.zigbe.net/?p=245

habla de un sensor de iluminación, analógico, con un coste parecido a una ldr y que te da la lectura de forma lineal en lux. la salida es logarítmica, pero en un Arduino no debería de ser ningún problema, tampoco añadir unas líneas para hacer una pequeña calibración y compensar la tolerancia de la resistencia de carga.

http://www.zigbe.net
Zigbee Labs

http://www.zigbe.net/

Go Up