Jump to content

Solar Thermal Hot Water System


Jen-in-Wellies

Featured Posts

I've mentioned the solar hot water system on my boat a couple of times over my years on CWDF. After posting about the new control electronics, several people have asked if I could describe the system in detail as it may help others wanting to install something similar. This thread will hopefully contain all the details, divided in to a number of posts based around the various sub-systems. Any questions, or anything which is unclear, then please ask.

My boat was fitted out eleven years ago, with the intention of it being a full time liveaboard vessel, able to cruise in the Summer, but with a shore line available for the Winter. To that end, I wanted easy and reliable hot water available all year round. Heating was to be by solid fuel stove, so a back boiler in the Squirrel was used to supply one coil of a twin coil calorifer. For the summer it seemed sensible to give solar thermal water heating a try. The boat has solar photovoltaics to top up the batteries on summer days when not cruising, so engine running isn't required every day in summer when not on a shore line. The usual practice of having a calorifier coil connected to the engine and running it each day for hot water could be avoided by using the nearby day star for water heating.

 

Jen

 

A couple of pictures below of the roughly 8' x 4' solar collector on the roof, along with the more usual photovoltaic (PV) solar panels.

 

 

norwood.JPG

westhaddon.jpg

Edited by Jen-in-Wellies
  • Greenie 2
Link to comment
Share on other sites

Solar Collector

Part Deux of the solar hot water epic tale.

At the time I installed my solar thermal set-up, there were several commercial systems available for domestic buildings. They divided in to two basic designs of collector, evacuated tube and flat plate. I looked at both types when selecting the one to use.

The data sheets for the evacuated tube collectors gave dire warnings of destruction if the circulating pump ever stopped while the sunshine was strong. They are also more susceptible to breakage from vandals and rather ugly looking. Both problems on a low canal roof, compared with a two storey building. They were therefore discounted and some form of flat plate collector decided on.

 

The pump system and piping also varied considerably between different manufacturers systems. Most were based on domestic central heating practice, using 15mm pipe and big central heating pumps. The pumps are 240V and consume lots of power. Not a good combination for a boat.

 

A couple of systems used low power, low voltage pumps, combined with small bore piping to the collector. Their argument was that a low flow rate allowed a higher temperature rise at the collector and good heat transfer from the coil to the water in the calorifier. One system used soft plastic piping for the collector and transfer pipe and was designed to directly heat domestic water circulated back and from the tank. This was claimed to be frost proof as the soft pipe could expand when frozen. I discounted this system as I was concerned by the long term life expectancy of the pipe.

 

The system I eventually selected was by Aton, a Dutch company. It no longer seems to be available, but their old UK distributor has kept their web site going for the benefit of former customers, so the information is still currently around. This used a copper flat plate collector with 8mm OD copper pipe soldered to it. Under the collector is extruded foam insulation and the transparent cover is a resilient plastic moulding. The collector is about 8' by 4' in size. It was designed to fit on to roof rafters, so needs a support frame. Originally I used a couple of pieces of 2"x4" wood, painted and bolted to the roof via rubber mounts. When the softwood reached the end of its life after around seven years, I replaced it with aluminium U channel. The collector is very light and has withstood the occasional vandals stone over the years in the networks less salubrious locations. It was easy to dismantle and store inside the cabin when preparing the boat for Standedge Tunnel.

 

The panel is mounted horizontally. It is meant to be mounted on a pitched south facing roof, but to supply a typical house hot water tank, so I reckoned that flat mounting would suit a smaller boat calorifier (60 litres). Flat mounting means the hardware is simpler, you don't have to worry about lowering it for cruising, or proof it against wind loads in a storm.

 

If I were building my own collector from scratch I would use aluminium sheet and tie copper tube to it with wire at regular intervals (see numerous on-line guides and Youtube videos), or use copper sheet and solder the tube as the Aton panel is. Copper sheet is much more expensive than aluminium and harder to find for sale, but it has much better thermal conductivity, so the pipes can be spaced further apart. There is also reduced risk of electrolytic corrosion as you could get with aluminium sheet to copper pipe contact. The Aton panel has a single 8mm OD copper pipe soldered to the copper sheet that winds back and forth across the width of the sheet in a serpentine pattern. The pitch between each pass of the pipe is around 5". I would use 50mm thick Celotex/Kingspan extruded foam insulation underneath, as per the Aton panel. I would probably use PVC sheet for the sides that can be easily solvent welded together and a transparent polycarbonate panel for the top to give good light transmission, appearance, life span and vandal resistance.

 

Jen

 

  • Greenie 2
Link to comment
Share on other sites

Plumbing and Pumping

Another thrilling episode. Buy the series on DVD! 

Pipework too and from the collector is 8mm OD copper, as used for domestic microbore central heating systems and readily available, with compression fittings, from plumbers merchants. Flow goes from the pump, through the collector, back down to the calorifier, through the 15mm cauliflower coil, then back to the pump. There is insulation on most of the pipe runs to prevent heat loss before it can reach the calorifier. I used black 40mm PVC waste water drain pipe over the insulation where it is outside the boat to protect the foam from sun UV damage. The pipework is taken through the roof with through bulkhead fittings.

 

