Universidad Nacional de Ingeniería Facultad de

Anuncio
Universidad Nacional de Ingeniería
Facultad de Electrotecnia y Computación
Sistemas de Medición
Elaborado por:
Levi Dan Sandoval Leiva Carnet: 2009-30216
Profesor:
Ing. Álvaro Gaitán
Tema:
Medidor de temperatura con pic16f877a y sensor lm35 con visualización en 7
segmentos y conexión RS232
II-Resumen del Proyecto
La medición de temperatura del ambiente por lo general es un asunto de los
termómetros de mercurio, ya sea hospitales u/o afines, el problema con este
método es su visualización, por ejemplo si quisiéramos ver la temperatura
ambiente en un termómetro de mercurio en nuestro hogar hay que ir hasta donde
el esta y observar detalladamente para lograr distinguir la temperatura medida.
En este trabajo diseñaremos un termómetro digital el cual sea más fácil de
visualizar en pantallas de LED de 7 segmentos.
En el resto del documento vamos a describir el proceso de diseño de dicho
termómetro, sus elementos y su forma de funcionamiento.
Antecedentes
En principio es importante mencionar que aquí en la UNI ha habido proyectos de
curso que básicamente son el mismo, es decir la construcción de un termómetro
digital, pero a diferencia de nuestro termómetro, estos fueron realizados con
pantallas LCD LM016, donde el costo de estas pantallas es elevado y además su
visualización en entornos muy iluminados es dificultosa.
Justificación
La principal razón por la cual hemos escogido la elaboración de un termómetro
digital ha sido la manera en la que el costo de este puede disminuir
implementando una manera de visualización de la temperatura mejor y más
barata.
Objetivo General
Diseñar un termómetro digital, usando un sensor de temperatura LM35, un
PIC16877A y pantallas LED de 7 segmentos para la visualización.
Objetivos Específicos
Realizar la programación necesaria en el PIC para su correcto funcionamiento y
correlación con las variables de entrada y salida.
Realizar el esquema de diseño del circuito en PROTEUS y realizar las
simulaciones necesarias para comprobar su correcto funcionamiento.
Crear un PCB del circuito para su futura implementación.
Plan de Trabajo
Actividad #1
Hacer la programación para el microcontrolador y simular su funcionamiento en
PROTEUS. Hacer la correcta programación del microcontrolador es fundamental
para la realización de las demás actividades, usaremos el lenguaje de alto nivel
CCS y el programa PICC como compilador, para comprobar su funcionalidad
usaremos el programa PROTEUS en el cual simularemos como el PIC trabaja con
los demás componentes del circuito electrónico.
Actividad #2
Una vez realizada la actividad #1 sin inconvenientes y con los resultados
esperados procederemos a:
a) Programar el PIC 16f877A.
b) Montar el circuito completo en una tabla de nodos, igualmente como está el
diseño en las simulaciones realizadas anteriormente.
Actividad #3
Al haber comprobado su correcto funcionamiento procederemos a hacer la tarjeta
PCB para montar los componentes y finalizar el termómetro digital.
En esta etapa, ya con todos los componentes conseguidos y necesarios para el
termómetro, haremos la tarjeta del circuito, usando el software PCB WIZARD para
el diseño de las pistas, filminas para la impresión de las pistas sobre la tarjeta de
cobre y acido nítrico para la eliminar las partes de la tarjeta que no sean las pistas
donde irán fijados todos los componentes.
Introducción
La temperatura es una variable física de muchísima importancia en todas las
partes del mundo, cada país, cada ciudad e incluso cada hogar debería en
términos básicos y prácticos saber la temperatura del ambiente.
Esta practicidad adquiere mayor relevancia cuando hablamos de actividades
especificas ligadas al manejo intencionado de la temperatura en ambientes
cerrados, por ejemplo oficinas de trabajo, hoteles, centros de entretenimiento,
cines, etc. con aires acondicionados a determinada temperatura, se hace
indispensable conocer la temperatura ambiente para garantizar que haya un
ambiente cómodo y agradable para las personas dentro del lugar, o en otro caso
podría servir para monitorear la temperatura a la que se almacenan productos en
una bodega y asegurar su buen estado e integridad, etc.
Desarrollo
Para entrar de lleno al diseño del termómetro definiremos las características de
este y los elementos y/o componentes (valga la redundancia) necesarios para la
realización del mismo.
Características del termómetro digital




Rango de temperatura medible (-55 a 100) grados Celsius.
Entrada de voltaje de 115-125 voltios a 60 herz.
Voltaje DC de trabajo del circuito 5 Voltios.
Conexión RS232 serie para pc.
El sensor: Este elemento tiene la función de convertir la variable física en una
variable eléctrica como voltaje o corriente.
En nuestro caso la variable física que mediremos será temperatura, para ello
usaremos el sensor lm35.
Acondicionador: En este caso el acondicionamiento de la señal el sensor es
simplemente para lograr obtener una medición de temperatura bajo cero ya que la
salida máxima del sensor es de 5 voltios los cuales son totalmente manejables por
el microcontrolador.
Procesador de variable: Tiene la función de estimar las medidas finales adquiridas
a través de la variable acondicionada mediante cálculos matemáticos, etc. y
obtener una magnitud acertada de la variable física. Estos suelen ser circuitos o
sistemas más complejos, que en la mayoría de los casos necesitan ser
programados para tal función.
En nuestro caso el procesador de variable será el microcontrolador, el cual
calculara mediante ecuaciones previamente programadas el valor real de
temperatura y también tendrá la función de brindar las señales necesarias para las
pantallas de siete segmentos y es el que servirá para la conexión RS232 con la
PC.
La programación del microcontrolador fue hecha en lenguaje CCS de alto nivel, a
continuación el mismo:
#include "16f877A.h"
#DEVICE adc=10 // Convertidor-analógico digital del microcontrolador
#include "MATH.H"
#fuses XT,NOPROTECT,NOWDT
// Directivas generales del pic
#use delay (clock=4M)
// Reloj a 4MHz
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8, parity=N) // Conexion RS232
#use fast_io(A)
#use fast_io(B)
#use fast_io(C)
#use fast_io(D)
int32 vtemp, vd;
int8 a, b, c;
float temp;
void prom(){
int8 prom;
vd=0;
vtemp=0;
for(prom=0;prom<100;prom++){
set_adc_channel(1);
delay_us(25);
vd+=read_adc();
delay_us(25);
set_adc_channel(0);
//setear AN0 entrada
delay_us(25);
vtemp+=read_adc();
delay_us(25);
}
vd=vd/100;
vtemp=vtemp/100;
}
void main(){
set_tris_b(0x00);
// Todo el puerto B como salida
set_tris_c(0x80);
// Todo el puerto C como salida
set_tris_d(0x00);
// Todo el puerto D como salida
set_tris_a(0XFF);
// entrada en el puerto A
setup_adc_ports( ANALOG_RA3_REF ); // Todas las entradas análogas activadas
setup_adc(adc_clock_internal);
output_b(0);
output_c(0);
output_d(0);
// Reloj interno del conversor A/D
delay_ms(100);
while(true)
{
prom();
if(vtemp<vd){
vtemp=vd-vtemp;
output_high(pin_b0);
}
else{
vtemp=vtemp-vd;
output_low(pin_b0);
}
temp=((vtemp*1000.0*2.5)/(10.0*1023.0))-0.0; //2.5 es Vref+ ajustar en el circuito final
//0.0 es corrección de offset, ajustar al ultimo
vtemp=floor(temp*10.0);
a=vtemp/100;
b=vtemp/10-a*10;
c=vtemp-a*100-b*10;
output_c(a);
c=c<<4;
c=b+c;
output_d(c);
delay_ms(200);
printf("Temperatura= %fC\r", temp);
}
}
Esquema total del circuito
RXD
TXD
RTS
C4
X1
33pF
U2
1
C5
CTS
33pF
CRYSTAL
U1
13
14
51.0
VOUT
R1
2
2
3
4
5
6
7
1k
3
LM35
C2
R2
100nF
1k
D1
8
9
10
1
1N4148
D2
R3
C1
1N4148
10k
100nF
OSC1/CLKIN
OSC2/CLKOUT
RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD
RA0/AN0
RA1/AN1
RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/T0CKI/C1OUT
RA5/AN4/SS/C2OUT
RC0/T1OSO/T1CKI
RE0/AN5/RD
RC1/T1OSI/CCP2
RE1/AN6/WR
RC2/CCP1
RE2/AN7/CS
RC3/SCK/SCL
RC4/SDI/SDA
MCLR/Vpp/THV
RC5/SDO
RC6/TX/CK
RC7/RX/DT
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7
33
34
35
36
37
38
39
40
R7
D3
100
15
16
17
18
23
24
25
26
19
20
21
22
27
28
29
30
R8
LED-BLUE
100
U3
7
1
2
6
4
5
3
A
B
C
D
BI/RBO
RBI
LT
QA
QB
QC
QD
QE
QF
QG
U4
74LS48
7
A
1
B
2
C
6
D
4
BI/RBO
5
RBI
3
LT
QA
QB
QC
QD
QE
QF
QG
13
12
11
10
9
15
14
13
12
11
10
9
15
14
R9
100
74LS48
PIC16F877A
U5
R4
R6
10k
1k
7
1
2
6
4
5
3
A
B
C
D
BI/RBO
RBI
LT
QA
QB
QC
QD
QE
QF
QG
13
12
11
10
9
15
14
74LS48
R5
C3
10k
100nF
R10
100
El circuito se alimenta en su totalidad por 5 voltios DC, cuando se enciende
el LED indica que la temperatura medida está bajo 0 grados Celsius.
Listado de componentes:
1 LM 35
1 MIROCONTROLADOR 16F877A
1 CRISTAL OSCILADOR DE 4MHZ
2 CAPACITORES CERAMICOS DE 33 PF
1 FUENTE DC DE 5V
3 DISPLAY DE 7 SEGMENTOS DE CÁTODO COMÚN
3 TTL 74LS48 (CODIFICADOR BCD A 7 SEGMENTOS)
2 DIODO 1N4148
3 RESISTENCIAS DE 10 K
3 RESISTENCIAS DE 1K
4 RESISTENCIAS DE 220
1 LED ROJO O AZUL
1 BOTÓN N/A (NORMALMENTE ABIERTO)
1 CABLE COM PARA LA CONEXIÓN SERIE
Detalle de los componentes
LM35
El LM35 es un sensor de temperatura con una precisión calibrada de 1ºC. Su
rango de medición abarca desde -55°C hasta 150°C. La salida es lineal y cada
grado centígrado equivale a 10mV, por lo tanto:
150ºC = 1500mV
-55ºC = -550mV1
Sus características más relevantes son:







Está calibrado directamente en grados Celsius.
La tensión de salida es proporcional a la temperatura.
Tiene una precisión garantizada de 0.5°C a 25°C.
Opera entre 4 y 30 voltios de alimentación.
Baja impedancia de salida.
Baja corriente de alimentación (60uA).
Bajo coste.
El microcontrolador
Los PIC16F87X forman una subfamilia de microcontroladores PIC (Peripheral
Interface Controller) de gama media de 8 bits, fabricados por Microchip
Technology Inc..
Cuentan con memoria de programa de tipo EEPROM Flash mejorada, lo que
permite programarlos fácilmente usando un dispositivo programador de PIC. Esta
característica facilita sustancialmente el diseño de proyectos, minimizando el
tiempo empleado en programar los microcontroladores (µC).
Para nuestro proyecto usaremos el modelo 16F877A
74LS48
Este es un circuito integrado basado en tecnología TTL, este es un convertidoror
de código BCD a 7 segmentos, y es necesario en nuestro caso para el uso de las
pantallas led.
Pantallas LED de 7 segmentos cátodo común
Son pantallas a base de led las cuales muestran los números del 0 al 9
dependiendo de las señales de entrada, usaremos tres de estas una para
decimales, una para la unidad y una para la decena.
Bibliografía
http://www.ozeros.com/foro/topic/854-guia-termometro-con-lm35/
http://es.wikipedia.org/wiki/LM35
Dataheet PIC16F877a, lm335, 74ls48.
Compilador CCS y simulador proteus para Microcontroladores PIC- Eduardo García Breijo
Descargar