Buenas tardes.
Llebo algun tiempo estancado con un pequeño proyecto.
Se trata de una pequeña centralita para una caldera de gasoil.
El proyecto consiste en conseguir un "intermitente" que simularia la entrada de combustible al sistema, este tiene 5 velocidades distintas, a la vez que esta funcionando este "intermitente" un motor comandado por PWM regula sus RPM en funcion de la velocidad preestablecida.
El problema esta en incorporar el PWM para la regulacion del motor, que no consigo implementarlo.
Dejo archivo de la simulacion de proteus y su archivo PICBASIC con la programacion para ver si alguien puede echarme una mano.
Saludos y gracias.
Llebo algun tiempo estancado con un pequeño proyecto.
Se trata de una pequeña centralita para una caldera de gasoil.
El proyecto consiste en conseguir un "intermitente" que simularia la entrada de combustible al sistema, este tiene 5 velocidades distintas, a la vez que esta funcionando este "intermitente" un motor comandado por PWM regula sus RPM en funcion de la velocidad preestablecida.
El problema esta en incorporar el PWM para la regulacion del motor, que no consigo implementarlo.
Dejo archivo de la simulacion de proteus y su archivo PICBASIC con la programacion para ver si alguien puede echarme una mano.
Código:
' Variables hardware -----------------------------------------------------------
Led1 var porta.1 'Led potencia 1
Led2 var porta.0 'Led potencia 2
Led3 var portb.7 'Led potencia 3
Led4 var portb.6 'Led potencia 4
Led5 var porta.2 'Led potencia 5
Bajar var portb.4 'Pulsador bajar potencia
Subir var portb.5 'Pulsador subir potencia
Bajar_pulsado var bit 'El pulsador de bajar potencia esta pulsado
Subir_pulsado var bit 'El pulsador de subir potencia esta pulsado
Bomba var portb.1
Bujia var portb.2
Ventilador var portb.3
' Test funcionamiento-----------------------------------------------------------
high led1
high led2
high led3
high led4
high led5
high bomba
high bujia
high ventilador
pause 150
Low led1
Low led2
Low led3
Low led4
Low led5
Low bomba
Low bujia
Low ventilador
'Variables software ------------------------------------------------------------
Potencia Var byte 'Valor seleccionado de la potencia
Encendido var bit 'El proceso de encendido se ha realizado o no
Bomba_tiempo_encendida var word
Bomba_tiempo_apagada var word
Bomba_contador var word
Bomba_espera var word 'Tiempo de espera desde que se enciende la bujía hasta
'que empieza a dar pulsos la bomba
Bomba_habilitada var bit 'La bomba está habilitada o no
Bujia_contador var word
Bujia_contador_maximo var word 'Tiempo de encendido de la bujía
Ventilador_apagado var word 'Tiempo funcionando al apagar el sistema
'Inicialización de variables ---------------------------------------------------
Potencia=0
encendido=0
bajar_pulsado=0
subir_pulsado=0
bujia_contador=0 'Contador de tiempo de encendido de la bujía
bomba_tiempo_apagada=0
bomba_contador=0
bomba_habilitada=0 'Bomba deshabilitada
'*******************************************************************************
'Variables para el comportamiento del sistema
'*******************************************************************************
bomba_tiempo_encendida=3 'Tiempo que la bomba estará inyectando combustible
bomba_espera=50 'Tiempo de espera desde que se enciende la bujía hasta
'que empieza a dar pulsos la bomba
Bujia_contador_maximo=100 'Tiempo de encendido de la bujía
ventilador_apagado=1000 'Tiempo funcionando al apagar el sistema
'Ir al bloque leds para configurar los tiempos de bomba apagada en cada nivel de
'potencia
'*******************************************************************************
' Timer ------------------------------------------------------------------------
OPTION_REG = $05 ; prescaler = 64
INTCON = $A0
on interrupt goto p1
'Inicio del programa -----------------------------------------------------------
programa:
'-------------------------------------------------------------------------------
' CONTROL DE LOS PULSADORES
' Monitoriza si se accionan los botones de potencia y almacena el nivel de
' potencia deseado en la variable Potencia
'-------------------------------------------------------------------------------
if subir=0 then
subir_pulsado=1
endif
if subir=1 and subir_pulsado=1 then 'Si se ha soltado el pulsador
if potencia<5 then potencia=potencia+1
subir_pulsado=0
endif
if bajar=0 then
bajar_pulsado=1
endif
if bajar=1 and bajar_pulsado=1 then 'Si se ha soltado el pulsador
if potencia>0 then potencia=potencia-1
bajar_pulsado=0
endif
'-------------------------------------------------------------------------------
' LEDS
' Encendido y apagado de los leds en funcion de la potencia seleccionada
'-------------------------------------------------------------------------------
if potencia=>1 then
high led1
bomba_tiempo_apagada=25
else
low led1
endif
if potencia=>2 then
high led2
bomba_tiempo_apagada=19
else
low led2
endif
if potencia=>3 then
high led3
bomba_tiempo_apagada=13
else
low led3
endif
if potencia=>4 then
high led4
bomba_tiempo_apagada=7
else
low led4
endif
if potencia=5 then
high led5
bomba_tiempo_apagada=3
else
low led5
endif
'-------------------------------------------------------------------------------
' APAGADO
' Si el sistema esta funcionando, y se establece la potencia en cero (apagado)
' desconectar todo y dejar el ventilador funcionando durante 30 segundos
'-------------------------------------------------------------------------------
if encendido=1 and potencia=0 then
low bomba 'Desconectar la bomba
low bujia 'Desconectar la bujía
encendido=0
bujia_contador=0
bomba_habilitada=0
pause ventilador_apagado 'Esperar 30 segundos
low ventilador 'Desconectar el ventilador
endif
goto programa
'-------------------------------------------------------------------------------
' INTERRUPCIÓN
' Se produce cada milisegundo
'-------------------------------------------------------------------------------
disable
p1:
if potencia>0 then
'VENTILADOR
high ventilador 'Conectar el ventilador
'BUJIA
if encendido=0 then 'Si no se ha hecho el encendido
high bujia 'Conectar la bujia
if bujia_contador<Bujia_contador_maximo then
bujia_contador=bujia_contador + 1
endif
if bujia_contador=bomba_espera then
bomba_habilitada=1 'Habilitar que la bomba de pulsos
high bomba 'Conectar la bomba
endif
if bujia_contador=Bujia_contador_maximo then
low bujia 'Apagar la bujia
encendido=1 'El encendido se ha realizado
endif
endif
'BOMBA
if bomba_habilitada=1 then
bomba_contador=bomba_contador + 1
if bomba=1 then 'Si la bomba esta encendida
if bomba_contador=>bomba_tiempo_encendida then
low bomba
bomba_contador=0
endif
else 'Si la bomba está apagada
if bomba_contador=>bomba_tiempo_apagada then
high bomba
bomba_contador=0
endif
endif
endif
INTCON.2 = 0 'rehabilita interrupciones del TRMO
endif
resume
enable
end
Saludos y gracias.
Adjuntos
Última edición: