Documentos de Académico
Documentos de Profesional
Documentos de Cultura
LABORATORIO
PRESENTADO POR:
AREQUIPA 2008
Medicin de Temperatura utilizando el Sensor Analgico LM35
1. Introduccin
La ventaja ms resaltante de los sensores digitales sobre los analgicos es su simplicidad (falta de
compensacin o falta de calibracin, por ejemplo). Aunque habra que recordar que la mayora de los
sensores que tienen una salida digital de datos tienen como base de su funcionamiento a un sensor
analgico, las variables fsicas naturales son en su mayora analgicas (al menos en un nivel que no sea
mecnico cuntico o de otro tipo discreto).
Adems el uso de sensores analgicos (al menos en su origen) es el ms difundido en la industria. Por
ejemplo termocuplas, termistores, etc. Uno de los problemas con este tipo de sensores analgicos es sin
duda la calibracin. Otro es la no linealidad de la medicin, etc.
2. Marco Terico
El sensor provee una salida de 10mV por cada grado centgrado. Por ejemplo si la temperatura es 20C la
salida del sensor es 200mV (es decir 20C x 10mV/C), lo que tambin funciona para temperaturas
negativas, as si la temperatura es -35C la salida del sensor es -350mV (es decir -35C x 10mV/C).
El sensor, para esto, tiene que estar alimentado con un voltaje entre 4 y 30V. Sin embargo hay que cuidar
que la corriente de polarizacin no provoque un calentamiento del sensor por el efecto Joule ya que esto
afectara nuestro deseo de que la salida de voltaje del sensor solo sea un reflejo de la temperatura externa.
Hay que decir, sin embargo, que el sensor posee un circuito de compensacin de temperatura para estos
casos.
Como en nuestro caso necesitamos un registro digital de la temperatura para posteriormente procesarla
(visualizarla, principalmente) el siguiente paso es digitalizar la seal analgica del sensor.
Para esto utilizaremos un Convertidor Anlogo Digital (ADC, por sus siglas en ingls). Existen diversos
mtodos para llevar a cabo una conversin anloga a digital, por ejemplo el mtodo de aproximaciones
sucesivas, el de rampa doble, el de resistencias ponderadas, etc.
El PIC16F877 incluye un ADC interno de 10 bits (aunque hay la posibilidad de reducirlo a 8 bits), con 8
posibles canales de entrada, aunque en verdad existe un solo ADC que multiplexa estos canales.
ADRESH y ADRESL se explican solos. Son los registros donde se almacena el resultado de la ltima
conversin analgica digital llevada a cabo. Como el ADC es de 10 bits se requieren dos registros de 8
bits (aunque sobre espacio).
ADCON0 est separado en cuatro partes distintas, la primera est formada por los bits ADCS1 y ADCS0,
los cuales fijan la frecuencia de reloj usada para la conversin A/D. Veamos la siguiente tabla:
Como nosotros vamos a usar un cristal de 20Mhz, nuestra seleccin para ADCS1:ADCS0 ser 1:0.
La segunda parte de ADCON0 consiste de tres bits, CHS2 CHS1 y CHS0, que son los que seleccionan
cuales de los 8 canales disponibles se usar en la siguiente conversin.
En nuestro caso slo utilizaremos un canal, el Canal0, por lo que CHS2:CHS1:CHS0 ser 0:0:0.
La tercera parte es un slo bit GO/DONE. Este bit tiene dos funciones. Si ponemos a 1 este bit se
inicia la conversin A/D. Cuando acaba la conversin A/D este bit automticamente se pone en 0, lo
cual hay que chequear permanentemente para empezar la siguiente conversin.
La cuarta parte es otro nico bit: ADON, que simplemente enciende o apaga el conversor A/D. Encendido
con 1, apagado con 0.
La primera seccin es un solo bit: ADFM que es el bit que selecciona el formato de alineacin, 1 para
alinear el resultado a la derecha y 0 para alinearlo a la izquierda. La ventaja de esto es que hace muy
simple usar el Conversor de 10 bits como si fuese uno de 8 bits (poniendo a 0 el bit ADFM y leyendo
slo el resultado en ADRESH). En nuestro caso usaremos los 10 bits de resolucin. Usaremos ADFM con
valor 1.
Los bits PCFG3-0 es la parte ms complicada ya que configuran muchas cosas. Veamos la siguiente tabla:
PCFG3:0 AN7 AN6 AN5 AN4 AN3 AN2 AN1 AN0 Vref+ Vref-
0000 A A A A A A A A Vdd Vss
0001 A A A A Vref+ A A A RA3 Vss
0010 D D D A A A A A Vdd Vss
0011 D D D A Vref+ A A A RA3 Vss
0100 D D D D A D A A Vdd Vss
0101 D D D D Vref+ D A A RA3 Vss
0110 D D D D D D D D Vdd Vss
0111 D D D D D D D D Vdd Vss
1000 A A A A Vref+ Vref- A A RA3 RA2
1001 D D A A A A A A Vdd Vss
1010 D D A A Vref+ A A A RA3 Vss
1011 D D A A Vref+ Vref- A A RA3 RA2
1100 D D D A Vref+ Vref- A A RA3 RA2
1101 D D D D Vref+ Vref- A A RA3 RA2
1110 D D D D D D D A Vdd Vss
1111 D D D D Vref+ Vref- D A RA3 RA2
3. Desarrollo
Ahora que hemos configurado el PIC, son necesarias algunas explicaciones adicionales para saber qu
significan estas configuraciones.
Nuestro ADC tiene 10 bits de resolucin, lo que significa que la salida del ADC puede variar entre 0
(todos los en 0) y 1023 (todos los bits en 1).
Cuando la salida del ADC est en 1023 la entrada analgica est a +Vref voltios (referencia positiva). En
nuestro caso +Vref = 2.5 V (En RA3).
Cuando la salida del ADC est en 0 la entrada analgica est a -Vref voltios (referencia negativa). En
nuestro caso Vref = 0 V (Tierra).
Recapitulando 1023 representa 2.5 V y 0 representa 0 V. Los nmeros del medio representan valores
medios (deducidos por una simple regla de tres).
Dividiendo 2.5 V entre 1023 resulta 0.00244 que es la resolucin en voltaje del conversor A/D. Por
ejemplo 1 representa 0.00244 V, 2 representa 0.00489 V, etc.
Es muy importante conocer esta resolucin de voltaje, y por simple facilidad es conveniente que esta
resolucin sea un nmero fcil de manejar en software (sin muchos decimales, por ejemplo).
En nuestro caso en realidad 2.5 / 1023 es 0.00244379276, el cual no es un nmero muy manejable por
el PIC, incluso si tomamos solo unos 4 decimales, por ejemplo, se produce un pequeo error. En este
punto se podran hacer dos cosas si se piensa mantener una resolucin de 10 bits: modificar la referencia
positiva +Vref , o atenuar (ganancia) la entrada analgica.
Nosotros llevaremos a cabo la segunda opcin. Daremos una ganancia mediante un OPAMP no inversor
con un potencimetro de calibracin de ganancia.
Software
Usaremos dos rutinas para: Inicializar el ADC interno del PIC16F877 y para llevar a cabo una conversin
A/D.
Init_ADC
; Confiurar ADCON0
movlw b'10000001'
movwf ADCON0
; Configurar ADCON1
BANKSEL ADCON1
movlw b'10000101'
movwf ADCON1
BANKSEL ADCON0
Return
Read_ADC
bsf ADCON0, GO_DONE ;inicializa la
conversin
btfsc ADCON0, GO_DONE
goto $-1 ;espera hasta que el ADC
termine
movf ADRESH,W
andlw 0x03
movwf NumH
BANKSEL ADRESL
movf ADRESL,W
BANKSEL ADRESH
movwf NumL ; el resultado es puesto en NumL y
NumH
return
Esta segunda rutina lleva a cabo la conversin A/D y la guarda en los registros NumL y NumH (que son
registros de propsito general nombrados a nuestra discresin).
4. Resultados
Como ya mencionamos en un punto anterior: El LM35 nos proporciona 10mV por cada grado
Centgrado. Por una conveniencia de software nosotros vamos a buscar tener una resolucin de 10mV
(igual a la del sensor) mediante hardware.
Para esto usaremos un OPAMP no inversor como atenuador (usando un divisor de voltaje a la entrada,
para conseguir la atenuacin necesaria). Para calibrar el sensor con una sensibilidad de 10mV (con los 10
bits de ADC) bastar con conseguir una salida, del OPAMP, de 2,5 V (que coincida con la referencia
positiva +Vref. que a su vez se consigue mediante un IC TL431) para una entrada, del OPAMP, de 10,23
V.
Para el OPAMP hemos escogido un IC TL082 (Symmetric Supply), ya que tiene un mejor desempeo a
bajos niveles de voltajes que un IC LM358 (Single Supply). Ya que slo deseamos utilizar slo una
fuente de voltaje (5V), para generar los -5V para alimentar el TL082 se usar otro IC, el ICL7660 que
genera un voltaje negativo a partir de uno positivo. Este IC utiliza unos capacitares de carga.
Para tener una temperatura de referencia de calibracin, usamos un termmetro digital basado en el IC
DS1820.
5. Conclusiones
- Es importante escoger una resolucin adecuada para el ADC (dentro de su rango, por supuesto). Por
ejemplo para una aplicacin que no demande demasiada exactitud, escoger una resolucin elevada
complicar innecesariamente el sistema a disear.
- Hay que tener en cuenta los valores de referencia negativa y positiva (-Vref y +Vref) ya que estos,
junto con la resolucin, mejoraran el desempeo general del sistema. Por ejemplo si el sensor slo
tuviese una rango de salida de 0 100mV sera ilgico usar una rango para Vref y +Vref entre 0
10V; ya que los rangos superiores simplemente nunca se alcanzaran.
- Otra cosa importante y que se suele confundir con la resolucin es el tiempo de muestreo, por ejemplo
nosotros utilizamos aproximadamente 10 muestras por segundo. Esta caracterstica no debe superar
las limitaciones del ADC y debe ser escogida de acuerdo a la aplicacin, segn se est sensando una
variable que cambia con rapidez o una variable que vara lentamente.
- En nuestro software, se revisa constantemente por una bandera (bit) que se pone a cero cada vez que
acaba una conversin A/D (tcnica llamada polling). Esto est bien para esta aplicacin simple
como sta, en la que bsicamente slo se realiza una tarea (Mostar los resultados de la conversin).
Para aplicaciones que requieren realizar varias tareas lo ideal es usar interrupciones. El PIC provee
una interrupcin (configurable) para cada vez que termina una conversin A/D.
- Como ya se mencion anteriormente, si la variable anloga tiene una rapidez de cambio elevada (es
decir; es rpida), se recomienda usar un circuito sample and hold como etapa previa al ADC. En
nuestro caso esta etapa previa a sido obviada porque consideramos que la seal de sensor es
relativamente lenta.