-
WInter is comming
11/24/2020 at 11:08 • 4 commentsSo, cold temperatures are already here. I had not really touched the Node-RED PID controller after I lowered the derivative factor. It seems to be working properly. There is some overshot when adjusting the setpoint that could be corrected for, but the boiler clearly has it's own PID.
This is the current grafana output, including the gas consumption, but that is not very useful in this case because it also counts the shower (on for around 10 minutes at 9:45). The gas consumption is a rolling average and has some delay.Note that both graphs have two Y axis. "ouside" and the gas m³/h are on the right side. The green spiky plot on the bottom is the heating circuit water temperature. It's LOW, which is the whole point; running it low to maximize the condensation boiler efficiency.
-
Tuning the PID controller
04/16/2020 at 22:20 • 0 commentsLooking at the OpenTherm 2.2 spec, the only one I can find online, there is two ways to get a gas boiler to modulate it' s power output.
The first one, and the one I thought I was going to use, consists of setting the target water temperature to the maximum, and then using OpenTherm message id 14, "maximum relative modulation level setting" to limit the boiler's burn.
Unfortunately, my boiler responds with "invalid message id" for that one, so it's apparently not supported in the firmware. This leaves me with the second option which should be also fine; dynamically controlling the water temperature set point.
Some more experimentation will be needed, I am using Node-RED for the PID and the graphs. I am not sure if I am going to trust it with the PID loop permanently, but this is an excellent way to get insights and tune the PID loop.
The boiler uses it's own PID to throttle back when it's about to reach the target water temperature. |n on-off mode, that target does not change (it's the temperature dialed in on the boiler's front panel).
My goal is to reduce the target temperature so the boiler works at lower water return temperature, which boosts the condensation improving efficiency.
-
Basic firmware working, talking to the boiler
04/16/2020 at 00:23 • 0 commentsI have found several useful projects implementing OpenTherm communications the inter-pipes:
- Schelte Bron's OTGW project in which most schematics seem to be based including mine
- Garilov: https://github.com/gavrilov-i/OpenTherm https://habr.com/en/post/251539/ (in Russian)
- Ihor Melnyk: made a controller and also an Arduino library
- Jiří Praus: also made an Arduino library and interface including a very nice PCB.
I am basing my code on the last one, Jiří Praus' library is more "manual" and more "C" style but it seems to be the best starting point.
My code currently loops through 7 message types:
- Read STATUS
- Read SLAVE_CONFIG
- Read MODULATION_LEVEL
- Read CH_WATER_PRESSURE
- Read BOILER_FLOW_WATER_TEMP
- Read MAX_CH_SETPOINT
- Write CH_SETPOINT
And then repeats, reporting the current status. It also accepts a couple commands via the UART.
-
Hardware complete for now
04/15/2020 at 01:28 • 0 commentsThe interface is complete, I wanted to use a generic STM32 (bluepill) micro but also had an ESP8266EX, wemos D1 mini (clone) and an OpenTherm library that was already working with that. I did not wanted to fiddle setting the 3 required hardware timers that the library is using so that settled it.
The circuit is quite clever, based on the schematics for the OTGW, I only changed some resistor values to match the optos that I had lying around (4N28) and the fact that this micro GPIO is 3.3 volts, and not 5 volts like the PIC on the original. The big RJ connector is not connected, I might use it for power if I go the WiFi route instead of serial. I'm not sure if I trust the heating to my WiFi router, thought. Maybe not.
Here is an excellent description of this circuits's workings:
https://electronics.stackexchange.com/questions/466720/how-does-this-circuit-work-opentherm