Ik ben de afgelopen dagen druk bezig geweest om de programma's werkend te krijgen maar ik krijg het maar niet voor elkaar.
Nog even kort wat het moet doen in de volgende volgorde:
1: temperatuur meten van 2 ds18B20 sensoren (1 = collector en ander = zwembad)
2: meet het verschil tussen collector en zwembad
3: als het verschil van collector 10 graden hoger is dan zwembad dan..
4: LED 1 minuut laten branden, daarna
5: LED knipperen
6: als het verschil tussen zwembad en collector weer gelijk is dan
7: pomp uit
Wat de reden ook mag zijn, de LED gaat branden bij (regel 3??) als het verschil weer lager word dat moet niet want de LED moet gewoon blijven knipperen totdat temperatuur van beide sensoren gelijk zijn.
Hieronder het programma wat ik zelf gedeeltelijk heb gemaakt en wat hetzelfde doet als de voorbeelden.
pic basic code:
Device 16F628A
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
Dim PompFunctie As Byte
Symbol Hysteresis = 75
Symbol HOOG = 1
Symbol LAAG = 0
Symbol POMPSNELHEID = 30
Symbol POMP = PORTA.3
DelayMS 500
Cls
Print At 1, 1, "Zonnecollector"
Print At 2, 1, "regelaar"
DelayMS 3000
Cls
High POMP
DelayMS 3000
Low POMP
While 1 = 1
OWrite PORTA.0, 1, [$CC, $44]
While ORead PORTA.0,4 = 0 : Wend
OWrite PORTA.0, 1, [$CC, $BE]
ORead PORTA.0 , 2, [Collector.LowByte, Collector.HighByte]
OWrite PORTA.1, 1, [$CC, $44]
While ORead PORTA.1,4 = 0 : Wend
OWrite PORTA.1, 1, [$CC, $BE]
ORead PORTA.1 , 2, [Zwembad.LowByte, Zwembad.HighByte]
Decimalen = 0
Decimalen = Collector.LowByte << 4
Decimalen = Decimalen >> 4
Decimalen = Decimalen * 6.25
Decimalen1 = 0
Decimalen1 = Zwembad.LowByte << 4
Decimalen1 = Decimalen1 >> 4
Decimalen1 = Decimalen1 * 6.25
Print At 1, 1, "Collector ",Dec (Collector >> 4) , ".", Dec1 Decimalen / 10, 223, "C "
Print At 2, 1, "Zwembad ",Dec (Zwembad >> 4) , ".", Dec1 Decimalen1 / 10, 223, "C "
If Collector < Zwembad Then
Low POMP
ElseIf Collector > (Zwembad + Hysteresis) Then
DelayMS 80
Toggle POMP
EndIf
Wend