![]() |
|
De 140209 print. |
Met behulp van onderstaande schakeling kan met de PIC Basic instructie SEROUT een modulerende thermostaat worden aangestuurd.
Hierdoor kan eenieder zelf een thermostaat met het Nefit
protocol naar wens aansturen
door simpel de temperatuursinstelling met een 8-bits waarde er naar toe te zenden.
Je kunt dan zelf een PIC Basic programma schrijven die de temperatuurinstelling laat afhangen van bijvoorbeeld de tijd (DCF77 of
klok-IC),
een afstandsbediening of via telefoon.
Nefit heeft een eigen protocol (geen OpenTherm®) en ikzelf had geen zin om het protocol van Nefit uit te zoeken,
daarom gewoon gebruik gemaakt van een (op één na) goedkoopste modulerende thermostaat, de ModuLine 15 van
Nefit.
Met behulp van aansturing door bijvoorbeeld een PC of een andere PIC kan de ModuLine thermostaat nu worden ingesteld.
Door een optocoupler is een galvanische scheiding tussen ModuLine thermostaat en aansturende (PIC) schakeling gegarandeerd.
![]() |
|
ModuLine 15 van Nefit. |
Het versturen van de 8-bits waarde gebeurt via een 2-draads verbinding naar een optocoupler op de 140209 print,
en moet een waarde zijn van 1 ... 100, waarbij 1 staat voor 12°C en 100 voor 24,5°C.
Een andere waarde dan 1 ... 100 wordt als niet ontvangen beschouwd (genegeerd).
Door de formule x = ((Temp * 8) / 10) - 95 in de verzendende PIC te plaatsen,
wordt de temperatuursinstelling (12°C ... 24,5°C) automatisch omgezet in de juiste schaalwaarde voor de potmeter (1 ... 100).
Om stapjes van 0,5°C te kunnen maken zonder gebruik van een FLOAT variabele moet 'Temp' een factor 10 groter worden opgegeven.
Voor een temperatuur van bijvoorbeeld 16,0°C moet er dus 160 aan 'Temp' worden opgegeven en voor 19,5°C de waarde 195.
Digitaal te bedienen potmeter X9Cxxx
De X9C103 is een elektronische (8-pins) potmeter die zijn weerstandswaarde wijzigt aan de hand van pulsjes op zijn INC pin.
Of er naar boven of naar beneden wordt geregeld is afhankelijk van de U/D
(= Up / Down) pin.
Om altijd zeker te zijn van de juiste instelling regelt de PIC na ontvangst van een instellingswaarde de X9C103 steeds eerst (heel snel) helemaal naar minimaal
door 100 pulsen te sturen om van daaruit weer omhoog te regelen naar de opgegeven instelling.
De weerstanden aan de X9C103 zorgen ervoor dat het temperatuurbereik ligt tussen 12°C (normaal 7°C) en 24,5°C (normaal 32,5°C).
Het voordeel is hierdoor dat de X9C103 nu niet zo gevoelig is omdat elke stap van deze digitale potmeter nu een hogere resolutie heeft.
Om een ander minimaal en/of maximaal bereik te verkrijgen moeten de weerstandswaarden aangepast worden.
Als er behoefte is voor het hele bereik van de ModuLine thermostaat (7°C ... 32,5°C),
dan moeten de twee weerstanden door draadbrugjes worden vervangen.
De X9C103 heeft een geheugen om een potmeterstand in op te slaan die na stroomuitval wordt aangenomen maar daar is geen gebruik van gemaakt.
Na een stroomuitval stelt de PIC12F629 op de 140209 print de temperatuur in op 14°C.
|
Het best kan de PIC eerst geprogrammeerd worden en dan pas in de 140209 print worden gesoldeerd.
De voeding van de ketel is niet geschikt om de PIC in circuit (ICSP) te programmeren.
In circuit programmeren kan alleen als de thermostaat wordt afgekoppeld van de verwarmingsketel en
er een voedingsspanning van 5 volt wordt toegevoerd aan de 140209 print.
De PIC kan niet in een voetje worden geplaatst omdat de print dan te hoog wordt waardoor deze niet meer in de ModuLine behuizing past.
De 140209 print nooit zonder de ModuLine print op de klemmen aansluiten, de hogere spanning kan de 140209 print beschadigen.
Een zenerdiode zit niet op de print, deze verstoort namelijk de gegevensoverdracht tussen thermostaat en verwarmingsketel.
PIC Basic
Het onderaan te downloaden PIC Basic programma "Nefit_V-1_NL.bas" is klein genoeg om ook met de LITE versie mee aan de slag te gaan.
Het PIC type achter DEVICE moet in de LITE versie worden gewijzigd in 12F675, want de LITE versie kent de 12F629 niet.
De interne oscillator van de 12F629 kan zodanig afwijken dat de communicatie van 300 Baud niet lukt.
Als dat het geval is, dan moet de PIC oscillator eerst afgeregeld worden met het volgende programmaatje,
sluit hiervoor een LED of een buzzer aan op GPIO.5.
DEVICE 12F629 ;Wijzig in PIC Basic LITE de 12F629 in een 12F675 type CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, MCLRE_OFF ALL_DIGITAL TRUE ;Alle ingangen digitaal OSCCAL = 200 ;Hoe hoger de waarde, des te sneller (prototype 170 ... 230) WHILE 1 = 1 HIGH GPIO.5 DELAYMS 100 LOW GPIO.5 DELAYMS 900 WEND |
De waarde achter OSCCAL
(0 ... 255) bepaalt de snelheid van de interne oscillator.
Experimenteer net zo lang met deze waarde tot de LED elke seconde even opblinkt (een buzzer
i.p.v. LED gaat nog makkelijker).
Als het afregelen gebeurt is (de LED moet ongeveer 60 keer per minuut blinken),
dan is de OSCCAL waarde van de PIC bekend en kan die waarde achter OSCCAL in het thermostaat programma "Nefit_V-1_NL.bas" worden geplaatst.
In het PIC Basic programma "Nefit_V-1_NL.bas" staat de volgende regel:
SERIN Ingang, 19697, [WAIT ("Temp"), TempWaarde] ;Wacht op juiste wachtwoord |
De SERIN instructie is hier zo ingesteld dat het wacht totdat op poort 'Ingang' een vooraf opgegeven "wachtwoord"
wordt ontvangen, voordat het tot ontvangen van data overgaat.
Zo kunnen meerdere (draadloze) ontvangers op één poort van een (draadloos) data verzendende PIC worden aangesloten.
Het instellen van een wachtwoord kan in de SERIN instructie door de optie WAIT
met daarachter tussen haakjes en aanhalingstekens het wachtwoord te plaatsen.
Het "wachtwoord" voor de ModuLine thermostaat is ingesteld op het woordje "Temp" (van temperatuur).
SERIN wacht nu eerst tot er achtereenvolgens T,e,m,p binnenkomt,
en als dat gebeurt dan wordt de data die meteen daarna wordt ontvangen in de variabele
'TempWaarde' opgeslagen.
De '19697' is het getal dat de baudrate op 300 Baud (geïnverteerd) zet
(voor berekening van de baudrate zie de PIC Basic HELP functie bij de instructie
SERIN).
De zendende PIC die de ontvangende PIC in de thermostaat een waarde gaat sturen, moet dus eerst de karakters T,e,m,p verzenden,
met meteen daarachter de instelwaarde voor de thermostaat, en dit alles met een snelheid van 300 Baud (= 3313).
In de zendende PIC moet SEROUT daarvoor als volgt ingesteld worden:
SEROUT Uitgang, 3313, ["Temp", Waarde] ;Verzend wachtwoord "Temp" en dan 'Waarde' |
Hier zendt SEROUT op poort 'Uitgang', met een snelheid van 300 Baud (= 3313,
true),
eerst het woordje "Temp", en meteen daarna de waarde.
Hierbij moet de anode (+) van de optocoupler LED op de 140209 print het 300 Baud signaal ontvangen en moet de kathode (-) aan de GND worden verbonden.
De '3313' is het getal dat de baudrate op 300 Baud (true) zet (voor berekening van de baudrate zie de PIC Basic HELP functie bij de instructie
SEROUT).
![]() |
|
De 140209 print is getest met de Nefit Economy HRC 24. |
Het wijzigen van de temperatuursinstellingen door bijvoorbeeld de gebruiker of door tijd, gebeurt dus in de data verzendende PIC,
waarin ook de constante economy temperatuur ligt opgeslagen.
Steeds als de temperatuurswaarde in deze PIC door de gebruiker wordt gewijzigd,
verzendt deze PIC de instelling met 300 Baud naar de ontvangende PIC op de 140209 print in de ModuLine thermostaat,
waardoor de centrale verwarming aan of uit wordt gezet.
Print 140209 IC1 IC2 IC3 Weerstand Condensator |
Zelf etsen of door iemand laten maken (25mm × 28mm) PIC12F629 Download HEX bestand X9C103 digitale potmeter 10k 4N25 optocoupler 1k + 2k7 + 4k7 + 6k8 100n SMD (of multilayer type) (2×) |
Schema
De + en - aansluiting aan de ModuLine thermostaat (rechts) zijn de aansluitingen naar de ketel.
Met een omgebouwde OpenTherm® thermostaat (= geen Nefit) zou het ook moeten werken.
Het makkelijkst is om de print eerst te etsen en te boren en dan pas de hoekjes eruit zagen, niet andersom.
Als geen 100n SMD voorhanden is dan multilayer condensatoren (zie foto rechts) plaatsen, de condensatoren weglaten is geen optie.