{"id":776,"date":"2020-07-08T17:03:03","date_gmt":"2020-07-08T15:03:03","guid":{"rendered":"http:\/\/valentijn.sessink.nl\/?p=776"},"modified":"2020-07-08T17:03:03","modified_gmt":"2020-07-08T15:03:03","slug":"doe-het-zelf-remeha-ketel-en-arduino","status":"publish","type":"post","link":"https:\/\/valentijn.sessink.nl\/?p=776","title":{"rendered":"Doe-het-zelf: Remeha-ketel en Arduino"},"content":{"rendered":"\n<p>Ik wilde de CV-aanvoertemperatuur van mijn al wat oudere Remeha-ketel, de W21\/28 ECO, op een lagere temperatuur instellen. Ik h\u00e1d de instelling 60\u00b0 al gekozen met behulp van het &#8220;gewone&#8221; bedieningspaneel, maar ik wilde lager. Dat kan, maar je hebt er een &#8220;servicedisplay&#8221; voor nodig.<\/p>\n\n\n\n<p>Gelukkig vond ik op internet verschillende afbeeldingen van de Remeha &#8220;Print Display&#8221;, &#8220;S54802&#8221; of &#8220;S42754&#8221; &#8211; en wie weet ook nog onder andere namen of typenummers te koop. Met behulp van de volgende twee afbeeldingen bleek het vrij eenvoudig om de aansluitingen van de serviceconnector thuis te brengen:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"551\" src=\"https:\/\/valentijn.sessink.nl\/wp-content\/uploads\/2020\/06\/s-l1600-smaller-1-1024x551.jpg\" alt=\"\" class=\"wp-image-780\" srcset=\"https:\/\/valentijn.sessink.nl\/wp-content\/uploads\/2020\/06\/s-l1600-smaller-1-1024x551.jpg 1024w, https:\/\/valentijn.sessink.nl\/wp-content\/uploads\/2020\/06\/s-l1600-smaller-1-300x162.jpg 300w, https:\/\/valentijn.sessink.nl\/wp-content\/uploads\/2020\/06\/s-l1600-smaller-1-768x414.jpg 768w, https:\/\/valentijn.sessink.nl\/wp-content\/uploads\/2020\/06\/s-l1600-smaller-1.jpg 1194w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Remeha service panel &#8211; front side<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"517\" src=\"https:\/\/valentijn.sessink.nl\/wp-content\/uploads\/2020\/06\/s-l1600-achterkant-smaller-1024x517.jpg\" alt=\"\" class=\"wp-image-781\" srcset=\"https:\/\/valentijn.sessink.nl\/wp-content\/uploads\/2020\/06\/s-l1600-achterkant-smaller-1024x517.jpg 1024w, https:\/\/valentijn.sessink.nl\/wp-content\/uploads\/2020\/06\/s-l1600-achterkant-smaller-300x151.jpg 300w, https:\/\/valentijn.sessink.nl\/wp-content\/uploads\/2020\/06\/s-l1600-achterkant-smaller-768x387.jpg 768w, https:\/\/valentijn.sessink.nl\/wp-content\/uploads\/2020\/06\/s-l1600-achterkant-smaller.jpg 1338w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Remeha service panel &#8211; rear side<\/figcaption><\/figure>\n\n\n\n<p>De chip is een echte Philips, een SAA1064 &#8220;4-digit LED driver with I\u00b2C-bus interface&#8221;, een chip uit 1991 of daaromtrent. Nog even de printbanen volgen en voil\u00e0: na een uurtje studeren had ik de informatie die ruim tien jaar geleden hier <a rel=\"noreferrer noopener\" href=\"https:\/\/www.domoticaforum.eu\/viewtopic.php?f=17&amp;t=5595&amp;start=15\" target=\"_blank\">https:\/\/www.domoticaforum.eu\/viewtopic.php?f=17&amp;t=5595&amp;start=15<\/a> door gebruiker Spierie gevonden werd, ook nog eens he-le-maal zelf uitgezocht. (Chapeau).<\/p>\n\n\n\n<p>Dat kunnen we met modernere middelen best nadoen. Ik bezit nog wel wat 5V-compatible Arduino&#8217;s; ook een 5V-compatible LED-display lag in de onderdelendoos. Die laatste was gebaseerd op een TM1637 en eigenlijk is de opzet met een microcontroller dan volkomen idioot: de aansturing van de TM1637 verloopt namelijk \u00f3\u00f3k via een two-wire-interface; het enige echt belangrijke verschil is dat de SAA1064 alleen naar &#8220;adres&#8221; 0x70 luistert; de TM1637 kent geen addressering en interpreteert gewoon alles wat je aanbiedt. Onze Arduino-interface met de Remeha is dus, als je het heel kaal bekijkt, eigenlijk een heel erg ingewikkelde manier om een I\u00b2C-slave-adres uit de bus te pikken.<\/p>\n\n\n\n<p>En zelfs d\u00e1t doe ik niet goed: de SAA1064 heeft in zichzelf nog een relatief complexe logica, waarbij je achtereenvolgens een <em>instructie-byte<\/em> verzendt; deze kan 0, 1, 2, 3 of 4 zijn; na een &#8220;0&#8221; volgt eerst nog een <em>control-byte<\/em>, daarna pas volgen een of meer digits. <\/p>\n\n\n\n<p>Van al die mogelijkheden maakt mijn Remeha gelukkig helemaal geen gebruik. Deze zendt gewoon <em>altijd<\/em> een 0, daarna een control-byte met in elk geval de instelling &#8220;gebruik 4 digits&#8221; en tenslotte de vier bytes die elk een 7-segments-display symboliseren.<\/p>\n\n\n\n<p>N\u00f3g een voordeel is, dat Philips bij het ontwerp van de I\u00b2C-bus blijkbaar zo&#8217;n standaardiserende werking heeft gehad, dat de bits van de LED-segmenten in de datastroom bij de TM1637 op precies dezelfde plek zitten als bij de SAA1064. Oftewel: je kunt de datastroom \u00e9\u00e9n-op-een doorsturen vanuit de Remeha naar de TM1637.<\/p>\n\n\n\n<p>Al met al wordt het uitlezen dus best gemakkelijk. Ik hing er nog even een voeding aan, (met simpele transistor en zenerdiode) en het resultaat was dit:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"648\" height=\"564\" src=\"https:\/\/valentijn.sessink.nl\/wp-content\/uploads\/2020\/07\/remeha-scheme.png\" alt=\"\" class=\"wp-image-792\" srcset=\"https:\/\/valentijn.sessink.nl\/wp-content\/uploads\/2020\/07\/remeha-scheme.png 648w, https:\/\/valentijn.sessink.nl\/wp-content\/uploads\/2020\/07\/remeha-scheme-300x261.png 300w\" sizes=\"auto, (max-width: 648px) 100vw, 648px\" \/><\/figure>\n\n\n\n<p>De TM1637 is in het schema niet zichtbaar &#8211; die hang je eenvoudig aan de pennen 8 en 9 &#8211; let op de pull-up-weerstanden.<\/p>\n\n\n\n<p>De code is zo goed als triviaal, als volgt:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">#include &lt;wire.h&gt;\n#include &lt;TM1637Display.h&gt;\n#define CLK 8\n#define DIO 9\nstatic volatile byte i2ccomm[6];\n\nTM1637Display display(CLK, DIO);\n\nvoid setup() {\n  display.setBrightness(0x01);\n  \/\/ Start the I2C Bus as Slave on address 0x70\/0x71.\n  \/\/ the Wire library uses 7 bit addressing, with\n  \/\/ the last bit interpreted as read\/write:\n  \/\/ hence we listen to 0x70&gt;&gt;2 which is 0x38\n  Wire.begin(0x38);\n  \/\/ Attach a receiver function\n  Wire.onReceive(receiveEvent);\n}\nvoid receiveEvent(int bytes) {\n  if (bytes &lt;= 6) {\n    int a;\n    for (a=0; a&lt;bytes; a++) {\n      if (Wire.available()) i2ccomm[a]=Wire.read();\n    }\n  }\n}\nvoid loop() {\n  uint8_t segments[] = { \n    i2ccomm[2],i2ccomm[3],\n    i2ccomm[4],i2ccomm[5] \n  };\n  display.setSegments(segments);\n  delay(500);\n}<\/pre>\n\n\n\n<p>Het resultaat is een Remeha service-display. Op latere ketels is dit ding gewoon onderdeel van de ketel zelf, wel zo handig trouwens. In een volgend artikel zoek ik uit wat de andere I\u00b2C-berichten op de bus betekenen, want nu we toch bezig zijn, is dat eigenlijk net zo interessant.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ik wilde de CV-aanvoertemperatuur van mijn al wat oudere Remeha-ketel, de W21\/28 ECO, op een lagere temperatuur instellen. Ik h\u00e1d de instelling 60\u00b0 al gekozen met behulp van het &#8220;gewone&#8221; bedieningspaneel, maar ik wilde lager. Dat kan, maar je hebt er een &#8220;servicedisplay&#8221; voor nodig. Gelukkig vond ik op internet verschillende afbeeldingen van de Remeha&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[148,3],"tags":[],"class_list":["post-776","post","type-post","status-publish","format-standard","hentry","category-energie","category-happy-hacking"],"_links":{"self":[{"href":"https:\/\/valentijn.sessink.nl\/index.php?rest_route=\/wp\/v2\/posts\/776","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/valentijn.sessink.nl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/valentijn.sessink.nl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/valentijn.sessink.nl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/valentijn.sessink.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=776"}],"version-history":[{"count":6,"href":"https:\/\/valentijn.sessink.nl\/index.php?rest_route=\/wp\/v2\/posts\/776\/revisions"}],"predecessor-version":[{"id":793,"href":"https:\/\/valentijn.sessink.nl\/index.php?rest_route=\/wp\/v2\/posts\/776\/revisions\/793"}],"wp:attachment":[{"href":"https:\/\/valentijn.sessink.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=776"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/valentijn.sessink.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=776"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/valentijn.sessink.nl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=776"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}