The pump is a low power 24V one. The Aton system is powered by a single 20W solar panel that originally ran both the pump and control electronics. This produces around 19V open circuit, so the 24V pump is under-run. The solar thermal electrics and PV panel, as I installed it, is independent of the boats 12V electrics and solar PV panels.

 

These days, the control electronics is run from the boat 12V supply via a step down module to 5V, but the pump is still on the 19V unregulated 20W panel, switched via a relay. A similar system could be built with a 12V pump, worked off the boats normal domestic supply. The pump is very quiet. I have tried a smaller cheap ebay 12V pump that gave similar flow rates as an experiment, but it was very noisy and its life expectancy is unknown. It is kept as a spare, in case the 24V one fails.

 

Frost protection was provided by a check valve. When the pump switches off, the weight of water going up to the roof opens the check valve, allowing air in to the pipework. The water then drains back by gravity to the header tank. The small bore piping allows this to happen as it works as a capilliary tube. When the pump starts again, the pressure closes the check valve and the coolant circulates back up through the collector. This has not been reliable. At first it worked well, but after a while both the original and a replacement check valve wouldn't open reliably. Possibly this would work better on a house installation with a greater head to a roof collector provides more suction to help open the check valve. Without a reliable drain back valve the system needs antifreeze to protect the external pipework and collector. I used propylene glycol antifreeze as this isn't poisonous, unlike ethylene glycol. One winter I had allowed the antifreeze concentration to fall too low and did get frost damage to the collector that had to be fixed.

 

The pump, drain back valve, header tank and filter were originally contained in a drain back unit supplied by Aton. This used plastic pneumatic pipe and fittings inside. After a number of years these fittings started to leak. Possibly the antifreeze degraded the o-ring seals. I therefore built a new unit, replicating the design, using the existing pump and filter, but with metal pipework and fittings and a drain back tank made from a Midland Swindlers header tank. See the picture below. I've labelled it, so it acts as a plumbing diagram too.

 

Jen

 

drain-back.png

  • Greenie 2
Link to comment
Share on other sites

Control Electronics

Book Four of the Trilogy.

The control system is almost as simple as it could get. A single light dependent resistor is mounted on the roof. As the sunshine gets stronger the resistance decreases. At a preset level the controller switches on the pump. There are delays in there so that passing clouds don't have the pump cycling on and off. A thermistor needs to be on the calorifier to measure the temperature and disable the pump if the calorifier gets too hot and risks boiling. I fitted this by cutting a slit in the insulation and poking the thermistor to the bottom to sit against the copper cylinder, near the top. A second thermistor is used to work a calorifier temperature gauge on the control panel. There is also an hours run meter that counts when the pump is on. More sophisticated control is possible, measuring temperatures at the calorifier and panel, but this method has worked very well.

 

After ten years use I found the controller on threshold had drifted and the pump wasn't being switched on when useful heat could still be extracted. A new panel and control electronics, with combined cauliflower temperature indicators was built. This will be detailed in another post.

 

Jen

 

Photos below of the 20W solar panel that powers the circulation pump and a close up of the light dependent resistor. This is mounted in a small cable gland, with a transparent polycarbonate window araldited on top to weatherproof it.  

 

20W-panel.jpg

sensor.jpg

  • Greenie 2
Link to comment
Share on other sites

Performance

Season finale.

In general, I get a tank of hot water on most days during the summer, from May till September. There are a couple of weeks in Spring and Autumn where it isn't hot enough for solar water, but not cold enough to light the stove which are annoying. The only problematic days in Summer are those that are overcast with heavy rain, which are just not bright enough for the pump to run. An overcast summer is usually enough to get the water at least hot enough for a bath, or shower when you come home, 30 to 35C, but will have cooled down by the morning. Warmer days will get it up to 60C, which with the thermostatic mixing valve on the calorifier gives more hot water than you can use and still be over 40C by the morning. You have to plan your usage, particularly for laundry using a twin tub, or other hot fill machine, around the weather. I've not found this to be a chore. The temperature gauge on the control panel is very useful to help decide how you are going to use the hot water.

 

This system has worked well right from the start, but has needed quiet a bit of replacement and upgrading over the years to get round the failings in the Aton design.

 

Jen

Next season I'll go in to the design of the new control electronics.

  • Greenie 2
Link to comment
Share on other sites

we're in the process of setting something similar up for next summer in our house, although using central heating radiators painted matt black embedded in foam and covered with perspex (all stuff we have kicking around)

the biggest thing we have found is the need to heat the water in the immersion to above 60 degrees regularly to reduce the chances of legionnaires

our solution was a small program on an arduino that monitors time and temperature of the water and if it reaches 3 PM and the water hasn't gone over 60 deg in the last 48 hours it will switch on the immersion heater until the temp reaches 65 deg 

 

the reason 3 pm was chosen as the time was to allow for weaker sun to heat the water  as much as possible before falling back to electric, if it hasn't got it up to temp by 3 pm it isn't likely to do it with the remaining sunlight that day

  • Greenie 2
