Vous êtes sur la page 1sur 4

Escuela Superior de IIngeniera Mecnica y Elctrica - Ingeniera en Computacin - Circuitos Lgicos II

Pag. 1

MEDIDOR DE TEMPERATURA CON PIC16F84A
Gonzlez Len Christian, Hernndez Sanabria Jos Blas, Velzquez Tllez Brahian
chrisgoleon24@hotmail.com, jblash6@hotmail.com, pumasemj@hotmail.com
Resumen: En el presente proyecto se elabor con el
microcontrolador PIC16F84A, un sensor de
temperatura DS1624 y un mdulo LDC para que
mostrara el valor obtenido.
Palabras Clave: PIC16F84A, sensor, LDC y .
Introduccin:
El PIC16F84 es un microcontrolador a 8 bits de la
familia PIC perteneciente a la Gama Media (segn la
clasificacin dada a los microcontroladores por la
misma empresa fabricante) Microchip.
Se trata de uno de los microcontroladores ms
populares del mercado actual, ideal para principiantes,
debido a su arquitectura de 8 bits, 18 pines, y
un conjunto de instrucciones RISC muy amigable para
memorizar y fcil de entender, internamente consta de:
Memoria Flash de programa (1K x 14 bits).
Memoria EEPROM de datos (64 x 8 bits).
Memoria RAM (68 registros x 8 bits).
Un temporizador/contador (timer de 8 bits).
Un divisor de frecuencia.
Varios puertos de entrada-salida (13 pines en
dos puertos, 5 pines el puerto A y 8 pines el
puerto B).

El PIC16F84 posee una ULA (Unidad Lgica
Aritmtica) limitada que impide hacer clculos
matemticos bsicos, como por ejemplo, una
multiplicacin de dos nmeros a 8 bits en una nica
instruccin, o una divisin en una nica instruccin.
Por lo que el programador debe valerse de otras
tcnicas matemticas que se apoyan en el juego de
Instrucciones aritmticas disponibles en este PIC para
realizar este clculo matemtico bsico.
Los datos almacenados en la memoria EEPROM
pueden durar almacenados por ms de 40 aos.
La memoria de datos no se puede acceder
completamente en un nico registro sino que se debe
acceder por bancos, por lo que se debe estar atento al
momento de escribir el programa de no sobrescribir
algn registro en el banco 0 queriendo escribir sobre el
banco 1.
Muchos estudiantes de electrnica, por no decir la
mayora, eligen este PIC para iniciarse en la
programacin de microcontroladores cuando en el
mercado existen otros PIC con una arquitectura interna
mucho ms simple que la que posee este
microntrolador.
Aqu una imagen del PIC16F84A y sus pines.

Figura1. Configuracin de pines.
Sensor de temperatura DS1624.- Es un sensor de
temperatura que transmite el valor digital de la
temperatura leda en el lugar donde se encuentre el
dispositivo.

Figura 2. Configuracin de pines del DS1624
Principales caracteristicas del sensor:
Pag. 2
Es un dispositivo conectable a bus 12C, es
decir, los datos se escriben y leen en serie a
travs de los pines SCL y SDA.
No requiere de componentes externos para
realizar la medicion de temperatura.
La temperatura es leida como un valor digital
de 16 bits que incluye el signo.
El rango de temperatura que puede medir va
desde -55C hasta +125C con variaciones de
0.0625.
Realiza la conversion de temperatura a lo
sumo en un segundo.
Posee 256 bytes de memoria EEPROM.
Se puede alimentar con un voltaje de entre
2.7V a 5.5V, siendo el valor tpico 5V.
El DS1624 realiza la lectura de temperatura mediante
dos bytes en complemento a 2. Este dato es transmitido
pos el bus 12C. La temperatura viene expresada en
grados centigrados con cuatro decimales. Se almacenan
dos bytes donde el byte superior es la parte entera y el
inferior la decimal.
El bit mas alto del byte de los enteros indica el signo,
siendo 0 un valor positivo y negativo en caso de 1.
Los cuatro bits mas bajos de la a parte decimal estan
siempre en 0, ya que no se utilizan. Para calcular la
parte decimal se suman los cuatro bits mas altos que
son: 0.5C, 0.25C, 0.125C, 0.0625C (enumerados
del mas alto al mas bajo).

El DS1624 posee un registro de control cuyo contenido
determina el modo de trabajo del sensor en funcin de
cmo se fijen los bits de la sig. Figura:

