MPPT charge controller for wind turbine

I am designing a MPPT charge controller buck/boost type.
I chose for starters two ttl mosfets (irlz44n and irlz24n).
I have read some topics on how to drive the mosfets properly.
the max switching frequency I can get on a mega board being 62.5 kHz, I wont probably have a big gain. I made a large inductor to compensate for this.
For now I have an ltspice model and a simulink one.
they seem to work well enough.
the input to the project will be a 3 phase 6 pulse rectifier driven by the wind turbine, with a large 2700uF capacitor and an inductor filter.

the arduino will have to:

-measure input, load (led lighting) and ouput (batyery) voltages and currents.
-run a mppt perturb and observe algorithm based on the measurements while keeping output voltages between 12.9 and 14.7V (lead acid charging)
-adapt voltage and current using a charge program (trickle,bulk,topping,float charge)
-perform load disconnect in case of low battery condition
-perform dump load connect/disconnect in case of high winds (input overvoltage detection). the relay NC would be on the dump load so the rectifier would power the dump load in case of arduino power off.
-perform soft start/soft shutdown and send regular telemetry including shutdown conditions (a supercapacitor would feed the arduino after a diode, so it could detect a battery disconnect situation and send a power off telemetry event)

The part where I have no practical experience is the mosfet driving part, and the transition between buck and boost. (so called dead zone) since it is digital control, i should not be worried of driving both mosfet on at the same time?... I hope so.

Any advice welcome. i can post my models later if someone is interested. now typing on the phone...

Since those MOSFETs are TTL compatible, you can drive them directly with an Arduino pin. And because you are driving them directly, you get to control when they are ON/OFF so you really don't have to worry about them both being on at the same time unless you code makes it that way :slight_smile:

Can you post a basic schematic of how you will connect your MOSFETs, windturbine and batteries please.

Driving the MOSFETs from a controller may need different circuitry due to how they are situated in the circuit.

Thanks.. Tom.... :slight_smile:

This is the schematic I have for now. there are four controlled elements on it :
the two mosfets, the dump load relay, an the load on/off relay.

Not shown voltage and current probes.
The current limiter/charge control elements on the circuit is not shown since I have not designed it yet.

And also I have just figured using the simulink model that this circuit is very poorly performing when transitioning from/to buck boost modes.

So I will probably go for a 4 switch buck/boost rectifier, since my input voltage range is quite wide too.
I suppose that the 4 switch configuration has the same IRLZ24N at high side and IRLZ44N at low side, but just stacked side to side ? Or is it another configuration ?

There lies a problem too : The arduino MEGA has only two pins controlled by timer 0, so I cannot have four independently controlled switches at 62.5 Khz.

Any advice on any Arduino model that has 4 controllable PWM pins at that frequency ?

In the future I will offload the MOSFET control to a specialized driver IC for four switch buck/boost converters and get higher switching frequencies, but for now, I would like to play with Arduino to learn a bit more.

Buck_Boost_PWM_print.asc.pdf (17.5 KB)

OPs circuit;

Tom.. :slight_smile:

But the Arduino Mega does have 5 timers. Everything does not have to be tied to Timer0. check out this cheatsheet

Edit: 6 timers, not 5 (0-5)

Mega has 6:

Peripheral Features
– Two 8-bit Timer/Counters with Separate Prescaler and Compare Mode
– Four 16-bit Timer/Counter with Separate Prescaler, Compare- and Capture Mode

My bad !
I got confused by the PWM cheatsheet.
Did not read that It stated that phase PWM correct mode is 31372 Hz max vs. Fast PWM (62500 Hz, and not just for 2 pins)

For starters I think it's good. But anyway when I see the switching capabilities of some switched mode power supplies IC, it can go up to 600 Khz or more.

In the future I will probably use a buck boost 4 leg MOSFET Driver IC. The arduino only task would be to interface with it and control the output voltage according to the MPPT loop and perform the battery charge program.

So back to the point :

This is the design I will try to drive directly :

Also :
When in buck boost transition mode, the guide says that the PWM phase should be controlled in respect one to another.

Seems that phase correct PWM can do it but it halves the frequency.
That would mean 32 Khz. a bit low but still ok for tests.

So Investigated other Arduino models with faster clocks and I found this library:

That would mean that an arduino Zero would be better suited for that kind of project ?

After much reflexion, I think I will go the modular route using a LTC3780 based synchronous buck converter and a dedicated Lead Acid charging module.
The LTC3780 module will be Arduino controlled through digital potentiometers to adjust voltage/current. between the LTC3780 module and the charger module (that expects a 16V to 20V optimal voltage) I will add a supercapacitor bank with its protection boards.