Link to comment
Share on other sites

1 minute ago, Jess-- said:

we're in the process of setting something similar up for next summer in our house, although using central heating radiators painted matt black embedded in foam and covered with perspex (all stuff we have kicking around)

the biggest thing we have found is the need to heat the water in the immersion to above 60 degrees regularly to reduce the chances of legionnaires

our solution was a small program on an arduino that monitors time and temperature of the water and if it reaches 3 PM and the water hasn't gone over 60 deg in the last 48 hours it will switch on the immersion heater until the temp reaches 65 deg 

 

the reason 3 pm was chosen as the time was to allow for weaker sun to heat the water  as much as possible before falling back to electric, if it hasn't got it up to temp by 3 pm it isn't likely to do it with the remaining sunlight that day

Good thinking with the immersion heater. Legionella is a risk and getting the tank over 60C on regular occasions will sterilise it nicely.

 

Link to comment
Share on other sites

1 minute ago, rusty69 said:

Thanks for posting. Very informative.

 

One question. Is the drainback tank still required if you are using antifreeze in the system?

With antifreeze, the drain down check valve doesn't have to work, or even be present, so the drainback tank acts more as a header and expansion tank. My system is open ventilated, so unpressurised and does evaporate coolant, requiring regular checking and topping up. A more sophisticated approach would be a sealed system with expansion vessel. My plumbing knowledge isn't up to that, but someone who knew their stuff could no doubt do it. 

 

Jen

Link to comment
Share on other sites

5 minutes ago, Jen-in-Wellies said:

With antifreeze, the drain down check valve doesn't have to work, or even be present, so the drainback tank acts more as a header and expansion tank. My system is open ventilated, so unpressurised and does evaporate coolant, requiring regular checking and topping up. A more sophisticated approach would be a sealed system with expansion vessel. My plumbing knowledge isn't up to that, but someone who knew their stuff could no doubt do it. 

 

Jen

Thanks. I was surprised when my collector split in many places when it froze one winter. I thought, i had drained it properly (obviously not). I wonder if the drainback works better if the panels are tilted, as they probably would be on a house installation. 

Link to comment
Share on other sites

1 minute ago, rusty69 said:

Thanks. I was surprised when my collector split in many places when it froze one winter. I thought, i had drained it properly (obviously not). I wonder if the drainback works better if the panels are tilted, as they probably would be on a house installation. 

Definitely. The Aton instructions were very firm that there should be no downhill sections in the pipework for the capilliary drain back to work properly and they assume that the panels would be tilted, either mounted on a pitched roof, or a suitable frame.

Link to comment
Share on other sites

There are all sorts of solar thermal controllers around. Most measure the temperature at the collector and compare it with that at the storage tank before deciding when to turn on the pump. A simple one that you can build yourself, or buy ready made is described here. No experience with this, but it looks like it should work well.

What I'll describe here is the Arduino based controller I built to replace the original Aton controller, when that had drifted in calibration.

 

The system on my boat is based on measuring the sunshine intensity with a light dependant resistor (LDR) on the roof of the boat. When the sun is bright enough, the pump is turned on. There is also temperature measurement of the top of the calorifier. This disables the pump if the calorifier risks overheating. It also raises the sunshine turn on threshold at higher calorifier temperatures to reduce the risk of the pump circulation actually cooling the calorifier.

 

There is a delay programmed in that means that the light level must be above the threshold for a set length of time before the pump turns on. Similarly, it must fall below a threshold for a set time before turning off. This prevents the pump turning on and off with every passing cloud.

 

The Arduino Uno works on 5V, so the boats 12V supply is stepped down with a suitable module.

 

Temperature at the calorifier is measured with a T092 packaged LM35 integrated circuit. This outputs 10mV for each degree centigrade from 0C upwards. There is a nice Arduino library that works well with this. There is a resistor and capacitor in series between the signal and ground lines by the IC to make the output more stable over the 1m or so of cable between the calorifier and controller. This is described in the LM35 data sheet. The LM35, passives and connecting wires were soldered to a small piece of veroboard and encapsulated in some heat shrink tube to protect them, leaving the plastic LM35 body exposed. The LM35 was tied to the face of a nut on a brass fitting at the top of the calorifier with a cable tie, then the whole thing insulated with foam pipe lagging.

 

The pump-on output signal from the Arduino is fed to an optically isolated relay module to actuate the pump.

 

There is an on/off switch and a DPDT centre off switch. This second switch has three positions:
Auto allows the pump to be controlled by the Arduino from sunshine and calorifier temperature values.
Off disables the pump and turns the controller in to a simple temperature monitoring and display unit.
On overides the Arduino, with the exception of the safety temperature limit measurement and runs the pump all the time when there is enough power being produced by the small 20W solar panel.

 

