Project showcase
LoadMaster XP - A Smart PV MPPT Solar Hot Water Controller

LoadMaster XP - A Smart PV MPPT Solar Hot Water Controller © GPL3+

A solid-state, low-cost, reliable solution for solar hot water from PV. Zero maintenance & CO2, connected, smart combi pre-heat control.

  • 33 respects

Components and supplies

Apps and online services

About this project


Solar heating of domestic hot water has traditionally been achieved using ‘Solar Thermal’ technologies (Flat plate panels or evacuated tube collectors). Whilst Solar thermal is more space efficient than Photo-voltaic (PV) in terms of the captured energy per unit area, it typically has high installation costs, is less effective during cold weather or overcast skies, has a shorter life span and can present a number of ongoing maintenance challenges and costs (mechanical pumps, antifreeze & corrosion chemicals, leaks, positioning in roof space and routing of pipework etc).

Where a larger solar collection area is available (rarely a limitation in the majority of installations), then the use of PV panels now offers a more cost effective, near zero maintenance and better performing ‘solid state’ alternative approach to solar water heating. The rapid and continued decline in PV panel costs has been instrumental in making PV hot water an attractive and economically viable approach. Loadmaster is designed to sit between an array of PV panels and a conventional electric immersion heater and is designed to moderate the load impedance of the heating element in order to maximise the collection efficiency of PV electrical energy regardless of the sky conditions.

PV systems are also more versatile than solar thermal ones, any excess electrical energy may easily be used for a variety of other purposes. LoadMaster includes an optional second output allowing excess solar energy to be diverted to electric baseboard heaters (cheap) and used for space heating once the water has reached its maximum temperature.

Where a property has a full 'Grid tied' solar electric installation, a number of commercial products are available to divert surplus electricity to the water immersion heater rather than feed it into the grid. The complexity and costs of a grid-tied system lengthens the pay back time and for many people connecting to the grid is beyond the scope of a DIY project. Any Solar system is much more expensive if you pay someone else to install it!

The LoadMaster PV hot water approach shown here offers a significantly simpler and cheaper solution ideally suited to competent DIY-er. This is a 'Fit and Forget' project with virtually zero maintenance, occasional cleaning of panels being the only maintenance need.

The LoadMaster project discussed here has two additional 'add-on' project pages, - one project adds remote internet connectivity using a DT-06 (or ESP8266-01S) Wifi-Serial terminal, and another project details the methods used to remotely display Loadmaster's operating status on a remote located, wireless connected Nextion display:-

PV Hot Water, MPPT basics!

To heat water, the electrical energy generated by the PV panels must be delivered to the electric heating element(s) in a standard hot water cylinder. Sounds simple? well, unfortunately for efficient and safe operation it's not quite as simple as connecting a heating element (and thermostat) to the DC output of your solar array.

Connecting the high voltage DC output from your PV array to a standard AC rated mechanical thermostat may lead to arcing and welding of contacts, potentially seriously compromising the safety of a hot water cylinder. Additionally, in real-world varying and non perfect sky conditions (i.e most of the time!) there will frequently be a major mismatch between the heater's load resistance and the ideal 'matched' impedance required by the PV array to deliver maximum power. This results in a loss of potential heating power, a very poor efficiency and is a ridiculous waste of your investment in PV panels'.

Let's explain the importance of maximum power point tracking using my my 3kW array as an example (2 parallel strings each comprised of 5x REC Solar 300W TP2 panels in series):-

In full sunshine the array will have a voltage to current relationship similar to that shown by the blue curve in the graph below (the V-I response graph for a single panel is usually shown in it's data sheet). The ratio of Voltage to Current at any point on the graph implies a connected load resistance of V/I ohms as shown by the green trace.

Multiplying Voltage and Current at all points along the V – I curve will show the array’s output power curve (Red trace). We can clearly see there is a peak in the arrays output power (at the vertical line) corresponding to a specific voltage and current. This is called the maximum power point. In this example, to operate at the maximum power point and thus deliver 3kW we require a load of 162V / 18.48A = 8.8Ω.

So, now lets look at the array's characteristic at about half the solar intensity (i.e it's cloudy, not mid-day etc):-

This time we can see the peak power is delivered at a slightly lower voltage but the current is now approximately half of that during full sunshine. During this reduced sunshine condition, for the array to operate at its peak power point and deliver 1.47kW we now require a matched load impedance of 160V / 9.24A = 17.3Ω .

If we still had the original 8.8Ω load connected then from this graph we can see an 8.8Ω load will pull the array voltage down to only 85V and will only produce an output power of approx 834W into the 8.8Ω load instead of the 1.47kW we could potentially have if a matched load of 17.3Ω was connected !!. We have just lost 636W due to having the wrong load impedance to suit the reduced solar conditions, - the power of equivalent to two of my 300W PV panels has simply been lost by having the wrong load impedance!.

