TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: lactoria en 19 de Enero de 2003, 07:15:00

Título: conversión en grados centigrados
Publicado por: lactoria en 19 de Enero de 2003, 07:15:00
Hola a todos alguien sabe como pasar la lectura del adc en grados centígrados


Estoy utilizando un lm35 que en teoría proporciona 10 mV por cada grado centígrado pero el código que utilizo de conversión no es exacto

DEFINE   ADC_BITS   10
DEFINE   ADC_CLOCK   3   
DEFINE   ADC_SAMPLEUS   50   

ADCIN 0, adc      " lee el pin 5 y lo pone en
    adc = (adc */ 500) >> 1   "el 1 lo cambie por otros numeros y no funciona
   
    adc=(adc/100)

uso un 16f873
Título: RE: conversión en grados centigrados
Publicado por: pacalaconcurso en 19 de Enero de 2003, 15:39:00
un par de cosillas:

seria muy interesantes que usaras un amplificador para el LM35 o que usaras una tension de referencia menor. tal y comolo tienes ahora la resolucion sera aprox. de 0.5 grados.

tienes que tener en cuenta que a la lectura que obtienes debes sumarle 5 grados (10 mv corresponden a 6 grados). confirma este dato en el datasheet que te hablo de memoria.

debes tener en cuenta estas dos cosas antes de hacer la conversion

adc = (adc/ 500) >> 1
adc = (adc *1024)       la conversion es de 10 bits
adc=adc +5                 esto es para sumer el offset

te debe quedar algo asi
Título: RE: conversión en grados centigrados
Publicado por: lactoria en 20 de Enero de 2003, 15:11:00
hola


he probado lo que me dices pero la conversión me da 5 siempre, La lectura del adc es de 0 a 65472 por lo que la conversión funciona pero esta línea adc = (adc * 1024) no produce ningún resultado.

por cierto lo estoy simulando con el proteus que es  bastante fiable, por ahora.

Hay alguna posibilidad de realizar la conversión sin utilizar un amplificador.


Título: RE: conversión en grados centigrados
Publicado por: jorgeansuini en 20 de Enero de 2003, 21:36:00
Buenas:

Anoche hice una pequeña prueba de conectar un lm35 al a/d y lo comparaba con un temometro digital.-
De pricipio funcionaba bastante bien, pero deberia amplificar la tension del lm35 para adecuarla al fondo de escala del micro y conseguir mayor presicion.-
Les adjunto el programita.-
El LCD esta conectado al puerto B y el conversor al porta.0
Saludos
Jorge
Título: RE: conversión en grados centigrados
Publicado por: pacalaconcurso en 21 de Enero de 2003, 03:55:00
para hacer el escalado de una variable:

según la ecuación de una recta:
y=mx+b

valor escalado=(valor de entrada*RATE)+OFFSET

RATE=(escalado maximo -escalado minimo)/(valor de entrada maximo-valor de entrada minimo)

si existe OFFSET:

OFFSET=escalado minimo-(valor de entrada minimo*RATE)

hay que tener en cuenta que las operaciones se deben realizar en coma flotante para obtener una precisión aceptable.

saludos
Título: RE: conversión en grados centigrados
Publicado por: MGLSOFT en 21 de Enero de 2003, 07:07:00

Hola a todos!!!

Yo solucione mi problema de escalado de variables haciendome una rutina de calibracion digital (asumiendo que es una recta).
En la primer instancia pongo la señal en su valor minimo y capturo el valor de Offset. En el segundo paso pongo la señal en un valor parecido al normal de trabajo, y alli capturo el Span.

Luego elaboro una variable que llamo CteKal (constante de calibracion) que sale de dividir el campo de medicion por el rango donde mido.
Esto es si:
 campo de medicion = escalado visual
rango = Span - Offset

Luego en el momento de mostrar el valor leido a display este sera:

Display = (ValorAD - Offset). CteKal

Suerte!!!