Autor Tema: Actualización de control de caldera de calefacción con PIC  (Leído 3651 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Jorge Bern

  • PIC10
  • *
  • Mensajes: 46
    • Mis Proyectos de Electrónica Aplicada
Actualización de control de caldera de calefacción con PIC
« en: 25 de Abril de 2022, 01:19:31 »
Buenas noches colegas

Introducción

Aquí vengo con un proyecto nuevo que creo interesante para exponer y discutir en este concienzudo foro.
Se trata de controlar una caldera (no se si en otros países se llama así)  de calefacción domiciliaria o industrial a gas natural ,
con PIC, reemplazando la placa de control original y actualizando y mejorando la seguridad del sistema.
Por supuesto contando con la asesoría en seguridad de expertos matriculados en los temas gas y calefacción.

A modo de introducción, la disposición y uso de la caldera es el típico como se ve en esta figura:

 

* caldera1.jpg
(38.56 kB, 750x426 - visto 794 veces)


Y la placa de control a reemplazar es la siguiente:

 

* placa.jpg
(129.63 kB, 864x1152 - visto 893 veces)


La placa es una HoneyWell modelo 45.005.883-003 rev .06 de origen húngaro que ya no funciona y no es posible reparar por falta de repuestos, entonces la idea es su reemplazo por un diseño con PIC que mejore la confiabilidad y seguridad del sistema como veremos luego.
Veamos en forma resumida que contiene la placa.
Vemos un conector de 9 pines que la conecta con los dispositivos externos que veremos luego cuales son y la linea de alimentación de 220 VCA. También se ve la placa pequeña vertical que contiene el microcontrolador original HoneyWell y otros componentes de control.
Sobre la derecha se ve la bobina del encendedor electrónico de la caldera. También cuenta con dos reles de control que ya están extraídos en esa foto y otros componentes menores.

Como funciona la placa? que hace? Lo vemos a continuación:

La caldera de calefacción como toda caldera tendrá un ingreso de agua fría a una serpentina de calefacción y una salida de agua caliente que luego va a los radiadores de la casa como se ve arriba y retorna cerrando el circuito, esto movido por una adecuada bomba de agua.
Dentro de esta serpentina que circula el agua a calentar, hay un quemador de gas, una llave eléctrica que controla el paso del gas al quemador y dos electrodos, uno del encendido electrónico y el otro del detector de llama presente.
Entonces el funcionamiento de la placa es sencillo. Esta recibe información de la temperatura del agua de salida de la serpentina y del seteo de temperatura deseada, si la primera temp. es menor que la segunda, la placa comienza la secuencia de encendido del quemador de gas.
Para esto ordena abrir la llave de gas (por medio de uno de los reles de la placa) y actúa el encendido electrónico de chispa y al mismo tiempo sensa la presencia de llama. Si luego de cinco segundos de salida de gas no detecta llama presente de encendido del quemador, corta la llave de gas y enciende una alarma de falla de encendido y queda a la espera del reseteo manual de alarma
En cambio si detecta llama presente antes de los 5 segundos de apertura, deja la llave abierta y el quemador encendido hasta que la temperatura de agua deseada se alcanza , y cuando esto ocurre corta la llama y sensa nuevamente temperatura para repetir el ciclo de encendido y calentamiento.

En el siguiente posteo veremos mas en detalle este funcionamiento y como actúa el detector de llama presente,
y como mejoramos incorporando tecnología moderna, la confiabilidad y seguridad del sistema

Un saludo










« Última modificación: 25 de Abril de 2022, 01:22:37 por Jorge Bern »

"Voyager 1, llevando el microcontrolador activo que más se alejó de sus programadores"

Desconectado Jorge Bern

  • PIC10
  • *
  • Mensajes: 46
    • Mis Proyectos de Electrónica Aplicada
Re:Actualización de control de caldera de calefacción con PIC
« Respuesta #1 en: 25 de Abril de 2022, 13:52:25 »
Detección de presencia de llama. La sonda de Ionización

Continuando, digamos que métodos de detección de presencia de llama hay muchos, detectores de incendio infrarrojos, térmicos, por ionizaciòn, etc.
En este caso la placa de control original utilizaba el método de detección por ionización, que se muestra simplificado aquí:

 

* detector.jpg
(18.85 kB, 470x270 - visto 1287 veces)


Este método consiste en detectar una pequeña corriente eléctrica (10 a 50 uA) que circula por el aire ionizado por una llama que entra en contacto con el electrodo detector como se ve en la figura.
En este caso esta placa utilizaba este método normal hace unos 25 años pero hoy ya obsoleto, además de ser un solo detector  que lo hacia algo inseguro en caso de fallas. En la placa puede verse un terminal detrás de la bobina de encendido por donde ingresa la señal de presencia que luego va al microcontrolador.

En este proyecto de actualización no utilizare la detección por ionización sino la detección infrarroja, por medio de detectores como el siguiente:

 

* infra.jpg
(112.3 kB, 1064x1096 - visto 816 veces)


Este detector infrarrojo de fuego/incendio trabaja en el rango de 760 a 1100 nm, tiene ajuste de sensibilidad y salidas analogicas y digitales. En este proyecto utilizarè dos detectores como este para mayor confiabilidad y ademàs agregarè un detector de presencia de gas metano como este:

 

* gas.jpg
(110.59 kB, 1027x629 - visto 831 veces)


Continuamos luego...

Un saludo






"Voyager 1, llevando el microcontrolador activo que más se alejó de sus programadores"

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re:Actualización de control de caldera de calefacción con PIC
« Respuesta #2 en: 26 de Abril de 2022, 02:28:04 »
Hola Jorge, me suscribo al hilo. Me gusta el planteamiento que estás haciendo.

Y aprovecho para preguntarte algo: ¿detector de metano?, ¿la caldera no funciona con propano / butano?

Desconectado Jorge Bern

  • PIC10
  • *
  • Mensajes: 46
    • Mis Proyectos de Electrónica Aplicada
Re:Actualización de control de caldera de calefacción con PIC
« Respuesta #3 en: 26 de Abril de 2022, 18:21:09 »
Hola Jorge, me suscribo al hilo. Me gusta el planteamiento que estás haciendo.

Y aprovecho para preguntarte algo: ¿detector de metano?, ¿la caldera no funciona con propano / butano?

Gracias amigo por tu comentario, un gusto poder aportar algo de vez en cuando.

Respecto a tu pregunta, aquí en mi país tenemos red de distribución domiciliaria de gas natural (metano)
Y los que no les llega la red... hay... tienen que llenar la bombona con gas licuado (butano) y sale carissimo  :5]

Un saludo

"Voyager 1, llevando el microcontrolador activo que más se alejó de sus programadores"

Desconectado Jorge Bern

  • PIC10
  • *
  • Mensajes: 46
    • Mis Proyectos de Electrónica Aplicada
Re:Actualización de control de caldera de calefacción con PIC
« Respuesta #4 en: 26 de Abril de 2022, 18:52:22 »
Encendido electrónico por descarga capacitiva

La placa de control original de la caldera utiliza este tipo de encendido, y como funciona bien lo reutilizare en este proyecto.
Su diagrama es el siguiente:

 

* encendido.jpg
(49.62 kB, 816x494 - visto 827 veces)


Su funcionamiento es conocido, mientras no ingresan pulsos de disparo por el transformador de pulsos, el tiristor T1 permanece cortado y no hay generación de alta tensión ni chispas.
Cuando hay pulsos de disparo, estos son rectificados por D2 y C2 y disparan T1 que pasa a actuar como diodo rectificador.
Entonces el capacitor C1 se carga por medio de R a una tensiòn cercana a los 100 Voltios.   Cuando se alcanza la tensiòn de disparo del diac D1, el capacitor C1 se descarga sobre el primario del transformador de alta tensiòn y su secundario produce las chispas.
Mientras el T1 se mantenga disparado, el oscilador formado por R, C1, D1 y el transformador de alta, seguirá generando chispas de encendido.
Los pulsos de disparo serán provistos por el PIC y el transformador de pulsos mantendrá a este aislado de la red de 220VCA

Un saludo



"Voyager 1, llevando el microcontrolador activo que más se alejó de sus programadores"

Desconectado Robert76

  • PIC24F
  • *****
  • Mensajes: 577
Re:Actualización de control de caldera de calefacción con PIC
« Respuesta #5 en: 27 de Abril de 2022, 12:17:26 »
Hola, como recomendación todo lo que trate sobre caldera, debe tener sensores duplicados como redundancia de seguridad.

Desconectado Jorge Bern

  • PIC10
  • *
  • Mensajes: 46
    • Mis Proyectos de Electrónica Aplicada
Re:Actualización de control de caldera de calefacción con PIC
« Respuesta #6 en: 01 de Mayo de 2022, 19:54:08 »
Hola, como recomendación todo lo que trate sobre caldera, debe tener sensores duplicados como redundancia de seguridad.

Gracias por el comentario, amigo

Si, como ya dije arriba van dos sensores de cada tipo mostrados.
Es lo que me recomendaron mis asesores gasistas matriculados.

En breve continuamos. Saludos




"Voyager 1, llevando el microcontrolador activo que más se alejó de sus programadores"

Desconectado Jorge Bern

  • PIC10
  • *
  • Mensajes: 46
    • Mis Proyectos de Electrónica Aplicada
Re:Actualización de control de caldera de calefacción con PIC
« Respuesta #7 en: 06 de Junio de 2022, 14:30:17 »
Medidores y placa de potencia

Continuando con este proyecto que tengo un poco atrazado , pongo fotos de los medidores y perilla de selección de temperatura para luego pasar a los circuitos eléctricos que ya estoy ensayando.
 
 

* caldera2.jpg
(55.96 kB, 335x382 - visto 734 veces)
 

El circuito eléctrico de la placa de potencia sera el siguiente:

   

* pot2r.jpg
(56.89 kB, 666x260 - visto 770 veces)
 

En esta placa, la linea de 220VCA ingresa por la izquierda pasando por el fusible FUSE y continua al selector de temperatura deseada ST1 que es la perilla de ajuste de temp. de arriba. Luego la linea de CA pasa por dos interruptores térmicos de protección PT1 Y PT2 que están ubicados a la salida del intercambiador y protegen de eventuales sobretemperaturas en el circuito de agua (luego pondré fotos de estos)
Luego el circuito P1 toma una muestra de la tensión entrante por medio de T1 y el divisor capacitivo R1-C3 y le reporta la presencia de tensión al uC con la señal S1.
A continuación la linea de 220VCA es rectificada por PD1 e ingresa al circuito P2 que controla la electroválvula  de gas LG por medio del relè RL1.
Y luego al circuito P3 que es el encendido electrónico de chispa controlado por RL2.
Claramente ambos reles RL1 y RL2 serán controlados por el uC

