Universidad Militar Nueva Granada
Facultad de Ingeniería en Telecomunicaciones
Microprocesadores Arquitectura De Computador
Ing. Juan Carlos Martínez
PROGRAMA “SENSOR DE TEMPERATURA”
MICROPROCESADORES
Gonzalo Alberto Cotte Urrutia Cód. 1400838
Héctor Camilo Barrera Rivera Cód. 1400716
Juan David Cárdenas Acosta Cód. 1400723
ABSTRACT: There will be a program for este sistema se realizara con el PIC
the PIC 16F877A be cataloged 16F877A que permite manejar 8 pines
temperature and compared to a set como entradas analógicas y tomar los
temperature, if it exceeds the set distintos datos de temperatura.
temperature will turn a fan, the
temperature can be displayed on an LCD,
the program will be held leguaje C. 2 OBJETIVO
RESUMEN: Se realizara un programa,
para el PIC 16F877A que censara la Diseñar e implementar un programa
temperatura y la comparara con una que lea la temperatura del sensor y
temperatura establecida, si se supera la la muestre en la LCD., con el PIC
temperatura establecida se encenderá un 16F877A.
ventilador, se podrá visualizar la
temperatura en una LCD, se realizara el Realizar un programa para
programa en leguaje C. transformar señales analógicas de
entrada a digitales en la salida
utilizando el PIC 16F877A.
1 INTRODUCCIÓN
El PIC 16F877A es un dispositivo muy 3 PROCEDIMIENTO
versátil que desempeña muchas
funciones, como el conversor análogo
digital, lo que permite tomar variables Realizar un programa que tome la
físicas como la temperatura, humedad, temperatura y la compare con una
presión, etc. y las convierte a un sistema temperatura establecida si esta se
digital. Se quiere implementar un sistema sobrepasa se activa un ventilador.
que tome la temperatura y la compare con
una temperatura deseada, en caso de que El circuito cuenta con un sensor de
se sobrepase la temperatura deseada se temperatura LM35 que nos indica la
active un ventilador. Para llevar acabo temperatura del ambiente, un
potenciómetro que permite colocar un
1
Universidad Militar Nueva Granada
Facultad de Ingeniería en Telecomunicaciones
Microprocesadores Arquitectura De Computador
Ing. Juan Carlos Martínez
voltaje de referencia para compararlo con que varía su voltaje con respecto a la
el del sensor, si este es superado se temperatura. Se aplica el procedimiento
activa un ventilador hasta que la anterior para determinar el valor de la
temperatura este por debajo de la temperatura con respecto al voltaje del
temperatura de referencia. potenciómetro.
El LM35 es un sensor lineal que aumenta Se almacenan los datos en unas variables
10mV por cada grado centígrado. Se de la siguiente forma:
calcula el valor de resolución del PIC
teniendo en cuenta que el Vref = 5v, el set_adc_channel(0); //Escogemos el canal de la
número de bits = 8 conversion
value=read_adc(); //lee lo que hay en canal cero y lo
guarda en la variable
V ref
Resolucion= set_adc_channel(1); //Escogemos el canal de la
2n−1 conversion
value1=read_adc(); //lee lo que hay en canal cero y
Res = 19.6mv lo guarda en la variable
El PIC va tomar valores de 1 a 255, Luego de hacer el proceso anterior para
dependiendo del voltaje de entrada obtener el valor de la temperatura se
19.6mv = 1 hasta 5v = 255. muestra en la LCD el valor de la
temperatura del ambiente y la temperatura
Como el PIC toma un valor decimal este de referencia.
se multiplica por el valor de la resolución,
lo que nos permite saber el voltaje, por Luego se comparan las dos temperaturas,
ejemplo. si la temperatura ambiente sobrepasa la
temperatura de referencia se enciende un
5(decimal) * 0.0196 (resolución) = 0.098v led (ventilador), si es el caso contrario se
(voltaje). apaga el led (ventilador).
Como ya conocemos el voltaje de entrada Se sigue cumpliendo todo el proceso en
y sabemos que el sensor aumenta 10mV un ciclo infinito ya que se tiene un while
por cada grado centígrado, tomamos el (1), para reiniciar el programa se utiliza
valor del voltaje y lo pasamos a mv y lo Mclr.
dividimos en 10 de esta forma se obtienen
los grados que indica el sensor LM35.
0.098v * 1000 = 98mv 4 DIAGRAMA DE FLUJO
98mv / 10 = 9.8 C
Representación gráfica del programa.
Para colocar una temperatura de “Sensor de Temperatura”.
referencia se usa un potenciómetro, que
nos permite variar el voltaje que ingresa al
PIC, el cual se asemeja al sensor LM35
2
Universidad Militar Nueva Granada
Facultad de Ingeniería en Telecomunicaciones
Microprocesadores Arquitectura De Computador
Ing. Juan Carlos Martínez
#use delay(clock=4000000)
#fuses xt,nowdt,put
int value,value1;
float voltaje,Grados,voltaje1,Grados2;
#define LCD_ENABLE_PIN PIN_D0
#define LCD_RS_PIN PIN_D1
#define LCD_RW_PIN PIN_D2
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7
#include <lcd.c>
void main()
{
set_tris_b(0b00000000); //puerto b como salida
output_b(0X00); //puerto b en cero
setup_adc(ADC_CLOCK_DIV_8); //seleccionamos
TAD=8Tocs
SETUP_ADC_PORTS(ALL_ANALOG); //configuramos las
entradas analogas
set_adc_channel(0); //Escogemos el canal de la
conversión
lcd_init(); //inicializa la pantalla lcd
lcd_gotoxy(4,1);
printf(lcd_putc,"SENSOR DE ");
lcd_gotoxy(3,2);
printf(lcd_putc,"TEMPERATURA");
delay_ms(1200);
lcd_init();
while(1)
{
ini:
set_adc_channel(0); //Escogemos el canal de la
conversion 0
value=read_adc(); //lee lo que hay en canal cero y lo
guarda en la variable
set_adc_channel(1); //Escogemos el canal de la
conversion 1
5 PROGRAMA value1=read_adc(); //lee lo que hay en canal 1 y lo
guarda en la variable
El programa se realizó en lenguaje c.
voltaje1=value1*0.0196; //El voltaje de entrada A RA1
#include <16f877a.h> Grados2=((voltaje1*1000)/10); //Temperatura
#device adc=8 voltaje=value*0.0196; //Voltaje de entrada a RA0
3
Universidad Militar Nueva Granada
Facultad de Ingeniería en Telecomunicaciones
Microprocesadores Arquitectura De Computador
Ing. Juan Carlos Martínez
Grados=((voltaje*1000)/10); //Temperatura
PUERTO D asignado para la LCD,
configuración RD0-RD1-RD2 y para la
lcd_gotoxy(1,1);
printf(lcd_putc,"AMBIENT DESEADA",);
transmisión de datos RD4-RD5-RD6-RD7.
lcd_gotoxy(10,2);
printf(lcd_putc,"T=%.1f ",Grados2); MCLR va conectado al pin 1 del micro, el
lcd_gotoxy(1,2); cristal de cuarzo va conectado entre el pin
printf(lcd_putc,"T=%.1f",Grados); 13 y 14 del micro, para la alimentación se
delay_ms(50); toma el pin 11 a Vdd y el pin 12 va a Vss.
if(Grados>Grados2)
{
output_b(0Xff); //enciende Puerto b
goto ini;
}
output_b(0X00); //apaga Puerto b
}
}
6 DIAGRAMA CIRCUITAL
Para la correspondiente asignación de
periféricos se utiliza el siguiente diagrama
que pertenece al PIC 16F877A.
7 CONCLUSIONES
1. Hacer la conversión análogo-
digital permite tomar datos
analógicos presentes en
cualquier elemento de la
naturaleza y darles un valor en
números binarios.
2. Las características y funciones
integradas en el PIC permiten
solucionar diferentes tipos de
Se asignan RA0-RA1 como entrada ADC, problemas, ahorrando recursos
el sensor LM35 tiene tres pines, los pines de hardware, tiempo, recursos,
de los extremos son para alimentación espacio y rendimiento, logrando
Vdd y Vss, el del centro es la salida va al ser un dispositivo muy útil.
pin RA0. El potenciómetro cuenta con 3
pines dos para alimentación Vdd y Vss, el V ref
del centro va conectado a RA1. Resolucion=
2n−1
4
Universidad Militar Nueva Granada
Facultad de Ingeniería en Telecomunicaciones
Microprocesadores Arquitectura De Computador
Ing. Juan Carlos Martínez
V ref =voltaje máximo del conversor
V ¿=voltaje de entrada
n=número de bits del conversor
V¿
Salida=
Resolucion