Está en la página 1de 12

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER

INGENIERÍA ELECTRÓNICA
MICROCONTROLADORES
CONTROL DE TEMPERATURA EMPLEANDO UN
µC 89C51

Iván Ernesto Zambrano López Jorge Humberto Oviedo Rodríguez Darwin Carreño Niño
ivan_zambrano@hotmail.com jhortwo@hotmail.com darwin_c_82@hotmail.com

RESUMEN El valor de voltaje se digitaliza por medio del


conversor ADC0804 como se muestra en la figura y
El proyecto consiste básicamente en ejercer un la salida del ADC se conecta al puerto P0 del
control automático sobre la velocidad de un motor microcontrolador para su posterior lectura.
dc, funcionando en modo de extractor de calor,
para así poder mantener una temperatura deseada
en un sensor.

El control se realiza mediante el microcontrolador


AT89C51, el cual recibe mediante una entrada por
teclado un valor que es tomado como temperatura
de referencia y la temperatura real es censada por
un AD22100. Cuando el censor esta en la
temperatura deseada o menor, el motor se detiene
completamente, y cuando aumenta la temperatura
sobre el nivel de referencia, el motor empieza a
variar su velocidad para tratar de mantener la
temperatura deseada. La temperatura censada y la
de referencia son visualizadas en un display LCD.

DESARROLLO

El sistema de control de temperatura de un


ambiente cerrado consta básicamente de 5 partes o
componentes que son: controlador, sensor de
temperatura, visualización en una pantalla LCD, La señal de entrada (Vout del sensor) es un
teclado, generador de PWM y circuito de potencia. voltaje análogo que demando el uso de un
conversor A/D para que el microcontrolador
Sensado De La Temperatura pudiera adquirir el dato.

La temperatura del ambiente se senso a través del Luego de incorporar el conversor al proceso de
sensor AD22100 de la compañia Analog Devices, sensado obtenemos la siguiente expresión de
este dispositivo genera un voltaje de salida temperatura en función del dato binario de
proporcional al valor de temperatura de acuerdo a salida dl ADC que corresponde al Vout del
la siguiente ecuación: sensor AD22100.

Vout = (V+/5 V) ´ [1.375 V + (22.5 mV/°C) ´ TA]. T=((DBx20mV)-1,375)/22,5mV/ºC

Simplificacndo y aproximando llegamos a la


expresión empleada en el proyecto:

T=((DB-69)/9)x8 +Residuo de la División por 9

Ing. Gabriel Sánchez Suárez


gsanchez@bari.ufps.edu.co
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
INGENIERÍA ELECTRÓNICA
MICROCONTROLADORES
CONTROL DE TEMPERATURA EMPLEANDO UN
µC 89C51

Iván Ernesto Zambrano López Jorge Humberto Oviedo Rodríguez Darwin Carreño Niño
ivan_zambrano@hotmail.com jhortwo@hotmail.com darwin_c_82@hotmail.com

incrementando el valor de la resistencia hasta llegar


a su máximo valor (10k ohms) con lo que se
consigue la mayor velocidad del extractor y se
mantiene en este valor hasta que la temperatura
llegue a un valor menor o igual al de referencia,
pero si la diferencia es negativa, se decrementa el
valor de resistencia hasta llegar a su mínimo valor
(45 ohms) con lo que se apaga el motor y se
mantiene en este valor hasta que la temperatura
vuelva a superar el valor de referencia.

El potenciómetro digital AD5206 consta


internamente 6 potenciómetros de 10K ohms cada
uno, para su control son necesarias tres señales:
SDI (entrada de datos binaria serie), CLK (señal de
reloj) y CS (habilitador activo bajo) como se
En la figura se muestra la conexión del conversor muestra en la figura de la estructura interna del
para que opere en rueda libre (convierte y muestra potenciómetro.
todo el tiempo). Se conectó un voltaje de referencia
de 5 voltios, lo cual da una resolución de
20mvoltios.

Controlador

El controlador lo compone un microcontrolador


89C51 de la compañía Atmel y el potenciómetro
digital AD5206 de la compañía Analog Device.

El funcionamiento del controlador es el siguiente:


El microcontrolador se encarga de leer en el puerto
P0, el valor de temperatura digitalizado que envía el
conversor ADC conectado al sensor, también lee en
los cuatro bits menos significativos del puerto P1, el
valor de referencia de temperatura que ingresa el La palabra de control del potenciómetro consta de
usuario a través del teclado. El programa de 11 bits, los tres primeros indican cual de los 6
control almacenado en la memoria ROM del potenciómetros se va a elegir y los 8 siguientes
microcontrolador, realiza la diferencia entre el valor indican en binario el valor de la resistencia que se
de temperatura sensado y el de referencia, si el quiere entre el pin W y B del respectivo
resultado es positivo, significa que la temperatura potenciómetro, de acuerdo a la siguiente ecuación
del ambiente es mayor que la de referencia y se : RWB (Dx) = (Dx)/256 RBA + RW ,, donde Dx es el
debe extraer mayor cantidad de aire caliente, para dato binario de resistencia y Rw es la resistencia
ello incrementa en un 10% la resistencia del mínima entre estos dos terminales.
potenciómetro digital para aumentar la velocidad
del motor extractor de aire; por el contrario si la En este proyecto se empleó solo un potenciómetro,
diferencia es negativa, indica que la temperatura el número 1 , para seleccionarlo se debe enviar en
del ambiente es menor que la de referencia por lo los tres primeros bits de la palabra de control el
que decrementa el valor de la resistencia para valor “000” y en los 8 siguientes bits el valor del
disminuir la velocidad del motor y extraer menos registro R4, empezando por el bit mas significativo.
aire. Este proceso se repite constantemente, si La palabra de control y las señales CLK y CS del
cada vez la diferencia es positiva se sigue potenciómetro son generadas por el programa de

Ing. Gabriel Sánchez Suárez


gsanchez@bari.ufps.edu.co
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
INGENIERÍA ELECTRÓNICA
MICROCONTROLADORES
CONTROL DE TEMPERATURA EMPLEANDO UN
µC 89C51

Iván Ernesto Zambrano López Jorge Humberto Oviedo Rodríguez Darwin Carreño Niño
ivan_zambrano@hotmail.com jhortwo@hotmail.com darwin_c_82@hotmail.com

control del microcontrolador siguiendo el diagrama ACALL ESCC


ACALL R4100U
de tiempos que se muestra en la figura. ACALL R4100U
ACALL R4100U
ACALL R4100U
;TRANSFERENCIA A 4 BITS
MOV R0,#08H
ACALL ESCC
;INCREMENTAR CONTADOR DE DIRECCIONES DISPLAY QUIETO
MOV R0,#06H
ACALL ESCC
;DISPLAY ON CURSOR ON NO PARPADEO
MOV R0,#0CH
ACALL ESCC

;TEM: XX YY °C
;VEL:XXXB VS:XXXB
;****************TEMPERATURA*****************
;T
MOV R0,#54H
ACALL ESC
;E
Los pines de los extremos del potenciómetro (A,B) MOV R0,#65H
son conectados a +5 voltios y en el pin de ACALL ESC
derivación(w) es donde se toma el voltaje de ;M
MOV R0,#6DH
referencia que se necesita en el circuito PWM para ACALL ESC
variar el ancho del pulso y por ende la velocidad del ;:
MOV R0,#3AH
motor. ACALL ESC
;_
MOV R0,#20H
PROGRAMA ACALL ESC
;CORRER A LA 8C RENGLON 1 13
$MOD51 MOV R0,#8CH
$TITLE(RAGE AGAINST THE MACHINE) ACALL ESCC
;R2 Y R3 ALMACENAN DECENAS Y UNIDADES LEIDAS T° ;°
;R5 Y R6 DATOS DEL TECLADO MOV R0,#0DFH
;CONVERSION VOLTAJE DATO BINARIO A TEMPERATURA ACALL ESC
;R0 VALOR QUE RECIBEN LAS FUNCIONES ;C
MOV R0,#43H
INTE0 EQU 0400H ;RUTINA INTERRUPCION 0 ACALL ESC
ORG 0H ;BAJAR RENGLÓN
LJMP MAIN ; salto al inicio de la rutina principal MOV R0,#0C0H
ORG 0003H ACALL ESCC
LJMP INTE0 ; salto hacia el inicio de la rutina de interrupción
ORG 100H ;***************VELOCIDAD******************
MAIN: MOV SP,#25H ; se declara el inicio de la memoria de pila ;V
en la dirección 25h MOV R0,#56H
MOV IE,#81H ; se habilitan las interrupciones ACALL ESC
MOV IP,#01H ; se establece la interrupción cero como de mayor ;E
prioridad MOV R0,#65H
MOV P2,#00H ; se clarea el puerto P0 ACALL ESC
;L
;*******INICIALIZACION DE LA PANTALLA************ MOV R0,#6CH
ACALL R15M MOV R0,#03H ACALL ESC
ACALL ESCD ;:
ACALL R4100U MOV R0,#3AH
MOV R0,#03H ACALL ESC
ACALL ESCD ;_
ACALL R100U MOV R0,#20H
MOV R0,#03H ACALL ESC
ACALL ESCD ;MOVER EN EL RENGLON 2
ACALL R4100U MOV R0,#0C7H
MOV R0,#02H ACALL ESCC
ACALL ESCD ;B
ACALL R4100U MOV R0,#62H
;BUS DE DATOS 4 BITS ACALL ESC
MOV R0,#2CH ;_
ACALL ESCC MOV R0,#20H
;BORRAR ACALL ESC
MOV R0,#01H ;V

Ing. Gabriel Sánchez Suárez


gsanchez@bari.ufps.edu.co
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
INGENIERÍA ELECTRÓNICA
MICROCONTROLADORES
CONTROL DE TEMPERATURA EMPLEANDO UN
µC 89C51