Continuamos luego. Saludos

« Última modificación: 06 de Junio de 2022, 20:46:39 por Jorge Bern »

"Voyager 1, llevando el microcontrolador activo que más se alejó de sus programadores"

Desconectado Jorge Bern

  • PIC10
  • *
  • Mensajes: 46
    • Mis Proyectos de Electrónica Aplicada
Re:Actualización de control de caldera de calefacción con PIC
« Respuesta #8 en: 06 de Junio de 2022, 22:20:17 »
Placa de control con PIC

 

* control1.jpg
(56.18 kB, 480x360 - visto 730 veces)


Como se ve en este diagrama en bloques, la placa de control utiliza un PIC 18FXXX , probablemente funcione con uno más simple pero era el que tenía disponible.
El sensor de presencia de gas MQ4 es el encargado de detectar cualquier fuga de gas en el aire, que si ocurre implicará el apagado total de la caldera y la indicación de la correspondiente alarma.
Este sensor es alimentado por 5VCC, tiene ajuste de sensibilidad  y tiene salidas analógica y digital. Aquí se usara la salida digital que ingresa al PIC por RB0
Los sensores infrarrojos de presencia de llama son dos para una detección redundante, también alimentados por 5VCC, tienen ajuste de sensibilidad y sus salidas digitales ingresan por RB1 y RB2.
La señal de presencia de tensión de red 220VCA como vimos llega de la placa de potencia por S1 que ingresa por RB3.
Los dos reles RL1 y RL2 de la placa de potencia, son controlados por medio de los transistores T1 y T2 y las salidas RA2 y RA3 del PIC.
El PIC también controlará el buzzer indicador de alarma por medio de RA1 y un LED RGB indicador de estado y alarma, por medio de RA0, RA6 y RA7
El pulsador de Reset reiniciará el PIC ante un bloqueo por estado de alarma, RB4 y RB5 no se usan, PGD y PGC se usan como sabemos para programar el PIC.

Luego pondré fotos y videos de cada una de las placas, primero prototipos y luego las definitivas.

Como funciona el control, que hace el PIC, lo vemos en el próximo posteo

Saludos
« Última modificación: 06 de Junio de 2022, 22:38:20 por Jorge Bern »

"Voyager 1, llevando el microcontrolador activo que más se alejó de sus programadores"

Desconectado Jorge Bern

  • PIC10
  • *
  • Mensajes: 46
    • Mis Proyectos de Electrónica Aplicada
Re:Actualización de control de caldera de calefacción con PIC
« Respuesta #9 en: 12 de Junio de 2022, 22:53:51 »
Como funciona el control, que hace el PIC

El programa del PIC tendrá tres lazos de control de acuerdo al estado en que se encuentre la caldera.

1)Lazo de reposo
Este lazo será indicado con color AZUL en el Led de estado
Mientras la temperatura del agua indicada por el termómetro de temperatura visto arriba,
permanece a una temperatura mayor que el ajuste de temperatura ST1 de la placa,
la caldera no deberá encender.
En cambio cuando la temperatura del agua indicada por el termómetro de temperatura visto arriba,
cae a una temperatura menor que el ajuste de temperatura ST1 de la placa,
el interruptor ST1 se cerrará energizando los circuitos P1, P2 y P3 de la placa de potencia,
y la señal S1 se activará,
Nótese el doble control de seguridad, tanto la llave de gas como el encendido electrónico se activan
sólo si el interruptor ST1 (y también los de seguridad PT1 y PT2) está activado y los relés de control RL1 y RL2 están también activados.

Entonces en este lazo, el PIC monitorea sus entradas RB0, RB1, RB2 Y RB3
RB0 si se activa, indica que hay detección de gas en el aire, se pasa al estado de alarma 1
RB1 si se activa, indica que hay llama (fuego) cuando no debe haberla (quemador apagado) , pasa al estado de alarma  2
RB2 si se activa, indica que hay llama (fuego) cuando no debe haberla (quemador apagado) , pasa al estado de alarma  3
RB3 si se activa, indica que se activó S1 y se debe pasar al lazo de encender (2)

2)Lazo de encender
El interruptor ST1 energizó los circuitos de la placa de potencia y quedan bajo el control del PIC.
RA3 activa RL1 habilitando la salida de gas
RA2 activa RL2 habilitando el encendido de chispa
Se dispara un timer de 5 Segundos
El PIC monitorea sus entradas RB0, RB1, RB2 Y RB3 durante el timer.
RB0 si se activa, indica que hay detección de gas en el aire, se pasa al estado de alarma 1
RB1 si se activa, indica que hay llama (el quemador se encendió)
RB2 si se activa, indica que hay llama (el quemador se encendió)
Solo si ambas RB1 y RB2 se activan (detección redundante) se pasa al lazo de encendido (3)
RB3 si se desactiva, indica que se desactivó S1, indicando que se desactivó ST1 (o hubo un eventual corte de energía)
y se debe pasar al lazo de reposo (1)
Si el timer de 5 Segundos finaliza y no se activa RB1 (no se detecta el encendido del quemador), se pasa al estado de alarma 4
Si el timer de 5 Segundos finaliza y no se activa RB2 (no se detecta el encendido del quemador), se pasa al estado de alarma 5


3)Lazo de encendido
El lazo será indicado con color VERDE en el Led de estado
El interruptor ST1 continua energizando los circuitos de la placa de potencia que están bajo el control del PIC.
RA3 continua activando RL1 habilitando la salida de gas
RA2 desactiva RL2 cortando el encendido de chispa, ya que se detecta el quemador ya encendido
El PIC monitorea sus entradas RB0, RB1, RB2 Y RB3
RB0 si se activa, indica detección de gas en el aire, se pasa al estado de alarma 1
RB1 si se desactiva, indica que la llama se apagó, se pasa al estado de alarma 6
RB2 si se desactiva, indica que la llama se apagó, se pasa al estado de alarma 7
RB3 si se desactiva, indica que se desactivó S1, indicando que se desactivó ST1, lo cual indica que la temperatura deseada se alcanzó,
entonces se desactiva RA0 cortando la salida de gas y se debe pasar al lazo de reposo (1)

Estados de alarma:
En cualquier estado de alarma, se desactivan RA3 y RA1 cortando gas y encendido electrónico.
El PIC solo sale del estado de alarma con un Reset.
Cada estado de alarma estará indicado por un tono de buzzer y un patrón de colores en el LED de estado y alarma, según:
Alarma 1: Se detecta presencia de gas sin quemar en el ambiente, el LED de alarma parpadea en ROJO, VERDE y AZUL
Alarmas 2y3: Se detecta presencia de llama en Reposo, estados muy improbables, se indican con parpadeo BLANCO
Alarma 4: No se detecta el encendido del quemador en RB1 luego de los 5 segundos del timer de encendido, se indica con parpadeo ROJO
Alarma 5: No se detecta el encendido del quemador en RB2 luego de los 5 segundos del timer de encendido, se indica con parpadeo VERDE 
Alarma 6: No se detecta el quemador encendido en RB1 durante el lazo de encendido (el quemador se apagó), se indica con parpadeo AZUL, ROJO
Alarma 7: No se detecta el quemador encendido en RB2 durante el lazo de encendido (el quemador se apagó), se indica con parpadeo AZUL, VERDE
Cada detector de presencia de llama tiene un patrón de alarma distinto a fin de identificarlo y prever posibles fallas.

Continuamos luego. Saludos
« Última modificación: 12 de Junio de 2022, 23:14:08 por Jorge Bern »

"Voyager 1, llevando el microcontrolador activo que más se alejó de sus programadores"

Desconectado Jorge Bern

  • PIC10
  • *
  • Mensajes: 46
    • Mis Proyectos de Electrónica Aplicada
Re:Actualización de control de caldera de calefacción con PIC
« Respuesta #10 en: 15 de Junio de 2022, 20:14:49 »
Placa prototipo de potencia y control

El "engendro" que estoy experimentando de la placa de potencia y placa de control es el siguiente:

 

* caldera3.jpg
(171.22 kB, 958x566 - visto 713 veces)


Aquí como se ve he reunido tres placas, dos son recortadas y modificadas de la placa original ya vista arriba (color claro),  que contienen los circuitos P1, P2 y P3 de la placa de potencia, y la tercera es la placa de control con el PIC (color azul).
Por supuesto es un prototipo para ajustar el funcionamiento del hardware y el firmware de control, para luego diseñar y poner en marcha la placa definitiva que reunirá toda la circuitería necesaria.
El sensor de gas MQ4 allí no está conectado y está reemplazado por un puente (rojo)
Los dos sensores infrarrojos de llama están conectados como se muestra y luego se indican todos los componentes principales y su conexión

Aquí un video de las primeras pruebas, de como opera el encendido del quemador y los detectores infrarrojos de llama.


El video arranca con el PIC en el estado de REPOSO (luz AZUL del Led de estado) con el quemador apagado y en los dos sensores de llama se ve sólo su Led VERDE de alimentación. 
En el segundo 04/05, el ajuste de temperatura ST1 se activa indicando que hay que encender el quemador.
Entonces se activa la señal S1 y el PIC pasa el estado ENCENDER, activando ambos RL1 (salida de gas) y RL2 (encendido electrónico). Nótese que un par de segundos después los sensores de llama encienden el segundo Led VERDE de presencia de llama, el PIC los detecta y corta el encendido de chispa (el cual ingresa por el electrodo cerámico de la izquierda y puede oírse actuando en el video) y mantiene la salida de gas activada.
El PIC pasa entonces al estado ENCENDIDO (luz VERDE del Led de estado) , manteniendo el quemador encendido hasta que la temperatura deseada se alcanza, ST1 desactiva y el PIC vuelve al estado de REPOSO, lo que ocurre en el segundo 16 del video.

Como ya se dijo, en el caso que alguno de los sensores de llama no detecte la llama de encendido a los 5 segundos, el PIC desactiva tanto encendido como salida gas y entrará en alarma indicando el estado con Buzzer y Led RGB.

Continuaremos viendo mas detalles. Saludos

« Última modificación: 15 de Junio de 2022, 21:37:43 por Jorge Bern »

"Voyager 1, llevando el microcontrolador activo que más se alejó de sus programadores"

Desconectado Jorge Bern

  • PIC10
  • *
  • Mensajes: 46
    • Mis Proyectos de Electrónica Aplicada
Re:Actualización de control de caldera de calefacción con PIC
« Respuesta #11 en: 01 de Julio de 2022, 19:18:41 »
Primera versión del código de control

Aquí les dejo la primera versión del código del PIC que estoy ensayando
 y deberé ajustar para funcionamiento óptimo en la plaqueta definitiva.
