Promedio 2 lm35

#1
Estimados: buenos días!
Estoy tratando de realizar un control de temperatura con 2 sensores lm 35 y con un microcontrolador 16f877.
Lo que quiero hacer es tomar en 2 puntos la temperatura y luego promediar esas dos temperaturas y mostrar continuamente el promedio.
Para ello hice lo siguiente.

PHP:
for(;;) {

set_adc_channel(0);  //configuro el adc para canal 0 - primer lm35
delay_ms(1);

q0=read_adc();        //formulas para calculo de temperatura 
t1=((5.0*q0)/1024.0);
temp1=t1*10;

delay_ms(10);


set_adc_channel(1);  //configuro el adc para canal 1 -segundo lm35
delay_ms(1);
q1=read_adc();       //formulas para calculo de temperatura 
t2=((5.0*q1)/1024.0);
temp2=t2*10;


delay_ms(10);

promediot=((temp1+temp2)/2);

y luego muestro en lcd promedio y cierro el 'for'...

antes de cerrar el 'for' hago:

if (INPUT(PIN_D1)){
printf(lcd_putc,"\ftemp1=%02.2f C",temp1);
printf(lcd_putc,"\ntemp2=%02.2f C",temp2);
delay_ms(1000);
para ver las temperaturas de cada sensor y resulta que el primer sensor se me baja a cero de temperatura después de un tiempo (pero las tensiones a la salidas de los lm35 varian bien!!) y las temperaturas ademas no son las correctas empiezan altas y después bajan... arranca de 49.9 y luego baja, pero varia mucho!!!!

nose en lo que puedo estar fallando... Gracias por su ayuda!!!
 
Última edición por un moderador:
#3
Ya solucione el problema, no puse el código completo pq es largo ya que se trata de un proyecto para una tesis.

El problema se soluciono así:

yo seteaba los puertos del adc de la siguiente forma:

setup_adc_ports(AN0_AN1_AN4_AN5_VREF_VREF);

y tomaba como vrefh: 5 V. y como vrefl: Gnd

de esta forma el circuito se me volvía inestable!! no había forma de tener nunca un lectura!!

El problema se soluciono seteando:

setup_adc_ports(ALL_ANALOG);

ahora anda perfecto y re preciso. Pero no entiendo esta solución.
 
Arriba