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