Power on, temperature and pump running are displayed with  a series of six 5mm LED's. The pump running LED is a flashing one with built in flash control circuitry. The other LED's are simple ones of appropriate colours. The current limiting resistors are selected based on the forward bias voltage and current limit of the LED, which vary depending on the colour. All the Arduino pins used for these LEDs, with the exception of pump-on are pulse width modulation (PWM) pins. As the different colour LED's are of different brightness, the PWM output is altered for each LED to match their brightness. There is a second LDR mounted in the face of the panel to measure the cabin light level. This light level is also used to alter the PWM output on the LED pins, so as the cabin gets darker the LED's dim and go out when the cabin is dark. This makes the LED's less distracting.

The two LDR's and the LM35 signal go to Analogue in pins on the Arduino. The LDR's are part of  resistance dividers with a suitably sized resistor to produce a voltage in to the input pin. The sunshine measurement LDR's resistor is a variable one, 200 ohms, set to its mid point of 100 ohms. This allows sunshine pump threshold adjustment in hardware as well as in software by adjusting the trim pot.

Below is the Arduino sketch, for anyone interested. The LED temperature indicators work OK, with 5C precision. It would have been equally easy to use a digital display, either LED, or LCD to give a more precise reading down to 1C and if I was building this again I would probably have used an LCD display, with the backlight triggered by the cabin LDR. If you know Arduino stuff, then this should hopefully make sense as I've documented it.

 

Jen

 

/*A solar controller to replace an Aton controller with an Arduino Uno.
   Uses an LDR to measure sunlight and turn on the pump via a relay when the sunlight reaches a threshold.
   The threshold depends on calorifier temperature, so low sunshine levels won't cool down a hot calorifier.
   Delay turning pump on and off to compensate for passing clouds.
   Pump can be overridden by a switch, either on all the time, off all the time, or auto (DPDTCO).
   LM35 IC used for temperature measurement at calorifier.
   Uses LM35 library https://www.arduinolibraries.info/libraries/lm35 to give direct Celcius readings.
   Four LED temperature indicators.
   Another LDR used to adjust LED indicators to suit ambient cabin illumination with PWM digital pins.
   Overtemperature protection, shuts off pump.
   Undertemperature frost protection shuts off pump.
   Written by Jen-in-Wellies. October 2018.
*/

#include <LM35.h> //LM35 library.

//Pin definitions
const int sunPin = 1; //Analogue Input pin from the LDR on the roof.
LM35 tankPin(0); //Analogue Input pin from the LM35 on the cauliflower.
const int ambientPin = 5; //Analogue Input pin from LDR on controller front panel.
const int ledGreen = 3; //LED power on indicator.
const int ledBlue = 9; //LED pin for 30C Blue. Warm enough for a bath.
const int ledYellow = 10; //LED pin for 40C yellow. Mixer valve threshold.
const int ledAmber = 11; //LED pin for 50C Orange. Water still hot the next day.
const int ledRed = 6; //LED pin for 60C Red. Very hot! High freq PWM pin. May interact with millis & delay, so LED least used.
const int ledPump = 2; //LED pump indicator. Green flashing.
const int relayPump = 4; //Pump output. To relay for pump and hours meter.
const int overrideSwitch = 7; //Overrides pump control. On all the time up to maximum temperature.
const int autorideSwitch = 8; //Selected for normal automatic pump operation. DPDTCO. Centre off disables pump.

//Variables
const long loopDelay = 5 * 1000L; //Delay to slow the program loop down.
float tankTemp = 0.0; //Analogue read temperature from calorifier..
int i = 0; //Measurements for averaging.
const int n = 9; //number of measurements for averaging minus 1.
int sunShine = 0; //Analogue read value from LDR. 0 to 1023.
int sunOn = 0; //LDR sunShine reading at which pump is enabled in auto.
const int sunOnLow = 290; //value between 0 and 1023 for sunOn above which the pump can be enabled in auto.
const int sunOnMed = 350; //Vary the sunOn levels depending on tankTemp, so low levels don't lead to the tankTemp dropping
const int sunOnHigh = 400;
const int tankTempLow = 40; //tankTemp at which sunOnLow is used.
const int tankTempMed = 50; //tankTemp at which sunOnMed is used
const int tank30 = 30; //value for tankTemp to light blue LED.
const int tank35 = 35; //value for tankTemp to light yellow and blue LED.
const int tank40 = 40; //value for tankTemp to light yellow LED.
const int tank45 = 45; //value for tankTemp to light yellow and amber LED.
const int tank50 = 50; //value for tankTemp to light amber LED.
const int tank55 = 55; //value for tankTemp to light amber and red LED
const int tank60 = 60; //value for tankTemp to light red LED.
const int tankMax = 70; //Max calorifier temperature. Pump shuts off.
const int tankFrost = 7; //value for tankTemp frost protection shut off.
int ambientCabin = 0; //Value between 0 and 1023 for cabin light level.
const float cabinDay = 1000.0; //Value between 0 and 1023 for a brightly lit cabin. Float to ensure PWM calc works properly.
const float cabinNight = 50.0; //Value betwixt 0 and 1023 for a cabin in the dark. Float to ensure PWM calc works properly.
int ledPWM = 0; // value for LED light level.
const long pumponDelay = 2 * 60 * 1000L; //Delay in ms before turning pump on. Cloud protection!
const long pumpoffDelay = 2 * 60 * 1000L; //Delay in ms before turning pump off. Cloud protection!
int pumpOn = 0; //Pump 1 on, or 0 off.
int persistOn = 0; //Keep pump on once it has been automatically started.
int overRide = 0; //Override switch read result.
int autoRide = 0; //AutoSwitch read result.
long turnOn1 = 0L; //timers for auto pump turn on - pumponDelay.
long turnOn2 = 0L;
long turnOff1 = 0L; //timers for auto pump turn off - pumpoffDelay
long turnOff2 = 0L;
const float ledGreenEqualise = 0.77; //Equalise 47mcd green LED PWM to adjust all to the same brightness.
const float ledBlueEqualise = 0.36; //Equalise 100mcd blue LED PWM
const float ledYellowEqualise = 1.0; //Equalise 36mcd yellow LED PWM
const float ledAmberEqualise = 0.72; //Equalise 50mcd amber LED PWM
const float ledRedEqualise = 0.55; //Equalise 65mcd red LED PWM

