Sturing voor toilet ventilatie
Software van de sturing
Er hoort ook een stukje software bij, zie hieronder.
Device 12F683 ; processor type
Xtal 4 ; Frequentie interne oscilator 4MHz
Config WDT_OFF,_ ; WatchDog Timer uit
PWRTE_ON,_ ; Power-up Timer Enable aan
MCLRE_OFF,_ ; Externe Master Reset Enable uit
INTRC_OSC_NOCLKOUT ; Interne oscilator aan
All_Digital true ; Alle poorten digitaal
Declare CCP1_Pin GPIO.2 ; PWM uitgang ventilator
Declare Adin_Res = 8 ; Resolutie 8 bits
Declare Adin_Tad = frc ; Set rc osc
Declare Adin_Stime = 50 ; Sample tijd 5
Symbol SPOELEN = GPIO.5 ; Ingang spoel sensor
Symbol START_VENTILATOR = GPIO.4 ; Ingang start/stop ventilator
Symbol FREQUENTIE = 10000 ; PWM frequentie 10KHz
Dim WAARDE_1 As Byte ; Toerental ventilator (VENTILEREN)
Dim WAARDE_2 As Byte ; Toerental ventilator (NAVENTILEREN)
Dim TELLER_1 As Dword ; Looptijd ventilator 25 Min
Dim TELLER_2 As Dword ; Na looptijd ventilator 2 Min
Dim BIT_0 As Bit ; Start bit ventilator
Dim BIT_1 As Bit ; Stop bit ventilator
Clear ; Wis geheugen
;543210 ; Hulpregel
GPIO = %000000 ; Maak poort laag
TRISIO = %111011 ; Poort I/O
;76543210 ; Hulpregel A/D control register
ADCON0 = %00000001 ; A/D control register
;-----------------------------------------------------------------
; PROGRAMMA CLO-VENT TOILET VENTILATIE SPOELSYSTEEM GEBERIT UP100.
;-----------------------------------------------------------------
;-----------------------------------------------------------------
; WAARDE VAN DE TELLERS: TELLER_1 EN TELLER_2 IS 6000 IS 1 MINUUT.
;-----------------------------------------------------------------
HPWM 1,0,FREQUENTIE
WAARDE_1 = 0
WAARDE_2 = 0
TELLER_1 = 0
TELLER_2 = 0
BIT_0 = 0
BIT_1 = 0
START:
TELLER_1 = 0
TELLER_2 = 0
WAARDE_1 = 0
WAARDE_2 = 0
HPWM 1,0,FREQUENTIE
If START_VENTILATOR = 1 Then
BIT_0 = 1
EndIf
If BIT_0 = 1 Then
If START_VENTILATOR = 0 Then
DelayMS 100
GoTo START_VENTILEREN
EndIf
EndIf
GoTo START
START_VENTILEREN:
BIT_0 = 0
TELLER_1 = TELLER_1 + 1
DelayMS 10
If TELLER_1 > 150000 Then
GoTo START
EndIf
WAARDE_1 = ADIn 0
HPWM 1,WAARDE_1,FREQUENTIE
If SPOELEN = 1 Then
GoTo STOP_VENTILEREN
EndIf
If START_VENTILATOR = 1 Then
BIT_1 = 1
EndIf
If BIT_1 = 1 Then
If START_VENTILATOR = 0 Then
DelayMS 100
GoTo VENTILEREN_AFBREKEN
EndIf
EndIf
GoTo START_VENTILEREN
STOP_VENTILEREN:
HPWM 1,0,FREQUENTIE
DelayMS 30000
GoTo NA_VENTILEREN
GoTo STOP_VENTILEREN
NA_VENTILEREN:
TELLER_2 = TELLER_2 + 1
DelayMS 10
If TELLER_2 > 12000 Then
GoTo START
EndIf
WAARDE_2 = ADIn 1
HPWM 1,WAARDE_2,FREQUENTIE
GoTo NA_VENTILEREN
VENTILEREN_AFBREKEN:
BIT_0 = 0
BIT_1 = 0
If START_VENTILATOR = 0 Then
HPWM 1,0,FREQUENTIE
DelayMS 1000
GoTo START
EndIf
GoTo VENTILEREN_AFBREKEN
End
Zoals je kunt zien in het programma is TELLER_1
de tijd voor het ventileren na een start commando, en TELLER_2
is de tijd voor het na ventileren na het indrukken van de spoelknop. Na het indrukken van de spoelknop stopt de ventilatie voor 30 seconden, en daarna start de ventilator weer op voor twee minuten nadraaitijd op een hogere snelheid.
Je kunt zien dat de waardes voor TELLER_1
en TELLER_2
6000 is voor één minuut. Iedere 10 ms wordt de teller opgehoogd, 6000 x 0,01 = 60 seconden = 1 minuut.
De waardes van WAARDE_1
en WAARDE_2
worden ingesteld via de potmeters, deze waardes bepalen het toerental van de ventilator.
Voor de rest valt er niet veel over het programma uit te leggen, bekijk het eens rustig zou ik zeggen.