Iván Ernesto Zambrano López Jorge Humberto Oviedo Rodríguez Darwin Carreño Niño
ivan_zambrano@hotmail.com jhortwo@hotmail.com darwin_c_82@hotmail.com
MOV R0,#56H ;con estas instrucciones se controla el potenciómetro digital y se envía el
ACALL ESC valor de R4
;S ;de forma serial, para variar el valor de resistencia y por consiguiente el
MOV R0,#73H ;volatje de referencia que controla la velocidad del motor.
ACALL ESC
;: ;P1.4 pin del puerto P1 por el que se envia el valor de R4 en forma serial
MOV R0,#3AH al potenciometro,
ACALL ESC ;para ello se rota el registro R4 y se procesa para determinar si en
; P1.4 se debe colocar un '1'o'0'.
;MOVER EN EL RENGLON 2
MOV R0,#0CFH ;P1.6 pin del puerto P1 con el que se controla el habilitador del
ACALL ESCC potenciómetro digital,
;B ;se coloca en cero cuando se inicia el envió de datos y se coloca uno
MOV R0,#62H cunado se termina.
ACALL ESC ;P1.5 pin del puerto P1 con el que se genera la señal de reloj que requiere
el potenciómetro
;*****************PROGRAMA PRINCIPAL**************** ;para aceptar cada bit que se envía por al pin P1.4.
LL1: MOV A,R1 ; ciclo infinito que detiene la ejecución del ;----------------------------------------------
programa cuando C10: MOV R0,#03H
JZ LL1; se energiza el circuito para esperar que el CLR P1.4
usuario programe CLR P1.6
LL2: CJNE R1,#00H,LL2 ; la temperatura de referencia. CLR P1.5
;***************************************************
C9: ACALL LADC ; llamado a la subrutina que lee el puerto P0 L1: SETB P1.5
y convierte el dato binario CLR P1.5
; enviado por el conversor ADC en DJNZ R0,L1
valores de temperatura y lo almacena en R7.
;R7 TIENE VALOR DE TEMPERATURA LEIDO DEL AMBIENTE MOV R0,#08H
;R2 TIENE VALOR EL VALOR DE TEMPERATURA DE REFERENCIA MOV A,R4
INGRESADO POR TECLADO ANL A,#80H
MOV A,R7 ;se mueve al acumulador el valor de R7. L4: CJNE A,#00H,L2
SUBB A,R2 ;se resta el valor de temperatura leido con el LJMP L3
;valor de temperatura de referencia. L2: SETB P1.4
JZ PRO ; salta a la etiqueta llamada como PRO si la resta da LJMP L5
valor cero. L3: CLR P1.4
JC MM0 ;salta a la etiqueta llamada como MM0 si la resta da valor L5: SETB P1.5
negativo. CLR P1.5
MOV A,R4 ; muevo al acumulador el valor de R4, en R4 se MOV A,R4
almacena el valor que RL A
; se envía al potenciómetro digital que varia el voltaje de referencia MOV R4,A
; que controla la velocidad del motor. ANL A,#80H
ADD A,#25 ; como la temperatura del medio es mayor que la de DJNZ R0,L4
referencia se incrementa SETB P1.6
; el valor del acumulador en 25. LJMP PRO
MOV R4,A ; se almacena en R4 el nuevo valor para el ;***********************************
potenciómetro. PRO:
JC PRO1 ; salta a PRO1 si la suma da mayor a 255. ;Se lee el puerto P0 para determinar la temperatura del ambiente y
LJMP C10 mostrar el valor en la
;------------------------------------------------ ;pantalla LCD.
;las siguientes instrucciones se ejecutan si la temperatura del ambiente es ;*******************************
menor que la de ACALL LADC
; referencia con el fin de disminuir la velocidad del motor. ACALL RMAX
;------------------------------------------------- MOV R0,#86H
ACALL ESCC
MM0: CLR PSW.7 ; borra el bit de carrier. ACALL R40U
MOV A,R4 MOV A,10H
SUBB A,#25 ; MOV R0,A
MOV R4,A ACALL ESC
JC PRO2 MOV A,11H
LJMP C10 MOV R0,A
;--------------------------------------------- ACALL ESC
; se carga R4 con el mínimo valor(00) para apagar el motor. ;Se muestra el valor binario de R4 con el que se ha programado el
PRO2: CLR PSW.7 potenciómetro digital
MOV R4,#00H ;en la pantalla LCD.
LJMP C10
;------------------------------------------------ MOV R0,#0C4H
; se carga R4 con el maximo valor(255) para que el motor gire a la ACALL ESCC
maxima velocidad. MOV A,R4
PRO1: CLR PSW.7 MOV B,#100
MOV R4,#255 DIV AB
;---------------------------------------------- ACALL ESCN
MOV A,B

Ing. Gabriel Sánchez Suárez


gsanchez@bari.ufps.edu.co
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
INGENIERÍA ELECTRÓNICA
MICROCONTROLADORES
CONTROL DE TEMPERATURA EMPLEANDO UN
µC 89C51