Bit DONE (conversin):
Si esta en 0 la medicin est en proceso
Si esta en 1 la conversin ha finalizado.
Bit 1SHOT (modo de conversin):
Si esta en 0 la conversin de realiza de forma
constante
Si esta en 1 la conversin solo se realiza
desde que recibe el comando de comienzo de
conversin Start convert.
Comandos del DS1624:
1. 0AAh (Leer temperatura).- Lee el valor de
temperatura realizado en la ltima conversin.
2. 0EEh (Comenzar conversin).- Inicia la
conversin de temperatura.
3. 22h (Detener conversin).- Detiene la
conversin de temperatura.
4. 17h (Acceso a memoria).- Lee o escribe en los
256 bytes de la memoria interna EEPROM.
5. 0ACh (Acceso a configuracin).- Lee o escribe
la palabra de configuracin en el registro de
control.
Modos para realizar la medicin de temperatura:
1. En el modo de conversin continuo, la conversin
comienza a ejecutarse desde
que se enva cl comando Start convert T. Las
conversiones se realizan una detrs
de otra y pueden ser ledas en cualquier momento.
Para finalizar hay que enviar
el comando Stop Convert T.
2. En el modo de conversin Un disparo, se debe
enviar un comando Start convert T
cada vez que se desee realizar la lectura de la
temperatura. Cuando acaba la
conversin el DS1624 pasa a modo de bajo
consumo.

Una vez iniciada la conversin de temperatura
mediante el comando Start Convert T el
mcrocontrolador maestro debe leer el bit DONE del
registro de control para conocer si ha terminado la
conversin y proceder a la lectura del DS1624. Esto no
es necesario si la lectura se realiza en un tiempo mayor
de un segundo despus de iniciada la conversin.

Desarrollo:
El programa fue realizado elaborado con ayuda de
librerias para el sensor y la LCD. As que solo se
desarrollo el algoritmo de fncionamiento para el
sensado de la temperatura, aqu algunas rutinas pa
Pag. 3
iniciar la comunicacin Sensor - Microcontrolador y
Microcontrolador - LCD :
DS1624_Inicializa
movlw DS1624_DireccionEscritura; Apunta al
dispositivo.
call I2C_EnviaByte
movlw Comando_AccessConfig ; Comando
indicando que el prximo byte es la
call I2C_EnviaByte ; palabra de control.
movlw b'01001011'
call I2C_EnviaByte
call I2C_EnviaStop
return

Esta rutina prepara el sensor para trabajar, la constante
_DireccionEscritura contiene al valor 10010000,
estae valor es cargado al registro de trabajo w. El
siguiente rengln es la llamada al procedimiento
I2C_EnviaByte. I2C_EnviaByte establece el protocolo
de comunicacin con el microcontrolador, configura la
linea SCL de entrada y la mantiene en el estado bajo
durante al menos 5 s. Si SCL esta e estado alto, lo
pone en alta impedancia y si el dispositivo conectado
mantine esta linea en bajo, se debe esperar un nivel alto
para reanudar la comunicacin.
Despues de la verificacin del la lnea SCL, se carga el
registro w con el comando para recibir la palabra de
control, despues se carga la palabra de control para el
modo One-shot. Finalmente se envia la palabra de
control y se detiene la comunicacin.
LCD_Inicializa
bsf STATUS,RP0 ; Configura las lneas
conectadas al pines RS,
bcf LCD_PinRS ; R/W y E.
bcf LCD_PinEnable
bcf LCD_PinRW
bcf STATUS,RP0
bcf LCD_PinRW .
bcf LCD_PinEnable
bcf LCD_PinRS .
call Retardo_20ms
movlw b'00110000'
call LCD_EscribeLCD
call Retardo_5ms
movlw b'00110000'
call LCD_EscribeLCD
call Retardo_200micros
movlw b'00110000'
call LCD_EscribeLCD
movlw b'00100000' ; Interface de 4 bits.
call LCD_EscribeLCD
call LCD_2Lineas4Bits5x7
call LCD_Borra
call LCD_CursorOFF
call LCD_CursorIncr
return

Esta subrutina configura la LCD, para recibir los datos
procesados por el microcontrolador. Primero se
establece la configurcin del los pines RS, R/W y E. Se
debe asegurar que la LCD no trabje ya que an no se ha
envia do nada, as que se establece el pin E en cero.
Ahora se prepara la LCD, par recibir comandos de
operacin. Entre el envio de cadad comando debe haber
un lapso de espera par evitar el acumulado de datos
enviados al LCD.

