Pomp aansturen werkt niet goed

benleentje

Golden Member

Onder welke voorwaarde en hoelang moet de pomp gaan knipperen.

Je hebt nog geen antwoord op mijn post gegeven. En daarom begrijp je niet wat merker moet doen.

Je moet dus gaan bedenken wanneer de pomp moet gaan knipperen, of hoelang of hoeveel keer.

Dit regel kan bv je voorwaarde zijn

pic basic code:

ElseIf Collector > (Zwembad + Hysteresis)

Is die voorwaarde voldaan dan maak je merker 1 en anders maak je merken 0. Nu kan je het stukje code van anoniem015 gebruiken om in het gaval als merker 1 is de pomp te laten knipperen.

[Bericht gewijzigd door Jeroen op woensdag 22 juli 2020 22:27:22 (1%)

Mensen zijn soms net als een gelijkrichter, ze willen graag hun gelijk hebben.

De pomp moet 1 minuut aangaan onder de voorwaarde

pic basic code:

ElseIf Collector > (Zwembad + Hysteresis) Then ;anders, als Collector hoger is dan Zwembad + 10 graden dan...

Dus als de ds1820 een hogere temp. geeft dan de andere ds1820.
Daarna moet de pomp aan/uit gaan met een vertraging van ongeveer 1 sec.
Dit moet zolang doorgaan totdat het verschil in temp. gelijk of lager is.

Anoniem

Op 27 april 2019 06:11:22 schreef Jeroennr:
De pomp moet 1 minuut aangaan onder de voorwaarde

pic basic code:

Collector > (Zwembad + Hysteresis)

Dus... en waar ga je dat nu invullen in onderstaande?

Op 23 april 2019 20:39:41 schreef anoniem015:

pic basic code:


If .... then
 Pomp   = Uit
 Merker = 0
Elseif ... then
 If Merker = 0 then
  Pomp  = Aan
  Delayms 60000
  Pomp  = Uit
  Merker = 1
 Elseif Merker = 1 then
  Toggle Pomp
  Delayms Pompsnelheid
 Endif
Endif

:O

[Bericht gewijzigd door Jeroen op woensdag 22 juli 2020 22:26:42 (1%)

Ok, dat heb ik gedaan (hoop dat ik het zo aardig goed heb..
Alleen krijg ik de volgende melding.

Anoniem

Met de foutmelding 'Toewijzing kan niet aan een Constante' heeft de compiler volkomen gelijk.
Dat zie ik aan wat er in de linker kolom van je printscreen staat :-)
Jij kan dat ook nog zien ergens bovenaan in je programma ;-)

Ik heb van alles geprobeerd maar ik loop vast..

Ik ben geen gevorderde programmeur maar een beginneling en snap de logica van de variabele "merker" ook niet.

paaltje73

Golden Member

Heel simpel en kort door de bocht, een Merker is zoals de naam suggereert een merktekentje, een vlag of hoe je het noemen wilt.
Als een soort geheugensteuntje dus. Declareer het als bit.
Zet de merker of wis hem naar jou behoefte op de plaats van een test.
Controleer zijn toestand waar nodig en onderneem een passende actie.
Hoop dat het iets helpt.
Gr. en succes.
Paaltje

Anoniem

Alle begin is moeilijk maar in dit topic:
https://www.circuitsonline.net/forum/view/77877
vertelt forumlid DE OLDE simpel wat je over een merker moet weten.

Een merker heeft de functie van een geheugenrelais.
Ergens zet je die aan, ergens zet je die uit en ergens kijk je of die aan of uit staat.
Een merker is dus een variabele (dim merker as ...) en geen constante (symbol merker = ...) zoals bij u het geval is.
Je geeft die 'geheugenrelais' de naam die volgens jouw het best past

Lees alle posts van de andere forumleden in dit topic nog eens door ;-)

Ik heb onderstaande wijziging gemaakt maar nu gaat de led (pomp) aan als de collector warmer is en schakelt naar 6000 Ms weer uit, tot hier gaat het goed maar vervolgens begint het programma weer opnieuw en gaat de led niet knipperen..
Ik zie niet wat er fout ga en wat ik ook probeer het lukt me nog steeds niet..

pic basic code:

If Collector < Zwembad Then  ;Als Collector lager is dan Zwembad dan...
     POMP = LAAG           ;pomp uit
    PompFunctie = 0
     ElseIf Collector > (Zwembad + Hysteresis) Then ;anders, als Collector hoger is dan Zwembad + 10 graden dan...
    ;If PompFunctie = 0 Then
     POMP = HOOG
    DelayMS 6000
     POMP = LAAG
    PompFunctie = 1
     ElseIf PompFunctie = 1 Then
    Toggle POMP
     DelayMS POMPSNELHEID
    EndIf
     ;EndIf