Para el desarrollo de la placa e instalación definitiva tardarè un tiempo, pues ahora por aquí es invierno y mantendrè la caldera funcionando y sin tocar con el hardware y código provisorio.


Código: [Seleccionar]
;                            MAIN BEGIN
;
;-----------------------------------------------------------------------------------------
list      p=16f628           ; list directive to define processor
#include <p16f628.inc>        ; processor specific variable definitions


;DEFINE OSCILADOR INTERNO DE 4 MHZ Y MCLR
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _INTRC_OSC_NOCLKOUT & _MCLRE_ON & _LVP_OFF

;------------------------------------------------------------------------------
;***************  MAIN  *******************************************************
;------------------------------------------------------------------------------

;Definicion de las puertas:
;               ;
LRA0 EQU 0X00   ;Led ROJO activo BAJO
RRA1 EQU 0X01   ;Led indicador en plaqueta ROJO activo BAJO
LLA2 EQU 0X02   ;Activaciòn RL1 LLAVE HONEYWEEL activo ALTO
EEA3 EQU 0X03   ;Activación RL2 ENCENDIDO ELECTRONICO activo ALTO
XXA4 EQU 0X04   ;XX
XXA5 EQU 0X05   ;Reset/Pgrm
LVA6 EQU 0X06   ;Led VERDE activo BAJO
LAA7 EQU 0X07   ;Led AZUL activo BAJO

GGB0 EQU 0X00   ;Entrada SENSOR GAS . activa BAJA
L1B1 EQU 0X01   ;Entrada detector de llama LL1. activa BAJA
L2B2 EQU 0X02   ;Entrada detector de llama LL2, activa BAJA
TTB3 EQU 0X03   ;Entrada Temperatura deseada S1 activado, activa ALTA
XXB4 EQU 0X04   ;XX
XXB5 EQU 0X05   ;XX
XXB6 EQU 0X06   ;PGD
XXB7 EQU 0X07   ;PGC

;Contadores usados para retardos

COUNT0  EQU 0X70  ;Contadores
COUNT1  EQU 0X71  ;para
COUNT2  EQU 0X72  ;retardo
ENCONN  EQU 0X73  ;Timer de espera de encendido Quemador
 
;-------------------------------------------------------------------------------

ORG     0x0000            ; processor reset vector
goto    main              ; go to beginning of program


main ;
clrf INTCON ; deshabilita interrupciones, apaga flags
;
bsf STATUS,RP0 ;banco 1
movlw 0x00 ;byte de config
;;; movwf OPTION_REG

bcf STATUS,RP0 ;banco 0

;--------------------------------------------------------------------------
bcf STATUS,RP1 ;apuntar al banco 0
bcf STATUS,RP0

;inicializar salidas antes de cambiar banco (todas a uno)
movlw b'11111111'   ; b'00000000' ;
movwf PORTA         ;
movwf PORTB         ;

movlw 0x07          ;turn off comparators and enable pins for I/O functions
movwf CMCON

bcf STATUS,RP1 ; apuntar al banco 1
bsf STATUS,RP0 ; donde esta los TRISA Y TRISB
;
movlw 0X00          ; A7 A6 A5 A4 A3 A2 A1 A0       
movwf TRISA         ; -- -- -- -- -- -- -- --        0 indica buffer de salida conectado
                    ;  0  0  0  0  0  0  0  0        1 indica buffer de salida desconectado
;                                                            pero la entrada siempre esta y es impuesta por el
;                                                            nivel en el pin correspondiente
movlw 0x0F    ;0XC0 ; B7 B6 B5 B4 B3 B2 B1 B0         
movwf TRISB         ; -- -- -- -- -- -- -- --         las patas que no uso las pongo salidas para que no bailen                               
                            ;  0  0  0  0  1  1  1  1        ;     
                            ;  0  0  0  0  0  0  0  0        ;TODAS salidas
                                     ;
  ;;;  bcf OPTION_REG, RBPU ;Activar el Pull-Up del port B                   


    bcf STATUS,RP1 ; apuntar al banco 0
    bcf STATUS,RP0 ; donde estaN los PORTA Y PORTB

                                ;las salidas quedan todas en UNO
main0 ;main continua

;acerar contadores
clrf COUNT0
clrf COUNT1
clrf COUNT2

clrf PORTA  ;notar el pequeño parpadeo desde el reset en los leds RGB
clrf PORTB
   
;Apagar Leds
;-------------------------------------------------------------------------------
;-------------------------------

init
;apagar todo
call apa_all
; secuencia de colores de encendido ROJO, VERDE Y AZUL
call ret02
bcf PORTA,RRA1 ;encender Led ROJO plaqueta
bcf PORTA,LAA7 ;encender led AZUL
call ret02 ;mandar un retardo
call apa_all

bcf PORTA,RRA1 ;encender Led ROJO plaqueta
bcf PORTA,LVA6 ;encender led VERDE
call ret02 ;mandar un retardo
call apa_all

bcf PORTA,RRA1 ;encender Led ROJO plaqueta
bcf PORTA,LRA0 ;encender led ROJO
call ret02 ;mandar un retardo
call apa_all
call ret02