Iván Ernesto Zambrano López Jorge Humberto Oviedo Rodríguez Darwin Carreño Niño
ivan_zambrano@hotmail.com jhortwo@hotmail.com darwin_c_82@hotmail.com
MOV B,#10 RATB: DJNZ R3,RATB
DIV AB DJNZ R0,RATC
ACALL ESCN RET
MOV A,B ;Subrutina de retardo de 4.1ms para la inicialización del la pantalla.
ACALL ESCN R4100U: MOV R0,#25
;Se muestra en binario el valor de voltaje enviado por el sensor de RATE: MOV R3,#41
temperatura en la pantalla RATD: DJNZ R3,RATD
;LCD. DJNZ R0,RATE
MOV R0,#0CCH RET
ACALL ESCC
MOV A,P0 R100U: MOV R0,#49
SUBB A,#08 RATF: DJNZ R0,RATF
MOV B,#100 RET
DIV AB
ACALL ESCN ;***************ESCRITURA DATO COMANDO Y NUMERO*********
MOV A,B ;Subrutina para escribir caracteres en al pantalla LCD.
MOV B,#10 ESC: CLR P2.6
DIV AB MOV A,R0
ACALL ESCN ANL A,#0F0H
MOV A,B SWAP A
ACALL ESCN MOV P2,A
AJMP C9 SETB P2.7
NOP
;************************************************** SETB P2.6
subrutinas y rutina de atención de interrupciones. NOP
;*************************************************** NOP
;Subrutina que lee el puerto P0 y convierte el dato en temperatura CLR P2.6
;el resultado lo almacena en R7. MOV A,R0
;************************************************* ANL A,#0FH
MOV P2,A
LADC: MOV A,P0 SETB P2.7
SUBB A,#08 ;AJUSTE NOP
SUBB A,#69 SETB P2.6
MOV B,#09 NOP
DIV AB NOP
MOV R0,B CLR P2.6
MOV B,#08 ACALL R40U
MUL AB RET
ADD A,R0
MOV R7,A ;Subrutina para enviar comandos de 8 bits primero la parte alta
;SEPARAR EN DECENAS Y UNIDADES ;y después la parte baja, a la pantalla LCD.
MOV B,#10
DIV AB ESCC: CLR P2.6
ADD A,#30H MOV A,R0
MOV 10H,A ANL A,#0F0H
MOV A,B SWAP A
ADD A,#30H MOV P2,A
MOV 11H,A CLR P2.7
RET NOP
SETB P2.6
;******RUTINAS DE RATARDO SE EMPLEA R0 Y R3************* NOP
NOP
;Subrutina de retardo de 40us entre dos datos consecutivos que CLR P2.6
;se grafican en la pantalla LCD MOV A,R0
;para esperar que el controlador de la pantalla los procese. ANL A,#0FH
R40U: MOV R0,#19 MOV P2,A
RATA: DJNZ R0,RATA CLR P2.7
RET SETB P2.6
NOP
;Subrutina de retardo de dos segundos para que el usuario pueda NOP
; observar mejor la temperatura sensada. CLR P2.6
RMAX: MOV R0,#255 ACALL R40U
MOV 12H,#04 RET
RATO: MOV R3,#255 ;Subrutina para enviar comandos de 4 bits a la pantalla LCD.
RATU: DJNZ R3,RATU ESCD: CLR P2.6
DJNZ R0,RATO MOV P2,R0
DJNZ 12H,RATO SETB P2.7
RET NOP
;subrutina de retardo de 15ms para cuando se envían comandos a la NOP
pantalla LCD. SETB P2.6
R15M: MOV R0,#75 NOP
RATC: MOV R3,#50 NOP

Ing. Gabriel Sánchez Suárez


gsanchez@bari.ufps.edu.co
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
INGENIERÍA ELECTRÓNICA
MICROCONTROLADORES
CONTROL DE TEMPERATURA EMPLEANDO UN
µC 89C51

Iván Ernesto Zambrano López Jorge Humberto Oviedo Rodríguez Darwin Carreño Niño
ivan_zambrano@hotmail.com jhortwo@hotmail.com darwin_c_82@hotmail.com
CLR P2.6 caracteres por línea, puede almacenar en total 40
RET
;subrutina para generar el ASCCI de los números y mostrarlos. por línea. Es el usuario el que especifica qué 16
;en la pantalla LCD caracteres son los que se van a visualizar.
ESCN: ADD A,#30H
MOV R0,A
ACALL ESC
RET

;*************************INTERRUPCION************************
;Rutina de atención de interrupción con la cual se almacena
;la temperatura de referencia ingresada por teclado y se
,muestra en la pantalla LCD.
;*************************************************************
ORG 400H
CJNE R1,#00H,I4
MOV A,P1
ANL A,#0FH ;RECUPERO SOLO PARTE BAJA
CJNE A,#00,I5
ACALL RMAX
ACALL RMAX
ACALL RMAX
I5: MOV R2,A
MOV R0,#89H ;ENVIO DIR A COPIAR CARACTER
ACALL ESCC
MOV A,R2
ADD A,#30H
MOV R0,A
ACALL ESC El LCD dispone de una matriz de 5x8 puntos para
MOV A,R2 ;RECUPERO A DESPUES DE LAS RUTINAS
MOV B,#0AH
representar cada carácter. En total se pueden
MUL AB representar 256 caracteres diferentes. 240
INC R1 caracteres están grabados dentro del LCD y
MOV R2,A
LJMP I3 representan las letras mayúsculas, minúsculas,
I4: MOV A,P1 signos de puntuación, números, etc... Existen 8
ANL A,#0FH
MOV R5,A caracteres que pueden ser definidos por el usuario.
MOV R0,#8AH ;ENVIO DIR A COPIAR CARACTER
ACALL ESCC
MOV A,R5
DD RAM (Display Data Ram): En esta memoria se
ADD A,#30H almacenan los caracteres que están siendo
MOV R0,A visualizados o que se encuentran en posiciones no
ACALL ESC
MOV A,R5 ;RECUPERO A DESPUES DE LAS RUTINAS visibles. El display almacena en esta memoria dos
ADD A,R2 líneas de 40 caracteres pero sólo se visualizan 2
MOV R2,A
MOV R1,#00H líneas de 16 caracteres. Por ello la DD RAM tiene
MOV 14H,A un tamaño de 2x40=80 bytes.
I3: MOV A,P1
ANL A,#0FH LA CG RAM (Character Generator RAM): Es la
CJNE A,#00H,I3 memoria que contiene los caracteres definibles por
MOV A,14H
RETI el usuario. Está formada por 64 posiciones, con
END direcciones $00-$3F. Cada posición es de 5 bits.

Visualizacion En La Pantalla Lcd INTERFAZ DEL LCD: Los datos se transmiten por
un bus de datos de 8 bits de anchura (El display
El LCD esta constituido por un circuito impreso en ofrece la posibilidad de trabajar con este bus
el que están integrados los controladores del multiplexado en dos grupos de 4 bits, pero esto se
display y los pines para la conexión del display. verá más adelante). Para el control del display son
Sobre el circuito impreso se encuentra el LCD en sí, necesarios 3 bits: una señal de enable (E), una
rodeado por una estructura metálica que lo protege. para indicar lectura/escritura (R/W) y otra para
En total se pueden visualizar 2 líneas de 16 seleccionar uno de los dos registros internos (RS).
caracteres cada una, es decir, 2x16=32 caracteres. Por ello, en el caso peor, el sistema de control del
A pesar de que el display sólo puede visualizar 16 display necesitará utilizar 8+3=11 bits.

Ing. Gabriel Sánchez Suárez


gsanchez@bari.ufps.edu.co
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
INGENIERÍA ELECTRÓNICA
MICROCONTROLADORES
CONTROL DE TEMPERATURA EMPLEANDO UN
µC 89C51

Iván Ernesto Zambrano López Jorge Humberto Oviedo Rodríguez Darwin Carreño Niño
ivan_zambrano@hotmail.com jhortwo@hotmail.com darwin_c_82@hotmail.com

puede aumentar. La pantalla de configuro en modo


BUS DE DATOS: El bus de datos del display se de 2 renglones, cursor encendido y no parpadeo. A
puede configurar para funcionar de dos formas toda la información acerca de la pantalla y sus
diferentes. Bien como un bus de 8 bits o bien como comandos se puede acceder por medio de internet
un bus multiplexado de 4 bits. El utilizar el bus en las direcciones incluidas en la bibliografía.
multiplexado de 4 bits es una opción muy útil para
ahorrar bits en el sistema de control. En vez de
utilizar 11 bits en total, se utilizan 7. De esta forma
se ahorran bits pero se gana en complejidad del
controlador, que tiene que multiplexar y
demultiplexar los datos. Al utilizar un bus de 8 bits
hacemos que el controlador sea más sencillo pero
se ‘gastan’ muchos mas bits. Cuando se utiliza un
bus de 4 bits sólo se utilizan los pines D4-D7 del
display dejándose D0-D3 ‘al aire’. La transferencia
de la información se realiza de la siguiente manera:
primero los 4 bits más significativos y luego los 4
menos significativos.

Para el caso de 4 bits, primero se envían los 4 bits


MAS SIGNIFICATIVOS y despues los 4 bits menos
significativos.
BUS DE CONTROL: El bus de control está formado
por 3 señales: RS, R/W y E. La señal E es la señal Operaciones a realizar para el caso de 4 bits:
de validación de los datos. Cuando no se utiliza el 1. Poner RS=1 y R/W=0
display esta señal debe permanecer a 0. Sólo en 2. Situar el valor 4 en el bus de datos del LCD (4
las transferencias de información (lecturas o bits más significativos)
escrituras) es cuando se pone a nivel 1 para validar 3. E=1
los datos, pasando después de un tiempo a nivel 0. 4. E=0
Cuando R/W=1 se realizan lecturas y cuando 5. Situar el valor 1 en el bus de datos del LCD (4
R/W=0 escrituras. RS=0 selecciona el registro de bits menos significativos)
control. RS=1 el registro de datos. 6. E=1
7. E=0
La pantalla LCD se manejo a 4 bits, pues era 8. El carácter ha sido imprimido en el LCD
necesario economizar el mayor numero de puertos.
El haberla trabajado a 8 bits hubiese requerido el Al LCD le lleva un cierto tiempo procesar cada
uso de 2 puertos del microcontrolador. En modo a 4 comando enviado. Por ello, para que se ejecute el
bits los datos se envían multiplexados, se emplean comando especificado es necesario asegurarse de
los mismos comandos, los caracteres se envían de que el comando anterior ha finalizado. Existen dos
la misma manera (numero hexegecimal estrategias para realizar esto. La primera se basa
correspondiente al ascci), pero difiere al de 8 bits en leer del display el bit de ocupado. Si este bit se
en la inicialización de la pantalla. Entre cada encuentra a 1 quiere decir que el LCD está
comando o dato enviado al controlador de la LCD ocupado procesando el comando anterior y por
se hace una espera de por lo menos 40us, aunque tanto no puede procesar nuevos comandos. La
para algunos comandos especiales este tiempo segunda estrategia, menos elegante pero más
cómoda de implementar, consiste en realizar una

