0% encontró este documento útil (0 votos)
38 vistas9 páginas

Sensor LM35: Características y Uso

El documento describe el uso del sensor de temperatura LM35. Explica que el LM35 devuelve un voltaje linealmente proporcional a la temperatura en grados Celsius. También incluye el código en C y ensamblador para leer los valores del sensor LM35 usando un microcontrolador PIC y mostrar la temperatura en un display LCD.

Cargado por

Zet Laime
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
38 vistas9 páginas

Sensor LM35: Características y Uso

El documento describe el uso del sensor de temperatura LM35. Explica que el LM35 devuelve un voltaje linealmente proporcional a la temperatura en grados Celsius. También incluye el código en C y ensamblador para leer los valores del sensor LM35 usando un microcontrolador PIC y mostrar la temperatura en un display LCD.

Cargado por

Zet Laime
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

UNIVERSIDAD CATOLICA DE SANTA MARIA

FACULTAD DE CIENCIAS E INGENIERIAS FISICAS Y FORMALES

ESCUELA PROFESIONAL DE INGENIERIA ELECTRONICA

TEMA: EJERCICIO 3.12

CURSO: DISEÑO CON SISTEMAS


MICROPROGRAMABLES

DOCENTE: Ing. JUAN MEDARDO QUISPE YAUYO


ALUMNO: Laime Rosas Zet

SEMESTRE: 6

AREQUIPA, PERU
Descripción general
La serie LM35 son sensores de temperatura de circuito integrado de precisión , cuyo
voltaje de salida es linealmente proporcional a la temperatura Celsius
(Centígrados). Por lo tanto, el LM35 tiene una ventaja sobre los sensores de
temperatura lineales calibrados en Kelvin \ u02, ya que no se requiere que el usuario
reste un gran voltaje constante de su salida para obtener un escalado conveniente
degrado centígrado.

Funcionamiento:
Para hacernos un termómetro lo único que necesitamos es un voltímetro bien
calibrado y en la escala correcta para que nos muestre el voltaje equivalente a
temperatura. El LM35 funciona en el rango de alimentación comprendido entre 4 y 30
voltios. Podemos conectarlo a un conversor Analógico/Digital y tratar la medida
digitalmente, almacenarla o procesarla con un µControlador o similar.
Usos:
El sensor de temperatura puede usarse para compensar un dispositivo de medida
sensible a la temperatura ambiente, refrigerar partes delicadas del robot o bien para
loggear temperaturas en el transcurso de un trayecto de exploración.

El sensor LM35 de temperatura y sus características

Una de las grandes características del sensor de temperatura LM35 es que es lineal y
esto implica que un cambio de temperatura en el sensor provoca un cambio de tensión
en su salida proporcional a una constante.

Por cada grado centígrado que varia la temperatura del sensor, la tensión en la salida
se incrementa 10mv.

Por ejemplo si la temperatura es de 25ºC a la salida del sensor obtendremos 250mv.


Si se incrementa a 26ºC la tensión de salida incrementará hasta los 260mv.

Un incremento de 1ºC provoca un incremento de 10mV en la tensión de salida.

Es un sensor puramente lineal y además el fabricante, en este caso Texas


Instruments, nos asegura que la sensibilidad es casi constante (10mV/ºC) y que su no
linealidad es de ±0.2ºC. Lo cual es francamente bueno para aplicaciones como medir
la temperatura de una habitación o similares.

El hecho de que sea lineal y con tolerancias tan bajas nos evita tener que calibrar y
obtener curvas de calibración del sensor. Simplemente conectar y listo.

Texas Instruments afirma que el sensor fue diseñado pensando el mercado que usa
ºC para medir la temperatura y de esa manera evitar hacer conversiones entre las
distintas unidades. Bajo mi opinión esto nos da una pista de que probablemente no es
un sensor ideal para el mundo industrial, ingenieril o científico en el cual tenemos la
obsesión de medir los procesos en Kelvin. Para esto último tenemos el sensor de
temperatura lm335.
El LM35 es un sensor analógico que devuelve la temperatura en forma de tención,
esta tensión devuelta es proporcional a la temperatura. Su rango comprende desde -
55º hasta 150ºC y el valor devuelto es el equivalente a la temperatura dividida por 10,
entonces en su salida se obtienen valores como estos.

CONVERSIÓN A / D Y PROCESADO DE SEÑAL

Resolución

Esquema del circuito:


PROGRAMA EN C:

#include<16f877a.h>
#device adc=10
#fuses NOWDT,HS,PUT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#include <lcd.c>
int temp;

void leer_adcs(void)

void main(void)
{
lcd_init();
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(AN0_AN1_VSS_VREF);
printf(lcd_putc,"\fTEMPERATURA");
while(true)
{
leer_adcs();
printf(lcd_putc,"\n%uBC",temp);
}
}
void leer_adcs(void)
{
et_adcs_channel(0);
delay_us(20);
temp=read_adc();
temp=temp/2;
delay_ms(200);
}
PROGRAMA EN ASM:

processor 16f877a
include<[Link]>

;Variable para el DELAY del ADC


val equ h'20'

