Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

18/04/2011 #1


Promedio 2 lm35
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.

Código 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!!!
18/04/2011 #2
Moderador

Avatar de Chico3001

La rutina que pusiste parece bien... no sera un problema de hardware?
20/04/2011 #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.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.