const int deBug = 1; //Get and print debug results over serial. 1 for enable, !=1 (0) for disable.

void setup() {
  // put your setup code here, to run once:

  //Define the output digital pins.
  pinMode(ledGreen, OUTPUT);
  pinMode(ledBlue, OUTPUT);
  pinMode(ledYellow, OUTPUT);
  pinMode(ledAmber, OUTPUT);
  pinMode(ledRed, OUTPUT);
  pinMode(relayPump, OUTPUT);
  pinMode(ledPump, OUTPUT);

  //Define input digital pins.
  pinMode(overrideSwitch, INPUT_PULLUP);
  pinMode(autorideSwitch, INPUT_PULLUP);

  //Set LED's and pump off to start.
  analogWrite(ledGreen, 0);
  analogWrite(ledBlue, 0);
  analogWrite(ledYellow, 0);
  analogWrite(ledAmber, 0);
  analogWrite(ledRed, 0);
  digitalWrite(relayPump, LOW);
  digitalWrite(ledPump, LOW);

  //test LED's, light up each one in turn, then turn all off.
  analogWrite(ledGreen, 255 * ledGreenEqualise);
  delay(500);
  analogWrite(ledBlue, 255 * ledBlueEqualise);
  delay(500);
  analogWrite(ledYellow, 255 * ledYellowEqualise);
  delay(500);
  analogWrite(ledAmber, 255 * ledAmberEqualise);
  delay(500);
  analogWrite(ledRed, 255 * ledRedEqualise);
  delay(500);
  digitalWrite(ledPump, HIGH);
  delay(2000);
  analogWrite(ledGreen, 0);
  analogWrite(ledBlue, 0);
  analogWrite(ledYellow, 0);
  analogWrite(ledAmber, 0);
  analogWrite(ledRed, 0);
  digitalWrite(ledPump, LOW);

  //initialise timers
  turnOn1 = millis();
  turnOff1 = millis();

  // start serial port at 9600 bps: Turn on by setting deBug to 1.
  if (deBug == 1) {
    Serial.begin(9600);
    /*while (!Serial) {
      ; // wait for serial port to connect. Needed for native USB port only
      }*/
  }
}