Despues de las confiuguraciones adecuadas como son
activar el Timer0 y el servicio de interrupciones del
microcontrolador, se enva un mensaje en la parte
superior del LCD y se inicia la lectura de la
temperatura.

DS1624_LeeTemperatura
bcf I2C_UltimoByteLeer
call I2C_EnviaStart
movlw DS1624_DireccionEscritura
call I2C_EnviaByte
movlw Comando_ReadTemperature
call I2C_EnviaByte
call I2C_EnviaStart
movlw DS1624_DireccionLectura
call I2C_EnviaByte
call I2C_LeeByte
movwf DS1624_Temperatura
bsf I2C_UltimoByteLeer
call I2C_LeeByte
movwf DS1624_Decimal
call I2C_EnviaStop
Se inicia la lecura de la temperatura configurando el
sensor en modo de lectura enviando el comando 0AAh,
despues se lee el primer byte del sensor y lo guarde en
la variable DS1624_temperatura, enseguida estable que
el siguiente byte es el ultimo a leer y lo guarda en la
variable DS1624_decimal. Se lee el ultimo bit del
segundo byte para estabecer el signo de la temperatura
y se procede a la convercin.
Por ultimo se visualia el resultado de la conversion
enviando los datos a la LCD utilizando la subrutina

Pag. 4
VisualizaTermometro
movlw .5
call LCD_PosicionLinea2
btfss DS1624_Signo,7
goto TemperaturaPositiva

TemperaturaNegativa
movlw '-'
call LCD_Caracter
TemperaturaPositiva
movf DS1624_Temperatura,W
call BIN_a_BCD
call LCD_Byte
movlw '.'
call LCD_Caracter
movf DS1624_Decimal,W
call LCD_Nibble
movlw MensajeGradoCentigrado
call LCD_Mensaje
return
Resultados:
Se comprob que es muy complicado desarrollar un
proyecto sin tener los conocimientos nesesarios sobre el
lenguaje del pic y el manejo de dispositivos como
sensores y display`s.
Sin embargo, fue posible elaborar un termometro
digital. Cabe sealar que no fue se pudo implementar
el manejo de un motor para enfriar el sensor como se
habia planteado en el inicio del proyecto.

Conclusiones
VELAZQUEZ TELLEZ BRAHIAN: Concluyo que en
base al proyecto realizado que el pic16f84A es un
microcontrolador basico pero tiene una gran variedad
de aplicaciones y un funcionamiento aceptable como se
vien en la realizacion de este proyecto.
GONZLEZ LEN CHRISTIAN: El correcto manejo
de Microcontroladores en el area de la electronica es
escencial para el posterior entendiemiento del
funcionamiento interno de un computador actual,
aunque el PIC16f84A es obsoleto, sigue siendo util
para propositos educativos..

Hernndez Sanabria Jos Blas:
Al realizar esta practica, pude corrovorar nuevamente
que el manejo del lenguaje ensamblador es muy
complicado y si a su vez se suma el manejo de
componentes electronicos, resulta bastante complejo el
desarrollo de un proyecto. Sin embargo, fue posible
realizar el temormetro, pero cabe mencionar que se
hizo uso de librerias par el manejo del sensor y la lcd.
Referencias
[1] https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=
web&cd=21&ved=0CCYQFjAAOBQ&url=https%3A%2F%2F
www.u-
cursos.cl%2Fingenieria%2F2006%2F1%2FEL693%2F1%2Fma
terial_docente%2Fobjeto%2F86389&ei=pRQhU9GrGaik2gXS
8oHYCQ&v6u=https%3A%2F%2Fs-v6exp1-
ds.metric.gstatic.com%2Fgen_204%3Fip%3D201.124.11.137%
26ts%3D1394676901809651%26auth%3Do2etwk2zmlb2su46p
zhrxv6eely7uc2d%26rndm%3D0.6004105794934024&v6s=2&
v6t=4097&usg=AFQjCNFbC1LrBBFuFiau744G7htUTZY0kg
&sig2=lobUhT4FV6PdjjcUy28Ugg&bvm=bv.62922401,d.b2I
&cad=rja.
[2] http://arantxa.ii.uam.es/~jgonzale/fco/curso07-
08/download/seminarios-vhdl.pdf
[3] Apuntes Circuitos Lgicos II, Hernndez Sanabria Jos Blas.
Profesor: Bautista Arias Jos Luis. Periodo 2014/2.

Vous aimerez peut-être aussi