21st C alternative schematic - Strooom/SmartTherm GitHub Wiki
Version 1
I decided to keep the LM324, so the Junkers wouldn't be able to see any difference. We take the signal from a PWM digital I/O, use some plain, old transistor to go from 3.3V to 24V, then we use the LM324 to make a low-pass filter, which converts the PWM into a nice DC voltage.
Note : I used an extra BC546 transistor to ensure that when there is no drive present on the input, that the output is 0DC. This ensures that when our microcontroller is down for some reason, the heater is shut down as well instead of going to 100% power.
The PWM frequency on the ESP8266 is 1 kHz (standard). With a 1uF/390K RC circuit, this is filtered to a nice and stable DC voltage, with very small ripple.
Version 2
Version 1 worked fine for a year. Still a number of things could be improved:
- add a touch screen, in order to adjust settings without using the app on the phone
- add a galvanic isolation between the ESP and the Junkers.
- add a light sensor to determine day/night
- detect the 24V from the boiler, to determine whether it is powered or not.
Then I designed a PCB, resulting in a much cleaner solution than the prototype board. Here is the new schematic: And this is the resulting PCB: