Autor Tema: Estoy haciendo la conversión A/D mal?  (Leído 1289 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado IsaHarvar

  • PIC10
  • *
  • Mensajes: 12
Estoy haciendo la conversión A/D mal?
« en: 11 de Enero de 2011, 09:38:58 »
Estoy haciendo un controlador de temperatura leía por un LM35 (y otros dispositivos) que manda datos por bluetooth. Hace meses programé la conversión A/D para leer la temperatura con una ecuación lineal que tenía en cuenta el rango de temperatura (de 2 a 150º) y los bits de conversión, pero no la temperatura de referencia:

...

while(adgo); //Bucle mientras dura la conversión.
   ad_value=ADRESH;
   ad_value=(ad_value<<8)|ADRESL;
   
   //temp_value= (ad_value*((150-2)/1023))+2;
   
   temp_value= ((ad_value-1)*0.1446725)+ 2;

printf(" Temperatura es: %3.2g, %Lx ", temp_value,ad_value);

...

Como en proteus, usando un resistor variable todo parecía ir bien, pensé que no había problemas y seguí con otras cosas. Pero ahora al montar en circuito en una placa, veo que la temperatura que muestra es demasiado baja y al consultar en el foro veo que usáis otras ecuaciones teniendo en cuenta la tensión de referencia, como en un post de Redpic:

T=24 significa que tengo 24ºC en el LM35A,
lo que corresponde a un valor AD adc=62.
Lo que es compatible con VREF - > 1000 mv / 256 = 3,90625 mV por cada Ud AD.
Luego 62 * 3,90625 mV = 242,1875 mV en RA1 y como tenemos 10 mv por grado
Entonces 242,1875 mV / 10 mVº = 24,21875.

Mi fórmula no es correcta, verdad?

0

 
« Última modificación: 14 de Enero de 2011, 14:30:02 por IsaHarvar »

Desconectado IsaHarvar

  • PIC10
  • *
  • Mensajes: 12
Re: Estoy haciendo la conversión A/D mal?
« Respuesta #1 en: 11 de Enero de 2011, 09:49:54 »
Mi tensión de ref+ es 2.5v y utilizo los 10 bits de adc:

La fórmula sería algo como (dígito* (2500mv/1023))/10mv/ºC ?

P.D.: En el simulador pongo 1022 en las fórmulas porque a 0V el dígito que me aparece en ADRES es 00 0000 0001 y como el máximo es 11 1111 1111, me salen 1022 bits en total. Es normal?


 

anything