The effective loss in power due to a mis-matched load becomes extreme when solar conditions are not at maximum, (i.e when it isn't noon on a clear sunny day, - which is most of the time!! ).

Circuits such as the LoadMaster are designed to provide Maximum Power Point Tracking (MPPT), they continuous adjust the effective load impedance presented to the solar panels such that the maximum available power is always extracted under any solar conditions and at any time of the day.

LoadMaster has and will continue to give us free hot water for a total outlay of << £1, 800 (3kW of new PV panels, 150L cylinder, roof rails etc plus some bargain hunting). PV Panels have a 25 year life guarantee and there is no reason this systems will not last beyond 25 years.

My system is configured to divert water <40°C via a pre-heat compatible LPG Combi boiler. Even in November in the UK, a 3kW array provides a high percentage of our hot water usage (2 person household). Of course, on heavily overcast, rainy days solar output will be low.

Hot water typically represents about 25-30% of a households total annual energy budget. This is a straight-forward, cost effective project for PV Hotwater. It has no Grid connection issues and is within the capability of someone having competent DIY and electronic skills. LoadMaster is a small step to protecting our fragile and over populated planet. Our planets climate is on fire. What are you doing to help?

A spreadsheet can be downloaded (at end) to estimate your likely hot water performance for a given PV array size and your location.

Loadmaster Specifics

The LoadMaster Project is based upon an Arduino Nano and the circuits basic architecture is shown below:-

C1 is a high voltage film type capacitor effectively connected across the solar array. A small value shunt resistor and voltage divider enable the Arduino to monitor the current and voltage (and hence power) being generated by the PV array.

As we know, the impedance presented by a capacitor depends upon it's state of charge. When an uncharged capacitor is initially connected, the voltage across it will be low, the charge current will be high and hence it will present a low impedance. Once fully charged a capacitor will present a very high impedance. Ultimately for MPPT operation we wish hold C1 at a state of charge which presents an impedance perfectly matched to the prevailing maximum power point conditions of the PV array. To achieve this, the Arduino rapidly switches the load on and off (using PWM at 5kHz) varying the ON:OFF ratio to effectively 'lighten the load' when sky conditions are less than optimal. In technical terms, the ON:OFF switching times of the heater load are adjusted such that just the right amount of charge (I x t) is removed from C1 to hold the array at the maximum power point. LoadMaster monitors the PV output Voltage and Current ( V x I = Power) and adjusts the ON:OFF ratio 10 times a second using a 'Perterb an Observe' (P&O) method to track the maximum power under any sky conditions.

To minimise losses, the MOSFET is switched on and off ‘hard’ (using a strong gate drive). Such fast switching edges are notorious for radiating RF noise. You certainly can’t connect such high power, sharp switching edges to a length of cable (i.e an antenna) without the risk of upsetting your wifi, local radio station, neighbors or radio regulatory body.

The Inductor and C2 provide filtering to limit dI/dt and dV/dt on the external cables. D1 is used to catch the back emf spike and energy released by the inductor when the MOSFET switches off. Whilst this arrangement may look like a low side switched buck, it isn't!. This arrangement is sometimes referred to as a Linear Current Booster - it maximises the output current without excessively loading the input. With some tweaks, this circuit could easily be used to maximise the current (i.e torque) delivered to say a DC Solar irrigation pump.

The use of high voltage DC electricity on an AC specified mechanical thermostat may lead to arcing and welding of contacts, potentially seriously compromising the safety of a hot water cylinder. Loadmaster modulates its electrical output waveform by forcing a brief period of zero load current (extinguishing any arc) at an interval of 30Hz. No evidence of arcing has been observed using this technique (at 3kW & Vmp 155V). It should also be noted that during normal operation the immersion thermostats are not used to control the cylinder temperatures, - they are adjusted to open a higher temperature simply as a safety back up. Temperature control in normal operation is achieved using sensors (DS18B20) and software.

Loadmaster Specifications

Power Supply:- 12VDC, 100mA. 2.1mm power connector centre +Ve

PV Input:- max Current 23A, max Vmp 220V, Suggested array PMax =3.8kW

Relay Output x 1 (For Combi Pre-Heat / Diverter valve control, below a specified temperature water can be diverted to a Combi Inlet)

Opto isolated logic input - For future connectivity or spare I/O

RGB Status LED - Provides 'at a glance' indication of current operating status

Single push button control - short press = display toggle. Long press = ON/OFF.

20x4 I2C Graphics LCD

Connectivity:- Serial interface is made available at a connector. Tested with HM-10 (BLE), DT-06 (Wifi) and (ESP8266-01S). A serial menu driven terminal interface provides access to all monitoring and control functions. Wifi Modules enable LAN or Internet remote access (Telnet). Highly recommended are the Android Serial Terminal apps by Kai Morich.

Temperature Sensors:- Default DS18B20 sensors are used for Heatsink, Water Cylinder top and bottom temperatures. (Alternatively Analog sensors, eg MCP9701 may also be used for cables >12m)

2nd Load Output - a second MOSFET channel is included on the hardware which can be used to dump excess power into a second load, for example space heating (currently not implemented in code).

PV Load Capacitor:

This should be a Film type capacitor with suitable voltage and ripple current ratings (typ >350VDC and >15A RMS). Suitable capacitors are frequently employed in Motor run or 'DC link applications'. (Consider caps such as EPCOS B32363 series offering M10 stud terminals, over pressure disconnect and specifically suited to high pulse applications. These are often used in large DC supply or solar installations - look for ebay bargains!). Electrolytic caps are not suitable.

The capacitance value influences the amplitude of ripple in the PV current and voltage around the peak power point. The higher the value the less ripple. Recommended value is from 200 to 400uF.

System Design, How much hot water will I get?

The average amount of energy (KWhrs) delivered into your water tank every day obviously depends on your location, size of the PV array, time of year and other efficiency losses such as shading, panel angle and direction etc. In winter months some days will be significantly higher or lower than the average, this is called weather. In the Downloads section (at end) a LoadMaster design spreadsheet includes an approximate performance calculator. The following examples show typical performance for UK and USA locations:-

An efficient 150L hot water cylinder may have a standing loss of <=50w. Overnight it may cool by 3-4°C. The above final temperature values shown above assume the cylinder starts at 15°C every morning. In reality even in mid winter, if usage is low for a day or two then stored energy will accumulate to reach the set temperature limit (in my case 60°C). A larger cylinder may be used to effectively accumulate more energy on good days. Heated water rises and fills the top of the cylinder by stratification. Whilst a larger cylinder may store more energy and hold more hot water, in poorer solar conditions its standing losses impact the net solar gain. You need to consider your daily hot water consumption, the average daily energy required to heat the water, the size of your PV array and location. There is a balancing act to be made.

Unfortunately, given everyone has different geographic locations and solar conditions, different PV panel specifications, different array configurations, different hot water consumption needs, different commercially available heater specs etc, then it's simply impossible to advise upon everyone's setup!

A spreadsheet containing design calculations and background information is provided in the downloads to help you understand and make system design choices. Calculating PV energy and water heating performance is not magic, it is simply physics, equations and basic maths that will provide a good idea of likely performance .

Clearly a single person living frugally off-grid on a hillside in Oregon who seeks just a small amount of hot water for a more comfortable life is quite different to say a family of 4 in Brisbane. However! i am still asked "what's the best configuration to use".

Perhaps consider my system as presented here, ie, a 5S x 2P array of 300W panels driving 2x 3kw/240V heaters in parallel using a 150-180L cylinder.

If more hot water & energy is required, I suggest you DO NOT go larger than a 6Sx 2P array of 330W panels again driving a 6kw or 2x 3kW/240Vheaters in parallel and using say a 200-250L cylinder.

You are responsible for you systems configuration, safety and performance!


LoadMaster has very low losses. The MOSFET power loss (Rds ON =17mΩ when cool) depends mostly on the Heater load current, I^2 x Rds Watts (plus some small switching losses) will result in a MOSFET loss I.R.O 2 to 10W. Capacitor loss is negligible. There is approx 2.5W lost in the CR Snubber resistors, (an unavoidable consequence of dissipating unwanted 'Ringing' energy caused by switching and stray inductance). A total power loss of 15W to deliver 2.985kW from 3kWs of PV input equates to >99% efficiency.

During winter months PV Hot water systems have been shown to out perform solar thermal. PV panels are more efficient in cold conditions, with approx 10% greater power at -12°C compared to 25°C.

Thermal systems become less efficient in cold ambient conditions due to increased heat loss. Small temperature differentials mean the circulating pump is activated less and so less energy is delivered to the water.

With PV hot water, even at dawn or dusk or in terrible weather you will still see LoadMaster pushing every available watts of energy into the water, even if this is 80W, water is still being heated whilst a solar thermal system would be totally inactive.

Matching Heater Resistance & PV Array

A key consideration with this design is the selection of a heating element (power rating & resistance) to match the connected PV Array's specifications.

It can be seen that at the maximum solar array output, the PWM will be 100%, the MOSFET will be continuously conducting and thus the load resistance presented to the PV array will be that of the heating element's resistance. During lower solar conditions, MPPT will adjust the PWM's ON:OFF ratio such that LoadMaster presents a higher impedance which matches the PV array's maximum power point.

Domestic immersion elements are commonly 3kW, 240V ( R=V^2/P = 19.2Ω). The ideal array to suit such an element would obviously produce Pmp=3kW @ 240Vmp, which is not always practical using standard PV panels plus different applications may required different PV powers. In all cases the PV array should ideally have a Pmp and Vmp relationship such that Vmp^2/Pmp = R heater.

In the ideal world we should aim for a Heater resistance which is ideally the same or slightly lower than the array's maximum Vmp / Imp, (or at least within say +/-10%).

The LoadMaster design spreadsheet includes a worksheet ('Load Matching Configs') which can help you review possible PV specs, array configurations and heater choices.

If using a single 3kW 240V heating element then a good array option may be 4S x2P using say Silevo Triex U285 (96 cell) panels, each 285W @ Vmp =56.6V. The resulting array is 2280W @ 226Vmp =22Ω. If you wish to use a single standard 240V / 3kw 19.2Ω heating element, 96 Cell panels are good option to consider but are not so common.

My system uses 2 x 240V 3kW immersion heaters in parallel (i.e 9.6Ω) and has a 5S x 2P array comprised of REC 300W (60 Cell) panels with Vmp =32.5V creating 3kW@ Vmp =162.5V which represents a matched load (V^2)/P = 8.8Ω. This is a close enough match to the 9.6Ω heater load. In hind sight! a 6S x 2P array configuration (i.e 3.6kW @195Vmp would equate to a 10.56Ω Mppt load, the lower 9.6Ω resistance of my parallel elements would be perfectly suited.

My Direct 150L cylinder has the two Immersion heater elements wired in parallel. Each 3kw heater element only sees a maximum power of 1.5kw and should last many years. My surplus PV in summer months is to be used for battery charging.

Some may wish to use LoadMaster in smaller, lower power and lower voltage applications and for this a range of DC heaters with a range of resistances and power ratings are available.


Hopefully by now you have spotted that this project includes:-

  • High Voltages, High Current, High Power (Electrocution and fire risks)
  • Hot Water (Scalding Risks & understanding the safety aspects of pressurized hot water storage systems)
  • Capacitors with high charge energy (NEVER short this or any high Voltages out - burns, sparks, eye injury etc)
  • Installing solar panels at height
  • etc

Like any commercial high power solar inverter or charger, the electronics should be housed inside a sealed, metal, earthed enclosure which provides some level of fire protection. If you apply relevant safety precautions and common sense this project is as safe as any other mains powered project. I accept no liability for this project, If you doubt your knowledge, skills or appreciation for the safety aspects involved then I recommend you consider a different project!

The power side of this circuit was modeled using Ti Tina.

Future Ideas!

During mid winter months and bad weather, received daily solar energy is clearly lower. There is an advantage if this reduced amount of energy is delivered into a smaller volume of water (i.e just the top of the water cylinder) such that the outlet water attains a higher and more useful temperature.

For a water cylinder having upper and lower heating elements, it is theoretically possible to utilise LoadMasters twin output capability and then intelligently control the delivery of power to each heating element independently (i.e to either both heaters in Parallel, or to just the Top or Bottom element) such that the top of the cylinder is always heated first. The control strategy would need to be based upon the water temperature at different levels and must ensure the PWM does not reach 100% (which will occur when the solar intensity (power) reaches a level high enough to require a smaller max power matching resistance than that of a single heater).

There are many ideas and options, just not enough time!,


Click here to download Circuit Schematic, build instructions, zipped libraries, design spreadsheet & other useful design files.


Loadmaster V95 Arduino
Firmware for Loadmaster PV Hotwater controller - (For PCB V4.0)
No preview (download only).


LoadMaster XP Schematic - MPPT PV Hot Water PCB Rev4
Please note:- this diagram incorporates a number of component positions which are provided to offer the potential for different configurations and functionality. PCB should be populated as required or according to build instructions (see downloads at the end)


Similar projects you might like

Autonomous Indoor Greenhouse - Mature Real Working Project

Project showcase by vinikon

  • 236 respects

Sensor-Controlled Guard Lights

Project showcase by LIMPINGLIM

  • 1 comment
  • 6 respects

Personal Weather Station (Arduino+ ESP8266 + Thingspeak)

Project tutorial by Jayraj Desai

  • 172 respects

Arduino / ESP8266 RS485 MODBUS Anemometer

Project in progress by philippedc

  • 24 respects

Humidity Sensor-Controlled Bathroom Exhaust Fan

Project showcase by LIMPINGLIM

  • 36 respects
Add projectSign up / Login