laz_rep ;lazo en reposo
;1) Lazo de monitoria en reposo  LUZ AZUL DE FRIO
; El quemador esta apagado, no hay solicitud de encendido por Temp.
; se monitorea la presencia de gas y llamas, si hay alguno se pone en alarma
; si esta todo OK se monitorea la solicitud de encendido
;
btfss PORTB,GGB0 ;Entrada SENSOR GAS . activa BAJA
goto si_gas  ;hay GAS detectado, alarmar !!!!!!!
btfss PORTB,L1B1 ;Entrada detector de llama LL1. activa BAJA
goto si_ll1 ;hay llama detectada en reposo, alarmar!!!!
btfss PORTB,L2B2 ;Entrada detector de llama LL2, activa BAJA
goto si_ll2 ;hay llama detectada en reposo, alarmar!!!
btfsc PORTB,TTB3 ;Entrada Temperatura deseada activado, activa ALTA
goto si_ton; Temp ON , hay que encender el quemador!!!
;no paso nada, se continua en reposo
bcf PORTA,LAA7 ;mantener Led AZUL
call ret07 ;mandar un retardo
;sensar segunda vez (son dos veces por si queres pardear)
btfss PORTB,GGB0 ;Entrada SENSOR GAS . activa BAJA
goto si_gas  ;hay GAS detectado, alarmar !!!!!!!
btfss PORTB,L1B1 ;Entrada detector de llama LL1. activa BAJA
goto si_ll1 ;hay llama detectada en reposo, alarmar!!!!
btfss PORTB,L2B2 ;Entrada detector de llama LL2, activa BAJA
goto si_ll2 ;hah llama detectada en reposo, alarmar!!!
btfsc PORTB,TTB3 ;Entrada Temperatura deseada activado, activa ALTA
goto si_ton; hay que encender !!!
;no paso nada, se continua en reposo
; bsf PORTA,LAA7 ;pequeño papadeo indicador
; call ret03
bcf PORTA,LAA7 ;mantener led AZUL
call ret07
goto laz_rep ;seguir en el lazo Scaneo de reposo

;-------------------------------
;2) Encendido del quemador
; La solicitud de encender se activo, se debe activar la salida de gas
; y el encendedor electronico, esparar 5 seg y si no hay llama, cortar
;
si_ton ;hay que encender Temp.ON
call ret07 ;esperar un cachito
;sensar otra vez, una sensada previa antes de entrar en lazo
btfss PORTB,GGB0 ;Entrada SENSOR GAS . activa BAJA
goto si_gas  ;hay GAS detectado, alarmar !!!!!!!
btfss PORTB,L1B1 ;Entrada detector de llama LL1. activa BAJA
goto si_ll1 ;hay llama detectada en reposo, alarmar!!!!
btfss PORTB,L2B2 ;Entrada detector de llama LL2, activa BAJA
goto si_ll2 ;hay llama detectada en reposo, alarmar!!!
;todo chequeado bien, ir a encender
movlw 0x14 ; cargar un 10 para la espera de que encienda
movwf ENCONN ; cargado del timer del encendedor en ON
call apa_all ;apagar todos los leds
bcf PORTA,LVA6 ;Encender el VERDE de encendido normal
;
laz_on  ;arranque de encendido del quemador
decfsz ENCONN ;decrementar timer de espera de encendido
goto laz_enc
goto abortar ;se acabo el timer y no encendio, ir abortar
laz_enc ;lazo de detectar el quemador encendido y mantenerlo encendido
bsf PORTA,LLA2 ;Activaciòn LLAVE HONEYWEEL activo ALTO
bsf PORTA,EEA3 ;Activación ENCENDIDO ELECTRONICO activo ALTO
call ret07 ;esperar un momento
;
btfsc PORTB,L1B1 ;Entrada detector de llama LL1, activa BAJA
goto laz_on ;si no se detecto llama1 seguir en lazo
btfsc PORTB,L2B2 ;Entrada detector de llama LL2, activa BAJA
goto laz_on ;si no se detecto llama2 seguir en lazo
;se detectaron ambas llamas, pues entonces encendiò
;
;3) Lazo de mantener el quemador encendido
laz_man
call ret07 ;esperar
bsf PORTA,LLA2 ;Activaciòn LLAVE HONEYWEEL activo ALTO
bcf PORTA,EEA3 ;DESACTIVACION ENC. ELECTRONICO activo ALTO
bcf PORTA,LVA6 ;encender Led VERDE indicador de encendido fijo
;igualmente el led del rele HONEYWELL estara encendido tambien
;seguir sensando
btfss PORTB,GGB0 ;Entrada SENSOR GAS . activa BAJA
goto si_gas  ;hay GAS detectado, alarmar !!!!!!!
btfsc PORTB,L1B1 ;Entrada detector de llama LL1. activa BAJA
goto no_ll1 ;NO hay llama detectada en ENCENDIDO, alarmar!!!!
btfsc PORTB,L2B2 ;Entrada detector de llama LL2, activa BAJA
goto no_ll2 ;NO hay llama detectada en ENCENDIDO, alarmar!!!
btfsc PORTB,TTB3 ;Entrada Temperatura deseada Activado, activa ALTA
goto laz_man; hay que mantener encendido

;4) Se alcanzo la temperatura deseada, apagar quemador
;en realidad la llave HoneyWell y por ende el quemador se desactivó con la apertura
;del seteo ST1 perilla de encendido, ergo la entrada de Temp deseada se desactivo
laz_apa ;Apagar el quemador
call ret07 ;esperar
bcf PORTA,LLA2 ;DES_Activaciòn LLAVE HONEYWEEL activo ALTO
bcf PORTA,EEA3 ;DES_Activación ENCENDIDO ELECTRONICO activo ALTO
bsf PORTA,LVA6 ;apagar Led VERDE indicador de encendido fijo
;igualmente el led del rele estara apagado tambien
bcf PORTA,LAA7 ;ENCENDER Led AZUL
call ret07
; call ret07
; call ret02
goto laz_rep ;volver al lazo de reposo

