Solar water heating switching system.
Some residential buildings have a central solar water heating system. Water (hereafter: shared water) is heated in solar panels on the roof, and than pushed through the boiler in each apartment. Note that this shared water is not mixed with the private water in each boiler; but just passes through a heat exchanger. Heat then transfers from the hotter water to the colder water.
Residents may decide to opt out of the system by closing a valve near the boiler.
Ideally, heat will pass from the shared water to the private water of each boiler, and not the other way around. Unfortunately, there is no mechanism in place to ensure that. When the sun no longer heats the solar panels, the shared water will cool, yet the private waters will still be hot from being heated during the day. Forcing the shared water through the boilers will effectively cool them. In addition, a resident may heat the water electrically. Nothing prevents the shared water from stealing the heat from the electrically heated water. This reduces the effectiveness of the electrical heater, increasing electrical bills and reducing user satisfaction.
This project consists of:
- An ESP8266 microcontroller.
- 3 temperature sensors.
- A4988 stepper driver, a stepper motor, a belt, and 3D printed valve handle adapter.
The sensors are located:
- On the shared water pipe.
- On the shared water intake pipe, as close as possible to the boiler.
- On the thermostat, inserted in the bottom of the boiler.
The MCU reads the temperatures, logs them, and decides whether to open or close the valve. It also outputs a nice graph of past temperatures and current valve status, accessible through the LAN.
The numbers in this section refer to the sensor location defined above.
Let lowerTempCutoff
be 8 degrees below the maximum temperature measured at 2.
The valve should close if any of these conditions is met:
- Temp 2 > Temp 1
- Temp 3 > Temp 1
- Temp 3 > Temp 2
- Temp 1 >
lowerTempCutoff
The valve should open if this condition is met:
- Temp 1 > (Temp 2) + 1
You can find an example in the Examples
folder. This is an html file with real-life data from my home.