Een RTC heb je niet nodig, gewoon een counter die iedere (ongeveer) 24h overloopt.
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.
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%)
Moderator
Solid State Relay
En hoewel dat in dit geval zou kunnen, is dat met motoren toch altijd ietwat tricky.
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%)
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
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?
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.
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.
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
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?
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?
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...
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.
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.
Golden Member
En schakel je de pomp ook via een relais?
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 ?
Golden Member
Op 28 januari 2023 22:30:45 schreef MarEle:
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 ?
Weet ik niet en nee. De sensor voorzien van extra isolatie. Geeft niet veel temperatuur verschil. Heb gewoon de start temperatuur een graadje lager staan.
Op 28 januari 2023 21:53:35 schreef Bavelt:
En schakel je de pomp ook via een relais?
Ok gebruik gewoon het interne relais van de Sonoff S20 module
Golden Member
Edit: Ik kreeg deze schakeling niet aan de praat. Maar na wat experimenteren lukt het wel: ik moet MT1 en MT2 van de Triac omdraaien!
Is dit te beredeneren en is dit dan een fout in het schema?
NB Na wat verder speuren lijkt het er op dat in dit schema MT1 en MT2 inderdaad is verwisseld.
M.a.w. de 'load' aan de MT2 hangen en dus niet aan de MT!.
Echt beredeneren kan ik het nog niet...
[Bericht gewijzigd door Bavelt op donderdag 2 februari 2023 11:15:22 (33%)
Golden Member
Ik heb inmiddels een aantal solid state relais binnen. Zijn van Alie,. Ik heb er wat mee lopen testen, het werk tot nu toe aardig. En ik houd de boel galvanisch gescheiden van het lichtnet.
Er zou zelfs een snubber netwerk inzitten (het geheel is in hars gegoten).
Een probleempje (als het dat al is) moet ik nog zien op te lossen:
In de constructie met een 'echt' relais had ik het zo, dat het een verbreek contact was. Als dan de de schakeling niet zou werken of de voedingsspanning valt weg, dan sluit het relais in zijn rusttoestand en loopt de pomp continu, net als vroeger. Dan werkt alles gewoon.
Maar met zo'n Solid State relais kun je geen verbreek-contact maken. Dat betekent dat je de pomp aan moet zetten door het relais te activeren. Stel dat mijn schakeling om een of andere reden niet werkt, of de voeding valt weg, etc, dan gaat de pomp niet lopen met als gevolg dat de ketel zal blijven branden (de vloer wordt immers niet warm) totdat de ketel door de thermische beveiliging afslaat. De radiatoren, die wél van warmte worden voorzien door de cv-pomp zijn dan al gloeiend heet. De thermostaat reageert immers op de woonkamer met vloerverwarming en niet op de radiatoren elders in huis.
En de radiatoren hebben zelf ook geen thermostatische kraan ?
Je zou kunnen overwegen om toch een relais parallel te zetten. Je schakelt dan zolang de schakeling actief is met de SSR, maar als de stroom wegvalt sluit het relais de stroomkring dat ie draait.
Dit scheelt enorm op de levensduur van het relais.
Golden Member
Op 3 maart 2023 14:11:30 schreef rew:
Je zou kunnen overwegen om toch een relais parallel te zetten. Je schakelt dan zolang de schakeling actief is met de SSR, maar als de stroom wegvalt sluit het relais de stroomkring dat ie draait.Dit scheelt enorm op de levensduur van het relais.
Dat is een goeie... Een relais gebruiken als soort van 'backup-beveiligingsvoorziening'..
Golden Member
Op 3 maart 2023 12:38:22 schreef Lead Acid:
En de radiatoren hebben zelf ook geen thermostatische kraan ?
Nee, geen van alle. Er zit gewoon een standaard kraan op.
Ik kan wel de keteltemperatuur instellen waarop die afslaat. Dat wordt bv gebruikt als ik de gashaard aan heb (gashaardstand).
Zonder deze gashaardstand gaat de ketel nooit aan als de haard lekker snoeit, maar de rest van het huis is dan koud...
De keteltemperatuur staat nu op 70 Gr.
Moderator
Of je gebruikt gewoon een geschikt relais. Op ketelbesturingsprinten zitten ook de bekende standaardrelais (al dan niet met een snubber netwerkje) en die gaan langer mee dan de levensduur van de ketel.