Autor Tema: ayuda con luxometro  (Leído 3106 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado arlex

  • PIC10
  • *
  • Mensajes: 49
ayuda con luxometro
« en: 13 de Diciembre de 2010, 21:01:51 »
hola estoy tratando de realizar un luxometro el cual se viazualice en pantalla Lcd los luxes correspondientes en determinado sitio.. estoy usando un ldr con un undivisor de tension,  bien el problema es el siguiente es que como el ldr no es lineal no encuentro un patron para poder obtener los luxes... Dispongo de un luxometro comercial y obtuve una curva que adjunto en el arcivo excel, luego grafique logaritmo de R vs log(Lx) y obtuve una respuesta lineal, pero le soy sincero no se que debo hacer ahora. bueno espero que me puedan echar una mano con esto























 <a href=http://www.moviesonline.name/ >watch movies online without downloading[/url]























 <a href=http://www.moviesonline.name/ >download free movies[/url]























 <a href=http://www.moviesonline.name/ >watch movies online for free[/url]

Desconectado mtristan

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 395
Re: ayuda con luxometro
« Respuesta #1 en: 13 de Diciembre de 2010, 22:06:02 »
.


Si te alcanza la memoria podrías implementar una tabla, aunque se complica porque no hay un solo valor de retorno, sino que serían varios caracteres los que debería devolver  :|. Lo otro que se me ocurre es calcular el valor de la resistencia con el ADC, y con la aproximación (por la serie de Taylor):
log(x) = -0.5x^2 + 2x - 1.5x
obtener el logaritmo. Imagino que en C hay funciones para calcular productos y potencias, y no se si haya también una para logaritmo. Si trabajás en ASM seguro que vas a poder encontrar estos algoritmos de cálculo buscando en la web.

Saludos.

When you see a good move, look for a better one (Emanuel Lasker)

Desconectado arlex

  • PIC10
  • *
  • Mensajes: 49
Re: ayuda con luxometro
« Respuesta #2 en: 14 de Diciembre de 2010, 09:35:55 »
hola, creo q ya solucione, si observamos el archivo calibracion que adjunte previamente, especificamente el grafico donde tengo log(R) vs log (Luxes) veran que es una recta la cual tiene la siguiente ecuacion log(R) = -mlog(luxes) +b donde
m=pendiente de la recta y b=corte con el eje R... adjunto el programa funcionando en proteus
#include <lux_18f25.h>
#INCLUDE <LCD_PORTC.C>
#include <math.h>
#FUSES NOWDT ,XT,NOPROTECT, NOLVP
#use delay(crystal=4000000)

void main()
{
   int16 q;
   float Vo,VR1,I,LDR,Lx,var,A;
   setup_adc_ports(AN0);
   setup_adc(ADC_CLOCK_INTERNAL);
   //setup_pp(PMP_DISABLED);
   //setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   //setup_timer_1(T1_DISABLED);
   //setup_timer_2(T2_DISABLED,0,1);
   //setup_ccp1(CCP_OFF);
   lcd_init();
   //TODO: User Code
   while(true){
     set_adc_channel(0);
     delay_us(20);
     q = read_adc();
     Vo = 5.0 * q / 1024.0;
     VR1 = 5 - Vo;
     I = VR1 / 3300.0;
     LDR = (Vo /I)/1000;
     var=(-log10(LDR)+2.1)/0.858;
     Lx=pow(10,var);
     if(Vo>=0.917 && Vo<=1.45){
      Lx=Lx+3;
     }
     //Lx = Num / Den;
     //printf(lcd_putc, "\fvar = %01.3f",Vo);
     printf(lcd_putc, "\nLuxes = %01.1fLx",Lx);
     delay_ms(1000);
   }
}
ahora el problema es que es mi primera con este pic (18f2550) y en proteus funciona pero en el protoboard no muestra nada en el LCD, es decir no hace nada, pues creo que el problema sera a la hora de grabar el Pic

Desconectado mtristan

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 395
Re: ayuda con luxometro
« Respuesta #3 en: 14 de Diciembre de 2010, 12:19:06 »
.


A mi parecer ya tenés hecha la parte más complicada  :-)
¿Qué módulo LCD estás usando? Puede ser que tengas un módulo con un controlador distinto al que simula el Proteus, y por eso no te muestra nada. Según mi experiencia personal, cuando pasa esto el display no es que no muestra nada, sino que muestra todos cuadrados negros.

When you see a good move, look for a better one (Emanuel Lasker)

Desconectado arlex

  • PIC10
  • *
  • Mensajes: 49
Re: ayuda con luxometro
« Respuesta #4 en: 15 de Diciembre de 2010, 00:07:36 »
bueno en proteus estoy usando el Lm016l y dispongo de un lcd el cual tiene un microcontrolador hitachi 44780, antes de usar el pic18f2550 estaba controlando el lcd con el pic 16f870 mediante el puerto, ahora tengo conectado el lcd al puerto C del pic18f2550 pero no he logrado que aparezca nada, a veces me aparece la primera linea del lcd cvuadros oscuros otras veces no se ve absolutamente nada, verifique el contraste del lcd a ver si podria ser eso y nada























 <a href=http://www.moviesonline.name/ >download movies for free[/url]