;---------------------
;5)Procedimientos de alarmas
        ;el seteo de temp que entra por trafo y doblador de tension
;se retarda y los detectores de fuego
;actuan primero, parpadean y salta la alarma apagando
;Entonces hay tres instancias de deteccion antes de decidir apagar
;
;primer instancia de deteccion
no_ll1 ;NO hay llama detectada en ENCENDIDO, ir a alarmar!!!
no_ll2 ;NO hay llama detectada en ENCENDIDO, ir a alarmar!!!
call ret02 ;retardar un poco
btfsc PORTB,L1B1 ;Entrada detector de llama LL1. activa BAJA
goto no_ll3 ;NO hay llama detectada con el quemador supuestamente encendido
btfsc PORTB,L2B2 ;Entrada detector de llama LL2, activa BAJA
goto no_ll4 ;NO hay llama detectada con el quemador supuestamente encendido
goto laz_apa; ambos detectores detectan llama, ir a mantener encendido
;segunda instancia de deteccion
no_ll3 ;NO hay llama detectada en ENCENDIDO, ir a alarmar!!!
no_ll4 ;NO hay llama detectada en ENCENDIDO, ir a alarmar!!!
call ret02 ;retardar un poco
btfsc PORTB,L1B1 ;Entrada detector de llama LL1. activa BAJA
goto no_ll5 ;NO hay llama detectada con el quemador supuestamente encendido
btfsc PORTB,L2B2 ;Entrada detector de llama LL2, activa BAJA
goto no_ll6 ;NO hay llama detectada con el quemador supuestamente encendido
goto laz_apa; ambos detectores detectan llama, ir a mantener encendido
;terceraa instancia de deteccion
no_ll5 ;NO hay llama detectada en ENCENDIDO, ir a alarmar!!!
no_ll6 ;NO hay llama detectada en ENCENDIDO, ir a alarmar!!!
call ret02 ;retardar un poco
btfsc PORTB,L1B1 ;Entrada detector de llama LL1. activa BAJA
goto no_ll7 ;NO hay llama detectada con el quemador supuestamente encendido
btfsc PORTB,L2B2 ;Entrada detector de llama LL2, activa BAJA
goto no_ll8 ;NO hay llama detectada con el quemador supuestamente encendido
goto laz_apa; ambos detectores detectan llama, ir a mantener encendido

;----------------------------------------
;PROCESO DE ALARMAS , solo el reset sale de estos lazos
no_ll7 ;el LL1 sigue sin detectar llama en Quemador Encendido despues de 3 instancias
    ;lazo de indicacion de que el LL1 no detecta Llama, parpadear ROJO y VERDE
bcf PORTA,LLA2 ;DES_Activaciòn LLAVE HONEYWEEL activo ALTO
bcf PORTA,EEA3 ;DES_Activación ENCENDIDO ELECTRONICO activo ALTO
bcf PORTA,RRA1 ;encender Led ROJO plaqueta
bcf PORTA,LRA0 ;encender Led ROJO activo BAJO
bsf PORTA,LVA6 ;apagar Led VERDE activo BAJO
call ret02
bcf PORTA,LLA2 ;DES_Activaciòn LLAVE HONEYWEEL activo ALTO
bcf PORTA,EEA3 ;DES_Activación ENCENDIDO ELECTRONICO activo ALTO
bsf PORTA,RRA1 ;apagar Led ROJO plaqueta
bsf PORTA,LRA0 ;apagar Led ROJO activo BAJO
bcf PORTA,LVA6 ;encender Led VERDE activo BAJO
call ret02
goto no_ll7  ;hasta que no haya reset no sale de aca

no_ll8 ;el LL2 sigue sin detectar llama en Quemador Encendido despues de 3 instancias
    ;lazo de indicacion de que el LL2 no detecta Llama, parpadear ROJO y AZUL
bcf PORTA,LLA2 ;DES_Activaciòn LLAVE HONEYWEEL activo ALTO
bcf PORTA,EEA3 ;DES_Activación ENCENDIDO ELECTRONICO activo ALTO
bcf PORTA,RRA1 ;encender Led ROJO plaqueta
bcf PORTA,LRA0 ;encender Led ROJO activo BAJO
bsf PORTA,LAA7 ;apagar Led AZUL activo BAJO
call ret02
bcf PORTA,LLA2 ;DES_Activaciòn LLAVE HONEYWEEL activo ALTO
bcf PORTA,EEA3 ;DES_Activación ENCENDIDO ELECTRONICO activo ALTO
bsf PORTA,RRA1 ;apagar Led ROJO plaqueta
bsf PORTA,LRA0 ;apagar Led ROJO activo BAJO
bcf PORTA,LAA7 ;encender Led AZUL activo BAJO
call ret02
goto no_ll8  ;hasta que no haya reset no sale de aca
;
si_gas  ;hay GAS detectado, alarmar !!!!!!!
        ;se detecto gas sin quemar, el detector MQ3 se disparò
    ;lazo de indicacion de que el MQ3 esta activo, parpadear BLANCO
