Home » Solar Controllers » Best 3 MPPT Solar Charge Controller Circuits for Efficient Battery Charging
Best 3 MPPT Solar Charge Controller Circuits for Efficient Battery Charging

Best 3 MPPT Solar Charge Controller Circuits for Efficient Battery Charging

An MPPT as we all know refers to maximum power point tracking which is typically associated with solar panels for optimizing their outputs with maximum efficiency. In this post we learn the 3 best  MPPT controller circuits for efficiently harnessing solar power and charging a battery in the most efficient manner.

Where an MPPT is Used

The optimized output from MPPT circuits is primarily used for charging batteries with maximum efficiency from the available sunshine.

New hobbyists normally find the concept to difficult and get confused with the many parameters associated with MPPT, such as the maximum power point, "knee" of the I/V graph etc.

Actually there's nothing so complex about this concept, because a solar panel is nothing but just a form of power supply.

Optimizing this power supply becomes necessary because typically solar panels lack current, but posses excess voltage, this abnormal specs of a solar panel tends to get incompatible with standard loads such as 6V, 12V batteries which carry higher AH rating and lower voltage rating compared to the panel specs, and furthermore the ever-varying sunshine makes the device extremely inconsistent with its V and I parameters.

And that's why we require an intermediate device such as an MPPT which can "understand" these variations and churn out the most desirable output from a connected solar panel.

You might have already studied this simple IC 555 based MPPT circuit which is exclusively researched and designed by me and provides an excellent example of a working MPPT circuit.


The basic idea behind all MPPTs is to drop or trim down the excess voltage from the panel according to the load specs making sure that the deducted amount of voltage is converted into an equivalent amount of current, thus balancing the I x V magnitude across the input and the output always up to the mark...we cannot expect anything more than this from this useful gadget, do we?

The above automatic tracking and appropriately converting the parameters efficiently is implemented using a PWM tracker stage and a buck converter stage, or sometimes a buck-boost converter stage, although a solitary buck converter gives better results and is simpler to implement.

Design#1: MPPT using PIC16F88 with 3-Level Charging

In this post we study an MPPT circuit which is quite similar to the IC 555 design, the only difference being the use of a microcontroller PIC16F88 and an enhanced 3-level charging circuit.

MPPT using PIC16F88 with 3-Level Charging


Step wise Working Details

The basic function of the various stages can be understood with the help of the following description:

1) The panel output is tracked by extracting a couple of information from it through the associated potential divider networks.

2) One opamp from IC2 is configured as a voltage follower and it tracks the instantaneous voltage output from the panel through a potential divider at its pin3, and feeds the info to the relevant sensing pin of the PIC.

3) The second opamp from IC2 becomes responsible for tracking and monitoring the varying current from the panel and feeds the same to another sensing input of the PIC.

4) These two inputs are processed internally by the MCU for developing a correspondingly tailored PWM for the buck converter stage associated with its pin#9.

5) The PWM out from the PIC is buffered by Q2, Q3 for triggering the switching P-mosfet safely. The associated diode protects the mosfet gate from overvolatges.

6) The mosfet switches in accordance with the switching PWMs and modulates the buck converter stage formed by the inductor L1 and D2.

7) The above procedures produce the most appropriate output from the buck converter which is lower in voltage as per the battery, but rich in current.

8) The output from the buck is constantly tweaked and appropriately adjusted by the IC with reference to the sent info from the two opamps associated with the solar panel.

9) In addition to the above MPPT regulation, the PIC is also programmed to monitor the battery charging through 3 discrete levels, which are normally specified as the bulk mode, absorption mode, an the float mode.

10) The MCU "keeps an eye" on the rising battery voltage and adjusts the buck current accordingly maintaining the correct Ampere levels during the 3 levels of charging procedure. This is done in conjunction with the MPPT control, that's like handling two situations at a time for delivering the most favorable results for the battery.

11) The PIC itself is supplied with a precision regulated voltage at its Vdd pinout through the IC TL499, any other suitable voltage regulator could be replaced here for rendering the same.

