You are on page 1of 9

Es un sensor de temperatura simple hecho con un LM35 y un PIC16F873A que expresar la

temperatura medida en un display lcd de 16x2 (16 caracteres, 2 lineas)


Usa una tensin de referencia (Vref) interna que es de 5 Volts.
y el conversor es de 10 bits.
El cristal que uso en este caso es de 10 MHz.

Dejo primero el circuito elctrico.

Esta img me la pas un profesor, muestra como conectar la alimentacin del display.
Yo en mi caso en vez de poner una resistencia de 4,7K puse un potenciometro de 5K para
poder regular el contraste de los caracteres del display.

Foto del LM35:

Diagrama de pines del 16f873a

Programacin del PIC:


(Utilizar PIC C Compiler - CCS)

[color=#000000][color=#000000]

#include <TermLM35-LCD.h>

#define LCD_ENABLE_PIN PIN_B2

#define LCD_RS_PIN PIN_B0

#define LCD_RW_PIN PIN_B1

#include <lcd.c>

#byte portc = 07
void main()

lcd_init();

set_tris_b(0x00);

// Iniciar el display

// Tris B seteado en 0 (Todo el

puerto B como salida)

set_tris_c(0x00);
puerto C como salida)

// Tris C seteado en 0 (Todo el

portc = 0b00000000;

// Todas las salidas del puerto B c

on valor lgico bajo

// Variables para uso posterior en programa

int i;

long value;

float temper;

setup_adc_ports(ALL_ANALOG);

setup_adc(ADC_CLOCK_INTERNAL);

setup_spi(SPI_SS_DISABLED);

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);

setup_timer_1(T1_DISABLED);

setup_timer_2(T2_DISABLED,0,1);

setup_ccp1(CCP_OFF);

setup_comparator(NC_NC_NC_NC);

// Las siguientes lineas muestran un mensaje de inicio

lcd_putc("Iniciando");

// Funcin para escribir en el dis

delay_ms(250);

// Retardo de 250 milisegundos.

p.

lcd_putc("f");

lcd_putc("Iniciando.");

delay_ms(250);

lcd_putc("f");

lcd_putc("Iniciando..");

delay_ms(250);

lcd_putc("f");

lcd_putc("Iniciando...");

delay_ms(250);

// Borrar todos los caracteres

lcd_putc("f");

lcd_putc("Termometron");

lcd_putc("Digital");

delay_ms(1500);

lcd_putc("f");

// Este mensaje ya queda fijo

lcd_putc("Temp. actual:");

lcd_gotoxy(9,2);
.

lcd_putc("oC");

lcd_gotoxy(1,2);

do{

for(i=3;i==6;i++)

// Ir al caracter 9 de la segunda linea

lcd_gotoxy(i,2);

lcd_putc(" ");

lcd_gotoxy(3,2);

set_adc_channel(0);

// Seleccionar el Pin de lectur

a (RA0)

delay_us(50);

// Retardo de 50 microsegund

os

value=read_adc();

// Guardar el resultado de la le

ctura analgica en "value"

temper=(0.488758*(float)value); // Pasar el valor en binario


a C

printf(lcd_putc,"%02.1f", temper); // Mostrar la temperatura


en pantalla

delay_ms(500);

}WHILE(TRUE); // Bucle infinito

[/color][/color]

Aca les dejo un poco de informacion del LM35 de la pgina uControl:


dijo:Sus caractersticas ms relevantes son:
Precisin de ~1,5C (peor caso), 0.5C garantizados a 25C.
No linealidad de ~0,5C (peor caso).
Baja corriente de alimentacin (60uA).
Amplio rango de funcionamiento (desde -55 a + 150C).
Bajo costo.
Baja impedancia de salida.
Su tensin de salida es proporcional ala temperatura, en la escala Celsius. No necesita
calibracin externa y es de bajo costo. Funciona en el rango de alimentacin comprendido
entre 4 y 30 voltios.
Como ventaja adicional, el LM35 no requiere de circuitos adicionales para su calibracin
externa cuando se desea obtener una precisin del orden de 0.25 C a temperatura
ambiente, y 0.75 C en un rango de temperatura desde 55 a 150 C.
La baja impedancia de salida, su salida lineal y su precisa calibracin inherente hace posible
una fcil instalacin en un circuito de control.
Debido a su baja corriente de alimentacin (60uA), se produce un efecto de autocalentamiento
reducido, menos de 0.1 C en situacin de aire estacionario. [/quote]
El LM35 tiene un rango de 10mV/C o sea que para 1C voy a tener 10mV, para 2C 20mV y
as hasta 1V (100C). Por lo tanto nuestro valor mximo que va a leer nuestro pic va a ser 1V,
lo cual usando un Vref interno de 5V "nos estarian sobrando" 4V por asi decirlo y hace menos
precisa la lectura (+/- 0.3 C) pero podriamos reducir este error usando una tension de
referencia externa de 2.5V en el pin 5 del pic, pero para ello habria que indicar en el programa
que se usara un Vref externo.

Es una aplicacin sencilla de pocos materiales y tambien pueden modificarla para tener un
reloj que cada tanto muestre la temperatura u otras cosas.

You might also like