Sturing voor toilet ventilatie

Gepost door Jeroen Vreuls op zondag 25 maart 2018 17:49

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.