12) A thermistor can be also seen in the design this may be optional but can be effectively configured for monitoring the battery temperature and feeding the info to the PIC, which effortlessly processes this third information for tailoring the buck output making sure that the battery temperature never rises above unsafe levels.

13) The LED indicators associated with the PIC indicate the various charging states for the battery which allows the user to get an up-to-date information regarding the charging condition of the battery throughout the day.

14) The proposed MPPT Circuit using PIC16F88 with 3-Level Charging supports 12V battery charging as well as 24V battery charging without any change in the circuit, except the values shown in parenthesis and VR3 setting which needs to be adjusted to allow the output to be 14.4V at the onset for a 12V battery and 29V for a 24V battery.

Programming code can be Downloaded here

Design#2: Synchronous Switch-Mode MPPT Battery Controller

The second design is based on the device bq24650 which  includes an advanced built-in MPPT Synchronous Switch-Mode Battery Charge Controller. It offers a high level of input voltage regulation, which prevents the charging current to the battery each time input voltage drops below a specified amount. Learn More:

Whenever the input is attached with a a solar panel, the supply stabilization loop pulls down the charging amp to ensure that the solar panel is enabled to produce maximum power output.

How the IC BQ24650 Functions

The bq24650 promises to provide a constant-frequency synchronous PWIVI controller with optimal level of accuracy with current and voltage stabilization, charge preconditioning, charge cut-off, and charging level checking.

The chip charges the battery in 3 discrete levels: pre-conditioning, constant current, and constant voltage.

Charging is is cut-off as soon as the amp level nears the 1/10 of the rapid charging rate. The pre-charge timer is set to be at 30 minutes.

The bq2465O without a manual intervention restarts the charging procedure in case the battery voltage reverts below an internally set limit or reaches a minimum quiescent amp sleep mode while the input voltage goes below the battery voltage.

The device is designed to charge a battery from 2.1V to 26V with VFB internally fixed to a 2.1V feedback point. The charging amp spec is preset internally by fixing a well matched sensing resistor.

The bq24650 can be procured with a 16 pin, 3.5 x 3.5 mm^2 thin QFN option.

Circuit Diagram


The bq24G50 employs an extremely accurate voltage regulator for the deciding on the charging voltage. The charging voltage is preset by means of a a resistor divider from the battery to ground, with the midpoint hooked up the VFB pin.

The voltage at the VFB pin is clamped to 2.1V, in order to produce the following formula for the level of regulation voltage:

V(batt) = 2.1V x [1 + R2/R1]

where R2 is linked from VFB to the battery and R1 is connected from VFB to GND. Li-Ion, LiFePO4, as well as SMF lead acid batteries are ideally supported battery chemistries.

A majority of over the shelf Li-ion cells can now be effectively charged up to 4.2V/cell. A LiFePO4 battery supports the process of a substantially higher charge and discharge cycles, but the down side is that the the energy density is not too good. The recognized cell voltage is 3.6V.

The charge profile of the two cells Li-Ion and LiFePO4 is preconditioning, constant current, and constant voltage. For an effective charge/discharge life, the end-of-charge voltage limit may possibly be cut down to 4.1V/cell however it‘s energy density could become a lot lower compared to the Li-based chemical specification, lead acid continues to be much preferred battery because of its reduced production expenses as well as rapid discharge cycles.

The common voltage threshold is from 2.3V to 2.45V. After the battery is seen to be completely topped up, a float or trickle charge becomes mandatory in order make up for the self-discharge. The trickle charge threshold is 100mV-200mV below the constant voltage point.


A solar panel may have an exclusive level on the V-I or V-P curve, popularly known as the Maximum Power Point (MPP), wherein the complete photovoltaic (PV) system relies with optimum efficiency and generates the required maximum output power.

The constant voltage algorithm is the most easy Maximum Power Point Tracking (MPPT) option available. The bq2465O automatically shuts down the charging amp such that the maximum power point is is enabled for producing maximum efficiency.

Switch ON Condition

The chip bq2465O incorporates a "SLEEP" comparator to identify the means of supply voltage on the VCC pin, because of the fact that VCC may be terminated both from a battery or an external AC/DC adapter unit.

