Controlador de Temperatura y
Humedad
.Cátedra: Tecnología Electrónica.
Titular: Ing. Bonamici, Ivano.
JTP.: Pollano, Cristian.
Alumno: Sensini, Fabián Marcelo.
Índice
Introducción --- 3
Descripción --- 4
Sensado --- 5
Control --- 7
Diagrama en bloques del circuito --- 9
Diagrama de los circuito --- 10
Programación --- 12
Diagrama de flujo --- 13
Programa en assembler --- 14
Problemas en la realización del proyecto --- 24
Conclusión --- 25
Introducción
Este proyecto surge de una necesidad planteada por parte de un familiar, el cual se dedica a la pintura de automóviles; el mismo esta armando una cabina de pintura para poder mejorar la calidad en la terminación de los automóviles.
La aplicación de este controlador apunta a la optimización de dicha cabina de pintura, la cual sin éste no posee una temperatura y humedad adecuada para la pintura de los automóviles. Esto se debe a que en verano hay días de mucho calor en los cuales se dificulta el trabajo de pintura en el sentido de que es perjudicial y fastidioso para el operario además al tener una alta temperatura en el ambiente de trabajo la chapa que se debe pintar también tiene una alta temperatura por lo cual la pintura no se adhiere correctamente, por ende se chorrea dando una pésima terminación; en cambio en invierno suele haber días de mucha humedad ambiente además de bajas temperaturas, esto dificulta la tarea de pintura debido a que la misma no seca adecuadamente por la falta de temperatura y además se chorrea por motivos de la alta humedad dando una mala calidad en la terminación del trabajo realizado. La temperatura ideal de trabajo esta comprendida entre 22 y 26 ºC; la humedad ambiente debe estar comprendida entre el 40 y el 55 %. Con el control de estos parámetros se logra una terminación ideal del trabajo, además de brindar un ambiente de trabajo placentero para el operario.
Debido a estas razones, en un futuro el proyecto puede ser fabricado en una producción en serie para su comercialización, ya que es un dispositivo cuya instalación es muy sencilla y no requiere de muchos conocimientos de electricidad ni electrónica.
El equipo está constituido por una etapa de sensado, una de control y una de potencia que en este caso no se muestra y se remplaza por diodos leds los cuales indican que aparato (acondicionador de aire o calefacción) esta encendido y en que punto se encuentra el controlador (si en el estado de calefacción o refrigeración), el control de humedad se activa únicamente cuando se utiliza el controlador para calefaccionar debido a que cuando se utiliza el acondicionador de aire este también quita la humedad ambiente.
El usuario podrá controlar los niveles de “set-point” en temperatura y humedad por medio de pulsadores.
Por otro lado, en un “display” o visualizador LCD se podrán constatar la temperatura y humedad ambiente de la habitación en tiempo real, además se muestran los valores de “set- point” tanto para temperatura como humedad.
Descripción
El objetivo del controlador en este caso (ya que se podría utilizar para controlar cualquier ambiente cerrado) es optimizar la cabina de pintura y hacer más placentero el trabajo dentro de la misma. Para tal fin se cuenta con los distintos puntos de “set-point”, los cuales son los encargados de determinar si se activa el dispositivo o no, el controlador puede activar los dispositivos (calefactor y acondicionador de aire) según se seleccione el modo de trabajo en calefacción o refrigeración.
En el modo calefacción se activan el calefactor y el acondicionador de aire (para quitar la humedad ambiente), estos son activados por medio de relé; en el modo refrigeración solo es activado el acondicionador de aire, ya que refrigera y a su vez quita la humedad ambiente.
Dado que los “set-points” son fijados por el operario, en la realización del software se tuvo en cuenta el tiempo de reestablecimiento del motor que se encuentra en el acondicionador de aire, sobre todo cuando se lo utiliza para controlar la humedad ambiente, en la utilización del calefactor esto no se tuvo en cuenta debido a que se utilizan estufas eléctricas de cuarzo y estas no necesitan ningún tiempo de reestablecimiento para poder ser utilizados nuevamente.
Los actuadotes que se utilizan son: para calefaccionar se utilizan dos estufas eléctricas de cuarzo con cuatro líneas de resistencias cada una, con una potencia de 4000 W por equipo;
el acondicionador de aire utilizado es un equipo LG con una capacidad de 6000 frigorías.
En este caso se utiliza un sensor de humedad capacitivo realizado por mí debido al incremento en los costos del proyecto que ocasionaba la compra del mismo en un comercio y además lo tome como un desafío personal al hecho de realizar un capacitor y luego poder utilizarlo con fines prácticos.
El proyecto esta compuesto de las siguientes etapas:
Sensado Control
Dispositivos LCD
Sensado
Esta etapa se encarga de obtener las señales correspondientes a la temperatura y humedad relativa ambiente. Para adquirir el valor de la temperatura ambiente se utilizo la sonda LM35 la cual es un dispositivo muy útil para la obtención de la temperatura ambiente además de tener un comportamiento lineal de acuerdo al valor de tensión que entrega por cada grado centígrado de incremento en la misma (10 mV/ºC). A esta tensión se la hace ingresar al conversor analógico digital del PIC para obtener el dato en forma digital (así se facilita el manejo del mismo para las distintas etapas), luego se realiza un muestreo y se calcula el valor medio para tener una mayor precisión en el sensado de la misma, este valor es el que se muestra en el visualizador y también se lo utiliza para realizar el control.
Como se menciono con anterioridad para el sensado de la humedad relativa, se utilizo un sensor capacitivo, éste es conectado a un circuito auxiliar (que se describe y muestra en la pagina siguiente) para poder obtener los valores de tensión y así trabajar con estos de la misma forma que en el caso de la temperatura.
El esquema y símbolo de la sonda utilizada para la obtención de la temperatura es la siguiente
Para adquirir el valor de la humedad relativa como se menciono con anterioridad se utilizo un capacitor construido con dos laminas de papel españa bobinadas una sobre la otra, a un extremo de cada lamina se soldó un cable de un hilo de cobre aislado el cual se utiliza como conector. En la figura que sigue se puede ver el capacitor.
Al mismo se lo conecto a un circuito auxiliar para obtener distintos valores de tensión los cuales están dentro de un rango que determinan una humedad relativa entre el 10% y el 90%, utilicé estos dos valores como limite superior e inferior respectivamente debido a que la mayoría de los sensores comerciales trabajan dentro de este rango, el circuito auxiliar utilizado es el siguiente.
U2(R)
4 R
DC 7
Q 3
GND1 VCC8
2 TR
TH 6 5 CV
U2
NE555
RV1
30k
R8
1k
R9
1k
C1
.587uF C2
100nF
C3
100nF
C4
100nF
D1
1N4148
RV2
1500k
Salida
Sensor
Descripción del circuito auxiliar y medición de humedad: El funcionamiento del circuito auxiliar se basa en un circuito integrado 555 el cual es un generador de pulsos, para esta aplicación se lo utiliza en el modo astable, el funcionamiento es el siguiente: cuando varia la capacidad del sensor debido al aumento o disminución de la humedad ambiente se tiene en la salida del 555 una frecuencia variable entre 20 y 28 kHz (estos valores de frecuencia corresponden al 10 y 90 % de humedad respectivamente); luego se filtra esta señal para eliminar ruidos o distorsiones en la misma, a esta señal se la conecta a un diodo para generar un pulso de tensión, al cual se lo vuelve a filtrar para lograr un pulso libre de ruido, a éste se lo conecta al conversor A/D del PIC para digitalizar la señal, luego se le realiza un muestreo y se calcula el valor medio para obtener una mayor precisión en la medición, por ultimo el valor medio es utilizado para la visualización de la humedad medida y para el control de la misma.
Control
Esta etapa se basa en un microcontrolador PIC 16F873, el cual se encarga de la medición en temperatura y humedad relativa, conversión de los valores de tensión analógicos en digital, visualización de la temperatura y humedad ambiente actual y también de los distintos puntos de set-point como así también se encarga de la activación de los dispositivos (calefactor y acondicionador de aire).
1. Fijación del “set-point”:
Para realizar esta operación, el microcontrolador sensa las entradas correspondientes a cada uno de los pulsadores, en este caso se utilizaron las patas C0, C1, C2, C3, C4 y C5. De esta manera, va sumando o restando en una unidad a los valores previamente determinados por software.
Debido a que el “set-point” lo debe determinar el operario, éste tiene acceso a los distintos pulsadores de una manera muy simple y de fácil alcance, además de poder visualizar los mismos en el visualizador LCD con el siguiente formato, por ejemplo, T: 25º 30º H: 40%.
Una vez que se obtuvieron los distintos “set-point” el microcontrolador se encarga de utilizar los mismos para controlar la temperatura y humedad relativa en el ambiente donde esta instalado.
2. Medición de Temperatura:
Se ingresa el nivel de tensión proveniente del sensor LM35 a través de la pata RA0 del micro (conversor A/D), este se encarga de la digitalización del dato, y como los niveles de tensión obtenidos en forma digital son directamente proporcionales a los valores de temperatura ambiente, estos datos son mostrados directamente en el display LCD con el siguiente formato, por ejemplo, T: 25º
3. Medición de Humedad relativa:
Como ya se explico con anterioridad, se ingresa el pulso de tensión proveniente del sensor y a través de la pata RA1 del micro (conversor A/D), éste se encarga de la digitalización del dato, como los niveles de tensión obtenidos en forma digital no son directamente los valores de humedad relativa ambiente como ocurre con la temperatura, se debió realizar una conversión la cual se logra por medio del software, luego estos datos se muestrean, se obtiene el valor medio para una mayor precisión en la medición, este valor medio es utilizados para el control y mostrados en el visualizador LCD, con el siguiente formato, por ejemplo, H: 50%.
4. Visualización :
Para tal fin se utiliza un LCD (display de cristal líquido) de dos líneas y dieciséis caracteres por línea que es comandado por el microcontrolador. Este dispositivo posee una memoria interna la cual tiene almacenada una tabla de valores ASCII. De esta manera solo basta con enviar un código para ir escribiendo los caracteres que se deseen visualizar. El microcontrolador se encarga de enviar la rutina de inicialización como así también los datos a escribir.
En el LCD se visualizan en la primera línea la temperatura y humedad relativa ambiente, en la segunda línea se visualizan los puntos de activación y desactivación del control de temperatura y humedad en el cual se quiere mantener el ambiente.
5. Control del acondicionador de aire y el calefactor:
Como se mencionó anteriormente es necesario activar o desactivar tanto el acondicionador de aire como el calefactor, para poder regular las condiciones en el ambiente de trabajo.
Para esto se utiliza un circuito el cual comanda un relé, el que se utiliza para accionar cualquiera de los dispositivos, ya que es necesario manejar 220 V lo cual implica una corriente elevada para un circuito electrónico. Éste trabaja de la siguiente manera: cuando la temperatura ambiente es superior al “set-point” de temperatura superior se acciona el relé activando el acondicionador de aire y cuando la temperatura ambiente es menor al “set-point”
de temperatura inferior se desactiva el relé y por consiguiente se desactiva el acondicionador de aire. Para el modo calefacción el dispositivo trabaja en forma inversa es decir, cuando la temperatura ambiente es menor al “set-point” de temperatura inferior se acciona el relé activando el calefactor y cuando la temperatura ambiente es mayor al “set-point” de temperatura superior se desactiva el relé y por consiguiente se desactiva el calefactor; pero además en este modo de trabajo se utiliza el acondicionador de aire para el control de humedad, el cual trabaja de la siguiente manera: cuando la humedad relativa ambiente es superior al “set-point” se activa el relé activando el acondicionador de aire y cuando la humedad relativa es menor en dos unidades al valor del “set-point” se desactiva el relé desactivando el acondicionador de aire. Se escoge un punto de desactivación en dos unidades menor con respecto al “set-point”, este es fijado por el motivo de darle un tiempo de restablecimiento al motor del acondicionador de aire, porque si se lo activa y desactiva sin tener en cuenta este tiempo podríamos ocasionar graves daños el mismo.
Diagramas en bloque del circuito Circuito completo:
Inicialización de Variables
Inicialización del LCD
Comparación de los set-point con los valores ambiente
Medición de la temperatura
ambiente
Visualización de la temperatura en el
LCD
Medición de la humedad relativa
ambiente
Visualización de la humedad relativa en
el LCD
Obtención del set- pointpara temperatura
Obtención del set- pointpara humedad
relativa
Visualización de los set-point en el
LCD
Activación del calefactor y acondicionador
de aire Activación del
acondicionador de aire
Desactivación del acondicionador de
aire
Desactivación del calefactor y acondicionador
de aire Selección del modo
de trabajo del controlador
Refrigeración Calefacción
Diagrama de los circuitos Circuito sensor de humedad:
U2(R)
4 R
DC 7
Q 3
GND1 VCC8
2 TR TH 6
5 CV
U2
NE555
RV1
30k
R8
1k
R9
1k
C1
.587uF C2
100nF
C3
100nF
C4
100nF
D1
1N4148
RV2
1500k
Salida
Sensor
Visualización:
RA0/AN0 2
RA1/AN1 3
RA2/AN2/VREF- 4
RA4/T0CKI 6
RA5/AN4/SS 7
OSC1/CLKIN 9
OSC2/CLKOUT 10
RC1/T1OSI/CCP2 12 RC2/CCP1 13 RC3/SCK/SCL 14 RB7/PGD 28 RB6/PGCRB5RB4 272625 RB3/PGMRB0/INTRB2RB1 24232221
RC7/RX/DTRC6/TX/CKRC5/SDO 181716 RC4/SDI/SDA 15 RA3/AN3/VREF+
5
RC0/T1OSO/T1CKI 11 MCLR/Vpp/THV
1
U1
PIC16F873
D714D613D512D411D310D29D18D07
E6RW5RS4
VSS1 VDD2 VEE3
LCD1
LM016L
VCC 5V
“Set-points” y salidas de control:
RA0/AN0 2 RA1/AN1 3 RA2/AN2/VREF- 4 RA4/T0CKI 6 RA5/AN4/SS 7
OSC1/CLKIN 9 OSC2/CLKOUT 10 RC1/T1OSI/CCP2
12 RC2/CCP1 13 RC3/SCK/SCL 14
RB7/PGD 28
RB6/PGC 27
26 RB5 25 RB4
RB3/PGM 24
23 RB2 22 RB1
RB0/INT 21
RC7/RX/DT 18
RC6/TX/CK 17
RC5/SDO 16
RC4/SDI/SDA 15
RA3/AN3/VREF+ 5 RC0/T1OSO/T1CKI
11
MCLR/Vpp/THV 1
U1
PIC16F873 VCC 5V
R1
1k
R2
1k
R3
1k
R4
1k
R5
10k
R6
10k
Humedad Temperatura
Programación
En este proyecto el programa del microcontrolador es de vital importancia, ya que este se encarga de todas las tareas de control del sistema, la medición de temperatura y humedad relativa, visualización de todos los datos y genera las señales de conexión y desconexión de los distintos dispositivos según su modo de funcionamiento.
Para su mejor comprensión vamos a detallar aquellas partes del programa que son las más importantes para este proyecto:
Como se explicó con anterioridad en el sensado, al microcontrolador le llegan dos señales de tensión analógicas una de la temperatura y la otra de la humedad relativa, las cuales son conectadas al conversor A/D del micro y así se obtienen ambas señales digitales, con las cuales es mucho mas simple y fácil trabajar en electrónica. El programa en este punto solo tiene que medir los distintos pulsos de tensión que son iguales a los valores de temperatura y humedad relativa ambiente. Luego el micro se encarga de obtener los distintos valores de los “set-point” por medio de los pulsadores los cuales al ser presionados le envían al micro un pulso para poder incrementar o decrementar los distintos “set-point”, tanto de temperatura como humedad.
Después de esto, el micro comienza su etapa de control en la cual realiza una comparación directa de la temperatura sensada con el punto de activación superior e inferior para determinar si se debe conectar o desconectar el acondicionador de aire si esta trabajando en el modo de refrigeración o el calefactor si esta en el modo calefacción, el control de la humedad relativa en el modo refrigeración no se utiliza debido a que si se activa el acondicionador de aire éste a su vez quita la humedad en el ambiente, pero cuando el controlador trabaja en el modo de calefacción el micro se encarga de conectar y descontar el acondicionador de aire para quitar la humedad ambiente, en este modo de trabajo se utilizan los dos dispositivos. La mejor forma que encontré para quitar la humedad ambiente en este modo de trabajo (calefacción), es utilizar el acondicionador de aire conjuntamente con el calefactor.
El micro también se encarga de la visualización de los distintos datos (mediciones de ambos parámetros) y de los puntos de activación y desactivación de los dispositivos (“set- point”).
Diagrama de flujo
Inicialización de Variables
Inicialización del LCD
Conversión A/D
Medición de temperatura y
humedad
Visualización de los datos
obtenidos
Td ≤ Set-point
Ref. – Cal.
Activación o desactivación del
acondicionador de aire
Activación o desactivación de
los dispositivos
Programa en assembler LIST P=16F873
Include "P16F873.inc"
ORG 0x0000
__CONFIG _CP_OFF &_WDT_OFF & _XT_OSC
pcl equ 0x02 ; Contador de programa (Parte baja) estado equ 0x03 ; Registro de estados
ptoa equ 0x05 ; Puertos de E/S
ptob equ 0x06
ptoc equ 0x07
intcon equ 0x0B ; Controlador de interrupciones eedata equ 0x0C ; Registro de datos de la EEPROM eeaddr equ 0x0D ; Registro de direccion de la EEPROM
adres equ 0x1E ; Resultado de la conversión A/D (HIGH / LOW) adcon equ 0x1F ; Configuración del conversor A/D
uni equ 0x20 ; Usados para manejar los datos a mostrar en display
dec equ 0x21
cen equ 0x22
tiempo1 equ 0x23 ; Usados para temporizar
tiempo2 equ 0x24
letra equ 0x25 ; Usado para apuntar la letra a colocar en el LCD menor equ 0x26 ; Temperatura de activación
mayor equ 0x27 ; Temperatura de desactivación buffer equ 0x28 ; Usado como registro temporal
humedad equ 0x29
buffer1 equ 0x2a
#define CARRY estado, 0 ; Bit de acarreo
#define CERO estado, 2 ; Flag indicador de resultado cero
#define RP0 estado, 5 ; Bit 0 selector de página de memoria
#define RP1 estado, 6 ; Bit 1 selector de página de memoria
#define ADGO adcon, 2 ; Bit que inicia la conversión (1) / Indica finalización (0)
#define EEREAD eedata, 0 ; Bit que inicia la lectura de la EEPROM
#define EEWRITE eedata, 1 ; Bit que inicia la escritura de la EEPROM - Indica finalización
#define EEWREN eedata, 2 ; Bit que habilita la escritura en la EEPROM
#define EEAREA eedata, 7 ; Bit que selecciona el área de EEPROM a utilizar (0=AREA DE DATOS)
#define MINS ptoa, 1 ; Sube el punto mínimo
#define MINB ptoa, 2 ; Baja el punto mínimo
#define MAXS ptoa, 3 ; Sube el punto máximo
#define MAXB ptoa, 4 ; Baja el punto máximo
#define HUMS ptoc, 0
#define HUMB ptoc, 1
#define RELE1 ptoc, 3 ; Salida al aviso acústico
#define RELE ptoc, 4 ; que maneja la carga
#define LCDE ptoc, 6 ; Habilitación del LCD
#define LCDRS ptoc, 7 ; Selección de modo del LCD bsf RP0 ; Pasa a página 1
bcf RP1
movlw b'00011111' ; Configura puerto A movwf ptoa
clrf ptob ; Puerto B completo como salidas (bus del LCD) clrf ptoc ; Puerto C completo como salidas
movlw b'10001110' ; Configura los pines del Puerto A movwf adcon ; AN0 como única entrada análoga bsf RP1 ; Pasa a página 3
bcf EEAREA ; Selecciona el banco de EEPROM de datos bcf RP1 ; Pasa a página 0
bcf RP0
movlw b'01000001' ; Enciende y configura el convertidor A/D - Selecciona AN0 como entrada
movwf adcon
clrf ptoa ; Apaga todo clrf ptob
clrf ptoc
bsf RP1 ; Pasa a la página 2 de memoria
clrf eeaddr ; Direcciona la primera posición de la EEPROM bsf RP0 ; Pasa a la página 3 de memoria
bsf EEREAD ; Inicia la lectura de la EEPROM bcf RP0 ; Vuelve a la página 3 de memoria movf eedata, 0 ; Dato Leído de la EEPROM -> W
movwf menor ; Guarda el dato leído de la EEPROM en MENOR (punto de activación del relé)
incf eeaddr ; Direcciona a la segunda posición de la EEPROM bsf RP0 ; Pasa a la página 3 de memoria
bsf EEREAD ; Inicia la lectura de la EEPROM bcf RP0 ; Vuelve a la página 3 de memoria movf eedata, 0 ; Dato Leído de la EEPROM -> W
movwf mayor ; Guarda el dato leído de la EEPROM en MAYOR (punto de desactivación del relé)
bcf RP1 ; Pasa a la página 0 de memoria
movlw b'00111000' ; Comunicación con el LCD a ocho bits - Dos líneas de texto call CONTROL
movlw d'2'
call DEMORA ; Demora 2ms
movlw b'00000110' ; Mensaje estático, se desplaza el cursor hacia la derecha call CONTROL
movlw d'2'
call DEMORA ; Demora 2ms
movlw b'00001100' ; Enciende el display - Oculta el cursor - Carácter fijo call CONTROL
movlw d'2'
call DEMORA ; Demora 2ms
movlw b'00000001' ; Limpia la pantalla y pone cursor en posición inicial call CONTROL
movlw d'2'
call DEMORA ; Demora 2ms
clrf letra ; Coloca el título en el LCD OTRA movf letra, 0 ; Letra actual -> W
call LINEA1 ; Obtiene el carácter a colocar desde la tabla call DATO ; Envía el carácter al LCD
incf letra, 1
movf letra, 0 ; Comprueba si ya envió los 16 caracteres del título sublw d'16'
btfss CERO
goto OTRA ; Si no llego a la letra 16 sigue enviando movlw 0xC0 ; Posiciona el cursor en la 2da. línea call CONTROL
movlw d'1'
call DEMORA ; Demora 1ms
clrf letra ; Coloca el título en el LCD OTRA2
movf letra, 0 ; Letra actual -> W
call LINEA2 ; Obtiene el carácter a colocar desde la tabla call DATO ; Envía el carácter al LCD
incf letra, 1
movf letra, 0 ; Comprueba si ya envió los 16 caracteres del título sublw d'16'
btfss CERO
goto OTRA2 ; Si no llego a la letra 16 sigue enviando
call VERINF ; Coloca en el LCD la temp. inferior (de activación) call VERSUP ; Coloca en el LCD la temp. superior (de desactivación) call VERHUM ; Coloca en el LCD el valor de humedad deseado.
CICLO bsf ADGO ; Inicia la conversión A/D
btfsc ADGO ; Espera que termine de convertir goto $ -1
bsf RP0 ; Pasa a página 1 (para acceder a los ocho bits bajos del resultado) movf adres, 0 ; Resultado de conversión -> W
bcf RP0 ; Pasa a página 1
movwf buffer ; Guarda el dato obtenido de ADRESL en el buffer temporal bcf CARRY ; Limpia el CARRY
btfsc adres, 0 ; Mira el bit menos significativo de ADRESH (Bit 8) bsf CARRY ; Si está en 1 pone en uno el carry
rrcf buffer, 1 ; Hace desaparecer el bit 0 de ADRESL, mete el bit 0 de ADRESH por el 7 de ADRESL
movf menor, 0 ; Punto de activación -> W
addlw d'1' ; Suma 1 a W
subwf buffer, 0 ; W = Temp. Actual - (Menor + 1)
btfss CARRY ; Si dio negativo es porque la temp. medida es igual o menor al punto de activación
bsf RELE ; Si dio negativo (si carry = 0) acciona el relee movf mayor, 0 ; Punto de desactivación -> W
subwf buffer, 0 ; W = Temp. Actual - (Mayor)
btfsc CARRY ; Si dio negativo es porque aún no alcanzó la temp. de desactivación
bcf RELE ; Si dio positivo (si carry = 1) desactiva el relee movf humedad, 0 ; Punto de activación -> W
addlw d'2' ; Suma 2 a W
subwf buffer1, 0 ; W = humedad - (Menor + 1)
btfss CARRY ; Si dio negativo es porque la temp. medida es igual o menor al punto de activación
bsf RELE1 ; Si dio negativo (si carry = 0) acciona el relee movf humedad, 0 ; Punto de desactivación -> W
sublw d'2'
subwf buffer1, 0 ; W = Temp. Actual - (Mayor)
btfsc CARRY ; Si dio negativo es porque aún no alcanzó la temp. de desactivación
bcf RELE1 ; Si dio positivo (si carry = 1) desactiva el relee movf buffer, 0 ; Dato digitalizado -> W
call DECIMAL ; Obtiene UNI, DEC y CEN con el agregado de 30h para la tabla ASCII movlw 0x83 ; Coloca el cursor en la posición 0Dh de la pantalla.
call CONTROL
movf cen, 0 ; Coloca en el LCD las centenas call DATO
movf dec, 0 ; Coloca las decenas call DATO
movf uni, 0 ; Coloca las unidades call DATO
HUMEDAD
movlw b'00010101' ; PONEMOS EN MARCHA EL TMR1 MOVWF 0x10;
SEGUNDO
btfss 0x07,2 ; Esperamos por un primer flanco de bajada
goto SEGUNDO ; para empezar a contar poniendo en marcha TMR1 clrf 0x0E ; Ponemos a cero el TMR1 en su parte alta
clrf 0x0F ; y su parte baja después bsf 0x10,0 ; Pongo en marcha el TMR1 movf buffer1, 0
SEGUN
btfsc 0x07,2 ;Esperamos por un primer flanco de bajada
goto SEGUN ;para empezar a contar poniendo en marcha TMR1
MOVF 0x0E,0 movwf buffer1 MOVF buffer1,0 CALL DECIMAL
movlw 0x8B ; Coloca el cursor en la posición 0Dh de la pantalla.
call CONTROL
movf cen, 0 ; Coloca en el LCD las centenas call DATO
movf dec, 0 ; Coloca las decenas call DATO
movf uni, 0 ; Coloca las unidades call DATO
; FIN PARTE DE HUMRDAD
btfss MINS ; Mira el pulsador de incremento en temp. de activación call SUBEMIN
btfss MINB ; Mira el pulsador de decremento en temp. de activación call BAJAMIN
btfss MAXS ; Mira el pulsador de incremento en temp. de desactivación call SUBEMAX
btfss MAXB ; Mira el pulsador de decremento en temp. de desactivación call BAJAMAX
btfss HUMS ; Mira el pulsador de incremento en humedad call SUBEHUM
btfss HUMB ; Mira el pulsador de decremento en humedad call BAJAHUM
goto CICLO ; Vuelve a medir y mostrar LINEA1
Addwf pcl, 1 ;Suma el contenido de W al contador de programa (para explorar la tabla) Retlw " "
Retlw "T"
Retlw ":"
Retlw " "
Retlw " "
Retlw H'DF' Retlw "C"
Retlw " "
Retlw " "
Retlw "H"
Retlw ":"
Retlw " "
Retlw " "
Retlw " "
Retlw "%"
Retlw " "
LINEA2
Addwf pcl, 1 ; Suma el contenido de W al contador de programa (para explorar la tabla) Retlw "T"
Retlw " "
Retlw " "
Retlw " "
Retlw b'01111111' ; Flecha izquierda Retlw "-"
Retlw "-"
Retlw b'01111110' ;Flecha derecha Retlw " "
Retlw " "
Retlw " "
Retlw "/"
Retlw "H"
Retlw " "
Retlw " "
Retlw " "
SUBEMIN
incf menor, 1 ; Suma 1 a la temp de activación call VERINF ; Actualiza la información en el LCD btfss MINS ; Espera que suelte el pulsador goto $ -1
goto SAVEMIN ; Una vez que suelta la tecla va a guardar el parámetro BAJAMIN
decf menor, 1 ; Resta 1 a la temp. de activación call VERINF ; Actualiza la información en el LCD btfss MINB ; Espera que suelte el pulsador goto $ -1
SAVEMIN
bsf RP1 ; Pasa a página 2
clrf eeaddr ; Direcciona el primer byte de la EEPROM movf menor, 0
movwf eedata ; Temp. Activación -> EEPROM call EESAVE ; Ejecuta la rutina de grabación bcf RP1 ; Pasa a página 0
SUBEMAX
incf mayor, 1 ; Suma 1 a la temp de desactivación call VERSUP ; Actualiza la información en el LCD btfss MAXS ; Espera que suelte el pulsador goto $ -1
goto SAVEMAX ; Una vez que suelta la tecla va a guardar el parámetro BAJAMAX
decf mayor, 1 ; Resta 1 a la temp de desactivación
call VERSUP ; Actualiza la información en el LCD btfss MAXB ; Espera que suelte el pulsador goto $ -1
SAVEMAX
bsf RP1 ; Pasa a página 2 movlw d'1'
movwf eeaddr ; Direcciona el 2do. byte de la EEPROM movf mayor, 0
movwf eedata ; Temp. Activación -> EEPROM call EESAVE ; Ejecuta la rutina de grabación bcf RP1 ; Pasa a página 0
SUBEHUM
incf humedad, 1 ; Suma 1 a la humedad de activación call VERHUM ; Actualiza la información en el LCD btfss HUMS ; Espera que suelte el pulsador goto $ -1
goto SAVEHUM ; Una vez que suelta la tecla va a guardar el parámetro BAJAHUM
decf humedad, 1 ; Resta 1 a la humedad de desactivación call VERHUM ; Actualiza la información en el LCD btfss HUMB ; Espera que suelte el pulsador goto $ -1
SAVEHUM
Bsf RP1 ; Pasa a página 2
clrf eeaddr ; Direcciona el primer byte de la EEPROM movf humedad, 0
movwf eedata ; Humedad -> EEPROM
call EESAVE ; Ejecuta la rutina de grabación bcf RP1 ; Pasa a página 0
EESAVE
bsf RP0 ; Pasa a página 3
bsf EEWREN ; Habilita la escritura en la EEPROM movlw 0x55 ; Secuencia de seguridad
movwf eeaddr movlw 0xAA movwf eeaddr
bsf EEWRITE ; Inicia la grabación bcf EEWREN ; Deshabilita la escritura
btfsc EEWRITE ; Espera que termine de grabar goto $ -1
bcf RP0 ; Pasa a página 2 return
CONTROL
bcf LCDRS ; Pone en bajo la línea de modo del LCD (Control) goto ENVIAR ; Se saltea la siguiente Línea
DATO
bsf LCDRS ; Pone en alto la línea de modo del LCD (Dato) ENVIAR
movwf ptob ; Coloca el dato o control a enviar en el bus del LCD movlw d'1'
call DEMORA ; Demora 1ms bsf LCDE ; Habilita el LCD movlw d'1'
call DEMORA ; Demora 1ms bcf LCDE ; Deshabilita el LCD movlw d'1'
call DEMORA ; Demora 1ms return
DECIMAL
movwf uni ; Convierte el dato presente en W en UNI, DEC y CEN clrf dec
clrf cen
movlw d'100' ; Determina la cantidad de centenas CENTENA
subwf uni, 1 btfss CARRY goto CIEN incf cen, 1 goto CENTENA, CIEN addwf uni, 1
movlw d'10' ; Determina la cant. de decenas DECENA
subwf uni, 1 btfss CARRY goto DIEZ incf dec, 1 goto DECENA
DIEZ addwf uni, 1 ; Uni queda con la cantidad de unidades (sin decenas ni centenas) movlw 0x30 ; Le suma 30h a los valores de UNI, DEC y CEN para que queden en ASCII addwf uni, 1
addwf dec, 1 addwf cen, 1 return
DEMORA
movwf tiempo2 ; Demora tantos milisegundos como valor en w TOP2 movlw d'110'
movwf tiempo1 TOP1 nop
nop nop nop nop nop
decfsz tiempo1, 1 goto TOP1
decfsz tiempo2, 1 goto TOP2 return
VERINF
movf menor, 0 ; Temperatura de activación -> W
call DECIMAL ; Obtiene UNI, DEC y CEN en formato ASCII
movlw 0xC2 ; Posiciona el cursor en el tercer carácter de la 2da. línea call CONTROL ; Para escribir el punto de activación
movlw d'1'
call DEMORA ; Demora 1ms
movf cen, 0 ; Coloca en el LCD las centenas call DATO
movf dec, 0 ; Coloca las decenas call DATO
movf uni, 0 ; Coloca las unidades call DATO
return VERSUP
movf mayor, 0 ; Temperatura de desactivación -> W
call DECIMAL ; Obtiene UNI, DEC y CEN en formato ASCII
movlw 0xC8 ; Posiciona el cursor en el carácter 12 de la 2da. línea call CONTROL ; para escribir el punto de desactivación
movlw d'1'
call DEMORA ; Demora 1ms
movf cen, 0 ; Coloca en el LCD las centenas call DATO
movf dec, 0 ; Coloca las decenas call DATO
movf uni, 0 ; Coloca las unidades call DATO
return VERHUM
movf humedad, 0 ; Temperatura de activación -> W
call DECIMAL ; Obtiene UNI, DEC y CEN en formato ASCII
movlw 0xCE ; Posiciona el cursor en el tercer carácter de la 2da. línea call CONTROL ; Para escribir el punto de activación
movlw d'1'
call DEMORA ; Demora 1ms
movf cen, 0 ; Coloca en el LCD las centenas call DATO
movf dec, 0 ; Coloca las decenas call DATO
movf uni, 0 ; Coloca las unidades call DATO
return
org 0x2100 ; Guarda los parámetros por default en la EEPROM data 0x14 ; Punto de activación: 20 grados
data 0x1E ; Punto de desactivación: 30 grados data 0x32 ; Punto de control para humedad 50%
end.
Problemas en la realización del proyecto
En primer lugar, tuve el inconveniente de medir humedad lo cual no es de fácil tarea, para solucionarlo, investigando encontré un sensor capacitivo el cual al aumentar la humedad ambiente aumentaba su capacidad, al ver el costo del mismo, se me planteo la inquietud de investigar para realizar este sensor y su circuito auxiliar para poder medir correctamente humedad relativa, el mismo lo realicé con dos tiras de papel españa bobinadas una sobre la otra y separadas por finas tiras de plástico para que el dieléctrico sea el aire y que el mismo pueda circular con facilidad entre las dos tiras de papel españa y así variar su capacidad con la variación de la humedad ambiente.
Otro problema que me surgió fue el manejo y control de los dispositivos encargados de calefaccionar, enfriar y quitar la humedad ambiente, debido a la potencia que estos requieren.
A este problema lo solucioné con la inclusión en el circuito de un relé que comanda un par de contactores, los cuales se encargan del manejo de los dispositivos y sus correspondientes potencias.
Por último cuando el circuito estaba funcionando correctamente me encontré con el problema de la correcta calibración del mismo, esto se debe a que los componentes de electrónica no son ideales. Esta dificultad fue solucionada colocando en el circuito sensor de humedad un par de resistencias variables de alta precisión, con lo cual logre su correcta calibración y funcionamiento del mismo.
Estos problemas que me surgieron, son debidos a mi falta de experiencia en trabajos en los que intervienen las condiciones ambientales y en los cuales se desea tener una medición real de los parámetros a controlar, además de la dificultad en el manejo de potencias de esta magnitud con circuitos electrónicos.
Conclusión
La realización de este proyecto ha sido positiva para mi formación debido a que he aprendido a volcar mis conocimientos sobre electrónica para realizar el mismo, lo cual me sirvió mucho para ganar experiencia en la práctica, también me he visto obligado a investigar en la medición de humedad relativa, lo cual me ha producido una gran motivación, logrando despertar en mí nuevas inquietudes y deseos de realizar nuevos proyectos.
Por otro lado creo que este proyecto puede seguir mejorando y pulir aquellos defectos que aún posee (como mejorar el capacitor que se utilizó para el sensado de la humedad), para luego, si se desea, una futura producción en serie y comercialización del producto, ampliando así su aplicación en distintos sectores y no sólo en el control de una cabina de pintura.