Control de Nivel por Medio de
Histéresis
Salvador
Macías Hernández, Raúl Luna Alvarado
Última
actualización
Thursday, 26 de June de 2008
ANTECEDENTES
Se nos ha encomendado la tarea de diseñar un Control de Nivel por Histéresis
para hacer que funcione un Humidificador para un Sistema de HVAC de precisión.
Este control debe de ser muy barato, por que va a funcionar durante tres semanas
en lo que se consigue la pieza original; además debe de ser confiable puesto que
si llega a fallar podría causar que el equipo se dañara o en el peor de los
casos se incendiara.
EL HUMIDIFICADOR
El humidificador es un dispositivo que sirve para humedecer el Aire , en este
caso en particular, lo hace inyectando vapor de agua al flujo de aire que
circula por la ductería del HVAC (Sistema de Aire Acondicionado). El dispositivo
desarmado se muestra en la siguiente fotografía:
A
este humidificador se le conectan dos mangueras que van a conducir el flujo de
aire hacia un contenedor (no se muestra en la foto) con agua y que
por dentro tiene instalado una resistencia eléctrica que hace que se evapore el
agua. Y por arrastre se va mezclando el vapor de agua al flujo del aire
acondicionado (HVAC) así como se muestra en el siguiente esquemático:
De aquí se puede deducir que para que la
resistencia opere adecuadamente, es necesario que siempre esté sumergida en
agua, y por ende es necesario un control de nivel.
LA LÓGICA DE CONTROL
De
puro sentido común podemos plantear las siguientes condiciones:
Condición |
Acción |
El contenedor está sin agua |
Apagar las resistencias
Abrir la válvula para el
ingreso de agua |
El contenedor está por debajo del nivel mínimo
indispensable |
Apagar las resistencias
Abrir la válvula para el
ingreso de agua |
El contenedor está por arriba del nivel mínimo
indispensable, pero abajo del límite bajo de operación |
Apagar las resistencias
Abrir la válvula para el
ingreso de agua |
El contenedor está por arriba del límite bajo de
operación, pero por debajo del límite alto de operación |
Encender las resistencias
La subrutina de
histéresis determinará el estado de la válvula de ingreso de agua |
El contenedor está en el límite alto de operación |
Encender las resistencias
Cerrar la válvula de
ingreso de agua |
El contenedor está por arriba del límite alto de
operación |
Encender las resistencias
Cerrar la válvula de
ingreso de agua |
SECUENCIA DE
OPERACIÓN
Es razonable plantear una secuencia de operación para analizar el fenómeno y
diseñar el dispositivo. Para ello asumiremos que tenemos un sensor de nivel
(contacto en cada límite de operación y en el mínimo indispensable). También
asumimos que requerimos dos salidas: la válvula que deja pasar el agua y el
relevador que activa la resistencia
El contenedor está completamente vacío
ENTRADAS |
HISTÉRESIS |
SALIDAS |
Límite
Superior |
Límite
Inferior |
Mínimo Indisp. |
Función de
Histéresis |
Válvula de
Agua |
Resistencia |
0 |
0 |
0 |
0 |
1 |
0 |
El contenedor se comienza a llenar
ENTRADAS |
HISTÉRESIS |
SALIDAS |
Límite
Superior |
Límite
Inferior |
Mínimo Indisp. |
Función de
Histéresis |
Válvula de
Agua |
Resistencia |
0 |
0 |
0 |
0 |
1 |
0 |
El contenedor se alcanza el Nível Mínimo Indispensable
ENTRADAS |
HISTÉRESIS |
SALIDAS |
Límite
Superior |
Límite
Inferior |
Mínimo Indisp. |
Función de
Histéresis |
Válvula de
Agua |
Resistencia |
0 |
0 |
1 |
0 |
1 |
0 |
El contenedor alcanza el Límite Inferior de Operación
ENTRADAS |
HISTÉRESIS |
SALIDAS |
Límite
Superior |
Límite
Inferior |
Mínimo Indisp. |
Función de
Histéresis |
Válvula de
Agua |
Resistencia |
0 |
1 |
1 |
0 |
1 |
1 |
El contenedor alcanza el Límite Superior de Operación
ENTRADAS |
HISTÉRESIS |
SALIDAS |
Límite
Superior |
Límite
Inferior |
Mínimo Indisp. |
Función de
Histéresis |
Válvula de
Agua |
Resistencia |
1 |
1 |
1 |
1 |
0 |
1 |
El contenedor desciende un poco del Límite Superior de Operación
ENTRADAS |
HISTÉRESIS |
SALIDAS |
Límite
Superior |
Límite
Inferior |
Mínimo Indisp. |
Función de
Histéresis |
Válvula de
Agua |
Resistencia |
0 |
1 |
1 |
1 |
0 |
1 |
El contenedor desciende de nivel hasta pasar el Límite Inferior de
Operación
ENTRADAS |
HISTÉRESIS |
SALIDAS |
Límite
Superior |
Límite
Inferior |
Mínimo Indisp. |
Función de
Histéresis |
Válvula de
Agua |
Resistencia |
0 |
0 |
1 |
0 |
1 |
1 |
DIAGRAMA ELECTRICO
LA SIMULACIÓN
Vamos a
generar nuestro código y simular la aplicación usando
UMPS, lo primero que vamos a hacer es cargar
el CPU 8031
Enseguida vamos a
definir nuestro origen y las entradas y salidas del sistema
;----------------------------------------------------------------------------------------------------
; PROGRAMA PARA CONTROL DE NIVEL DEL HUMIDIFICADOR
;
Salvador Macías Hernández
;
Martes, 03 Junio 2008
;----------------------------------------------------------------------------------------------------
LIM_SUP EQU P3.5 ;Entrada del
límite Superior de Operación
LIM_INF EQU P3.6 ;Entrada del
límite Inferior de Operación
MINIMO EQU P3.7 ;Entrada del
nivel Mínimo Indispensable
LED_CLK EQU P1.0
;Visualización del Reloj del Sistema
LED_SUP EQU P1.1
;Visualización del Nivel Superior de Operación
LED_INF EQU P1.2
;Visualización del Nivel Inferior de Operación
LED_MIN EQU P1.3
;Visualización del Nivel Mínimo Indispensable
Ahora hay que definir los recursos, para ello hay que picarle en:
configurar y después en Recursos:
Enseguida aparece una
ventana, donde cargaremos todos los recursos que vayamos a necesitar. Para esto
hay que picarle en el botón que dice añadir
Una vez que le demos
clic en el botón de ADD, nos aparece una ventana con todos los recursos que UMPS
soporta. Los primeros que vamos a necesitar son los LED's
Selecciona donde dice
LED [Red, Green, Yellow] y dale clic en el botón de OK
Nos aparece un LED en la
ventana de Recursos, luego hay que darle doble click en él.
Deseamos que sea Verde y
como Nombre Pongale: "Clk" y pongale palomita en Vizualiza el nombre
Después seleccione el
LED y piquele en el botón de conexión:
Nos aparece la siguiente
ventana:
En esta ventana vamos a
conectar el LED al Puerto 1 bit0, para ello hay que seleccionar el Puerto1 en el
Selection Tool de la izquierda, inmediatamente después seleccionamos el B0, la
Pata Anode y le picamos donde dice Conect. Enseguida hay que conectar el Cathode
con "Always 0" y darle OK
Hay que repetir estos
pasos las veces que sea necesario, de modo que tengamos los cuatro LEDs
conectados como se indica a continuación:
LED |
Color |
PIN |
LED_CLK |
Verde |
P1.0 |
LED_SUP |
Amarillo |
P1.1 |
LED_INF |
Amarillo |
P1.2 |
LED_MIN |
Rojo |
P1.3 |
Ahora lo que corresponde
es configurar los contactos de nivel, para ello vamos a usar unos switches como
sensores.
Hay que agregar tres
Push Buttons como recursos
En la pantalla de
configuración hay que Visualizarlo como Interruptor, en la Conexión In deberá ir
conectada al microprocesador en la conexión OUT y en la conexión in debe ir
siempre a cero, la conexión OUT2 queda
libre:
Switch |
PIN |
Nivel Superior |
P3.5 |
Nivel Inferior |
P3.6 |
Mínimo Indispensable |
P3.7 |
Para salir de la
configuración de recursos, pulse el botón de Exit
Para probar que las
conexiones estén bien hechas. Hay que visualizar los registros internos del
microcontrolador. Para hacer esto hay que picarle en Configuración, y luego en
Registros CPU
Nos aparece una ventana
donde vamos a agregar los registros, para ello hay que presionar el botón de Add
Nos aparece una ventana
donde vamos a insertar los registros, hay que buscar el registro P3
Una vez que le pulses el
botón OK, aparecerá el registro en la ventana.
De una vez, repita el
proceso para que tengamos P1 también
Para salir de lo que
restaría es pulsar el botón de Exit
Si hacemos clic sobre
cualquiera de los switch que acabamos de configurar, podremos observar el cambio
en el registro P3, si no observan ningún cambio, revisen la configuración de
dicho switch
Ahora hay que escribir
el siguiente programa que haga lo siguiente:
Y el programa que hace
eso es el siguiente:
;-----------------------------------------------------------------------
; PROGRAMA PARA CONTROL DE NIVEL DEL HUMIDIFICADOR
; Salvador Macías Hernández
; Martes, 03 Junio 2008
;-----------------------------------------------------------------------
LIM_SUP EQU P3.5 ;Entrada del
límite Superior de Operación
LIM_INF EQU P3.6 ;Entrada del
límite Inferior de Operación
MINIMO EQU P3.7
;Entrada del Mínimo Indispensable
LED_CLK EQU P1.0
;Visualización del Reloj del Sistema
LED_SUP EQU P1.1
;Visualización del Nivel Superior de Operación
LED_INF EQU P1.2
;Visualización del Nivel Inferior de Operación
LED_MIN EQU P1.3
;Visualización del Nivel Mínimo Indispensable
AGUA EQU P1.6 ;Al
relevador del agua, se habilita con 1
RESIST EQU P1.7 ;Al relevador
de las resistencias, se habilita con 1
org 0000h
mov P1, #00h
PRINCIPAL:
ABAJO_MINIMO:
jnb MINIMO,ARRIBA_MINIMO
;Si está por debajo del mínimo
setb AGUA
;abre el agua y apaga las resistencias
clr RESIST
mov R6,#00h
clr LED_MIN
clr LED_INF
setb LED_CLK
call MIENTRAS
clr LED_CLK
sjmp PRINCIPAL
ARRIBA_MINIMO:
jnb LIM_INF,ARRIBA_INFERIOR;Si
está por debajo del Lim. Inferior
setb AGUA
;abre el agua y apaga las resistencias
setb RESIST
mov R6,#00h
setb LED_MIN
clr LED_INF
setb LED_CLK
call MIENTRAS
clr LED_CLK
sjmp PRINCIPAL
ARRIBA_INFERIOR:
jnb LIM_SUP,ARRIBA_SUPERIOR
cjne R6,#00h,VACIANDOSE
;Verifica si el contenedor se está
setb AGUA
;vaciando o llenando
setb RESIST
sjmp
ARRIBA_INFERIOR_01
VACIANDOSE:
clr AGUA
setb RESIST
sjmp
ARRIBA_INFERIOR_01
ARRIBA_INFERIOR_01:
setb LED_INF
clr LED_SUP
setb LED_CLK
call MIENTRAS
clr LED_CLK
sjmp PRINCIPAL
ARRIBA_SUPERIOR: ;Si
está por arriba del límite Superior
clr AGUA
;cierra el agua y prende las resistencias
setb RESIST
mov R6,#0FFh
setb LED_CLK
call MIENTRAS
clr LED_CLK
setb LED_SUP
jmp PRINCIPAL
MIENTRAS:
mov R7,#0FFh
MIENTRAS_01:
nop
nop
nop
nop
nop
djnz R7, MIENTRAS_01
ret
end
Ya que estábamos por
terminar este programa nos pidieron que incorporáramos un display que muestre el
nivel de agua en el contenedor, el controlador tendrá los siguientes niveles 0%,
25%, 50%, 75% y 100%
Tabla para
decodificar a 7 seg. |
LSB |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
MSB |
|
a |
b |
c |
d |
e |
f |
g |
p |
Valor |
|
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
3F |
|
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
06 |
|
1 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
5B |
|
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
6D |
|
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
07 |
;-----------------------------------------------------------------------
; PROGRAMA PARA CONTROL DE NIVEL DEL HUMIDIFICADOR
; Salvador Macías Hernández
; Martes, 03 Junio 2008
;-----------------------------------------------------------------------
LIM_100 EQU P0.0 ;Límite
al 100%
LIM_75 EQU P0.1
;Límite al 75%
LIM_50 EQU P0.2
;Límite al 50%
LIM_25 EQU P0.3
;Límite al 25%
LED_CLK EQU P1.0
;Visualización del Reloj del Sistema
LED_SUP EQU P1.1
;Visualización del Nivel Superior de Operación
LED_INF EQU P1.2
;Visualización del Nivel Inferior de Operación
LED_MIN EQU P1.3
;Visualización del Nivel Mínimo Indispensable
DISP1 EQU P3.0
;Cátodo cómún del Display Centenas, se habilita con 0
DISP2 EQU P3.1
;Cátodo cómún del Display Decenas, se habilita con 0
DISP3 EQU P3.2
;Cátodo cómún del Display Unidades, se habilita con 0
AGUA EQU P3.6
;Al relevador de la válvula del agua, se habilita con 1
RESIST EQU P3.7 ;Al
relevador que de las resistencias, se habilita con 1
org 0000h
PRINCIPAL:
LIM0:
jnb LIM_25, LIM25
;Si el agua está entre 0 y 25% 1111
setb AGUA
;Apagamos Resistencias y Abrimos la llave
clr RESIST
mov R6, #00h
mov P1, #03Fh
clr DISP3
call ESPERA_255
setb DISP3
sjmp PRINCIPAL
LIM25:
jnb LIM_50, LIM50
;Si el agua está entre 25 y 50% 1110
setb AGUA
;Apagamos Resistencias y Abrimos la llave
clr RESIST
mov R6, #00h
mov P1, #05Bh
clr DISP2
call ESPERA_255
setb DISP2
mov P1, #06Dh
clr DISP3
call ESPERA_255
setb DISP3
sjmp PRINCIPAL
LIM50:
jnb LIM_75, LIM75
;Si el agua está entre 50 y 75% 1100
cjne R6, #00h,
VACIANDO50 ;Verificamos si viene de 25%
setb
AGUA ;Viene de 25% y Abrimos la llave
setb RESIST
sjmp LIM50_1
VACIANDO50:
clr
AGUA
;Viene de 75% y cerramos la llave
setb
RESIST
sjmp LIM50_1
LIM50_1:
mov P1,
#06Dh
clr DISP2
call
ESPERA_255
setb DISP2
mov P1,
#03Fh
clr DISP3
call
ESPERA_255
setb DISP3
sjmp
PRINCIPAL
LIM75:
jnb LIM_100, LIM100
;Si el agua está entre 75 y 100% 1000
cjne R6, #00h,
VACIANDO75 ;Verificamos si viene de 25%
setb
AGUA ;Viene de 25% y Abrimos la llave
setb RESIST
sjmp LIM75_1
VACIANDO75:
clr
AGUA
;Viene de 75% y cerramos la llave
setb RESIST
sjmp LIM75_1
LIM75_1:
mov P1,
#07h
clr DISP2
call
ESPERA_255
setb DISP2
mov P1,
#06Dh
clr DISP3
call
ESPERA_255
setb DISP3
jmp PRINCIPAL
LIM100:
;Si el agua sobrepasa el 100% 0000
clr AGUA
;Prendemos Resistencias y Cerramos la llave
setb RESIST
mov R6, #0FFh
mov P1, #06h
clr DISP1
call ESPERA_255
setb DISP1
mov P1, #03Fh
clr DISP2
call ESPERA_255
setb DISP2
mov P1, #03Fh
clr DISP3
call ESPERA_255
setb DISP3
jmp PRINCIPAL
jmp PRINCIPAL
ESPERA_255:
mov R7, #0Fh
ESPERA_255_1:
djnz R7, ESPERA_255_1
ret
end
FOTOGRAFÍAS DEL SISTEMA FUNCIONANDO
Bibliografía y
Referencias
[1] Intel; 80C31BH/80C51BH/87C51 MCS 51 CHMOS SINGLE-CHIP 8-BIT
MICROCONTROLLER; Hoja de Datos |
[2] Intel; MCS 51 MICROCONTROLLER FAMILY USER'S MANUAL |
|
|
|
|
|