Pompschakelaar vloerverwarming

Bavelt

Golden Member

Er zijn al wel wat topics geweest hierover, maar al redelijk gedateerd.

Nu ik zelf wat alerter ben op energieverbruik, kon ik constateren dat mijn pomp van de vloerverwarming al ca 18 jaar continu draait. Het is een ding van 60W, dat dus ook in de zomer altijd draait.

Er zijn pompschakelaars te koop, compleet met klemmetje om op de invoerleiding te monteren. Deze apparaatjes werken allemaal met 1 sensor op de invoer en niet met 2, waarbij de afvoer ook wordt gemeten, zoals ik in oude topics las.

Mijn vloerverarming is een aparte unit met verdelers, wel gekoppeld aan de CV, maar met eigen thermostaat op de aanvoerleiding.

Ik denk dat ik zelf wel iets kan bedenken, met bv een PIC en temperatuursensor. En een tijdsmodule om het ding af en toe te laten lopen.
Is gewoon leuk om te doen.

De vraag die ik heb: kan ik de pomp ook aansturen met een Power MOSFET i.p.v een relais? Of is dat niet aan te raden? Welk type zou daarvoor geschikt zijn?

Fouten zijn het bewijs dat je het probeert..

De kans is groot dat die pomp op 230V draait. Dat kan theoretisch met een mosfet, maar met een relais is echt veel makkelijker. Neem gewoon een relais.

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

.. met een snubber over de contacten heen.

MOSFET kan ook.
Knutseloplossing:
Als je een 60W transformator hebt, dan zet je de primaire in serie met de motor en secundair richt je gelijk en die gelijkgerichte spanning schakel je met de MOSFET (dus secundair gelijkgrichte spanning al of niet kortsluiten). Dan kan je toe met een laagspanningsmosfet, maar wel met hoge stroom, bijv eentje die 24V bij 10A kan schakelen.

Dan moet je nog wel naar je thermostaat kijken. Hij moet warm water binnenhalen als je ketel aan is. Of je moet er een met constante temperatuur hebben.

Die thermostaat op de aanvoer of afvoer (maakt weinig uit) gaat wel open maar je water stroomt niet als de pomp niet aanstaat.

Arco

Special Member

Je kunt die pomp toch aansluiten op de pompsturing van de cv ketel? (daar kun je de naloop normaal al instellen)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
fatbeard

Honourable Member

Op 2 januari 2023 18:51:24 schreef rew:
<...> met een relais is echt veel makkelijker. Neem gewoon een relais.

... of een SSR ...

Een goed begin is geen excuus voor half werk; goed gereedschap trouwens ook niet. Niets is ooit onmogelijk voor hen die het niet hoeven te doen.

Voeler op de aanvoer is beveiliging tegen te hoge watertemperatuur.

Bavelt

Golden Member

Klopt. Alleen de waarde van 120 gr Celcius is véél te hoog. Ik heb de leverancier van de verdeler gebeld; hooguit er eentje van 60 Graden Celcius in zetten.

Fouten zijn het bewijs dat je het probeert..
Sine

Moderator

Een RTC heb je niet nodig, gewoon een counter die iedere (ongeveer) 24h overloopt.

Op 3 januari 2023 11:40:33 schreef Bavelt:
Klopt. Alleen de waarde van 120 gr Celcius is véél te hoog. Ik heb de leverancier van de verdeler gebeld; hooguit er eentje van 60 Graden Celcius in zetten.

Weet je zeker dat dit in °C is?
Namelijk 120 °F is 49 °C...

Kan me haast niet voorstellen dat je in een cv circuit 120°C tegenkomt, en al helemaal niet in vloerverwarming.

RAAF12

Golden Member

Op 2 januari 2023 22:20:04 schreef fatbeard:
[...]
... of een SSR ...

SCR? Volgens mij staat dat voor silicon controlled relais maar iets herinnert me ook aan silicon controlled rectifier, maar dat is heel wat anders en de oude benaming voor een thyristor.

