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.

  • 58 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, 500mA. 2.1mm power connector centre +Ve

PV Input:- max Current <20A, max Vmp <200V, 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 (refer to the Assembly document)

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.

The capacitor delivers large pulses of current to the load and is wired to the Loadmasters PV+ and C- terminals. IMPORTANT:- To ensure low cable inductance (which can result in Large voltage spikes and possible circuit damage when switching high current), the capacitor MUST be connected to Loadmaster using short (ideally <10cm) and large gauge (6mm^2 or greater) cables. If possible, it is also best to connect the PV Arrays positive directly to the capacitors positive terminal like this :-

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, plus there is a System Sizing document. 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". Please look at the System Sizing document.

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 60Cell 330W panels (or 5S if 72 Cell) again driving a 6kw or 2x 3kW/240Vheaters in parallel and using say a 200-250L cylinder. (Higher voltage configurations should not be necessary, higher volts are more hazardous (Youtube 'DC arcing'), switching higher volts incurs higher dV/dt stress on components, plus 4,5 or 6S configs of 60Cell panels (4 or 5S if 72 Cell) can generally make a good match to many common 240V heater resistsances). You are responsible for you systems configuration, safety and performance!


LoadMaster has 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 peak output specifications. Loadmaster can NOT be connected to just any old array and any old heater resistance without consideration of matching. this is a simple task but must be considered early before purchasing panels or heaters.

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 reduced 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 practical, a too high voltage for Loadmaster and different applications may required different PV powers. In all cases the PV array should ideally have a Pmp and Vmp relationship such that the 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 (19.2Ω) then for a small hot water consumption system, a good array option may be a 5S x 1P array using say 275W 60Cell panels (i.e each PV panel having Vmp = 32.5V approx). The resulting array is 1,375W @ 162.5V Vmp =19.2Ω.

For a larger hot water demand, a 5S x 2P array configuration of 60 Cell 270 to 300W panels may be preferable together with a heater having around a 9 ohm resistance (say two 240V 3kW heaters in parallel).

If using 72 cell panels with a higher Vmd (approx 40V) then aim from a 4S x 1P or 2P array configuration.

Avoid exceeding Loadmasters voltage and power limits as this can result in excessive voltage transients and stress on the mosfet.

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 even better matched.

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. In the USA there are numerous AC rated heater elements available:-

3500W x 480V = 65.8Ω, 1500W x 277V = 51.15Ω, 1250W x 240V = 46.08Ω, 1500W x 240V = 38.4Ω, 2000W x 240V = 28.8Ω, 2500W x 240V = 23Ω, 2000W x 208V = 21.63Ω, 3000W x 240V = 19.2Ω, 2500W x 208V = 17.3Ω, 4500W x 277V = 17.05Ω, 3500W x 240V = 16.46Ω, 3800W x 240V = 15.16Ω, 4500W x 240V = 12.8Ω, 3500W x 208V = 12.36Ω, 5500W x 240V = 10.47Ω, 6000W x 240V = 9.6Ω, 5000W x 208V = 8.65Ω, 5500W x 208V = 7.87Ω, 6000W x 208V = 7.21Ω.SAFETY!

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 etc Like any commercial high power solar inverter or charger, the electronics MUST 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 your project, If you doubt your knowledge, skills or appreciation for the safety aspects involved then I really 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 to say just the top of a 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!,

Another nice and interesting setup, Mike in Wisconsin:- 2x LoadMasters with two PV arrays, one system is dedicated to domestic Hot water, the other provides some additional free heat input to the house using the Resistive baseboard heaters (shown at the bottom of the photo).

Latest (March 2022)

Post Covid, the electronics supply has been in a mess! Whilst most parts seem to be available, it is highly likely that you will need to source from multiple suppliers and face longer lead times, - Mouser, Digikey, Farnell, RS, Ebay, Banggood, Aliexpress etc .

The BOM (V07) has been updated to include some more alternative MOSFET devices & Capacitors.

There is a version of code ( in the download folder) which does not require the DS3232 Real time clock, coin cell or Heatsink DS18B20 temperature sensor to be fitted. This code now manages calendar date (for data logging only) via the detection of 3 hours of PV night time. V210 has a number of improvements, bug fixes and improvements.

The colour Nextion display for this project has also seen some updates. A version of code which is configured to run on 2.8" Nextion displays. (Covid made the 3.2" displays expensive and difficult to obtain. The 2.8" Nextion 'Discovery' display is a lower cost and good performance display for this project). The display's ON/OFF touch panel switch now also remotely controls the loadmaster.

I am near to publishing code that can take the serial data stream intended for a remote Nextion display, and then publishes values to Ubidots via MQTT (using a free account), - this provides very simple data logging, automatic timestamping, graphs and uses a NODEMCU / Wemos D1 etc costing <$5. I suggest that fitting the RTC is now pointless.

Please also NOTE: - Gate drive resistors (R4 & R26 = 4R7) plus Snubber resistors (R41,R42,R43 & R44,R45,R46 = 3R9) must be 'Pulse withstanding' types. For any array having Vmp > 165V, the SMD snubber resistors will run too hot and MUST be replaced with a low inductance 12R 20-30W pulse rated resistor, (typically a TO220 type with a small heatsink). The BOM is updated. And Please! - always read the build instructions first!!! See the link below:-Click here to download Circuit Schematic, build instructions, zipped libraries, design spreadsheet & other useful design files.


This code does not use the RTC for managing logging date. Unix Date value is incremented by detecting PV night time. Heat sink DS18B20 also dropped.
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

  • 248 respects

Sensor-Controlled Guard Lights

Project showcase by LIMPINGLIM

  • 7 respects

Personal Weather Station (Arduino+ ESP8266 + Thingspeak)

Project tutorial by Jayraj Desai

  • 174 respects

Arduino / ESP8266 RS485 MODBUS Anemometer

Project in progress by philippedc

  • 24 respects

Humidity Sensor-Controlled Bathroom Exhaust Fan

Project showcase by LIMPINGLIM

  • 40 respects
Add projectSign up / Login