void loop() {
  // put your main code here, to run repeatedly

  //Turn off pumpOn initially as default. Only turn on if conditions are met.
  //PersistOn stays the same state unless code in the loop changes it.
  pumpOn = 0;

  //Measure the cauliflower temperature. Take average of several readings.
  tankTemp = 0;
  for (i = 0; i <= n; i++) {
    tankTemp = tankTemp + tankPin.cel();
    delay(10);
  }
  tankTemp = tankTemp / (n + 1);

  //Measure the cabin light level so LED brightness can be adjusted to suit.
  ambientCabin = analogRead(ambientPin);

  //LED's at full brightness in bright sunlight.
  if (ambientCabin >= cabinDay) {
    ledPWM = 255;
  }
  //LED's off when cabin is dark.
  if (ambientCabin <= cabinNight) {
    ledPWM = 0;
  }
  //Fade the LED's depending on cabin ambient. Linear, maybe needs to be proportional to 1/log(ambientCabin)
  if ((ambientCabin < cabinDay) && (ambientCabin > cabinNight)) {
    ledPWM = 255 * (ambientCabin - cabinNight) / (cabinDay - cabinNight);
  }

  //Light the power on LED.
  analogWrite(ledGreen, ledPWM * ledGreenEqualise);

  //Light up the appropriate calorifier temperature indicator LED's.
  //All light up if over the temperature limit.
  if (tankTemp < tank30) {
    analogWrite(ledBlue, 0);
    analogWrite(ledYellow, 0);
    analogWrite(ledAmber, 0);
    analogWrite(ledRed, 0);
  }
  if ((tankTemp >= tank30) && (tankTemp < tank35)) {
    analogWrite(ledBlue, ledPWM * ledBlueEqualise);
    analogWrite(ledYellow, 0);
    analogWrite(ledAmber, 0);
    analogWrite(ledRed, 0);
  }
  if ((tankTemp >= tank35) && (tankTemp < tank40)) {
    analogWrite(ledBlue, ledPWM * ledBlueEqualise);
    analogWrite(ledYellow, ledPWM * ledYellowEqualise);
    analogWrite(ledAmber, 0);
    analogWrite(ledRed, 0);
  }
  if ((tankTemp >= tank40) && (tankTemp < tank45)) {
    analogWrite(ledBlue, 0);
    analogWrite(ledYellow, ledPWM * ledYellowEqualise);
    analogWrite(ledAmber, 0);
    analogWrite(ledRed, 0);
  }
  if ((tankTemp >= tank45) && (tankTemp < tank50)) {
    analogWrite(ledBlue, 0);
    analogWrite(ledYellow, ledPWM * ledYellowEqualise);
    analogWrite(ledAmber, ledPWM * ledAmberEqualise);
    analogWrite(ledRed, 0);
  }
  if ((tankTemp >= tank50) && (tankTemp < tank55)) {
    analogWrite(ledBlue, 0);
    analogWrite(ledYellow, 0);
    analogWrite(ledAmber, ledPWM * ledAmberEqualise);
    analogWrite(ledRed, 0);
  }
  if ((tankTemp >= tank55) && (tankTemp < tank60)) {
    analogWrite(ledBlue, 0);
    analogWrite(ledYellow, 0);
    analogWrite(ledAmber, ledPWM * ledAmberEqualise);
    analogWrite(ledRed, ledPWM * ledRedEqualise);
  }
  if ((tankTemp >= tank60) && (tankTemp < tankMax)) {
    analogWrite(ledBlue, 0);
    analogWrite(ledYellow, 0);
    analogWrite(ledAmber, 0);
    analogWrite(ledRed, ledPWM * ledRedEqualise);
  }
  if ((tankTemp >= tankMax)) {
    analogWrite(ledBlue, ledPWM * ledBlueEqualise);
    analogWrite(ledYellow, ledPWM * ledYellowEqualise);
    analogWrite(ledAmber, ledPWM * ledAmberEqualise);
    analogWrite(ledRed, ledPWM * ledRedEqualise);
  }



  //Measure the sunshine.
  sunShine = analogRead(sunPin);

  //Check if DPDTCO switch is in auto position
  if (digitalRead(autorideSwitch) == LOW) {
    autoRide = 1;
  }
  if (digitalRead(autorideSwitch) == HIGH) {
    autoRide = 0;
  }

  //Check if DPDTCO Switch is in override position
  if (digitalRead(overrideSwitch) == LOW)  {
    overRide = 1;
  }
  if (digitalRead(overrideSwitch) == HIGH) {
    overRide = 0;
  }

  //Turn on pump if DPDTCO in override position and tank temp not too high. Turn off if temp too high, or not in override .
  if ((overRide == 1) && (tankTemp < tankMax)) {
    pumpOn = 1;
    persistOn = 0;
  }
  if ((overRide == 1) && (tankTemp >= tankMax)) {
    pumpOn = 0;
    persistOn = 0;
  }
  if ((overRide) == 0) {
    pumpOn = 0;
  }

  //Set SunOn, depending on tankTemp.
  if (tankTemp <= tankTempLow) {
    sunOn = sunOnLow;
  }
  if ((tankTemp > tankTempLow) && (tankTemp <= tankTempMed)) {
    sunOn = sunOnMed;
  }
  if (tankTemp > tankTempMed) {
    sunOn = sunOnHigh;
  }

  //Turn on Pump if sunlight is bright enough for sufficient time and tank is not too hot and in auto mode.
  if ((persistOn == 0) && (sunShine >= sunOn) && (tankTemp < tankMax) && (autoRide == 1)) {
    turnOn2 = millis();
    if ((turnOn2 - turnOn1) >= pumponDelay) {
      pumpOn = 1;
      persistOn = 1;
    }
  }
  //resets timer to current time if sun not bright enough, or goes behind a cloud before delay time is reached, or if switch is off.
  else {
    turnOn1 = millis();
  }

  //Keeps pump running in autoRide once persistOn is set to 1. As long as tankTemp is not too high.
  if ((persistOn == 1) && (tankTemp < tankMax)) {
    pumpOn = 1;
  }
  if ((persistOn == 1) && (tankTemp >= tankMax)) {
    pumpOn = 0;
    persistOn = 0;
  }

  //Turn off Pump if sunlight is too dull for sufficient time.
  if ((persistOn == 1) && (sunShine < sunOn) && (autoRide == 1)) {
    turnOff2 = millis();
    if ((turnOff2 - turnOff1) >= pumpoffDelay) {
      pumpOn = 0;
      persistOn = 0;
    }
  }
  else(turnOff1 = millis());

  //Turn off pump instantly if switch set to centre off. Reset persistOn.
  if ((overRide == 0) && (autoRide == 0)) {
    pumpOn = 0;
    persistOn = 0;
  }

  //Turn off pump instantly if tank temperature is less than frost protect threshold, or goes over upper limit..
  if ((tankTemp <= tankFrost) || (tankTemp >= tankMax)) {
    pumpOn = 0;
    persistOn = 0;
  }

  //Turn pump and indicator LED on, or off.
  if (pumpOn == 1) {
    digitalWrite(relayPump, HIGH);
    digitalWrite(ledPump, HIGH);
  }
  else {
    digitalWrite(relayPump, LOW);
    digitalWrite(ledPump, LOW);
  }

  //Housekeeping. Preventing timer buffer overflows if the system is left powered up too long.
  if ((turnOn1 > 21470000000) || (turnOn1 < -21470000000)) {
    turnOn1 = 0;
  }
  if ((turnOn2 > 21470000000) || (turnOn2 < -21470000000)) {
    turnOn2 = 0;
  }
  if ((turnOff1 > 21470000000) || (turnOff1 < -21470000000)) {
    turnOff1 = 0;
  }
  if ((turnOff2 > 21470000000) || (turnOff2 < -21470000000)) {
    turnOff2 = 0;
  }

  //Debugging. Turn on by setting deBug to 1.
  if (deBug == 1) {
    Serial.println("DEBUG");
    Serial.print("time stamp ");
    Serial.println(millis());
    Serial.print("tankTemp ");
    Serial.println(tankTemp);
    Serial.print("sunShine ");
    Serial.println(sunShine);
    Serial.print("sunOn ");
    Serial.println(sunOn);
    Serial.print("overRide ");
    Serial.println(overRide);
    Serial.print("autoRide ");
    Serial.println(autoRide);
    Serial.print("pumpOn ");
    Serial.println(pumpOn);
    Serial.print("persistOn ");
    Serial.println(persistOn);
    Serial.print("turnOn1 ");
    Serial.print(turnOn1);
    Serial.print(" turnOn2 ");
    Serial.print(turnOn2);
    Serial.print(" delta ");
    Serial.println(turnOn2 - turnOn1);
    Serial.print("turnOff1 ");
    Serial.print(turnOff1);
    Serial.print(" turnOff2 ");
    Serial.print(turnOff2);
    Serial.print(" delta ");
    Serial.println(turnOff2 - turnOff1);
    Serial.print("ambientCabin ");
    Serial.println(ambientCabin);
    Serial.print ("ledPWM ");
    Serial.println(ledPWM);
  }

  delay(loopDelay); //Slow the looping down.
}

 

Edited by Jen-in-Wellies
Link to comment
Share on other sites

7 minutes ago, Jen-in-Wellies said:

A simple one that you can build yourself, or buy ready made is described here. No experience with this, but it looks like it should work well.

That is the one i used. It did work well for the short time i used it, along with a cheap Chinese pump. 

Link to comment
Share on other sites

3 hours ago, Jen-in-Wellies said:

The pump is a low power 24V one.

And 

 

3 hours ago, Jen-in-Wellies said:

. The pump is very quiet. I have tried a smaller cheap ebay 12V pump that gave similar flow rates as an experiment, but it was very noisy and its life expectancy is unknown.

 

Could you tell the board which 24v pump exactly, is so quiet, please?

 

Many thanks...

 

 

Link to comment
Share on other sites

9 hours ago, Mike the Boilerman said:

And 

 

 

Could you tell the board which 24v pump exactly, is so quiet, please?

 

Many thanks...

 

 

I wish I could. There are no makers name, or part number on it, aside from Made in America moulded in. I have tried to find it elsewhere, but never succeeded.

Link to comment
Share on other sites

14 hours ago, Jen-in-Wellies said:

The only problematic days in Summer are those that are overcast with heavy rain, which are just not bright enough for the pump to run.

Wouldn’t a temp comparator as opposed to an LDR be a better solution then? Isn’t that why most controllers use that system?

 

Obviously you’d still need the over-temp safeguard. 

Link to comment
Share on other sites

Do I have to fit one of these please miss or can I still run my lovely fossil fueled engine for an hour to have scalding hot water for the day? oh and several amps chucked into the batteries at the same time ?

Link to comment
Share on other sites

4 minutes ago, mrsmelly said:

Do I have to fit one of these please miss or can I still run my lovely fossil fueled engine for an hour to have scalding hot water for the day? oh and several amps chucked into the batteries at the same time ?

It's useful if you don't fancy moving for a few days and already have solar putting power into your batteries, it means you don't need to run your engine at all.

 

for our experiment next year it will be tied into the existing water heating system taking us up to 4 ways of heating the same tank of water
1. heat from big wood burner (hot water + rads)
2. heat from oil burner (hot water + rads)
3. heat from solar (hot water only)
4. heat from immersion elements (hot water only)

 

we're luck that our house has a totally clear southern exposure which means that anything on that side of the house gets uninterrupted sun from 6am through to 6pm (picture below was taken at 6pm and you can see we are just about to lose the sun on the south side.

 

the only reason that there aren't solar panels all over the roof (apart from the fact that the roof is shot) is that I did the maths and worked out that it would take around 18 years to break even on the installation costs assuming the system performs perfectly with no failures, any failures (panel failure or grid tie inverter failure) would push that figure out further

 

 