Ing. Gabriel Sánchez Suárez


gsanchez@bari.ufps.edu.co
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
INGENIERÍA ELECTRÓNICA
MICROCONTROLADORES
CONTROL DE TEMPERATURA EMPLEANDO UN
µC 89C51

Iván Ernesto Zambrano López Jorge Humberto Oviedo Rodríguez Darwin Carreño Niño
ivan_zambrano@hotmail.com jhortwo@hotmail.com darwin_c_82@hotmail.com

pausa antes de volver a enviar el siguiente mas significativos del LCD, dejando los otros 4 al
comando. Los tiempos máximos que tarda el ‘aire’. Primero enviamos unas secuencias de 4 bits
display en procesar los comandos están con unos retardos determinados. Al enviar el código
especificados por el fabricante y tienen un valor 2 (Bits 0 0 1 0) el display se configura para trabajar
típico de 40us. Si se realiza una pausa mayor o a 4 bits. Se puede observar cómo la línea superior
igual a esta se tiene garantía de que el display ha deja de estar más oscura que la inferior. A partir de
terminado de ejecutar el comando. En nuestro caso este momento las transferencias hay que realizarlas
elegimos esperar un tiempo de 40us. en dos partes: primero se envían los 4 bits mas
significativos y después los 4 bits menos
Secuencia Típica De Inicialización Del Lcd significativos. Para confirmar que la transferencia
es a 4 bits hay que enviar el código $28; primero los
Después de encender el LCD aparecerá la línea bits 0 0 1 0 y después los bits 1 0 0 0. De aquí en
superior un poco más oscura que la inferir. Esto adelante la inicialización es igual tanto para 8 bits
quiere decir que el display no ha sido inicializado como para 4, con la salvedad de que en el segundo
todavía. En el caso de 4 bits sólo se conectan 4 bits caso hay que enviar los datos multiplexados.

T e m : 2 5 2 7 ° C
V e l : 1 25 b V s :0 9 8 b
Visualización en la pantalla LCD 2x16. Entrada De Datos Por Teclado

El primer renglón corresponde a la temperatura del La entrada de datos por teclado se hizo
ambiente y la entrada del usuario por teclado implementando una GAL22V10, la cual, mediante
respectivamente expresadas en grados una lógica secuencial sincrona, permite mantener
centígrados. En el segundo se visualiza la en su salida un numero de 0 a 9 en formato BCD, y
velocidad como función del valor binario que se a su vez generar una interrupción para que el
envía al potenciómetro digital y el dato binario de microcontrolador le de prioridad a la operación de
temperatura recibido por el microcontrolador en el captura de datos por el puerto. La temperatura
puerto P0. deseada consta de dos dígitos entrados por
teclado, los cuales tienen que ser sucedidos de la

Ing. Gabriel Sánchez Suárez


gsanchez@bari.ufps.edu.co
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
INGENIERÍA ELECTRÓNICA
MICROCONTROLADORES
CONTROL DE TEMPERATURA EMPLEANDO UN
µC 89C51

Iván Ernesto Zambrano López Jorge Humberto Oviedo Rodríguez Darwin Carreño Niño
ivan_zambrano@hotmail.com jhortwo@hotmail.com darwin_c_82@hotmail.com

tecla asterisco, para que el microcontrolador los emplea una señal de voltaje de referencia que se
reconozca uno a uno (Se anexa programa en toma del potenciómetro digital, la cual varia de valor
PALASM). de acuerdo al programa de control, estas 2 señales
son las entradas invensora y no inversora
Circuito PWM respectivamente del comparador LF353. Las 2
señales se comparan y a la salida se genera una
Se encarga de generar los pulsos de ancho variable onda cuadrada, cuyo ciclo de trabajo cambia de
para activar y desactivar el MOSFET de potencia y acuerdo al valor del voltaje de referencia. La salida
de esta forma variar el voltaje promedio que cae del comparador se lleva a un optoacoplador el cual
sobre el motor, de acuerdo al ancho del pulso. Para cumple la función de aislamiento galvanico entre el
el circuito PWM se genero una señal triangular de 5 circuito de control y el dispositivo de potencia.
voltios pico con un offset de 2,5v. Además se

CONCLUSIONES tiempos de refresco de la LCD en comparación con


los tiempos en los que se realiza cada lectura del
El uso de dispositivos con un mínimo número de ADC. Si estos son demasiado cortos es muy
recursos (en nuestro caso LCD y teclado) ahorra probable que no se logre visualizar ciertos valores
significativamente el número de puertos a emplear, que cambian constantemente y si sobrepasamos
pero hace que el programa en el µC sea un poco estos tiempos con retardos extensos quizás las
mas complejo y extenso, aunque tal sacrificio tiene lecturas visualizadas correspondan a valores
sus beneficios. pasados no presentes a la salida del ADC o
cualquier periférico de entrada.
El microcontrolador brinda mediante los pines de
interrupción una vía de fácil acceso para dar Las operaciones en µC están restringidas a 8 bits,
prioridad a ciertos eventos, como lo es la entrada aunque por medio de algoritmos se puede llegar a
de datos de un periférico. manejar 16 bits. Las expresiones manejadas en
este proyecto llegan en algunas ocasiones a
Es necesario la implementación de lógica digital valores decimales, por lo que se hizo necesario
externa para poder conectar de manera eficiente un hallar una expresión que resultó ser muy
teclado y así utilizar la menor cantidad de pines en aproximada al modelo real con lo que siempre
los puertos. obtendríamos un valor entero de Tº a partir del
Los microcontroladores son muy útiles en el manejo voltaje de salida del sensor convertido a binario por
de interfaces con pantallas LCD y conversores A/D. el ADC.
Un factor fundamental a tener presente son los