If the VCC voltage is more significant the SRN voltage, and the additional criteria are fulfilled for the charging procedures, the bq2465O subsequently begins making an attempt to charge a connected battery (please see the Enabling and Disabling Charging section).

lf SRN voltage is higher with respect to the VCC, symbolizing that a battery is the source from where the power is being acquired, the bq2465O is enabled for a lower quiescent current ( <15uA) SLEEP mode to prevent amperage leakage from the battery.

lf VCC is below the UVLO limit, the IC is cut-off, after which VREF LDO is switched off.


The following concerned aspects need to be ensured before the charging process of the proposed MPPT Synchronous Switch-Mode Battery Charge Controller Circuit is initialized:

• Charging process is enabled (MPPSET > 175mV)

• The unit is not in Under-Voltage-Lock-Out (UVLO) functionality and VCC is above the VCCLOWV limit

• The IC is not in SLEEP functionality (i.e. VCC > SRN)

• VCC voltage is below the AC over-voltage limit (VCC < VACOV)

• 30ms time lapse is fulfilled after the first power-up

• REGN LDO and VREF LDO voltages are fixed at the specified junctures

• Thermal Shut (TSHUT) is not initialized - TS bad is not identified Any one of the following technical issues may inhibit the proceeding charging of the battery:

• Charging is is deactivated (MPPSET < 75mV)

• Adapter input is disconnected, provoking the IC to get into a VCCLOWV or SLEEP functionality

• Adapter input voltage is below the 100mV above battery mark

• Adapter is rated at higher voltage

• REGN or VREF LDO voltage is not as per the specs

• TSHUT IC warmth limit is identified • TS voltage happens to move out of the specified range which may indicate that the battery temperature is extremely hot or alternatively much cooler


The charger by irself soft-starts the charger power regulation current each time the charger moves into the fast-charge to establish that there is absolutely no overshoot or stressful conditions on the externally connected capacitors or the power converter.

The soft-start is featured with of stepping-up the chaging stabilization amp into eight uniformly executed operational steps next to the prefixed charging current level. All the assigned steps carry on for around 1.6ms, for a specified Up period of 13ms. Not a single external parts are called for enabling the discussed operational function.


The synchronous buck PWM converter employs a predetermined frequency voltage mode with feed-forvvard control strategy.

A version III compensation configuration let's the system to incorporate ceramic capacitors at the output stage of the converter. The compensation input stage is associated internally between the feedback output (FBO) along with an error amplifier input (EAI).

The feedback compensation stage is rigged between the error amplifier input (EAI) and error amplifier output (EAO). The LC output filter stage needs to be determined to enable a resonant frequency of around 12 kHz - 17 kHz for the device, for which the resonant frequency, fo, is formulated as:

fo = 1 / 2 π √LoCo

An integrated saw-tooth ramp is allowed to compare the internal EAO error control input to alter the duty-cycle of the converter.

The ramp amplitude is 7% of the input adapter voltage enabling it to be permanently and completely proportional to the input supply of the adapter voltage.

This cancels away any sort of loop gain alterations on account of a variation in the input voltage and simplifies the loop compensation procedures. The ramp is balanced out by 300mV so that a zero percent duty-cycIe is achieved when the EAO signal is below the ramp.

The EAO signal is likewise qualified to outnumber the saw-tooth ramp signal with a purpose to achieve a 100% duty cycIe PWM demand.

Built in gate drive logic makes it possible accomplishing 99.98% duty-cycle at the same time confirming the N-channel upper device consistently carries as much as necessary voltage to always be 100 % on.

In the event the BTST pin to PH pin voltage reduces below 4.2V for longer than three intervals, in that case the high-side n-channeI power MOSFET is switched off while the low-side n-channe| power MOSFET is triggered to draw the PH node down and charge-up the BTST capacitor.

After that the high-side driver normalizes to 100% duty-cycle procedure until the (BTST-PH) voltage is observed to decline low yet again, on account of outflow current depleting the BTST capacitor below 4.2 V, as well as reset pulse is reissued.

The predetermined frequency oscillator maintains rigid command over the switching frequency under most circumstances of input voltage, battery voltage, charge current, and temperature, simplifying output filter layout and retaining it away from the audible disturbances state.