Als is de regel

pic basic code:

;If PompFunctie = 0 Then en ;EndIf

mee laat draaien doet de led helemaal niks

Jeroen, ik vind het leuk om te helpen, maar dan moet je het wel MOGELIJK maken om dat te doen. Je openingsvraag kan ik samenvatten tot: "ik heb dit programma en het doet niet wat ik wil". Tja... moet ik nu dat programma gaan proberen te lezen en als ik dan begrijp wat het doet, moet ik gaan gokken wat het HAD moeten doen?

Een goede vraag begint met een situatieschets. Zwembad, collector, pomp. Huidige opstelling. (nu een led ipv de pomp?) en wat je wilt dat het doet: Als dit dan dat, maar dan na zoveel seconden weer zus. (en waarom!).

Op 23 april 2019 17:59:50 schreef Jeroennr:
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..

code:


POMP = HOOG
DelayMS 60000
POMP = watanders

Dat is precies wat je omschreven hebt wat het moet doen.

Als is de regel

Daar zit denk ik een typefout in. Lees je bericht nog eens door en haal dat soort fouten er uit. Dat maakt het ook makkelijker om te helpen.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Anoniem

Dit is een eenvoudig stukje code waar een kat haar jongen gaat verliezen ;-(

Op 5 mei 2019 09:48:14 schreef Jeroennr:

pic basic code:

If Collector < Zwembad Then  ;Als Collector lager is dan Zwembad dan...
     POMP = LAAG           ;pomp uit
    PompFunctie = 0
     ElseIf Collector > (Zwembad + Hysteresis) Then ;anders, als Collector hoger is dan Zwembad + 10 graden dan...
    If PompFunctie = 0 Then
     POMP = HOOG
    DelayMS 6000
     POMP = LAAG
    PompFunctie = 1
     ElseIf PompFunctie = 1 Then
    Toggle POMP
     DelayMS POMPSNELHEID
    EndIf
     EndIf

Dit is hetzelfde stukje code waar de kat bij haar jongen ligt te spinnen :-)

pic basic code:

If Collector < Zwembad Then                    ;Als Collector lager is dan Zwembad dan...
    POMP = LAAG                                ;pomp uit
    PompFunctie = 0

ElseIf Collector > (Zwembad + Hysteresis) Then ;anders, als Collector hoger is dan Zwembad + 10 graden dan...
    If PompFunctie = 0 Then
        POMP = HOOG
        DelayMS 6000
        POMP = LAAG
        PompFunctie = 1
     ElseIf PompFunctie = 1 Then
        Toggle POMP
        DelayMS POMPSNELHEID
     EndIf

EndIf

Als je constante 'pompsnelheid' nog steeds op 20 staat zoals in je startpost zal er van knipperen weinig sprake zijn.

Zoals rew ook al zegt moet je het programma LEZEN.
De microcontroller voert de instructies gewoon uit in de volgorde dat jij ze schrijft. (ik zie de volgende vraag al komen)
Als er niet gebeurt wat jij wil ligt dat nooit aan de compiler of de microcontroller maar aan de programmeur :+

Nou begrijp ik ook hoe dat met die 'blokken' zit, dus Wanneer het programma moet stoppen.

Bedankt anoniem015!

En ja, ik heb inderdaad weer een vraag.
Het programma doet wat het moet doen alleen als de temperatuur van de collector nou weer zakt dan houd het programma de regel

pic basic code:

ElseIf Collector > (Zwembad + Hysteresis) Then ;anders, als Collector hoger is dan Zwembad + 10 graden dan...
    If PompFunctie = 0 Then
     POMP = HOOG

aan en dat is nou net weer niet de bedoeling want de led moet in dit geval gewoon blijven knipperen totdat de temperatuur tussen collector en zwembad weer gelijk zijn.

Nou is mijn vraag: in welke regel moet ik dit dan zoeken?