bcf PORTA,LLA2 ;DES_Activaciòn LLAVE HONEYWEEL activo ALTO
bcf PORTA,EEA3 ;DES_Activación ENCENDIDO ELECTRONICO activo ALTO
bcf PORTA,RRA1 ;encender Led ROJO plaqueta
bcf PORTA,LRA0 ;encender Led ROJO activo BAJO
bcf PORTA,LAA7 ;encender Led AZUL activo BAJO
bcf PORTA,LVA6 ;encender Led VERDE activo BAJO
call ret02
bcf PORTA,LLA2 ;DES_Activaciòn LLAVE HONEYWEEL activo ALTO
bcf PORTA,EEA3 ;DES_Activación ENCENDIDO ELECTRONICO activo ALTO
bsf PORTA,RRA1 ;apagar Led ROJO plaqueta
bsf PORTA,LRA0 ;apagar Led ROJO activo BAJO
bsf PORTA,LAA7 ;apagar Led AZUL activo BAJO
bsf PORTA,LVA6 ;apagar Led VERDE activo BAJO
call ret02
goto si_gas  ;hasta que no haya reset no sale de aca


si_ll1 ;hay llama detectada en reposo, alarmar!!!!
;el LL1 detecta llama en reposo, o sea que no debe haber llama
;parpadear solo el ROJO
bcf PORTA,LLA2 ;DES_Activaciòn LLAVE HONEYWEEL activo ALTO
bcf PORTA,EEA3 ;DES_Activación ENCENDIDO ELECTRONICO activo ALTO
bcf PORTA,RRA1 ;encender Led ROJO plaqueta
bcf PORTA,LRA0 ;encender Led ROJO activo BAJO
; bcf PORTA,LAA7 ;encender Led AZUL activo BAJO
; bcf PORTA,LVA6 ;encender Led VERDE activo BAJO
call ret02
bcf PORTA,LLA2 ;DES_Activaciòn LLAVE HONEYWEEL activo ALTO
bcf PORTA,EEA3 ;DES_Activación ENCENDIDO ELECTRONICO activo ALTO
bsf PORTA,RRA1 ;apagar Led ROJO plaqueta
bsf PORTA,LRA0 ;apagar Led ROJO activo BAJO
bsf PORTA,LAA7 ;apagar Led AZUL activo BAJO
bsf PORTA,LVA6 ;apagar Led VERDE activo BAJO
call ret02
goto si_ll1  ;hasta que no haya reset no sale de aca

si_ll2 ;hay llama detectada en reposo, alarmar!!!!
;el LL2 detecta llama en reposo, o sea que no debe haber llama
;parpadear solo el VERDE
bcf PORTA,LLA2 ;DES_Activaciòn LLAVE HONEYWEEL activo ALTO
bcf PORTA,EEA3 ;DES_Activación ENCENDIDO ELECTRONICO activo ALTO
bcf PORTA,RRA1 ;encender Led ROJO plaqueta
; bcf PORTA,LRA0 ;encender Led ROJO activo BAJO
; bcf PORTA,LAA7 ;encender Led AZUL activo BAJO
bcf PORTA,LVA6 ;encender Led VERDE activo BAJO
call ret02
bcf PORTA,LLA2 ;DES_Activaciòn LLAVE HONEYWEEL activo ALTO
bcf PORTA,EEA3 ;DES_Activación ENCENDIDO ELECTRONICO activo ALTO
bsf PORTA,RRA1 ;apagar Led ROJO plaqueta
bsf PORTA,LRA0 ;apagar Led ROJO activo BAJO
bsf PORTA,LAA7 ;apagar Led AZUL activo BAJO
bsf PORTA,LVA6 ;apagar Led VERDE activo BAJO
call ret02
goto si_ll2  ;hasta que no haya reset no sale de aca

abortar  ;se acabo el timer de encendido y no encendio !!!
;parpadear solo el AZUL
bcf PORTA,LLA2 ;DES_Activaciòn LLAVE HONEYWEEL activo ALTO
bcf PORTA,EEA3 ;DES_Activación ENCENDIDO ELECTRONICO activo ALTO
bcf PORTA,RRA1 ;encender Led ROJO plaqueta
; bcf PORTA,LRA0 ;encender Led ROJO activo BAJO
bcf PORTA,LAA7 ;encender Led AZUL activo BAJO
; bcf PORTA,LVA6 ;encender Led VERDE activo BAJO
call ret02
bcf PORTA,LLA2 ;DES_Activaciòn LLAVE HONEYWEEL activo ALTO
bcf PORTA,EEA3 ;DES_Activación ENCENDIDO ELECTRONICO activo ALTO
bsf PORTA,RRA1 ;apagar Led ROJO plaqueta
bsf PORTA,LRA0 ;apagar Led ROJO activo BAJO
bsf PORTA,LAA7 ;apagar Led AZUL activo BAJO
bsf PORTA,LVA6 ;apagar Led VERDE activo BAJO
call ret02
goto abortar  ;hasta que no haya reset no sale de aca




;-----------------------------------------------------------------
;-----------------------------------------------------------------
;-----------------------------------------------------------------


;---------------------------------------------------------------
;----------------------------------------------------
;---------  RUTINAS DE RETARDO ----------------------
;----------------------------------------------------
 


Continuaremos cuando estè listo el proyecto definitivo. Saludos
« Última modificación: 01 de Julio de 2022, 19:21:50 por Jorge Bern »

"Voyager 1, llevando el microcontrolador activo que más se alejó de sus programadores"