Design#3: Fast MPPT Charger Circuit

The third best MPPT design in our list explains a simple MPPT charger circuit using the IC bq2031 from TEXAS INSTRUMENTS, which is best suited for charging high Ah lead acid batteries quickly and with a relatively fast rate


This practical application article is for the individuals who may be developing an MPPT-based lead acid battery charger with the aid of bq2031 battery charger.

This article includes a structural format for charging a 12-A-hr lead acid battery employing MPPT (maximum power point tracking) for improving charging efficiency for photovoltaic applications.


The easiest procedure for charging a battery from a solar panel systems could be to hook up the battery straight to the solar panel, however this may not the most effective technique.

Presume a solar panel bears a rating of 75 W and generates a current of 4.65 A with a voltage of 16 V at normal test environment of 25 ° C temperature and 1000 W/m2 of insolation.

The lead acid battery is rated with a voltage of 12 V; directly hooking up the solar panel to this battery would decrease the panel voltage to 12 V and only 55.8 W (12 V and 4.65 A) could be produced from the panel for charging.

A DC/DC converter may be most suitably needed for economical charging here.

This practical application document explains a model, making use of the bq2031 for effective charging.

I-V Characteristics of Solar Panel


Figure 1 displays the standard aspects of a solar panel systems. Isc is a short-circuit current that streams through the panel in case the solar panel is short circuited.

It happens to be the optimum current that may be extracted from the solar panel.

Voc is the open-circuit voltage at the terminals of the solar panel.

Vmp and Imp are the voltage and current levels where maximum power can be purchased from the solar panel.

While the sunshine decreases the optimum current (Isc) which may be attained, the highest current from the solar panel also suppresses. Figure 2 indicates variation of I-V characteristics with sun light.

The blue curve links the details of the maximum power at various values of insolation

The reason for the MPPT circuit is to try to sustain the working level of the solar panel at the maximum power point in several sunshine conditions.

As observed from Figure 2, the voltage where maximum power is delivered does not alter greatly with sunshine.

The circuit constructed with the bq2031 makes use of this character to put into practice MPPT.

An additional current control loop is included with decrease the charge current as the daylight decreases as well as to sustain solar panel voltage around the maximum power point voltage.


bq2031-Based MPPT Charger

Figure 3 displays the schematic of a DV2031S2 board with an added current control loop added to carry out the MPPT making use of the operational amplifier TLC27L2.

The bq2031 keeps the charging current by retaining a voltage of 250 mV at sense resistance R 20. A reference voltage of 1.565 V is created by using 5 V from U2.

The input voltage is compared with the reference voltage to produce an error voltage that could be implemented at the SNS pin of bq2031 to decrease the charge current.

The voltage (V mp) where maximum power can be acquired from the solar panel is conditioned employing resistors R26 and R27. V mp = 1.565(R 26 +R 27)/R 27.

With R 27 = 1 k Ω and R 26 = 9.2 k Ω, V mp = 16 V is achieved. TLC27L2 is internally adjusted with a bandwidth of 6 kHz at V dd = 5 V. Mainly because the bandwidth of TLC27L2 is significantly below the switching frequency of bq2031, the added current control loop continues to be constant.

The bq2031 in the earlier circuit (Figure 3) offers an optimum current of 1 A.

In case the solar power panel can furnish adequate power to charge the battery at 1 A, the outer control loop does not proceed into action.

However if the insulation reduces and the solar power panel struggles to deliver sufficient energy to charge the battery at 1 A, the outer control loop decreases the charge current to preserve input voltage at V mp.

The outcomes demonstrated in Table 1 confirm the functioning of the circuit. The voltage readings in bold type signify the issue whenever the secondary control loop is minimizing the charge current to preserve input at V mp


Texas Instruments

MPPT Synchronous Switch-Mode Battery Charge Controller Circuit


About the Author

I am an electronic engineer (dipIETE ), hobbyist, inventor, schematic/PCB designer, manufacturer. I am also the founder of the website: https://www.homemade-circuits.com/, where I love sharing my innovative circuit ideas and tutorials. If you have any circuit related query, you may interact through comments, I'll be most happy to help!