[Bericht gewijzigd door Jeroen op woensdag 22 juli 2020 22:27:37 (1%)

mel

Golden Member

In assembler zou ik het wel weten, maar die Arduino taal...

u=ir betekent niet :U bent ingenieur..

Op 5 mei 2019 10:50:15 schreef rew:
Jeroen, ik vind het leuk om te helpen, maar dan moet je het wel MOGELIJK maken om dat te doen. Je openingsvraag kan ik samenvatten tot: "ik heb dit programma en het doet niet wat ik wil". Tja... moet ik nu dat programma gaan proberen te lezen en als ik dan begrijp wat het doet, moet ik gaan gokken wat het HAD moeten doen?

Een goede vraag begint met een situatieschets. Zwembad, collector, pomp. Huidige opstelling. (nu een led ipv de pomp?) en wat je wilt dat het doet: Als dit dan dat, maar dan na zoveel seconden weer zus. (en waarom!).

[...]

code:


POMP = HOOG
DelayMS 60000
POMP = watanders

Dat is precies wat je omschreven hebt wat het moet doen.
[...]Daar zit denk ik een typefout in. Lees je bericht nog eens door en haal dat soort fouten er uit. Dat maakt het ook makkelijker om te helpen.

Dit word een programma om een pomp aan te sturen voor een zonnecollector die het zwembad verwarmd dmv een wisselaar.
Wanneer de temperatuur in de collector 10 graden warmer is dan het zwembad dan moet de pomp 1 minuut lopen om de collector te vullen met water (zit een terugloopvat voor de pomp) daarna moet het verschil tussen zwembad en collector gemeten worden en als de collector nog steeds warmer is dan het zwembad dan moet de pomp om de seconde aan en weer uit gaan (dit is om de temperatuur van de collector hoger te houden dan het zwembad)
Als het verschil gelijk of kleiner is moet de pomp stoppen, anders wordt er niks verwarmt.

Dit is de hele bedoeling van de schakeling.
Hoop dat ik het nu duidelijk genoeg heb uitgelegd.

Kijk. Dat is duidelijk. Die "10 graden warmer" die zat er her en der in, CJ heeft er iets mee gedaan, maar wordt door jou meteen afgeschoten. En dat komt dus omdat CJ niet wist wat jij WILDE. Niet omdat hij niet kan programmeren of omdat ie een foutje gemaakt heeft.

Uit jou beschrijving blijkt dus nu dat het iets moet worden als:

code:


  if niet aan-het-pompen  EN collector > zwembad+10
       pomp aan
       wacht 60 seconden. 
       aan-het-pompen = true

  if collector > zwembad)
     toggle pomp
     wacht 1 sec. 
  else 
     aan-het-pompen = false

Dat taaltje van jou dat wil ik niet leren (ik ken al voldoende talen). Maar het is een PRIMA oefening voor jou om mijn pseudocode in jou taaltje om te zetten.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Anoniem

Op 5 mei 2019 16:33:48 schreef Jeroennr:
Het programma doet wat het moet doen ...

Ja met een schoonheidsfout want hierdoor

pic basic code:

ElseIf PompFunctie = 1 Then
     Toggle POMP
     DelayMS POMPSNELHEID
EndIf

gaat de pomp 2min aan, 1min uit, 1min aan, enz

maar als je nu

pic basic code:

ElseIf PompFunctie = 1 Then
     DelayMS POMPSNELHEID
     Toggle POMP
EndIf

gaat de pomp 1min aan, 1min uit, 1min aan, enz

Op 5 mei 2019 16:33:48 schreef Jeroennr:
alleen als de temperatuur van de collector nou weer zakt dan houd het programma de regel

pic basic code:

ElseIf Collector > (Zwembad + Hysteresis) Then ;anders, als Collector hoger is dan Zwembad + 10 graden dan...
    If PompFunctie = 0 Then
     POMP = HOOG

aan ...

Dat is natuurlijk niet zo want in dat geval zit het programma hier

pic basic code:

If Collector < Zwembad Then                    ;Als Collector lager is dan Zwembad dan...
    POMP = LAAG                                ;pomp uit
    PompFunctie = 0

Maar je programma heeft wel een tweede schoonheidsfoutje die jouw opmerking verklaart.
Als je microcontroller een delay uitvoert doet die NIKS anders dan die delay uitvoeren, maw WACHTEN.
Dus als tijdens jouw delay van 1min de temperatuur wijzigt .....

Daar zijn oplossingen voor waar je wel zelf naar op zoek moet.
Voor de simpelste geef ik je als tip dat 60 keer 1 seconde wachten ook 1 minuut is :-)

Ik denk dat de "minstens 10 graden warmer" bedoeld is om die "1 minuut" gewoon vrijwel altijd de moeite waard te maken. En dat het te verwachten valt dat de collector wel enkele graden in temperatuur zal zakken. Dus 60x de temperatuur bekijken lijkt me juist niet de bedoeling.

