No conozco el sensor ese ya que hace mucho que trato en lo posible de no trabajar con sensores analógicos habiendo digitales para evitar un montón de problemas que surgen de la comunicación, ruidos, etc.
Sí el problema es de estabilidad, te sugiero que hagas varias mediciones en un determinado tiempo y luego promedies el resultado para mostrarlo siempre que el valor halla cambiado.
También puede ser debido a ruido que se "cuele" durante la medición debido a la longitud entre sensor-microcontrolador y un sinnúmero de etc que no nos comentas.
No es lo mismo algo armado en un PCB diseñado bien y con el uso de cables apantallados para evitar interferencias que un prototipo armado en un protoboard con cables largos y sin blindaje, etc.
Como implementaste el programa siempre mides y muestras, lo que te estoy sugiriendo es que almacenes el valor anterior en una variable y antes de mostrar el valor actual lo compares y solo lo muestras si es diferente al anterior, de esa forma es mas estable todo y mas rápido ya que si no hubo variación no pierdes el tiempo mostrando algo que ya esta en el display.
Buenas noches, saludos.
Acudo a este foro con la finalidad de interactuar con ustedes y lograr superar un inconveniente con un pic y su programa, el cual paso a describir así.
Tengo un calentador de agua a gas, al cual, se le dañó (quemó) la tarjeta de control.
Menciono que esta tarjeta quemada posee como elemento de control un PIC12C509.
Yo analicé el funcionamiento del aparato y diseñé un código en microcode pero basado en el PIC16F84A y funciona sin problema en la simulación de proteus.
El inconveniente se presenta por el tamaño de la tarjeta con el PIC16F84A, que no cabe en el espacio destinado en el calentador, sin menoscabar que sobran pines sin uso.
A partir de ahí, decido pasar previas modificaciones a un pic enano, el PIC12F629, dado a sus bondades, el proyecto necesita solo tres entradas y tres salidas y este pic me ofrece eso.
Ya realizado el cambio o modificaciones al programa del PIC16F84A para compilarlo para el PIC12F629 no logro que funcione y el defecto está en los fuses de ese PIC.
Una de las fallas o error que presenta la simulación es que, no convierte el pin GP.3 en entrada y continúa siendo el pin del MCLR, tampoco se configura el oscilador interno.
Sin más, muestro el código hecho para el PIC16F84A y la simulación en proteus.
Cabe destacar que está realizado en microcode studio
Código:
'* Version : 1.0 *
'* Notes : control calentador agua con pic 16f84a *
'* : *
'****************************************************************
'pic 16F84A
define osc 4 'defino frec osc en 4mhz
trisa=%00000 'configuro puerto A como salidas
trisb=%00111000 'configuro puerto RB0-RB2 salidas y RB3-RB5 entradas
portb=0 'inicializo las salidas a 0 logico
symbol TEMP = portb.3 'nombro el pin RB3 como TEMP
symbol LLAMA = portb.4 'nombro el pin RB4 como LLAMA
symbol FLUJO = portb.5 'nombro el pin RB5 como FLUJO
symbol GAS = portb.0 'nombro el pin RB0 como GAS
symbol PILOT = portb.1 'nombro el pin RB1 como PILOT
symbol ALAR = portb.2 'nombro el pin RB2 como ALAR
INICIO: 'comienzo de programa
if TEMP = 0 then 'pregunto si TEMP es 0 si es cierto
goto ALARM 'salto a ALARM
endif 'fin del if
if FLUJO =1 then 'pregunto si FLUJO es 1 si es cierto
pause 200 'pausa de 200 ms
goto PRENDER 'salto a PRENDER
else 'de lo contrario
goto inicio 'salto a inicio
endif 'fin del if
PRENDER: 'subrutina PRENDER
pause 1000 'pausa de 1 seg
IF temp = 0 THEN 'pregunto si TEMP es 0 si es cierto
GOTO ALARM 'salto a ALARM
endif 'fin del if
if FLUJO =0 THEN 'pregunto si FLUJO es 0 si es cierto
GOSUB INICIO 'salto a INICIO
ENDIF 'fin del if
high GAS 'enciendo GAS
pause 500 'pausa de 500 ms
high PILOT 'enciendo PILOT
pause 500 'pausa de 500 ms
if LLAMA = 0 then 'pregunto si LLAMA es 1 si es cierto
pause 1000 'pausa de 1 seg
else 'de lo contrario
low PILOT 'apago PILOT
goto MANTENER 'salto a MANTENER
endif 'fin del if
if LLAMA = 0 then 'pregunto si LLAMA es 1 si es cierto
pause 1000 'pausa de 1 seg
goto APAGAR 'salto a APAGAR
else 'de lo contrario
low PILOT 'apago PILOT
goto MANTENER 'salto a MANTENER
endif 'fin de if
MANTENER: 'subrutina MANTENER
pause 500 'pausa de 500 ms
if TEMP = 0 then 'pregunto si TEMP es 0 si es cierto
goto ALARM 'salto a ALARM
endif 'fin de if
pause 500 'pausa de 500 ms
if LLAMA and FLUJO =1 then 'pregunta si LLAMA y FLUJO son 1 si es cierto
gosub MANTENER 'salto a MANTENER de lo contrario
goto APAGAR 'salto a APAGAR
endif 'fin del if
APAGAR: 'subrutina de APAGAR
low GAS 'apago GAS
low PILOT 'apago PILOT
pause 5000 'pausa 500 ms
goto INICIO 'salto a inicio
ALARM: 'subrutina ALARM
low gas 'apago GAS
low piloT 'apago PILOT
goto LED 'salto a LED
LED: 'subrutina LED
high ALAR 'prendo ALAR
pause 100 'pausa de 100 ms
low ALAR 'apago ALAR
pause 100 'pausa de 100 ms
if TEMP =0 then 'pregunto TEMP es 0 si es cierto
gosub LED 'regreso a LED de lo contrario
goto INICIO 'salto a inicio
endif 'fin del if
goto inicio 'ir a inicio
end 'fin del programa
Código:
'* Version : 1.0 *
'* Notes : control calentador agua con pic 16f84a *
'* : *
'****************************************************************
'pic 16F84A
define osc 4 'defino frec osc en 4mhz
trisa=%00000 'configuro puerto A como salidas
trisb=%00111000 'configuro puerto RB0-RB2 salidas y RB3-RB5 entradas
portb=0 'inicializo las salidas a 0 logico
symbol TEMP = portb.3 'nombro el pin RB3 como TEMP
symbol LLAMA = portb.4 'nombro el pin RB4 como LLAMA
symbol FLUJO = portb.5 'nombro el pin RB5 como FLUJO
symbol GAS = portb.0 'nombro el pin RB0 como GAS
symbol PILOT = portb.1 'nombro el pin RB1 como PILOT
symbol ALAR = portb.2 'nombro el pin RB2 como ALAR
INICIO: 'comienzo de programa
if TEMP = 0 then 'pregunto si TEMP es 0 si es cierto
goto ALARM 'salto a ALARM
endif 'fin del if
if FLUJO =1 then 'pregunto si FLUJO es 1 si es cierto
pause 200 'pausa de 200 ms
goto PRENDER 'salto a PRENDER
else 'de lo contrario
goto inicio 'salto a inicio
endif 'fin del if
PRENDER: 'subrutina PRENDER
pause 1000 'pausa de 1 seg
IF temp = 0 THEN 'pregunto si TEMP es 0 si es cierto
GOTO ALARM 'salto a ALARM
endif 'fin del if
if FLUJO =0 THEN 'pregunto si FLUJO es 0 si es cierto
GOSUB INICIO 'salto a INICIO
ENDIF 'fin del if
high GAS 'enciendo GAS
pause 500 'pausa de 500 ms
high PILOT 'enciendo PILOT
pause 500 'pausa de 500 ms
if LLAMA = 0 then 'pregunto si LLAMA es 1 si es cierto
pause 1000 'pausa de 1 seg
else 'de lo contrario
low PILOT 'apago PILOT
goto MANTENER 'salto a MANTENER
endif 'fin del if
if LLAMA = 0 then 'pregunto si LLAMA es 1 si es cierto
pause 1000 'pausa de 1 seg
goto APAGAR 'salto a APAGAR
else 'de lo contrario
low PILOT 'apago PILOT
goto MANTENER 'salto a MANTENER
endif 'fin de if
MANTENER: 'subrutina MANTENER
pause 500 'pausa de 500 ms
if TEMP = 0 then 'pregunto si TEMP es 0 si es cierto
goto ALARM 'salto a ALARM
endif 'fin de if
pause 500 'pausa de 500 ms
if LLAMA and FLUJO =1 then 'pregunta si LLAMA y FLUJO son 1 si es cierto
gosub MANTENER 'salto a MANTENER de lo contrario
goto APAGAR 'salto a APAGAR
endif 'fin del if
APAGAR: 'subrutina de APAGAR
low GAS 'apago GAS
low PILOT 'apago PILOT
pause 5000 'pausa 500 ms
goto INICIO 'salto a inicio
ALARM: 'subrutina ALARM
low gas 'apago GAS
low piloT 'apago PILOT
goto LED 'salto a LED
LED: 'subrutina LED
high ALAR 'prendo ALAR
pause 100 'pausa de 100 ms
low ALAR 'apago ALAR
pause 100 'pausa de 100 ms
if TEMP =0 then 'pregunto TEMP es 0 si es cierto
gosub LED 'regreso a LED de lo contrario
goto INICIO 'salto a inicio
endif 'fin del if
goto inicio 'ir a inicio
end 'fin del programa
Mensaje automáticamente combinado:
Una breve descripción del funcionamiento del programa, al arrancar el programa, se supervisa la entrada TEMP que es un sensor de temperatura por interruptor térmico normalmente cerrado, colocando un 1 lógico en el pin RB.3, cuando es 0 lógico se activa la alarma y evita que siga prendido o que encienda el quemador, al abrir la llave (chorro, regadera) se activa el interruptor del del FLUJO de agua indicando el comienzo del trabajo de calentar, se activa la salida del GAS (electro válvula) y después de 200 ms se activa la salida de PILOT (generador de alta tención) y se enciende el quemador, luego de otra pausa se supervisa la entrada LLAMA la cual detecta que hay llama en el quemador, apagando la salida PILOT y se mantiene hasta que se cierre la llave abierta o que se apague la llama (agotarse el gas) o se elevo la temperatura max del calentador y halla activado el sensor TEMP.
Ya realizado el cambio o modificaciones al programa del PIC16F84A para compilarlo para el PIC12F629 no logro que funcione y el defecto está en los fuses de ese PIC.
Una de las fallas o error que presenta la simulación es que, no convierte el pin GP.3 en entrada y continúa siendo el pin del MCLR, tampoco se configura el oscilador interno.
Los fuses para los PIC y otros datos más, se encuentran en los archivos .inc
Por ejemplo, estos son los fuses para el PIC12F629:
Código:
; The following is an assignment of address values for all of the
; configuration registers for the purpose of table reads
_CONFIG EQU H'2007'
;----- CONFIG Options --------------------------------------------------
_FOSC_LP EQU H'3FF8' ; LP oscillator: Low power crystal on GP4/OSC2/CLKOUT and GP5/OSC1/CLKIN
_LP_OSC EQU H'3FF8' ; LP oscillator: Low power crystal on GP4/OSC2/CLKOUT and GP5/OSC1/CLKIN
_FOSC_XT EQU H'3FF9' ; XT oscillator: Crystal/resonator on GP4/OSC2/CLKOUT and GP5/OSC1/CLKIN
_XT_OSC EQU H'3FF9' ; XT oscillator: Crystal/resonator on GP4/OSC2/CLKOUT and GP5/OSC1/CLKIN
_FOSC_HS EQU H'3FFA' ; HS oscillator: High speed crystal/resonator on GP4/OSC2/CLKOUT and GP5/OSC1/CLKIN
_HS_OSC EQU H'3FFA' ; HS oscillator: High speed crystal/resonator on GP4/OSC2/CLKOUT and GP5/OSC1/CLKIN
_FOSC_EC EQU H'3FFB' ; EC: I/O function on GP4/OSC2/CLKOUT pin, CLKIN on GP5/OSC1/CLKIN
_EC_OSC EQU H'3FFB' ; EC: I/O function on GP4/OSC2/CLKOUT pin, CLKIN on GP5/OSC1/CLKIN
_FOSC_INTRCIO EQU H'3FFC' ; INTOSC oscillator: I/O function on GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN
_INTRC_OSC_NOCLKOUT EQU H'3FFC' ; INTOSC oscillator: I/O function on GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN
_FOSC_INTRCCLK EQU H'3FFD' ; INTOSC oscillator: CLKOUT function on GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN
_INTRC_OSC_CLKOUT EQU H'3FFD' ; INTOSC oscillator: CLKOUT function on GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN
_FOSC_EXTRCIO EQU H'3FFE' ; RC oscillator: I/O function on GP4/OSC2/CLKOUT pin, RC on GP5/OSC1/CLKIN
_EXTRC_OSC_NOCLKOUT EQU H'3FFE' ; RC oscillator: I/O function on GP4/OSC2/CLKOUT pin, RC on GP5/OSC1/CLKIN
_FOSC_EXTRCCLK EQU H'3FFF' ; RC oscillator: CLKOUT function on GP4/OSC2/CLKOUT pin, RC on GP5/OSC1/CLKIN
_EXTRC_OSC_CLKOUT EQU H'3FFF' ; RC oscillator: CLKOUT function on GP4/OSC2/CLKOUT pin, RC on GP5/OSC1/CLKIN
_WDTE_OFF EQU H'3FF7' ; WDT disabled
_WDT_OFF EQU H'3FF7' ; WDT disabled
_WDTE_ON EQU H'3FFF' ; WDT enabled
_WDT_ON EQU H'3FFF' ; WDT enabled
_PWRTE_ON EQU H'3FEF' ; PWRT enabled
_PWRTE_OFF EQU H'3FFF' ; PWRT disabled
_MCLRE_OFF EQU H'3FDF' ; GP3/MCLR pin function is digital I/O, MCLR internally tied to VDD
_MCLRE_ON EQU H'3FFF' ; GP3/MCLR pin function is MCLR
_BOREN_OFF EQU H'3FBF' ; BOD disabled
_BODEN_OFF EQU H'3FBF' ; BOD disabled
_BOREN_ON EQU H'3FFF' ; BOD enabled
_BODEN_ON EQU H'3FFF' ; BOD enabled
_CP_ON EQU H'3F7F' ; Program Memory code protection is enabled
_CP_OFF EQU H'3FFF' ; Program Memory code protection is disabled
_CPD_ON EQU H'3EFF' ; Data memory code protection is enabled
_CPD_OFF EQU H'3FFF' ; Data memory code protection is disabled
Y la palabra de configuración para el PIC12629 en PBPX >= 3.0, sería así:
@dafer ¿ Que programador/quemador usas ?... Lo pregunto porque muchos de ellos te permite "ajustar"/modificar la palabra de configuración. Por lo que, en vez de hacerlo en el programa, lo haces ahí. (No es lo mejor pero es otra opción que te puede sacar de apuros).
Ya que no has puesto el esquema con el PIC12f629, por las dudas, te advierto que el pin 4 (GPIO 3) no tiene resistencia de pull-up interna, ojo como usas ese pin.
Buen día foro, agradecido por la orientación darkbytes y switchxxi , la probare en la tarde y lo del pin GP.4 que funciona como MCLR siempre a menos que por los fuses se configure como entrada, y cuando les enviae al cod y el circuito con el pi12F629 ese detalle lo tome en cuenta.
mil gracias
Ser ignorante en algo, no te hace bruto a menos que nunca intentes saber mas de eso. DAFER
Buenas noches, saludos.
Acudo a este foro con la finalidad de interactuar con ustedes y lograr superar un inconveniente con un pic y su programa, el cual paso a describir así.
Tengo un calentador de agua a gas, al cual, se le dañó (quemó) la tarjeta de control.
Menciono que esta tarjeta quemada posee como elemento de control un PIC12C509.
Yo analicé el funcionamiento del aparato y diseñé un código en microcode pero basado en el PIC16F84A y funciona sin problema en la simulación de proteus.
El inconveniente se presenta por el tamaño de la tarjeta con el PIC16F84A, que no cabe en el espacio destinado en el calentador, sin menoscabar que sobran pines sin uso.
A partir de ahí, decido pasar previas modificaciones a un pic enano, el PIC12F629, dado a sus bondades, el proyecto necesita solo tres entradas y tres salidas y este pic me ofrece eso.
Ya realizado el cambio o modificaciones al programa del PIC16F84A para compilarlo para el PIC12F629 no logro que funcione y el defecto está en los fuses de ese PIC.
Una de las fallas o error que presenta la simulación es que, no convierte el pin GP.3 en entrada y continúa siendo el pin del MCLR, tampoco se configura el oscilador interno.
Sin más, muestro el código hecho para el PIC16F84A y la simulación en proteus.
Cabe destacar que está realizado en microcode studio
'* Version : 1.0 *
'* Notes : control calentador agua con pic 16f84a *
'* : *
'****************************************************************
'pic 16F84A
define osc 4 'defino frec osc en 4mhz
trisa=%00000 'configuro puerto A como salidas
trisb=%00111000 'configuro puerto RB0-RB2 salidas y RB3-RB5 entradas
portb=0 'inicializo las salidas a 0 logico
symbol TEMP = portb.3 'nombro el pin RB3 como TEMP
symbol LLAMA = portb.4 'nombro el pin RB4 como LLAMA
symbol FLUJO = portb.5 'nombro el pin RB5 como FLUJO
symbol GAS = portb.0 'nombro el pin RB0 como GAS
symbol PILOT = portb.1 'nombro el pin RB1 como PILOT
symbol ALAR = portb.2 'nombro el pin RB2 como ALAR
INICIO: 'comienzo de programa
if TEMP = 0 then 'pregunto si TEMP es 0 si es cierto
goto ALARM 'salto a ALARM
endif 'fin del if
if FLUJO =1 then 'pregunto si FLUJO es 1 si es cierto
pause 200 'pausa de 200 ms
goto PRENDER 'salto a PRENDER
else 'de lo contrario
goto inicio 'salto a inicio
endif 'fin del if
PRENDER: 'subrutina PRENDER
pause 1000 'pausa de 1 seg
IF temp = 0 THEN 'pregunto si TEMP es 0 si es cierto
GOTO ALARM 'salto a ALARM
endif 'fin del if
if FLUJO =0 THEN 'pregunto si FLUJO es 0 si es cierto
GOSUB INICIO 'salto a INICIO
ENDIF 'fin del if
high GAS 'enciendo GAS
pause 500 'pausa de 500 ms
high PILOT 'enciendo PILOT
pause 500 'pausa de 500 ms
if LLAMA = 0 then 'pregunto si LLAMA es 1 si es cierto
pause 1000 'pausa de 1 seg
else 'de lo contrario
low PILOT 'apago PILOT
goto MANTENER 'salto a MANTENER
endif 'fin del if
if LLAMA = 0 then 'pregunto si LLAMA es 1 si es cierto
pause 1000 'pausa de 1 seg
goto APAGAR 'salto a APAGAR
else 'de lo contrario
low PILOT 'apago PILOT
goto MANTENER 'salto a MANTENER
endif 'fin de if
MANTENER: 'subrutina MANTENER
pause 500 'pausa de 500 ms
if TEMP = 0 then 'pregunto si TEMP es 0 si es cierto
goto ALARM 'salto a ALARM
endif 'fin de if
pause 500 'pausa de 500 ms
if LLAMA and FLUJO =1 then 'pregunta si LLAMA y FLUJO son 1 si es cierto
gosub MANTENER 'salto a MANTENER de lo contrario
goto APAGAR 'salto a APAGAR
endif 'fin del if
APAGAR: 'subrutina de APAGAR
low GAS 'apago GAS
low PILOT 'apago PILOT
pause 5000 'pausa 500 ms
goto INICIO 'salto a inicio
ALARM: 'subrutina ALARM
low gas 'apago GAS
low piloT 'apago PILOT
goto LED 'salto a LED
LED: 'subrutina LED
high ALAR 'prendo ALAR
pause 100 'pausa de 100 ms
low ALAR 'apago ALAR
pause 100 'pausa de 100 ms
if TEMP =0 then 'pregunto TEMP es 0 si es cierto
gosub LED 'regreso a LED de lo contrario
goto INICIO 'salto a inicio
endif 'fin del if
goto inicio 'ir a inicio
end 'fin del programa
Código:
'* Version : 1.0 *
'* Notes : control calentador agua con pic 16f84a *
'* : *
'****************************************************************
'pic 16F84A
define osc 4 'defino frec osc en 4mhz
trisa=%00000 'configuro puerto A como salidas
trisb=%00111000 'configuro puerto RB0-RB2 salidas y RB3-RB5 entradas
portb=0 'inicializo las salidas a 0 logico
symbol TEMP = portb.3 'nombro el pin RB3 como TEMP
symbol LLAMA = portb.4 'nombro el pin RB4 como LLAMA
symbol FLUJO = portb.5 'nombro el pin RB5 como FLUJO
symbol GAS = portb.0 'nombro el pin RB0 como GAS
symbol PILOT = portb.1 'nombro el pin RB1 como PILOT
symbol ALAR = portb.2 'nombro el pin RB2 como ALAR
INICIO: 'comienzo de programa
if TEMP = 0 then 'pregunto si TEMP es 0 si es cierto
goto ALARM 'salto a ALARM
endif 'fin del if
if FLUJO =1 then 'pregunto si FLUJO es 1 si es cierto
pause 200 'pausa de 200 ms
goto PRENDER 'salto a PRENDER
else 'de lo contrario
goto inicio 'salto a inicio
endif 'fin del if
PRENDER: 'subrutina PRENDER
pause 1000 'pausa de 1 seg
IF temp = 0 THEN 'pregunto si TEMP es 0 si es cierto
GOTO ALARM 'salto a ALARM
endif 'fin del if
if FLUJO =0 THEN 'pregunto si FLUJO es 0 si es cierto
GOSUB INICIO 'salto a INICIO
ENDIF 'fin del if
high GAS 'enciendo GAS
pause 500 'pausa de 500 ms
high PILOT 'enciendo PILOT
pause 500 'pausa de 500 ms
if LLAMA = 0 then 'pregunto si LLAMA es 1 si es cierto
pause 1000 'pausa de 1 seg
else 'de lo contrario
low PILOT 'apago PILOT
goto MANTENER 'salto a MANTENER
endif 'fin del if
if LLAMA = 0 then 'pregunto si LLAMA es 1 si es cierto
pause 1000 'pausa de 1 seg
goto APAGAR 'salto a APAGAR
else 'de lo contrario
low PILOT 'apago PILOT
goto MANTENER 'salto a MANTENER
endif 'fin de if
MANTENER: 'subrutina MANTENER
pause 500 'pausa de 500 ms
if TEMP = 0 then 'pregunto si TEMP es 0 si es cierto
goto ALARM 'salto a ALARM
endif 'fin de if
pause 500 'pausa de 500 ms
if LLAMA and FLUJO =1 then 'pregunta si LLAMA y FLUJO son 1 si es cierto
gosub MANTENER 'salto a MANTENER de lo contrario
goto APAGAR 'salto a APAGAR
endif 'fin del if
APAGAR: 'subrutina de APAGAR
low GAS 'apago GAS
low PILOT 'apago PILOT
pause 5000 'pausa 500 ms
goto INICIO 'salto a inicio
ALARM: 'subrutina ALARM
low gas 'apago GAS
low piloT 'apago PILOT
goto LED 'salto a LED
LED: 'subrutina LED
high ALAR 'prendo ALAR
pause 100 'pausa de 100 ms
low ALAR 'apago ALAR
pause 100 'pausa de 100 ms
if TEMP =0 then 'pregunto TEMP es 0 si es cierto
gosub LED 'regreso a LED de lo contrario
goto INICIO 'salto a inicio
endif 'fin del if
goto inicio 'ir a inicio
end 'fin del programa
Mensaje automáticamente combinado:
Una breve descripción del funcionamiento del programa, al arrancar el programa, se supervisa la entrada TEMP que es un sensor de temperatura por interruptor térmico normalmente cerrado, colocando un 1 lógico en el pin RB.3, cuando es 0 lógico se activa la alarma y evita que siga prendido o que encienda el quemador, al abrir la llave (chorro, regadera) se activa el interruptor del del FLUJO de agua indicando el comienzo del trabajo de calentar, se activa la salida del GAS (electro válvula) y después de 200 ms se activa la salida de PILOT (generador de alta tención) y se enciende el quemador, luego de otra pausa se supervisa la entrada LLAMA la cual detecta que hay llama en el quemador, apagando la salida PILOT y se mantiene hasta que se cierre la llave abierta o que se apague la llama (agotarse el gas) o se elevo la temperatura max del calentador y halla activado el sensor TEMP.
Buenas noches foro, coloque la palabra de configuración y aun sin compilar, me da error, indicando que hay ERROR SINTAXIS (syntax error), sigo haciendo pruebas ye intentos, al amigo torres le comento buena opción pero no aplicable a mi proyecto con el 12F629 que carece de entradas analógicas.
Sé perseverante con tus objetivos y flexible con tus métodos.
¿ Cual sería el error que da el compilador ? ¿ Probaste tal cual como te dijo D@rkbytes ? Por lo que leí, las palabras de configuración deben estar en mayúsculas "_wdt_off" no es lo mismo que "_WDT_OFF", revisa si no viene por ahí el problema.
Ojo con esa asunción, el 12f629 sique tiene entradas análogas. No te olvides del comparador análogo que deberás apagar si es que el compilador no lo hace, no manejo ese lenguaje.
Lo más seguro es que se debe a que usas un compilador inferior a PBPX 3 y la palabra de configuración que recomendé es para esa versión de compilador o superior.
Buenas noches foro, coloque la palabra de configuración y aun sin compilar, me da error, indicando que hay ERROR SINTAXIS (syntax error), sigo haciendo pruebas ye intentos, al amigo torres le comento buena opción pero no aplicable a mi proyecto con el 12F629 que carece de entradas analógicas.
En fin; Ahi lo manoseé un poco lo que tenias; En un rato armo algo en proteus y te comento si funcionó
;@ DEVICE PIC12F629
;@ DEVICE INTRC_OSC_NOCLKOUT,PROTECT_OFF,CPD_OFF,WDT_OFF,MCLR_OFF,PWRT_ON,BOD_OFF
DEFINE OSC 4 ; Definir que se trabajará con 4MHz.
CMCON = 7 ; Comparadores analógicos OFF
TRISIO = %1111000 ; Solo GP1 como salida
symbol TEMP = GPIO.3 'nombro el pin RB3 como TEMP
symbol LLAMA = GPIO.4 'nombro el pin RB4 como LLAMA
symbol FLUJO = GPIO.5 'nombro el pin RB5 como FLUJO
symbol GAS = GPIO.0 'nombro el pin RB0 como GAS
symbol PILOT = GPIO.1 'nombro el pin RB1 como PILOT
symbol ALAR = GPIO.2 'nombro el pin RB2 como ALAR
GPIO.0 = 0 : GPIO.1 = 0 : GPIO.2 = 0
INICIO: 'comienzo de programa
if TEMP = 0 then 'pregunto si TEMP es 0 si es cierto
goto ALARM 'salto a ALARM
endif 'fin del if
if FLUJO =1 then 'pregunto si FLUJO es 1 si es cierto
pause 200 'pausa de 200 ms
goto PRENDER 'salto a PRENDER
else 'de lo contrario
goto inicio 'salto a inicio
endif 'fin del if
PRENDER: 'subrutina PRENDER
pause 1000 'pausa de 1 seg
IF temp = 0 THEN 'pregunto si TEMP es 0 si es cierto
GOTO ALARM 'salto a ALARM
endif 'fin del if
if FLUJO =0 THEN 'pregunto si FLUJO es 0 si es cierto
GOSUB INICIO 'salto a INICIO
ENDIF 'fin del if
high GAS 'enciendo GAS
pause 500 'pausa de 500 ms
high PILOT 'enciendo PILOT
pause 500 'pausa de 500 ms
if LLAMA = 0 then 'pregunto si LLAMA es 1 si es cierto
pause 1000 'pausa de 1 seg
else 'de lo contrario
low PILOT 'apago PILOT
goto MANTENER 'salto a MANTENER
endif 'fin del if
if LLAMA = 0 then 'pregunto si LLAMA es 1 si es cierto
pause 1000 'pausa de 1 seg
goto APAGAR 'salto a APAGAR
else 'de lo contrario
low PILOT 'apago PILOT
goto MANTENER 'salto a MANTENER
endif 'fin de if
MANTENER: 'subrutina MANTENER
pause 500 'pausa de 500 ms
if TEMP = 0 then 'pregunto si TEMP es 0 si es cierto
goto ALARM 'salto a ALARM
endif 'fin de if
pause 500 'pausa de 500 ms
if LLAMA and FLUJO =1 then 'pregunta si LLAMA y FLUJO son 1 si es cierto
gosub MANTENER 'salto a MANTENER de lo contrario
goto APAGAR 'salto a APAGAR
endif 'fin del if
APAGAR: 'subrutina de APAGAR
low GAS 'apago GAS
low PILOT 'apago PILOT
pause 5000 'pausa 500 ms
goto INICIO 'salto a inicio
ALARM: 'subrutina ALARM
low gas 'apago GAS
low piloT 'apago PILOT
goto LED 'salto a LED
LED: 'subrutina LED
high ALAR 'prendo ALAR
pause 100 'pausa de 100 ms
low ALAR 'apago ALAR
pause 100 'pausa de 100 ms
if TEMP =0 then 'pregunto TEMP es 0 si es cierto
gosub LED 'regreso a LED de lo contrario
goto INICIO 'salto a inicio
endif 'fin del if
goto inicio 'ir a inicio
end
Buenos días foro, lo sugerido por por switcxxi lo tome en cuenta y aun no trabaja, lo expuesto por torres de igual forma lo sometí a mi programa y aun sin funcionar, con respecto a darkbyte, actualice el pbp a versión 3.7 y si compilo pero no trabaja bien, sigo intentando haciendo pruebas, he leído y estudiado libros de pic Basic y parece mentira no sale nada acerca del uso y programa de los pic enanos
Agrego foto de mi quemador de pic atendiendo a la sugerencia de switchxxi
Miraste eh hiciste lo que dice esos dos links? Yo armé en proteus lo que creí entenderte y simule; No presté mucha atención y lo hice rápido, pero parecía funcionar. Querés que te pase el hex?
Buenas noches saludos a todos desde Perú, por favor alguien podría pasarme un link para poder instalar correctamente el programa pbp y pic basic, no logro instalarlo, espero grandemente su apoyo
Hola a todos. Paso por aquí a contarles que después de muchos años tuve que actualizar mi PC y pasar a Windows 10 No lo había actualizado pensando en la pérdida de mis programas y confirmando mis temores ahora no consigo un Microcode Studio que funcione correctamente en el windows 10 ¿Será que alguien me puede ayudar??? ¿Dónde lo podré conseguir??? ¿Existe algún otro programa que funcione así de bonito como el microcode??? Ayuda, por favor.
No lo había actualizado pensando en la pérdida de mis programas y confirmando mis temores ahora no consigo un Microcode Studio que funcione correctamente en el windows 10
Yo también lo tengo corriendo en un win10 (x64) sin problemas.
Instalé en el disco raíz "C", la carpeta de pbp como siempre, y en la carpeta "x86", instalé el microcodestudio
Hola a todos. Paso por aquí a contarles que después de muchos años tuve que actualizar mi PC y pasar a Windows 10 No lo había actualizado pensando en la pérdida de mis programas y confirmando mis temores ahora no consigo un Microcode Studio que funcione correctamente en el windows 10 ¿Será que alguien me puede ayudar??? ¿Dónde lo podré conseguir??? ¿Existe algún otro programa que funcione así de bonito como el microcode??? Ayuda, por favor.
Lo mas práctico es tener instalado Virtual Machine en tu PC o laptop con cualquier S.O., e instalar un disco virtual con W XP 32 bits, Microcode corre muy bien allí.
Saludos
Americo8888