TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado 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
-
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
-
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.
-
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
-
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
-


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