Maar over het algemeen kan je dit soort programmas als een "statemachine" schrijven.

code:


Symbol STATE_WACHTEN    = 1
Symbol STATE_POMPEN     = 2
...

state=STATE_WACHTEN
While 1=1
  ; hier de temperaturen meten
  If state = STATE_WACHTEN Then
     POMP = LAAG
     if collector > zwembad+10 then 
        pomptijd = 60
        state = STATE_POMPEN
     Endif
  Endif
  If state = STATE_POMPEN Then
     pomptijd = pomptijd - 1
     POMP = HOOG
     if pomptijd = 0 then
        state = STATE_LANGZAAMPOMPEN
     state = STATE_POMPEN
  Endif
  If state = STATE_LANGZAAMPOMPEN Then
     toggle POMP
     if collector < zwembad then
        state = STATE_WACHTEN
  Endif
  sleep 1
wend

Voor iedere state moet je code schrijven: "wat te doen?" en "wanneer stoppen we hiermee?".
De "wat te doen" is hier altijd iets met de pomp. Door naar een volgende state is hier iets met temperaturen of gewoon wachten.

In de taal C zou ik een "switch / case" constructie gebruiken. Dan heb je niet steeds if state = STATE_... Hoe dat hier moet weet ik niet. Ik heb het hier zo gedaan dat zonder 1s te wachten aan het eind de volgende state al meteen geprocessed wordt (als je voorwaarts gaat in de statemachine). Als je dat niet wilt worden een aantal endifs veranderd in elseif...

Let op dat het meten van DS1820 temperaturen relatief lang duurt: haast een seconde. Als je twee sensoren hebt, kan je die twee tegelijk meten door ze alletwee de opdracht te geven de temp te meten en dan later pas ze uit te lezen.

Als je de mainloop iedere seconde wilt laten lopen zou je dan iets doen als:

code:


 ; stuur sensor 1: start temp meting
 ; stuur sensor 2: start temp meting
 while 1==1
    ; lees DS sensor1
    ; lees DS sensor2

    ; statemachine hier.

    ; stuur sensor 1: start temp meting
    ; stuur sensor 2: start temp meting
    sleep 1
 wend
four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Lambiek

Special Member

Op 5 mei 2019 21:42:18 schreef anoniem015:
Als je microcontroller een delay uitvoert doet die NIKS anders dan die delay uitvoeren, maw WACHTEN.
Dus als tijdens jouw delay van 1min de temperatuur wijzigt .....

Daar zijn oplossingen voor waar je wel zelf naar op zoek moet.

Hij kan ook gewoon de on interrupt handler gebruiken natuurlijk, heb je niets met delayms of delayus te maken.

