Autor Tema: Promedio 2 lm35  (Leído 2563 veces)

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

Desconectado electro85

  • PIC10
  • *
  • Mensajes: 9
Promedio 2 lm35
« en: 18 de Abril de 2011, 18:56:29 »
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.

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!!!


Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: Promedio 2 lm35
« Respuesta #1 en: 18 de Abril de 2011, 20:35:22 »
Hola electro85, podrías subir el encabezado del programa (includes, fuses etc., incluyendo la declaración de variables) y el encabezado del main?

Saludos!

Desconectado NoSepComo

  • PIC18
  • ****
  • Mensajes: 305
Re: Promedio 2 lm35
« Respuesta #2 en: 19 de Abril de 2011, 06:54:45 »
Hola electro85, si has hecho algún esquemático también puede servir de ayuda que lo muestres.
El codigo yo lo veo correcto, lo único que puede estar sucediendo es que haya errores en los tipos de datos, según el valor que devuelva el read_adc(), a lo mejor lo tienes que convertir previamente a otro...
Saludos.

Desconectado electro85

  • PIC10
  • *
  • Mensajes: 9
Re: Promedio 2 lm35
« Respuesta #3 en: 20 de Abril de 2011, 14:40:55 »
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.



 

anything