[Bericht gewijzigd door RAAF12 op dinsdag 3 januari 2023 12:47:15 (12%)

Sine

Moderator

Solid State Relay

En hoewel dat in dit geval zou kunnen, is dat met motoren toch altijd ietwat tricky.

vergeten

Golden Member

Een SSR doet dit al vele jaren succesvol bij mij voor de CV vloerverwarmingspomp!

[Bericht gewijzigd door vergeten op dinsdag 3 januari 2023 16:25:51 (51%)

Doorgaans schrijf ik duidelijk wat ik bedoel, toch wordt het wel anders begrepen.
vergeten

Golden Member

Op 2 januari 2023 22:05:22 schreef Arco:
Je kunt die pomp toch aansluiten op de pompsturing van de cv ketel? (daar kun je de naloop normaal al instellen)

Dan draait de vloerverwarmingspomp ook mee als er warm water wordt getapt, bij douchen of een bad vullen.
Ik heb dat in een ander topic van mij mechanisch opgelost.

ff zoeken :) gevonden!

https://www.circuitsonline.net/forum/view/151078#highlight=cv+pomp

Doorgaans schrijf ik duidelijk wat ik bedoel, toch wordt het wel anders begrepen.
Bavelt

Golden Member

Op 2 januari 2023 18:51:24 schreef rew:
De kans is groot dat die pomp op 230V draait. Dat kan theoretisch met een mosfet, maar met een relais is echt veel makkelijker. Neem gewoon een relais.

Ik heb hier zo'n relais-unit (HW-307) voor o.a de Arduino liggen. Werkt prima, kan ik meteen aansturen vanuit de PIC. volgens de opdruk mag je daar 250V 10A mee schakelen.

Nu schakel je wel een pomp met de nodige inductie.. Zou het wellicht nog handig zijn een C-tje over de contacten te leggen?

Fouten zijn het bewijs dat je het probeert..
RAAF12

Golden Member

Een vonkblusser kan ook met een RC combi. Scheelt aanmerkelijk in levensduur van het contact en eventuele 'klik'storing in de buurt.
https://www.distrelec.nl/nl/rc-combinatie-470nf-250vac-630vdc-20-kemet… net zo'n papier/metaal rol erin als condensator als bij Rifa.
Ingegoten Rifa's hebben niet zo'n beste naam, maar het kan ook met een eigen RC bouwsel. Bijvoorbeeld 100Ω en 47n in serie.

Bavelt

Golden Member

Ik heb een pompschakel-unit voor de vloerverwarming gemaakt, dat wordt aangestuurd met een PIC 16F1847 via een Mikro Basic programma (Voor mij nog altijd de fijnste programmeertaal voor PIC's).

Ik kan helaas nog geen schema's tekenen (een echt makkelijk programma hiervoor heb ik nog niet).

In de source staat echter wat er is aangesloten.

De temperatuur wordt gemeten met een DB18B20. Die meet wel redelijk en maakt gebruik van het 'One Wire' Protocol.
Ik heb vier schakelaartjes om de ondergrens en bovengrens van de aan/uit schakeltemperatuur te wijzigen.

Op het display, acht 7-segment displays met een MAX719 aan boord, wordt de ondergrens, de bovengrens en de gemeten temperatuur getoond.
Als de pomp uit is, wordt hij gestart met een nader te kiezen tijdsinterval.
(bv 85800 - 86400 seconden. Dat is per 24 uur 10 minuten draaien).

De pomp wordt aan-en uitgeschakeld met een relais. Ik maak gebruik van het verbreekcontact. Hierdoor wordt bereikt dat, mocht de schakeling om wat voor reden niet werken of stuk gaan, de pomp altijd draait (zoals altijd was in mijn geval).

Hieronder de source, alsmede het totale project in Mikro Basic. Wie weet heeft iemand hier iets aan.

pic basic code:


'====================================================================================================
Program Pump    'Control pump For underfloor heating
'====================================================================================================
' Project name: Pump
' MCU:          PIC16F1847
' Oscillator:   Internal 8 MHz
' Display:      7-Segment 8 pieces with Max 7219 (SPI1)
' Temp Sensor:  DB18B20 LATB.0           Pin 6
' Switch Low  + PORT A.0                 Pin 17
' Switch Low  - PORT A.1                 Pin 18
' Switch High + PORT A.2                 Pin 1
' Switch High - PORT A.3                 Pin 2
' SDO:          LATB.2                   Pin 8
' SCK:          PORTB.4                  Pin 10
' D/C:          LATB.3                   Pin 9
' PumpOnOff     LATB.5                   Pin 11

 Const 
     Time_L   = 30
     Time_H   = 35
     Init_TL  = 23
     Init_TH  = 26

 Dim Ref_Temp_L As Byte
     Ref_Temp_H As Byte
     Datapin    As sbit at LATB.2       'Pin 8  SDO  - SPI1
     SCKPin     As sbit at PORTB.4      'Pin 10 SCK - SPI1
     D_C        As sbit at LATB.3       'Pin 9  Data Command
     D_C1       As sBit at LATB.0       'Pin 6  Data/Command Tem Sensor DB18B20
     Sw_Low_Up  As SBit at PORTA.0      'Pin 17 Adjust temperature Low  - Increase
     Sw_Low_Dn  As SBit at PORTA.1      'Pin 18 Adjust temperature Low  - Decrease
     Sw_High_Up As SBit at PORTA.2      'Pin 1  Adjust temperature High - Increase
     Sw_High_Dn As SBit at PORTA.3      'Pin 2  Adjust temperature High - Decreasee
     PumpOnOff  As sBit at LATB.5       'Pin 11 Control relais For pump
     Disp       As Byte
     Dsp        As Byte [8]
     TempH1     As byte
     TempL1     As byte
     Temp1      As word
     Cnt        As Byte
     CntSec     As Longword
     i1         As Byte

'====================================================================================================
Sub Procedure Max_Write(Dim pRow, pDig0 as Byte)
'====================================================================================================
 D_C = 0
 SPI1_Write(pRow)
 SPI1_Write(pDig0)
 D_C = 1
 Delay_ms(2)
End sub

'====================================================================================================
Sub Procedure Max7219_Init()
'====================================================================================================
 Max_Write(0x09, 0xFF)                   'Decode Mode Code B-Digital digits 7-5 and 3-0; 4 = -
 Max_Write(0x0B, 0x07)                   'Scan Limit 0-7
 Max_Write(0x0C, 0x01)                   'Normal Operation
 Max_Write(0x0A, 0x0C)                   'Intensity
End sub

'====================================================================================================
Sub Procedure Write_Display()
'====================================================================================================
 For Disp = 1 to 8
   Max_Write(Disp, Dsp[Disp - 1])
   Next Disp
End sub

'====================================================================================================
Sub Procedure Blank_Digits()            'Blank Digits. First 2 digits 0, other blank
'====================================================================================================
 For Disp  = 0 to 7
   Dsp[Disp] = 0x7F                     'Blank all displays
 Next Disp
 Write_Display()
 Delay_Ms(1000)

 For i1 = 0 to 7                        'Test Displays
   Dsp[i1] = i1 + 1
   Write_Display()
   Delay_Ms(100)
 Next i1
 Delay_Ms(1000)

 For Disp  = 0 to 1
   Dsp[Disp] = 0x00                     'Show 00 at start on display 1-2
 Next Disp
 For Disp  = 2 to 7                     'Blank Display 3-7 and suppress decimal point
   Dsp[Disp] = 0x7F
 Next Disp
 Write_Display()
End Sub

'====================================================================================================
 Sub procedure Read_Temp()              'Read Temperature from DB18B20
'====================================================================================================
  Ow_Reset(PORTB, 0)                    'Onewire reset signal
  Ow_Write(PORTB, 0, 0xCC)              'Issue command SKIP_ROM
  Ow_Write(PORTB, 0, 0x44)              'Issue command CONVERT_T
  Delay_us(120)
  Ow_Reset(PORTB, 0)                    'Onewire reset signal
  Ow_Write(PORTB, 0, 0xCC)              'Issue command SKIP_ROM
  Ow_Write(PORTB, 0, 0xBE)              'Read ScratchPad

  TempL1 =  Ow_Read(PORTB, 0)
  TempH1 =  Ow_Read(PORTB, 0)
  Temp1 = TempH1 <<4 + TempL1 >>4
  If tempH1.7 = 1 Then                  'Negative temperature
     Temp1 = NOT(TempH1 <<4 + TempL1 >>4) + 1
  Else
     Temp1 = (TempH1 <<4 + TempL1 >>4) + 1
  End If
  Temp1 = Temp1 - 1                     'Correction calibration
End Sub

'====================================================================================================
 Sub procedure Adjust_Limits            'Adjust Temperature Limits
'====================================================================================================
 If Sw_Low_Up = 0 Then
     Delay_ms(50)
     If Sw_Low_Up = 0 Then
        If (Ref_Temp_L < (Ref_Temp_H - 1)) Then
           Inc(Ref_Temp_L)
        End If
     End If
  End If

  If Sw_Low_Dn = 0 Then
     Delay_ms(50)
     If Sw_Low_Dn = 0 Then
        Dec(Ref_Temp_L)
     End If
  End If

  If Sw_High_Up = 0 Then
     Delay_ms(50)
     If Sw_High_Up= 0 Then
        Inc(Ref_Temp_H)
     End If
  End If

  If Sw_High_Dn = 0 Then
     Delay_ms(50)
     If Sw_High_Dn = 0 Then
        If (Ref_Temp_H > (Ref_Temp_L + 2)) Then
           Dec(Ref_Temp_H)
        End If
     End If
  End If
 End Sub
 
'====================================================================================================
 Sub procedure Show_Data                'Show data in displays
'====================================================================================================
  Dsp[3] = Ref_Temp_H mod 10            'Display reference Temperature High
  Dsp[4] = Ref_Temp_H/10 mod 10

  Dsp[6] = Ref_Temp_L mod 10            'Display reference Temperature Low
  Dsp[7] = Ref_Temp_L/10 mod 10

  Read_Temp()
  Dsp[0] = Temp1 mod 10                 'Display Current Temperature on Digits 4-5
  Dsp[1] = Temp1/10 mod 10
  Write_Display()
 End Sub

'====================================================================================================
Sub procedure Interrupt() iv 0x0004 ics ICS_AUTO
'====================================================================================================
 If TMR2If_bit = 1 Then
    Inc(Cnt)
    If Cnt >= 199 Then
      Cnt = 0
      Inc(CntSec)
      If CntSec > Time_H Then
         Cnt = 0
         CntSec = 0
      End If
    End If
    TMR2If_bit = 0
  End If
End Sub

main:

OSCCON     = %01110000                  '8Mhz Internal
ANSELB     = %00000000                  'All Port B Digital
ANSELA     = %00000000                  'All Port A Digital
TRISB      = %00000001                  'Port B.0 Input
TRISA      = %00001111                  'Port A0, A1, A2, A3 Input
PR2        = 249
T2CON      = %01001101                  'Post: 10, Pre 4
TMR2IE_bit = 1
GIE_bit    = 1
PEIE_bit   = 1

PumpOnOff  = 0                          'Default Relais Off, Pump On

Cnt        = 0
CntSec     = 0
Ref_Temp_L = Init_TL                    'Init values For temperature control
Ref_Temp_H = Init_TH

SPI1_Init()                             'Init SPI
Max7219_Init()                          'Init MAX7219
Delay_ms(5)
Blank_Digits()                          'Blank Displays
Delay_Ms(5)

While True
  Adjust_Limits()                       'Set Limits For temperature control
  Show_Data()

  If (Temp1 >= Ref_Temp_H) Then         'Main control
     PumpOnOff = 1
  Else
     If (Temp1 <= Ref_Temp_L) Then
     PumpOnOff = 0
     If CntSec >= Time_L Then           'Check on time. Pump runs between Time_L And Time_H
        PumpOnOff = 1
        End If
     End If
  End If
 
  Delay_Ms(25)
Wend

End.
Fouten zijn het bewijs dat je het probeert..

Ik heb het bij mij recentelijk opgelost door een zigbee temperatuursensor op de aanvoer neer te leggen. Als de temperatuur boven de 32 graden komt gaat een smart plug met Tasmota aan(waar de pomp op zit) en onder de 23 graden gaat het weer uit. Enige verbeterpuntjes zijn nog dat een cr2032 cell uit de zigbee sensor mogelijk de hogere temperaturen niet zo fijn vind en dat in de zomer de pomp nog enkele keren per week (maand?) even (kort) aan geslingerd moet worden. Dit wil ik nog verbeteren in Node-Red

Bavelt

Golden Member

Ik ben hiermee verder gegaan nu ik de schakeling voor het meten van de temperatuur en pompcontrole voor elkaar heb.

Om de contacten van het relais dat de pomp aan en uit schakelt te beschermen, heb ik een snubber netwerkje gemaakt van een RC (uit een voorbeeld) met een C van 0,33uF en een R van 47ohm in serie, parallel over de contacten.

Maar als ik - ter test - een (led)lamp aansluit ipv een pomp en deze wil uitschakelen, zijn die R en C toch voldoende om de lamp snel te laten flikkeren daar waar ik verwachtte dat hij gewoon uit is.

Nu is een ledlamp geen pomp, maar ik vermoed toch dat mijn waarden van R en C niet juist zijn gedimensioneerd voor 230V.

Ik heb geleerd: imp = 1/wC. Bij 50 Hz is dat dus 1 / 6,28*50*330*10^-9

= 9,652K
De totale impedantie is dan 9,652K + 0,047 = 9,699K

Imax = 230 / 9699 = 23 mA.

Is dat genoeg om een led lamp te laten branden?

Andere waarden kiezen?

Edit: misschien weet ik het antwoord zelf al:
Als de lamp 5W verbruikt, is de stroom 5W / 220V = 21 mA
Klopt dit?

Fouten zijn het bewijs dat je het probeert..

De totale impedantie blijft 9652 ohm (op een 1/10 van een ohm na ) , het moet vectorieel worden opgeteld, dus de wortel uit de som van de kwadraten ...

Staat de pomp van 60W op zijn hoogste stand?

Bavelt

Golden Member

Nee, de pomp staat op de middelste stand. (ca 40W).

Het snubbernetwerkje zou dan vanwege de inductieve belasting, de pomp, de contacten van het relais moeten ontlasten vwb spanningspieken, vooral bij uitschakelen begreep ik.

Ik had er nu dus een R van 47 Ohm in en een condensator van 330 nF die ik nog had liggen. Is er wel eentje met een VMax van 250 V. Vroeg me daarbij af hoe hoog die kortstondige spanninspieken over die C kunnen oplopen. Een eerste exemplaar van max !60V sloeg meteen door met het sneuvelen van de R tot gevolg...

Fouten zijn het bewijs dat je het probeert..

In de zomer uitzetten, 1 keer per week aan tegen vastzitten.

En in de winter gewoon laten draaien. Alle energie die de pomp verbruikt gaat in warmte in het water zitten, net als een gloeilamp dan 100% rendement. Je bespaart op gas.

Gratis opgelost.

marcob

Golden Member

Ik heb deze gebouwd:
https://github.com/jeroenvdwaal/underfloor_heating_pump_controller

Schakelt via een temperatuur sensor op de aanvoerleiding. Draait stand alone, maar de parameters kunnen via Home Assistant ingesteld worden. Als de pomp 24 uur niet heeft gedraaid, dan gaat ie een paar minuten draaien.
Zelf heb de optie toegevoegd dat ik via een OpenTherm interface zie dat de ketel aangaat, dan doe ik ook de pomp aanzetten.

People tend to overestimate what can be done in one year and to underestimate what can be done in five or ten years
Bavelt

Golden Member

En schakel je de pomp ook via een relais?

Fouten zijn het bewijs dat je het probeert..

Is de header waarop je de sensor in de S20 aansluit, galvansiche gescheiden van het lichtnet, of vertrouw je op de isolatie van de sensor ?