DSC02128.JPG

Link to comment
Share on other sites

53 minutes ago, WotEver said:

Wouldn’t a temp comparator as opposed to an LDR be a better solution then? Isn’t that why most controllers use that system?

 

Obviously you’d still need the over-temp safeguard. 

Quiet possibly. I have described what I have done, not necessarily whatever is the best way of doing it. I don't pretend it is the ultimate system, only one that has worked reasonably well for the last decade. There is a trade off between time and money spent developing something and the incremental improvements to be made. I am happy with something that works. At some point the enthusiasm may strike and I'll look at temperature comparitors. Would be an easy thing to incorporate in to the current controller with a second LM35 in the collector going to another analogue in pin. Would need time spent data logging and analysing the results in the summer to optimise the control method.

 

Jen

49 minutes ago, mrsmelly said:

Do I have to fit one of these please miss or can I still run my lovely fossil fueled engine for an hour to have scalding hot water for the day? oh and several amps chucked into the batteries at the same time ?

Absolutely you have to fit one. What are you standing around for? Get building! ?

Edited by Jen-in-Wellies
  • Happy 1
Link to comment
Share on other sites

https://www.bimblesolar.com/thermal/thermal-kits/boat-solar-thermal-kit

 

I spotted this kit at Bimble, so thought I'd add it to this discussion.

 

33 minutes ago, Jess-- said:

the only reason that there aren't solar panels all over the roof (apart from the fact that the roof is shot) is that I did the maths and worked out that it would take around 18 years to break even on the installation costs assuming the system performs perfectly with no failures, any failures (panel failure or grid tie inverter failure) would push that figure out further

Buy some secondhand panels - £85 for 250W at Bimble at the moment.  

 

The economics of solar panels has been pure tax farming for years, but as the subsidy continues to drop they are significantly cheaper than they used to be.  We have now gone from "stick these on your roof and the government will pay you £££ for twenty years" to (more expensive) electricity generated at home.

 

As with most solar systems, if you can use it or store it yourself, they make sense.  Maybe you just need a cheap electric car to use the panel output!

 

 

Link to comment
Share on other sites

4 minutes ago, TheBiscuits said:

https://www.bimblesolar.com/thermal/thermal-kits/boat-solar-thermal-kit

 

I spotted this kit at Bimble, so thought I'd add it to this discussion.

 

 

 

Interesting. The first time I have ever seen one marketed to boaters. Looks like it heats the water directly in the panel, rather than indirectly. Would need draining down for the winter.

Jen

Link to comment
Share on other sites

Very interesting to see that Bimble kit (although not cheap). I wonder what panel they use? Can't see it listed separately on their site. Flat plate panels (particularly robust ones) are not common but definitely better suited for boats. 

 

We've installed a thermal panel earlier this year, using a second hand flat panel from eBay just resting on wooden bearers on the roof, this controller, and this pump. All connected using 10mm plastic push fit pipe and fittings from toolstation.

 

Unfortunately we have no spare coil in calorifier, and no immersion heater boss to fit one, so had to plumb it direct. This means we can't use antifreeze, so have to drain down for winter (although the controller has an anti freeze setting that circulates water in freezing conditions - ideal for cold nights in spring/autumn but you lose any remaining hot water).

 

Using push fit plumbing, lever valves, and a waterproof plug for panel sensor, it's quick and easy to, turn pump off, disconnect panel, and remove it (5 mins max). We often remove it when cruising as it's very fragile, and already had one panel broken in Birmingham, that's why I'm interested in alternative panels that may be more durable. All that's left on roof when removed, is a small black box with a plug, and couple 10mm pipe stubs showing. 

 

All in all a very worthwhile investment, particularly this summer! We had tank full of piping hot water most days, even after doing couple loads of laundry. Combined with solar PV we could go for week or more without running heating or engine (except to fill up with water!)

 

Tom

  • Greenie 1
Link to comment
Share on other sites

6 hours ago, Tom and Bex said:

Very interesting to see that Bimble kit (although not cheap). I wonder what panel they use?

Don't know but it looks similar to the Navitron Fino one, however that one is only about about 1m2 which is half the size of the Bimble one:

 

https://www.navitron.org.uk/fino-flat-plate-solar-hot-water-panel

Link to comment
Share on other sites

1 minute ago, smileypete said:

Don't know but it looks similar to the Navitron Fino one, however that one is only about about 1m2 which is half the size of the Bimble one:

 

https://www.navitron.org.uk/fino-flat-plate-solar-hot-water-panel

That is the one I had.Picked it up of fleabay for 50 quid.It really would have benefitted from having two,as it was a bit small.

Link to comment
Share on other sites

Jen wrote:

" When the sun is bright enough, the pump is turned on. There is also temperature measurement of the top of the calorifier. This disables the pump if the calorifier risks overheating."

 

So in bright sun when the calorifier is fully up to temperature, the pump is switched off. Doesn't that lead to even higher water temperatures in the collector? Boiling?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.