Pressure-less solar collector controller prototype

It’s been over three months since solar collector was installed. I decided to build a controller by myself. And it turned out that it stayed in the prototype stage. So I put it into the enclosure and left it like is. So far it works fine – water is hot every day, so I have nothing more to expect. I did not capture enough pictures of the build, but I think I will share what I have.


In the forum thread, you probably saw what type of system I was building. As I mentioned, the solar collector is cheaply made in China and is pressureless. They usually come with a unique controller which takes care of refilling tank, ensuring protection from water freezing and other individual scheduled routines. Pressureless collector usually is first filled with water which heats and then it is used (mixed with cold). Initial test shows that when the collector is in direct sun, it boils what leads to calcification of heater elements. Overall lifetime reduces and so efficiency.


So my solution was to build hot water circulation into another boiler tank which is already installed and used as the main hot water supply. The circular pump forces hot water to flow and heat secondary boiler water. This gives two benefits – water in collector never boils, and we solve the problem of water pressure.


Once the piping is done the next step was to build the controller. As I mentioned, it is a makeshift prototype. The base is made on Arduino Duemilanove with LCD keypad shield. It solves a user interface problem. The controller measures two temperature values by using DS18B20 – one from the solar collector and one from the boiler. If the solar collector water temperature is higher than the secondary boiler, then the pump is turned. So the heat is carried in but not out.
Another issue that had to be solved was keeping collector water at some level. It can hold up to 100 liters of water. So I built a simple three level water sensor. Its a three conductive rings on an isolating tube.


A simple transistor key circuit helps to get logical values to Arduino digital inputs.



In order to reduce corrosion of sensor electrodes Arduino turns on power supply on them only for short period of time – while reading is done.

The whole water level sensor signal conditioning circuit along with temperature sensors:


According to sensor readings if there is insufficient water in tank, Arduino opens water valve with help of relay. The water flows until preset level is reached and shuts valve.

The solar collector is also equipped with an electric water heater. It probably can be used to heat water when there is no sun, and more practical use of it is preventing water from freezing in winter time. So, controller, I included this feature in the controller.

Arduino code is quite messy, but I left it as I sense it works for now. I included a menu system where various parameters can be set:

  • Water level to be filled – fewer water heats faster, but also has less thermal mass;
  • The temperature difference between collector and boiler. Since some heat is lost in pipes, a more significant difference like 4ºC makes more sense.
  • Pump turn level when water is too hot on collector – if temp is reached above 70ºC pump is turned on even if boiler water is same or hotter. This prevents from unintentional boiling.
  • There are winter and summertime selects. In winter all functions are shut – only heater element turns on when water is near freezing.
  • Also you can select temperature offset value for both sensors. There is a measuring error during sensor placing and contact.
  • Other parameters: LCD back-light, test functions, etc.


All settings are stored in AVR EEPROM memory, so they are preserved even on power losses. The Arduino code is here [solar_controller_1] if you would like to look closer at it. Anyway, if you have any questions don’t hesitate to ask in comments or forum.

Leave a Reply