Pressure-less solar collector controller prototype

It’s been over three month since solar collector were installed. I decided to build controller by myself. And it turned out that it stayed in prototype stage. So I put it in to enclosure and left it like is. So far it works fine – water is hot everyday, so I have nothing more to expect. I have not many pictures of build, but I think will share what I have.


I you have followed forum thread you probably are familiar what system I was building. As I mentioned the solar collector is cheap made in China and is pressureless. Normally they come with special controller which takes care of refilling tank, ensuring protection from water freezing and other special 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 collector is in direct sun it boils what leads to calcification of heater elements. Over all lifetime reduces and so efficiency.


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


Once piping is done next step was to build controller. As I mentioned it is quite fast and messy prototype. The base is built on Arduino Duemilanove with LCD keypad shield. It solves user interface problem. Controller measures two temperature values by using DS18B20 – one from solar collector and one from boiler. If solar collector water temperature is higher than secondary boiler, then pump is turned. So the heat is carried in but not out. Another problem 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.

Solar collector is also equipped with 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 controller.

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

  • Water level to be filled – less water heats faster, but also has less thermal mass;
  • Temperature difference between collector and boiler. Since some heat is lost in pipes, bigger 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 is winter and summer time 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 parameters 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 in forum.

Leave a Reply

Your email address will not be published. Required fields are marked *