Ing. Gabriel Sánchez Suárez


gsanchez@bari.ufps.edu.co
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
INGENIERÍA ELECTRÓNICA
MICROCONTROLADORES
CONTROL DE TEMPERATURA EMPLEANDO UN
µC 89C51

Iván Ernesto Zambrano López Jorge Humberto Oviedo Rodríguez Darwin Carreño Niño
ivan_zambrano@hotmail.com jhortwo@hotmail.com darwin_c_82@hotmail.com

Para poder determinar exactamente la eficiencia del K = E3 * /E2 * E1 * /E0

sistema de control de temperatura, es necesario ;TRANSITION EQUATIONS------------------


contar con el modulo que simule lo más cercano a
A := TN0 -> B
la realidad ambiente cerrado. + TN1 -> C
+ TN2 -> D
+ TN3 -> E
Los microcontroladores de la familia 8051 por su + TN4 -> F
versatilidad y gran set de instrucciones es un + TN5 -> G
elemento muy apropiado para el diseño de + TN6 -> H
+ TN7 -> I
sistemas de control específicos de bajo costo. + TN8 -> J
+ TN9 -> K
+-> A
ANEXOS
B := TAS -> A
+-> B
Programa en PALASM para la GAL22V10
C := TAS -> A
;PALASM Design Description +-> C

;---------------------------------- Declaration Segment ------------ D := TAS -> A


TITLE ENTRADA POR TECLADO +-> D
PATTERN UFPS
REVISION VER 2.0 E := TAS -> A
AUTHOR JORGE OVIEDO RODRIGUEZ +-> E
COMPANY LABORATORIO
DATE 03/16/04 F := TAS -> A
+-> F
CHIP _PRUEBA4 PAL22V10
G := TAS -> A
;---------------------------------- PIN Declarations --------------- +-> G
PIN 1 CLOCK COMBINATORIAL ;
PIN 2 N0 COMBINATORIAL ; H := TAS -> A
PIN 3 N1 COMBINATORIAL ; +-> H
PIN 4 N2 COMBINATORIAL ;
PIN 5 N3 COMBINATORIAL ; I := TAS -> A
PIN 6 N4 COMBINATORIAL ; +-> I
PIN 7 N5 COMBINATORIAL ;
PIN 8 N6 COMBINATORIAL ; J := TAS -> A
PIN 9 N7 COMBINATORIAL ; +-> J
PIN 10 N8 COMBINATORIAL ;
PIN 11 N9 COMBINATORIAL ; K := TAS -> A
PIN 12 GND ; +-> K
PIN 13 AST COMBINATORIAL ;
PIN 14 E0 REGISTERED ; ;OUTPUT EQUATIONS----------------------
PIN 16 E1 REGISTERED ;
PIN 17 E2 REGISTERED ; A.OUTF = /OUT4 * /OUT3 * /OUT2 * /OUT1 * OUT0
PIN 18 E3 REGISTERED ; B.OUTF = /OUT4 * /OUT3 * /OUT2 * /OUT1 * /OUT0
PIN 19 OUT0 REGISTERED ; C.OUTF = /OUT4 * /OUT3 * /OUT2 * OUT1 * /OUT0
PIN 20 OUT1 REGISTERED ; D.OUTF = /OUT4 * /OUT3 * OUT2 * /OUT1 * /OUT0
PIN 21 OUT2 REGISTERED ; E.OUTF = /OUT4 * /OUT3 * OUT2 * OUT1 * /OUT0
PIN 22 OUT3 REGISTERED ; F.OUTF = /OUT4 * OUT3 * /OUT2 * /OUT1 * /OUT0
PIN 23 OUT4 REGISTERED ; G.OUTF = /OUT4 * OUT3 * /OUT2 * OUT1 * /OUT0
PIN 24 VCC ; H.OUTF = /OUT4 * OUT3 * OUT2 * /OUT1 * /OUT0
I.OUTF = /OUT4 * OUT3 * OUT2 * OUT1 * /OUT0
;-----------------------------------State Segment ------------------ J.OUTF = OUT4 * /OUT3 * /OUT2 * /OUT1 * /OUT0
STATE K.OUTF = OUT4 * /OUT3 * /OUT2 * OUT1 * /OUT0
MOORE_MACHINE
START_UP := POWER_UP -> A ;CONDITIONS------------------------
CONDITIONS
A = /E3 * /E2 * /E1 * /E0 TAS = /N9 * /N8 * /N7 * /N6 * /N5 * /N4 * /N3 * /N2 * /N1 * /N0 * AST
B = /E3 * /E2 * /E1 * E0 TN0 = /N9 * /N8 * /N7 * /N6 * /N5 * /N4 * /N3 * /N2 * /N1 * N0 * /AST
C = /E3 * /E2 * E1 * /E0 TN1 = /N9 * /N8 * /N7 * /N6 * /N5 * /N4 * /N3 * /N2 * N1 * /N0 * /AST
D = /E3 * /E2 * E1 * E0 TN2 = /N9 * /N8 * /N7 * /N6 * /N5 * /N4 * /N3 * N2 * /N1 * /N0 * /AST
E = /E3 * E2 * /E1 * /E0 TN3 = /N9 * /N8 * /N7 * /N6 * /N5 * /N4 * N3 * /N2 * /N1 * /N0 * /AST
F = /E3 * E2 * /E1 * E0 TN4 = /N9 * /N8 * /N7 * /N6 * /N5 * N4 * /N3 * /N2 * /N1 * /N0 * /AST
G = /E3 * E2 * E1 * /E0 TN5 = /N9 * /N8 * /N7 * /N6 * N5 * /N4 * /N3 * /N2 * /N1 * /N0 * /AST
H = /E3 * E2 * E1 * E0 TN6 = /N9 * /N8 * /N7 * N6 * /N5 * /N4 * /N3 * /N2 * /N1 * /N0 * /AST
I = E3 * /E2 * /E1 * /E0 TN7 = /N9 * /N8 * N7 * /N6 * /N5 * /N4 * /N3 * /N2 * /N1 * /N0 * /AST
J = E3 * /E2 * /E1 * E0 TN8 = /N9 * N8 * /N7 * /N6 * /N5 * /N4 * /N3 * /N2 * /N1 * /N0 * /AST