[Bericht gewijzigd door Jeroen op woensdag 22 juli 2020 22:27:58 (2%)

Als je haar maar goed zit, GROETEN LAMBIEK.

Ik zal ook hier eens wat van (proberen) te maken.
Bedankt rew!

Op 6 mei 2019 09:03:09 schreef rew:
Ik denk dat de "minstens 10 graden warmer" bedoeld is om die "1 minuut" gewoon vrijwel altijd de moeite waard te maken. En dat het te verwachten valt dat de collector wel enkele graden in temperatuur zal zakken. Dus 60x de temperatuur bekijken lijkt me juist niet de bedoeling.

Maar over het algemeen kan je dit soort programmas als een "statemachine" schrijven.

code:


Symbol STATE_WACHTEN    = 1
Symbol STATE_POMPEN     = 2
...

state=STATE_WACHTEN
While 1=1
  ; hier de temperaturen meten
  If state = STATE_WACHTEN Then
     POMP = LAAG
     if collector > zwembad+10 then 
        pomptijd = 60
        state = STATE_POMPEN
     Endif
  Endif
  If state = STATE_POMPEN Then
     pomptijd = pomptijd - 1
     POMP = HOOG
     if pomptijd = 0 then
        state = STATE_LANGZAAMPOMPEN
     state = STATE_POMPEN
  Endif
  If state = STATE_LANGZAAMPOMPEN Then
     toggle POMP
     if collector < zwembad then
        state = STATE_WACHTEN
  Endif
  sleep 1
wend

Voor iedere state moet je code schrijven: "wat te doen?" en "wanneer stoppen we hiermee?".
De "wat te doen" is hier altijd iets met de pomp. Door naar een volgende state is hier iets met temperaturen of gewoon wachten.

In de taal C zou ik een "switch / case" constructie gebruiken. Dan heb je niet steeds if state = STATE_... Hoe dat hier moet weet ik niet. Ik heb het hier zo gedaan dat zonder 1s te wachten aan het eind de volgende state al meteen geprocessed wordt (als je voorwaarts gaat in de statemachine). Als je dat niet wilt worden een aantal endifs veranderd in elseif...

Let op dat het meten van DS1820 temperaturen relatief lang duurt: haast een seconde. Als je twee sensoren hebt, kan je die twee tegelijk meten door ze alletwee de opdracht te geven de temp te meten en dan later pas ze uit te lezen.

Als je de mainloop iedere seconde wilt laten lopen zou je dan iets doen als:

code:


 ; stuur sensor 1: start temp meting
 ; stuur sensor 2: start temp meting
 while 1==1
    ; lees DS sensor1
    ; lees DS sensor2

    ; statemachine hier.

    ; stuur sensor 1: start temp meting
    ; stuur sensor 2: start temp meting
    sleep 1
 wend

Ik wil graag een regel 1x uitvoeren en daarna overslaan.
Wie weet welk commando daar voor gebruikt moet worden, het geld voor onderstaande regel.

pic basic code:

If Collector < Zwembad Then                    ;Als Collector lager is dan Zwembad dan...
    POMP = LAAG                                ;pomp uit
    PompFunctie = 0
 
ElseIf Collector > (Zwembad + Hysteresis) Then ;anders, als Collector hoger is dan Zwembad + 10 graden dan... [u][b](Om deze en bovenste gaat het)[/b][/u]
    If PompFunctie = 0 Then
        POMP = HOOG
        DelayMS 6000
        POMP = LAAG
        PompFunctie = 1
     ElseIf PompFunctie = 1 Then
        Toggle POMP
        DelayMS POMPSNELHEID
     EndIf
 
EndIf

Op 11 mei 2019 23:08:05 schreef Jeroennr:
Ik wil graag een regel 1x uitvoeren en daarna overslaan.
Wie weet hoe ik dit aan moet pakken?
Het geld voor

pic basic code:

ElseIf Collector > (Zwembad + Hysteresis) Then ;anders, als Collector hoger is dan Zwembad + 10 graden dan... 

pic basic code:

If Collector < Zwembad Then                    ;Als Collector lager is dan Zwembad dan...
    POMP = LAAG                                ;pomp uit
    PompFunctie = 0
 
ElseIf Collector > (Zwembad + Hysteresis) Then ;anders, als Collector hoger is dan Zwembad + 10 graden dan... (((Om deze gaat het)))
    If PompFunctie = 0 Then
        POMP = HOOG
        DelayMS 6000
        POMP = LAAG
        PompFunctie = 1
     ElseIf PompFunctie = 1 Then
        Toggle POMP
        DelayMS POMPSNELHEID
     EndIf
 
EndIf

Op 11 mei 2019 23:08:05 schreef Jeroennr:
Wie weet welk commando daar voor gebruikt moet worden, het geld voor onderstaande regel.

Er staan er ongeveer tien, ik weet niet welke je bedoelt.

Op 11 mei 2019 23:08:05 schreef Jeroennr:
Ik wil graag een regel 1x uitvoeren en daarna overslaan.

Dan zet je hem bovenaan, voor het begin van de while lus. Dan wordt ie 1x uitgevoerd en daarna niet meer.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

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                ;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
Dim PompFunctie As Byte         ;0 = een minuut aan, 1 = knipperen

;Logische constanten
Symbol Hysteresis   = 75        ;150 staat voor 10 graden verschil.
Symbol HOOG         = 1
Symbol LAAG         = 0
Symbol POMPSNELHEID = 30       ;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



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

 High POMP
 DelayMS 3000
 Low POMP


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                  
   Low POMP      
    
ElseIf Collector > (Zwembad + Hysteresis) Then

   DelayMS 80
   Toggle POMP

EndIf
Wend 

Dus alles moet max 1x? Of ben je begin weer bij stap x vergeten?

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Op 15 mei 2019 09:48:05 schreef rew:
Dus alles moet max 1x? Of ben je begin weer bij stap x vergeten?

Nadat de temperatuur van collector 10 graden hoger is moet de pomp (led) 1 minuut branden, daarna knipperen totdat de temperatuur van beide sensoren gelijk is.
Daarna pomp (led) uit totdat tempratuur weer 10 graden hoger is enz.

Dat is de bedoeling maar als nu de tempratuur zakt bijv. Zwembad is 10 en collector 19 dan gaat de led continu branden en dan moet ie juist knipperen totdat tempratuur van beide sensoren gelijk is.