The battery consumed quite a lot of power, but not all of it. The immersion heater needed 650W to run, so couldn't. The result was a period of under utilised solar power in the late mornings, with a trace that looks like this:
Click to view bigger |
Under software control from the PC load manager, the first relay turns the heater on and off, while a new second relay selects the power level of the heater, depending on the solar power available.
I added a pair of 6A diodes in parallel (for power handling, as the peak current when the heater is on is about 8.4A). This converts the 110V AC into half-wave rectified DC. The diodes are rated at 600V so they are pretty bullet proof. This has the effect of reducing the power consumption of the heater from 650W to just 350W; measured with an AC plug-in power meter at the 230V AC input to the transformer.
The thermostat switch on the heater ordinarily wouldn't like DC power, as it would cause arcing when the contacts open, and this would soon destroy the thermostat. But as this is half-wave DC, it still has the periods of zero Voltage in each 50Hz cycle, so the thermostat contacts can open and close as normal without arcing.
I then had to modify the control software to take advantage of the new dual power heater.
I decided to ditch the purely light level & system power level threshold system, for one that attempts to estimate the array power available for driving the heater loads (at two power levels).
Click to view bigger |
It has a seed value that is the expected array power (the "system size"). It then applies a self tuning modifier to that base value (plus/minus 200W) and then multiplies that by the measured light strength from the new sensor (as a percentage). This gives me the estimated "array power". The "system power" is the real measured output power from the Morningstar charge controller log data. This includes all loads: battery charge load, other loads (e.g. the fridge), as well as the heater load (if it happens to be on).
By comparing the real power output during times when the battery is likely to be fully loading the array with the estimated "array power", the self tuning parameter adjusts the estimate up or down, so that the estimate gets better. It has some limits set in the routine, so that it does not tune the estimate at very low light levels that would never be enough to drive the heater load. It also has some fuzziness in the tuning so that if it is within 1% of the real power, it stops hunting. If the tuning parameter gets bigger than 200W variance, it starts to modify the base assumption about the "system size", saving the change in a config file for next time the program runs.
Most of the estimate tuning happens in the MPPT bulk charge phase, as that is when the battery will absorb all the power the array can muster, and so the "system power" should equal the estimated "array power". The idea is that the tuning parameter will compensate for the distributed orientation of the panels (some are East-West, some are South, some are at steep angles, some at shallow angles). The system will also "learn" how dirty the array is (if there has been no rain for a while, and dust has collected on the panels).
The final step is that when the battery enters the absorption phase, the program looks at the estimated array power and subtracts the current "system power", which includes all non-heater loads plus charge demand, and calculates the "available power" for running the heater load. If the "available power" is greater than the low (350W) heater setting, but less than the high (650W) heater setting, it turns the heater on, and selects "low power" mode (the diode bypass relay is energised and the normally closed contacts change to be open). If the "available power" is higher than the high power setting, the diode bypass relay is de-energised, the contacts revert to the normally closed position, and the heater receives the full 110 V AC power.
The resulting power utilisation is more even, with the heater able to use low levels of available power and maintain the tank temperature. 350W is enough to very slowly heat the water, or at least compensate for losses through the insulation. It all helps. When it's sunny enough, and the other loads are low enough, the heater can run at full power (650W).
Click to view bigger |
During the absorption and float stages of battery charge, the heater decision process also includes some "array power" estimate tuning. If the heater repeatedly has to reduce power to low power, the tuning parameter slowly drifts downwards. If the heater has to be shut off due to low power, the parameter decreases more quickly. As a last resort, if the battery Voltage actually drops below the float threshold set in the load controller, then a much more severe adjustment of the parameter occurs. This behaviour means that on clear sunny days, the heater is given priority and has a tendency to stay on. On days with very changeable weather, the heater progressively errs on the side of caution, becoming less and less likely to turn on and more likely to turn off or remain in low power mode. This favours maintaining the battery charge level.
Use of a half-wave rectifier at high power (350W is a significant load) is normally frowned upon, as it presents a very non-linear AC power load (only half the cycle is used). The plug-in AC meter did show a very bad power factor (PF = 0.5). This would result in power being wasted in the wiring and generator as reactive power (current out of phase with the Voltage). But the 3kW inverter is stable into any power factor load (inductive or capacitive), and in the end, the source of the power is a DC battery or solar panel. With the very large capacitors in the inverter input (for surge delivery), the DC source is not aware of the non-linear AC load, and merely sees a useful reduction in load. The "bad" AC load does consume more of the available VA capacity of the inverter than a good power factor load would, but provided the total VA load is less than the permissible load, no harm is done.