The challenge will be to charge the supercapaticor doing MPPT and raise it’s voltage to at least 16V when it could then discharge into the charger module.

I thought that adding a supercapacitor bank will smooth the input to the charger and allow it to work for longer intervals before going into undervoltage condition.

Also I though that it would be probably easier to implement MPPT this way. But that’s a guess.
For voltage and current sensing, I will be using INA219 shunt resistor measurements modules that can track power with better precision than Hall effect sensors for low currents.

The INA219 is rated for voltages above ground up to 26V. The dump load will be kicked in before it reaches 24V at the rectifier stage, and the voltage on the supercapacitor will be maintained between 16V an 20V DC.

I just hope that all the modules share common ground with the negative leads of the Lead Acid battery bank.

I will have to see when I receive them (I am pretty sure that’s the case for the Buck Boost Converter.
As for the charging module (DD30CRTA) I don’t know if it is isolated or not.

I will implement a single Schottky diode at the buck boost output level to prevent it from being back fed by the supercapacitor bank.

Arduino controlled relays will switch the dump load cement resistor crowbar and the load disconnect logic for undercharge prevention at the Lead Acid battery bank level.

If any advice, please tell me.

Schematic attached.

Schematic_HSWCC1_MainBoard_20200103114650.pdf (205 KB)

Sorry your pdf downloads and only has components, no wiring in the diagram.

It would be better if you posted an export in jpg.

Thanks.. Tom.. :slight_smile:

Thanks for the input. Hope the JPG is ok now.

Meanwhile, I started to work on the Arduino code.

Since I have not received all the modules yet, I will work “in the dark”, but will gain some time.

Will keep this thread updated.

Thanks for the schematic.
How much power will the turbine produce?
I see relay U1 acting as a bypass load switch.

What is the array of TL431 and capacitors and transistor/load resistors across the DC regulated output?
What is U15?

Check the datasheet on the digital pots, they may need to be referenced to gnd to work, they may not be isolated pots.
The pots you are "replacing" in the LTC3780 may not be ground referenced.
If you want to control the digital pots independently you will need to have separate CS lines.

Tom... :slight_smile:

The wind turbine should not put more than 50W

U1 is indeed the dump load switch. It will dump excess power in case of high winds and brake the turbine RPM.
Normally connected.

The logic will sense the voltage at the input of the rectifier and switch the dump load accordingly.

The TL431 array and capacitors is a supercapacitor bank and it’s voltage balancing / protection circuitry.
It is already assembled (two modules with 6 supercaps each), in series.

U15 is a lead acid charger, expecting voltages from 16V to 25V (the aliexpress vendor advises 16V to 20V)

When it comes to the digital pot (X9C104) they are rated for 5V max across RL and RH.

For the voltage, It seems pretty straightforward :

I plan to use only the RW and RL inputs and connect them in parallel to the lowside of the bundled pots.
I am thinking of modulating the resistance of the lowside resistor only.

I have no idea if the X9C104 works with RH floating though.

According to the LTC3780 datasheet, A potentiometer is used to from Vout to GND, with the wiper connected to VOsense. The reference voltage at V0sense is 0.8V it seems. If I setup the bundled potentiometer correctly, I should be able to stay in the safe range.

I tested it with LTSpice (All LT Power products IC are bundled with LTSpice, LTspice is called like that for a reason :slight_smile: )

Now for the Current control, I could not figure where the LTC3780 module I bought connects the dedicated pot. In the datasheet and the typical application, I only see these three pins involved in current control.


SENSE+ and SENSE- : these pins sense the voltage across a calibrated shunt resistor.
Ith: this pin is documented as this, per the datasheet :

“ITH (Pin 5/Pin 3): Current Control Threshold and Error
Amplifier Compensation Point. The current comparator
threshold increases with this control voltage. The voltage
ranges from 0V to 2.4V.”

In the typical application circuit, I only see a decoupling 2200pF capacitor followed by a 20K resistor to ground.

I tried to change the 20K resistor in the LTSpice bundled model test fixture. It does not seems to have any effect on current limit.

For anyone intested, the LTC3780 is available in the PowerProducts section of LTspice components library.
Place the component, right click on the component, “open this model test fixture”

It may all get clearer when the module arrives and I inspect the traces.

Attached the screenshot of the typical application circuit of LTC3780, courtesy Linear Technology datasheet.

Quick update :

The LTC3780 has no current control on it's own after all.
The module makers implemented current control with an external op-amp.

It's explained here :