Hallo allemaal, ik heb onderstaand programma (bewerkt) maar nu wil ik graag de pomp in het programma 60 sec laten draaien en daarna moet de pomp wat anders doen, wat ik ook probeer het lukt me niet..
Het gaat om de regel: DelayMS 60000 ;Pomp blijft 1 minuut lopen
pic basic code:
' **************************************
' ******** DS18B20 uitlezen !!! ********
' **************************************
Device 16F628A ;Gebruik een 16F628A type
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
Xtal = 4
All_Digital TRUE
Dim Collector As Word
Dim Zwembad As Word
Dim Decimalen As Byte
Dim Decimalen1 As Byte
;Logische constanten
Symbol Hysteresis = 75 ;150 staat voor 10 graden verschil.
Symbol Hysteresisstart = 75 ;150 staat voor 10 graden verschil.
Symbol HOOG = 1
Symbol LAAG = 0
Symbol POMPSTART = 4000
Symbol POMPSNELHEID = 20 ;mSec, aan/uit snelheid pomp.
;Poortnamen
;Symbol Relais = PORTA.4 ;Sluit een LED met 1k serie weerstand aan op deze poort
Symbol POMP = PORTA.3 ;Sluit een LED met 1k serie weerstand aan op deze poort
; 76543210
PORTA = %00000000 ;Alle PORTA uitgangen uit (laag maken)
TRISA = %11110111 ;PORTA.3 omschakelen als uitgang voor de pomp
DelayMS 500 ;LCD stabilisering
Cls ;Wis scherm en zet cursor links bovenaan
Print At 1, 1, "Zonnecollector" ;Plaats tekst op het display
Print At 2, 1, "regelaar"
DelayMS 3000
Cls ;Wis scherm en zet cursor links bovenaan
;Programma
While 1=1
OWrite PORTA.0, 1, [$CC, $44] ' Zend 'Convert' opdracht (temperatuur meten)
While ORead PORTA.0,4 = 0 : Wend ' Wacht tot conversie is voltooid...
OWrite PORTA.0, 1, [$CC, $BE] ' Zend 'Read ScratchPad' opdracht
ORead PORTA.0 , 2, [Collector.LowByte, Collector.HighByte] ;Lees temperatuur en plaats dit in de variabele
OWrite PORTA.1, 1, [$CC, $44] ' Zend 'Convert' opdracht (temperatuur meten)
While ORead PORTA.1,4 = 0 : Wend ' Wacht tot conversie is voltooid...
OWrite PORTA.1, 1, [$CC, $BE] ' Zend 'Read ScratchPad' opdracht
ORead PORTA.1 , 2, [Zwembad.LowByte, Zwembad.HighByte] ;Lees temperatuur en plaats dit in de variabele
Decimalen = 0 ' Op 0 voor de zekerheid..
Decimalen = Collector.LowByte << 4 ' Alleen de laatste 4 bits van Temperatuur zijn nodig.
Decimalen = Decimalen >> 4 ' Bits weer op de originele plaats zetten
Decimalen = Decimalen * 6.25 ' Resolutie van de DS18B20 is 0.0625 graden celcius.(aanpassen als tempratuur niet klopt)
Decimalen1 = 0 ' Op 0 voor de zekerheid..
Decimalen1 = Zwembad.LowByte << 4 ' Alleen de laatste 4 bits van Temperatuur zijn nodig.
Decimalen1 = Decimalen1 >> 4 ' Bits weer op de originele plaats zetten
Decimalen1 = Decimalen1 * 6.25 ' Resolutie van de DS18B20 is 0.0625 graden celcius. (aanpassen als tempratuur niet klopt)
Print At 1, 1, "Collector ",Dec (Collector >> 4) , ".", Dec1 Decimalen / 10, 223, "C "
' Door de laatste 4 bits van Temperatuur weg te gooien krijg je de graden Celcius.
Print At 2, 1, "Zwembad ",Dec (Zwembad >> 4) , ".", Dec1 Decimalen1 / 10, 223, "C "
' Door de laatste 4 bits van Temperatuur weg te gooien krijg je de graden Celcius.
;*** Thermostaat
If Collector < Zwembad Then ;Als Collector lager is dan Zwembad dan...
POMP = LAAG ;pomp uit
ElseIf Collector > (Zwembad + Hysteresis) Then ;anders, als Collector hoger is dan Zwembad + 10 graden dan...
DelayMS 60000 ;Pomp blijft 1 minuut lopen
Toggle POMP
DelayMS POMPSNELHEID ;Pomp aan/uit.
EndIf
;If Zwembad >= 384 Then POMP = LAAG ;stopt pomp als temp hoger is dan 23 °C of 448
;END ;Einde programma
Wend
DelayMS 300
End ;Einde programma