TERMÓMETRO DIGITAL CON LM35 Y PIC 18f4550 1 Karen

Anuncio
TERMÓMETRO DIGITAL CON LM35 Y PIC 18f4550
1
Karen Daniela Escorcia Otálora: 174827 1María Angélica Gómez Gordillo: 01174788; 1Andrea Estefanía Rocha
Abella: 01174793
2 Jaime Villalobos
1Estudiantes
1,2 Universidad
Nacional de Colombia
Fundamentos de electricidad y magnetismo 2 Profesor
Bogotá, D. C., 21de junio de 2012
OBJETIVOS
OBJETIVO GENERAL:
Construir un termómetro digital tomando como base los fundamentos adquiridos durante el curso
de Fundamentos de Electricidad y Magnetismo.
OBJETIVOS ESPECIFÍCOS:
 Aplicar los conceptos adquiridos de circuitos.
 Integrar este trabajo con temáticas que se manejan en nuestra carrera.
RESUMEN
El circuito se basa en 2 componentes principales el sensor de temperatura LM35 y el PIC18f4550.
El LM35 es un sensor de temperatura con una precisión calibrada de 1°C y un rango que abarca
desde 0°-100°C. Esto quiere decir, que por cada 1°C en la variación de la temperatura, el sensor en
su salida obtendrá una variación de 10 mv. Este voltaje es el que se incerta al PIC 18f4550 el cual a
través de su conversor A/D mostrará los datos en la pantalla LCD.
INTRODUCCIÓN
Microcontrolador 18F4550
El PIC 18F4550, pertecene a los microcontroladores PIC18 de gama alta. Posee una arquitectura
RISC (reduced instruction set computer) de 16 bits longitud de instrucciones y 8 bits de datos. La
tabla muestra en resumen las caracterísitcas fundamentales de este microcontrolador y de sus
antecesores los PIC18F2455/2550/4455.
CARACTERÍSTICAS
PIC18F2455
PIC18F2450
PIC18F4455
PIC18F4550
Frecuencia de Operación
Hasta 48MHz
Hasta 48MHz
Hasta 48MHz
Hasta 48MHz
Memoria de Programa (bytes)
24.576
32.768
24.576
32.768
Memoria RAM de Datos (bytes)
2.048
2.048
2.048
2.048
Memoria EEPROM Datos (bytes)
256
256
256
256
Interrupciones
19
19
20
20
Líneas de E/S
24
24
35
35
Temporizadores
4
4
4
4
Módulos de
Comparación/Captura/PWM (CCP)
2
2
1
1
Módulos de
Comparación/Captura/PWM
mejorado (ECCP)
0
0
1
1
Canales de Comunicación Serie
MSSP.EUSART
MSSP.EUSART
MSSP.EUSAR
MSSP.EUSAR
Canal USB
1
1
1
1
Puerto Paralelo de Transmisión de
Datos (SPP)
0
0
1
1
Canales de Conversión A/D de 10
bits
10 Canales
10 Canales
13 Canales
13 Canales
Comparadores analógicos
2
2
2
2
Juego de instrucciones
75 (83 ext.)
75 (83 ext.)
75 (83 ext.)
75 (83 ext.)
Encapsulados
PDIP28 pines
SOIC28 pines
PDIP28 pines
SOIC28 pines
PDIP40 pines PDIP40 pines
QFN 40 pines QFN 40 pines
TQFP 40 pines TQFP 40 pines
Pines del PIC18F4550
Diagrama de Bloques
Organización de la Memoria
El uC PIC18F4550 dispone de las siguientes memorias:
Memoria de programa: memoria flash interna de 32.768 bytes. Almacena instrucciones y
constantes/datos
Puede ser escrita/leída mediante un programador externo o durante la ejecución programa
mediante unos punteros.
Memoria RAM de datos: memoria SRAM interna de 2048 bytes en la que están incluidos los
registros de función especial. Almacena datos de forma temporal durante la ejecución del
programa Puede ser escrita/leída en tiempo de ejecución mediante diversas instrucciones.
Memoria EEPROM de datos: memoria no volátil de 256 bytes. Almacena datos que se deben
conservar aun en ausencia de tensión de alimentación Puede ser escrita/leída en tiempo de
ejecución a través de registros.
Pila: bloque de 31 palabras de 21 bits. Almacena la dirección de la instrucción que debe ser
ejecutada después de una interrupción o subrutina.
Memoria de configuración: memoria en la que se incluyen los bits de configuración (12 bytes de
memoria flash) y los registros de identificación (2 bytes de memoria de solo lectura). Se trata de
un bloque de memoria situado a partir de la posición 30000H de memoria de programa (más allá
de la zona de memoria de programa de usuario). En esta memoria de configuración se incluyen:
Bits de configuración: contenidos en 12 bytes de memoria flash permiten la configuración de
algunas opciones del uC como:
- Opciones del oscilador.
- Opciones de reset.
- Opciones del watchdog.
- Opciones de la circuiteria de depuración y programación.
- Opciones de protección contra escritura de memoria de programa y memoria EEPROM de
datos.
Estos bits se configuran generalmente durante la programación del uC, aunque también pueden
ser leídos y modificados durante la ejecución del programa.
Registros de identificación: se trata de dos registros situados en las direcciones 3FFFFEH y
3FFFFFH que contienen información del modelo y revisión del dispositivo. Son registros de solo
lectura y no pueden ser modificados por el usuario.
Arquitectura del Hadware
El uC PIC18F4550 dispone buses diferentes para el acceso a memoria de programa y memoria de
datos (arquitectura Harvard):
Bus de la memoria de programa:
- 21 líneas de dirección
- 16/8 líneas de datos (16 líneas para instrucciones/8 líneas para datos)
Bus de la memoria de datos:
- 12 líneas de dirección
- 8 líneas de datos
Esto permite acceder simultáneamente a la memoria de programa y a la memoria de datos. Es
decir se puede ejecutar una instrucción (lo que por lo general requiere acceso a memoria de
datos) mientras se lee de la memoria de programa la siguiente instrucción (proceso pipeline).
Sensor de temperatura LM35
Este sensor posee 3 patas, dos de ellas para alimentarlo y la tercera nos entrega un valor de
tensión proporcional a la temperatura medida por el dispositivo, no necesita calibración externa.
*La salida es lineal y entrega 10mV/ºC.
*Rango de utilización: -55ºC < T < +150ºC.
*Rango de alimentación 4 a 30 voltios.
*Consumo: 60 microA (en reposo).
*Regulador de voltaje 7805.
*Regulador de voltaje variable LM317.
*Encapusado: El sensor se encuentra disponible en diferentes encapsulados pero el mas común es
el TO-92, una cápsula comúnmente utilizada por los transistores de baja potencia, como el BC548
o el 2N2904.
Tiene tres pines: alimentación (VCC), tierra (GND) y salida (OUT). Este sensor es fabricado por
Fairchild y National Semiconductor.
MATERIALES








Sensor de temperatura LM35
Microcontroladorpic18f4550
Pantalla LCD 16x2
Protoboard
Oscilador de 20MHz
Condensador 20pF (2)
Potenciómetro 10K
Cable para protoboard
PROCEDIMIENTO
1. Se realizó la respectiva programación del microcontroladorpic18f4550(en un software
llamado MPLAB), ajustando de esta forma la precisión en las mediciones y se calibra el
instrumento.
Imagen 1: Algoritmo utilizado para el microcontrolador pic 18f4550.
#include
<p18f4550.h>
#define ADC_BITS 10
#define
COMANDO
1
#define
DATO 0
voidConfiguraADC (void);
unsigned char LeeADC
(void);
voidEscribeLCD (unsigned
char dato, char tipo);
voidConfiguraLCD (void);
voidRetardo (void);
void Retardo1 (void);
char
char
char
char
char
char
dec;
uni;
cen;
mil;
mmil;
uni1;
TRISB=0;
TRISC=0;
TRISD=0;
TRISE=0;
ADCON1=0X0F;
ConfiguraLCD ();
ConfiguraADC();
EscribeLCD(datoLC
D, DATO);
Retardo();
datoLCD='S';
EscribeLCD(datoLC
D, DATO);
Retardo();
datoLCD='O';
EscribeLCD(datoLC
D, DATO);
Retardo();
datoLCD='R';
EscribeLCD(datoLC
D, DATO);
Retardo();
Retardo1();
void main (void)
{
longb,c,d,e,f,g,h,i;
chardatoLCD;
float A,C;
long B;
int
DatoADC;
datoLCD='S';
EscribeLCD(datoLC
D, DATO);
Retardo();
datoLCD='E';
EscribeLCD(datoLC
D, DATO);
Retardo();
datoLCD='N';
while(1)
{
PORTCbits.RC1=1;
LeeADC();
A=LeeADC();
C=A;
datoLCD=
'=';
C=(C*100)/255;
B=C*1000;
b=B/10000;
c=B%10000;
d=c/1000;
e=c%1000;
f=e/100;
g=e%100;
h=g/10;
i=g%10;
EscribeLCD(datoLC
D, DATO);
Retardo();
datoLCD= '
';
EscribeLCD(datoLC
D, DATO);
Retardo();
PORTCbits.RC1=1;
EscribeLCD(datoLC
D, DATO);
Retardo();
datoLCD=
0xDF;
EscribeLCD(datoLC
D, DATO);
Retardo();
datoLCD=
'C';
EscribeLCD(datoLC
D, DATO);
Retardo1();
datoLCD=
b+0x30;
datoLCD=
0b00000001;
EscribeLCD(datoLC
D, COMANDO);
Retardo();
datoLCD=
'T';
EscribeLCD(datoLC
D, DATO);
Retardo();
datoLCD=
'E';
EscribeLCD(datoLC
D, DATO);
Retardo();
datoLCD=
'M';
EscribeLCD(datoLC
D, DATO);
Retardo();
datoLCD=
'P';
EscribeLCD(datoLC
D, DATO);
Retardo();
EscribeLCD(datoLC
D, DATO);
Retardo();
datoLCD=
d+0x30;
EscribeLCD(datoLC
D, DATO);
Retardo();
datoLCD=
',';
EscribeLCD(datoLC
D, DATO);
Retardo();
datoLCD=
f+0x30;
EscribeLCD(datoLC
D, DATO);
Retardo();
datoLCD=
h+0x30;
EscribeLCD(datoLC
D, DATO);
Retardo();
datoLCD=
i+0x30;
}
}
unsigned char
Conf_Timer(void)
{
PR2=230;
PIR1bits.TMR2IF=0;
T2CON=0b0111111
1;
}
voidConfiguraADC (void)
{
ADCON0=0b00000
101;
ADCON1=0b00011
101;
ADCON2=0b00000
101;
}
unsigned char LeeADC
(void)
{
ADCON0bits.GO_D
ONE=1;
while(ADCON0bits.
GO_DONE==1);
return ADRESH;
}
voidEscribeLCD (unsigned
char dato, char tipo)
{
if(tipo==DATO)
{
PORTEbits.RE0=1;
}
else
{
PORTEbits.RE0=0;
}
PORTEbits.RE1=0;
PORTD=dato;
PORTEbits.RE2=1;
Retardo();
PORTEbits.RE2=0;
}
voidConfiguraLCD (void)
{
unsignedchar
datoLCD;
Retardo();
datoLCD=
0b00000010;
EscribeLCD(datoLC
D, COMANDO);
Retardo();
datoLCD=
0b00111000;
EscribeLCD(datoLC
D, COMANDO);
Retardo();
datoLCD=
0b00001100;
EscribeLCD(datoLC
D, COMANDO);
Retardo();
datoLCD=
0b00000110;
EscribeLCD(datoLC
D, COMANDO);
2. Simulación en un programa llamado Proteus.
Retardo();
datoLCD=
0b00000001;
EscribeLCD(datoLC
D, COMANDO);
Retardo();
}
void Retardo1 (void)
{
int i, j;
for(i=0;i<32000;i++
)
{
j=j+1;
}
}
voidRetardo (void)
{
inti,j;
for(i=0;i<150;i++)
{
j=j+1;
}
}
RESULTADOS
Imagen 2: Montaje del termómetro Digital
Imagen 3: Pantalla LED 16x2
CONCLUSIONES



Este proyecto permitió darnos a entender sobre el funcionamiento del termómetro
digital, para determinar temperaturas de cuerpos y/o soluciones, siendo lo segundo
nuestro punto de interés.
Se aplicaron conceptos básicos aprendidos durante el curso, en especial nos basamos en
un circuito en serie.
Se obtuvo un termómetro digital con una precisión en la medida de 3 cifras decimales, lo
cual nos da una cantidad con mayor precisión.
BIBLIOGRAFÍA
(1) Datasheet Catalog for integrated circuits. “http://www.datasheetcatalog.com/”
(Consultado 08/06/12).
(2) PIC 18F4550 - ORGANIZACIÓN DE LA MEMORIA
“http://www.electromicrodigital.com/site2/index.php?option=com_content&view=article
&id=90&Itemid=29&limitstart=1” (Consultado 06/06/12).
(3) LM35- UControl “http://www.ucontrol.com.ar/wiki/index.php/LM35” (Consultado
15/06/12).
(4) http://www.electromicrodigital.com/site2/index.php?option=com_content&view=article
&id=90&Itemid=29&limitstart=1
Descargar