71 thoughts on “Best 3 MPPT Solar Charge Controller Circuits for Efficient Battery Charging”

  1. I have 3 charge sources to charge 2 12VDC AGM 1000Ah batteries, and a continuous drain at this time unknown.
    to charge I use.
    A 12V Alternator 120 amp when the engine is running.
    A repurposed UPS 110Vac Transformer with a 14VDC output unknown current at this time. To charge at night from shore power. Need a circuit for this…

    What I am having issues finding is a controller for the following Photovoltaic cell. To charge a 12Vdc battery bank or maybe a 24V bank with some help modding.
    A 36V Solar cell.
    Max power Pmax 245W
    Max power voltage Mmp 30.7
    Max power current Imp 7.98A
    Open circuit voltage Voc 37.3v
    Open circuit current Isc 8.47A
    Max system Voltage DC600V
    Max series Fuse 15A
    Max Bypass Diode 15A
    Fire Rating Class C
    so this is the ratings on the cell.

    I want to charge a 12v bank while unplugged from the Solar so I need a circuit to provide the power to the inputs from the other sources. I seen a few circuits for the UPS that I am looking at building. The Alternator I guess I need to have a isolation on too.

    Do I need to prevent back flow from the other charge sources or is that built into the circuits???

    I have just not found any built items that meet the requirements of the solar system, and threw the UPS re-purpose, together to charge the batteries to 12v due to the constant draw from equipment that runs at night.
    I need to get the draw …

    • As far as I have understood, you have an alternator running on diesel, another alternator running on shore power, and a solar panel. You want to use all the resources to charge the mentioned battery appropriately depending on their availability, and the diesel alternator needs to be switched OFF while the remaining sources are available??

      • Pretty close,
        When I am driving the Gas/Diesel is the primary 12v source.
        When I park (day time usually) the Solar is the secondary source when the engine is off and not connected to shore power 120Vac.
        When I get home at night I plug in to shore power which also is my data connection (another project).

        I need to keep 2 12vdc batteries (1000ah each) charged via each source.
        There are many 12v circuits that I think will work but the Solar is ~30vdc that needs to charge 12vdc (14vdc) that is where I am having the issue. As far as I know a 24V solar charge control wont work…???
        But you were pretty close.

  2. Sir I am designing the charge controller for 300W PV source and 180ah battery will these circuits work ?
    plz guide me.

  3. Hi sir I am designing 14.8v 18200mAh lithium ion battery charger using 40w solar but I am.not able to make ciruit. By google I came on this post but I didn’t found any link for circuit and c code. Can you help.me in this ?

    • Hi Jignesh, This circuit was referred from one of the electronic magazines, and whatever it had I have uploaded it above, I do not have any alternative version or details for the design.

  4. Hi, Thank you for your reply. I had a look at the link you provided regarding hysteresis and noted the dual detection features of Op Amps. This has resolved another issue I have so thank you very much for your link.

  5. Hi, I really like your circuit. I understand the LM358 voltage follower circuit for voltage measurement however I don't understand the use of the 2.2k resistor.

    I would also be most grateful if you could explain the purpose of the 1.5k, 8.2k, and 68k resistors on the LM358 for low side current sensing as I am trying to do the mathematics to work out the voltage drop in mV I should expect over the 0.01 ohm currents sensing resistor. I am basing my theoretical calculations using a 20 Amp supply from the panel and the 0.01 Ω resistor. My raw calculation is 200mV however I am guessing the resistor circuit adds some gain.

    V = I x R
    V = 20 Amps x 0.01 Ω
    V = 0.2 Volts
    V = 0.2 x 1000 = 200 mV

    Any help you can provide would be greatly appreciated.

    • Hi, thanks, however this is not my circuit, it was sent to me by one of the avid readers of my blog for publishing, and that's the reason I wouldn't be able to answer your questions precisely.

      the 2k2 resistors doesn't make sense for sure unless there;s something that may be linked inside the MCU with these resistors, so you may try removing it and see if it makes any difference.

      the resistors 1.5k, 8.2k, and 68k at the inverting input appears like some kind of hysteresis arrangement, but interpreting this network looks confusing since pin#3 is grounded

      you an see a similar explanation here:


  6. Hi. Could this circuit be used for charging a 10v 640ah battery pack from solar panel 30v 10 amp to obtain 30 amp carging current? Thanks.

    • Hi, your battery will require 10 x 64 = 640 watt or 64 ampere for charging whereas the panel is rated to produce only 30 x 10 = 300 watts….so it's not possible

    • Hi Srinivas, I could not figure out the reason of using TL499, when an ordinary 7812 could also work, you can try a 7812 and check the results…

  7. I am a final year student at the University of the West Indies. For my final year project I am building this same exact circuit to charge a 12V lead acid battery using a 24V, 5A solar panel that i constructed for myself. Do I have to use a 12V 10A DC fuse?

    • Ravipal, yes that's possible for the mosfet, but if you want to use parallel diodes, then make sure to attach the sets over a common heatsink so that those diodes are able to share the heat and conduct uniformly

  8. Dear Sir,
    Circuit consist of 68,000 micro F DC capacitor. It costs too much & require big space. Is there any alternative for this?


    • Ram, higher capacitor value will allow proportionately higher current for the load and will prevent the output from dropping with higher loads….nevertheless you can dimension it as per your load wattage through some practical experimentation.

  9. hi sir,whats about d1 and d 2 to charge higher voltage battries.Do i need to change them ,because they are in series of battry.Dr they are able to handle higher voltage and current.thanks

    • Hi Ravipal, yes you are right, those diodes must be equally rated as Q1 in terms of handling the specified load voltage and current

    • ravipal, you may have to check online for this to find the favorable device…you can search for "120V 10amp mosfet datasheet" for the required results

  10. Hi sir,
    Can I use this circuit for my 1600 VA 24 volt solar inverter and 250 watt 24 volt solar PV panels? I am using two batteries in series of rating 12 volt 220 VA each.

  11. Hello sir,

    I want to charge 48 v 175 AH battery with 250 W solar panel . (Mppt voltage 30 v, MPPT current 8 A).
    I want to charge the battery with Mppt and current control. Can above circuit be useful for me?

    Please suggest the solution

    • Hello Nikhil, the above circuit is specified for 24V max, so it cannot be used for 48V application.

      and a 30V 8amp supply cannot be used for charging a 175AH battery with any modification….the current should be at least 25 amps

    • Thank you sir for your reply.

      The basic idea is to charge batteries of E vehicle. Limitation is space on roof of vehicle. Maximum 1 panel can accommodate on roof. Though charging current is less but it will keep battery charging whole day. You may please suggest suitable solution.

    • you will need a boost MPPT charger circuit which can boost the solar panel voltage to 48V.

      or you can use an external boost circuit for converting the 30V from the MPPT to 48V @ 5amp

      you can try the last circuit from the following article, and modify the transformer appropriately for getting the desired results

  12. Dear sir
    can u giv ckt diagram and ideas of PWM/MPPt based solar street light charge Controller for 200Wp panel and 200Ah battery

  13. Hi, has anyone built this and do you have any details on the inductor L1, i.e guage of wire, toroid size and number of turns?


  14. Could this circuit be used for charging a 50AH 39.5V battery pack? Would replace the solar panel with a power source cause any issues?

    • it would be possible, just make sure to change the component values accordingly which are recommended to be changed for the 24V version ….through cross multiplication.

  15. Sir can u please explain the function of voltage follower and current follower in the ic2 stage or suggest some other article related to that

    • Vijay,
      voltage follower is a configuration where the input voltage to the opamp is simply carried forward across its output but after buffering through the opamp so here opamp acts like a buffer.

      the current amplifier monitors the voltage across the sample resistor and switches its output ON or OFF depending upon the set threshold…it's a comparator actually

  16. sir,
    I want to design the same circuit for our mobile battery Having rating 2900 mAH/11.02Wh nominal charge voltage 3.8 V.Limited charge voltage 4.35 V as per any anroid mobile battery.Can I make the charger portable using the same pic based mppt technique or I should go for Linear technology or any other method mppt method to make the circuit portable.
    2.How can I add auto cut off feature in this circuit.

Leave a Comment