;Variables para el DELAY del ENABLE LCD


val2 equ 0x30
val1 equ 0x31

;Variables para separar el resultado de ADC


; en valor BCD
Unidades equ 0x32
Decenas equ 0x33
Centenas equ 0x34
Resto equ 0x35

org 0h
goto INICIO
org 05h

INICIO:
clrf PORTA ;Limpia el puerto A
clrf PORTB ;Limpia el puerto B
clrf PORTC ;Limpia el puerto C
clrf PORTD ;Limpia el puerto D
bsf STATUS,RP0
bcf STATUS,RP1 ;Cambio al banco 1

;Configuración de puertos C-D para el LCD


clrf TRISC ;Configura PORTC como salida
clrf TRISD ;Configura PORTD como salida

;Configuración del puerto A


movlw 00h
movwf ADCON1
movlw 3fh
movwf TRISA ;Configura el puerto A como entrada
movlw h'0'

;Configuración del puerto B


movwf TRISB ;Configura puerto B como salida
bcf STATUS,RP0 ;Regresa al banco 0

;Inicio del programa


START
call START_LCD ;Inicializa LCD
goto START_ADC ;

;Inicia LCD
START_LCD:
bcf PORTC,0 ; RS=0 MODO INSTRUCCION
movlw 0x01 ;
movwf PORTD
call COMANDO
movlw 0x0C
movwf PORTD
call COMANDO ; Se da de alta el comando
movlw 0x3C ; Se configura el cursor
movwf PORTD
call COMANDO ; Se da de alta el comando
bsf PORTC, 0 ; Rs=1 MODO DATO
return

;Rutina para enviar un dato


ENVIA:
bsf PORTC, 0 ; RS=1 MODO DATO
call COMANDO ; Se da de alta el comando
return

;Rutina para enviar comandos


COMANDO:
bsf PORTC, 1 ; Pone la señal ENABLE en 1
call DELAY2 ; Tiempo de espera
call DELAY2
bcf PORTC, 1 ; ENABLE=0
call DELAY2
return

; limpiar pantalla LCD


ERASE_LCD
bcf PORTC,0 ; RS=0 MODO INSTRUCCION
movlw 0x01 ; 0x01 limpia la pantalla en el LCD
movwf PORTD
call COMANDO ; Se da de alta el comando
bsf PORTC, 0 ; Rs=1 MODO DATO
return

;Configuración Convertidor A/D


START_ADC
movlw b'11000001'
movwf ADCON0 ;ADCS1=1 ADCS0=1 CHS2=0 CHS1=0
;CHS0=0 GO/DONE=0 - ADON=1
CICLO: bsf ADCON0,2 ;Conversión en progreso GO=1
call DELAY1 ;Espera que termine la conversión
ESPERA btfsc ADCON0,2 ;Pregunta por DONE=0?(Terminó conversión)
goto ESPERA ;No, vuelve a preguntar
movf ADRESH,0 ;Si
movwf PORTB ;Muestra el resultado en PORTB

;Rutina que muestra temperatura


PRINT_TEMP
call ERASE_LCD ;Limpia LCD
movlw 'T'
movwf PORTD
call ENVIA
movlw '='
movwf PORTD
call ENVIA

call READ_TEMP ;Llamada a rutina

movf Centenas,W ;Imprime el dígito de las centenas


movwf PORTD
call ENVIA
movf Decenas,W ;Imprime el dígito de las decenas
movwf PORTD
call ENVIA
movf Unidades,W ;Imprime el dígito de las unidades
movwf PORTD
call ENVIA
movlw ' '
movwf PORTD
call ENVIA
movlw h'DF' ;Imprime el simbolo "°"
movwf PORTD
call ENVIA
movlw 'C'
movwf PORTD
call ENVIA

goto CICLO ;Repite el ciclo de lectura ADC

READ_TEMP:
clrf Centenas
clrf Decenas
clrf Unidades

movf ADRESH,W
addwf ADRESH,W
movwf Resto
CENTENAS1
movlw d'100'
subwf Resto,W
btfss STATUS,C
goto DECENAS1
movwf Resto
incf Centenas,1
goto CENTENAS1
DECENAS1
movlw d'10'
subwf Resto,W
btfss STATUS,C
goto UNIDADES1
movwf Resto
incf Decenas,1
goto DECENAS1
UNIDADES1
movf Resto,W ;El resto son la Unidades BCD
movwf Unidades
;clrf Resto

;Rutina que obtiene el equivalente en ASCII


movlw h'30'
iorwf Unidades,f
iorwf Decenas,f
iorwf Centenas,f
return

;Rutina que genera un Delay de 20 microSeg aprox.


;para el Conv. A/D
DELAY1:
movlw h'1'
movwf val
Loop decfsz val,1
goto Loop
return

;Subrutina de retardo para ENABLE_LCD


DELAY2:
movlw 0xFF
movwf val1
Loop1:
movlw 0xFF
movwf val2
Loop2:
decfsz val2,1
goto Loop2
decfsz val1,1
goto Loop1
return
end

BIBLIOGRAFIA
[Link]
[Link]
[Link]

También podría gustarte