Ing. Gabriel Sánchez Suárez


gsanchez@bari.ufps.edu.co
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
INGENIERÍA ELECTRÓNICA
MICROCONTROLADORES
CONTROL DE TEMPERATURA EMPLEANDO UN
µC 89C51

Iván Ernesto Zambrano López Jorge Humberto Oviedo Rodríguez Darwin Carreño Niño
ivan_zambrano@hotmail.com jhortwo@hotmail.com darwin_c_82@hotmail.com
TN9 = N9 * /N8 * /N7 * /N6 * /N5 * /N4 * /N3 * /N2 * /N1 * /N0 * /AST CLOCKF CLOCK
;----------------------------------- Simulation Segment ------------ SETF AST
SIMULATION CLOCKF CLOCK
TRACE_ON CLOCK AST N0 N1 N2 OUT2 OUT1 OUT0 CHECK A

SETF /CLOCK CLOCKF CLOCK


SETF /AST /N9 /N8 /N7 /N6 /N5 /N4 /N3 N2 /N1 /N0
CLOCKF CLOCK CLOCKF CLOCK
CHECK A CHECK D

CLOCKF CLOCK CLOCKF CLOCK


SETF /AST /N9 /N8 /N7 /N6 /N5 /N4 /N3 /N2 /N1 N0 SETF /AST /N9 /N8 /N7 /N6 /N5 /N4 /N3 /N2 N1 /N0
CLOCKF CLOCK CLOCKF CLOCK
CHECK B CHECK D

CLOCKF CLOCK CLOCKF CLOCK


SETF AST SETF AST
CLOCKF CLOCK CLOCKF CLOCK
CHECK A CHECK A

CLOCKF CLOCK TRACE_OFF


SETF /AST /N9 /N8 /N7 /N6 /N5 /N4 /N3 /N2 N1 /N0
CLOCKF CLOCK
CHECK C ;-------------------------------------------------------------------

Diagrama General

Ing. Gabriel Sánchez Suárez


gsanchez@bari.ufps.edu.co
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
INGENIERÍA ELECTRÓNICA
MICROCONTROLADORES
CONTROL DE TEMPERATURA EMPLEANDO UN
µC 89C51

Iván Ernesto Zambrano López Jorge Humberto Oviedo Rodríguez Darwin Carreño Niño
ivan_zambrano@hotmail.com jhortwo@hotmail.com darwin_c_82@hotmail.com

BIBLIOGRAFÍA http://www.analog.com/UploadedFiles/Data_Sheets/
380546564ad22100.pdf
Información LCD
http://www.beyondlogic.org/parlcd/parlcd.htm Información General
http://www.microbotica.es/web/downl/docs/display.p http://www.utdallas.edu/~parik/ee4380_spring03/Cla
df ss7%20-%20LCD%20Keypad%20Interrupts.pdf
http://dac.escet.urjc.es/docencia/Micros/i8051_LCD http://www.kit.we.ly/data/at89c51.pdf
s.pdf http://www.intersil.com/data/fn/fn3094.pdfhttp://scsx
http://dmi.uib.es/~goliver/lcd.pdf 01.sc.ehu.es/sbweb/webcentro/automatica/web_80
51/Contenido/tutor8051_52/indicetutor_8051.htm
Información Potenciómetro Digital González, J.A., Introducción a los
http://www.analog.com/UploadedFiles/Data_Sheets/ microcontroladores 8X51 y 8X52.
140808745AD5204_6_0.pdf
Información PWM
Información Sensor de Temperatura http://www.pablin.com.ar/electron/circuito/varios/pw
m-cc/index.htm

Ing. Gabriel Sánchez Suárez


gsanchez@bari.ufps.edu.co