Twitter icon
Facebook icon
LinkedIn icon
Google icon
Reddit icon
StumbleUpon icon icon

LoadMaster XP - A Smart PV MPPT Solar Hot Water Controller

Added to IoTplaybook or last updated on: 09/10/2020
LoadMaster XP - A Smart PV MPPT Solar Hot Water Controller



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 maximize 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 payback 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:-

Things used in this project

Hardware components

Arduino Nano R3
Arduino Nano R3
× 1



ESP8266 ESP-01
Espressif ESP8266 ESP-01
× 1


Alphanumeric LCD, 20 x 4
Alphanumeric LCD, 20 x 4
× 1


Software apps and online services

Serial Bluetooth Terminal
Serial WiFi Terminal

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 nonperfect sky conditions (i.e most of the time!) there will frequently be a major mismatch of the heaters load resistance to the arrays ideal max power load. This results in a loss of potential heating power, 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 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 its datasheet). 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.

Array output in Full Sunshine
Array output in Full Sunshine

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 powerpoint. 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 let's look at the array's characteristic at about half the solar intensity (i.e it's cloudy, not mid-day, etc.).

Array output response in 50% solar conditions
Array output response in 50% solar conditions

This time we can see the peak power is delivered at a slightly lower voltage and the current is 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 in this 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 mismatched 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 continuously 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.

My System arrangement
My System arrangement

Hot water typically represents about 25-30% of a household's 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 competent DIYer with some electronics skills. LoadMaster is a small step to protecting our fragile and overpopulated planet. Our planet's climate is on fire. What are you doing to help?

A spreadsheet can be downloaded (at the 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:-

LoadMaster - Basic Architecture
LoadMaster - Basic Architecture

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 its state of charge. When an uncharged capacitor is initially connected it will have a high charge current and hence a low impedance, once fully charged a capacitor will present a high impedance. Ultimately for MPPT operation, we wish to 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 minimize 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 maximizes the output current without excessively loading the input. With some tweaks, this circuit could easily be used to maximize 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 260V, Suggest 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 a Motor run or 'DC link applications'. (Consider caps such as EPCOS B32363 series offering M10 stud terminals, overpressure 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. The recommended value is from 200 to 400uF.

Example Capacitor.
Example Capacitor.

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:-

Typical Performance:- 3kW PV array, 150L cylinder, Assumed 70% overall efficiency, Southampton UK

Typical Performance:- 3kW PV array, 150L cylinder, Assumed 70% overall efficiency, Southampton UK


Typical Performance:- 2.28kW PV array, 150L cylinder, assumes 70% overall efficiency, La Crosse, WI, USA

Typical Performance:- 2.28kW PV array, 150L cylinder, assumed 70% overall efficiency, La Crosse, WI, USA

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 capture more energy and hold more hot water, in poorer solar conditions it's standing losses impact the net solar gain. There is a balancing act to be made.

LoadMaster has very low losses. The MOSFET power loss (Rds ON =17mΩ) 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 outperform 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 watt 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

One 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%, and the MOSFET will be continuously conducting. The load resistance presented to the PV array will be that of the heating element resistance. During lower solar conditions, MPPT will adjust the PWM's ON: OFF ratio such that LoadMaster presents a higher impedance to match the PV array.

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 of course unrealistic plus some applications may only require a lower power solution. 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 equates to or is just slightly lower than the array's maximum Vmp / Imp.

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 a 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 of 8.8Ω. This is a close enough match to the heater. In hindsight! I wish I had used a 6S x 2P array configuration (i.e 3.6kW @195Vmp equates 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 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 or appreciation for the safety aspects involved then it is best to consider a different project.

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


Build Instructions may be downloaded from here.

Click to download Circuit Schematic & other useful design files.


LoadMaster XP Schematic - MPPT PV Hot Water PCB Rev4

Please note:- this diagram incorporates a number of component positions that 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).


LoadMaster - MPPT PV Hot Water Controller V80 - Arduino

This code is for PCB Rev4 and uses DS18D20 temperature sensors. Functionality for Single Hot Water Output only. Includes Software Serial data transmission for remote Nextion 3.2" enhanced Display.




 A semi-retired R&D Design Engineer now living on the Isle of Wight, South Coast of the UK

This content is provided by our content partner, an Avnet developer community for learning, programming, and building hardware. Visit them online for more great content like this.

This article was originally published at It was added to IoTplaybook or last modified on 09/10/2020.