Introduction: Maximum Power Point Tracker for Small Wind Turbines

About: After a degree in micro-engineering in Switzerland, I moved to Russia to discover new landscapes

There is a lot of DIY wind turbine on the internet but very few explain clearly the result they obtain in terms of power or energy. Also there is often a confusion between power, voltage and current. A lot of time, people are saying : "I measured this voltage on the generator!" Nice! But it doesn't mean that you can draw current and have power (Power = voltage x current). There is also a lot of home made MPPT (Maximum Power Point Tracker) controllers for solar application but not so much for wind application. I did this project to remedy this situation.

I designed a low power (< 1W) MPPT charge controller for 3.7V (single cell) Lithium Ion Polymer batteries. I started with something small because I would like to compare different 3D printed wind turbine design and the size of these turbines should not produce much more than 1W. The final goal is to supply a stand alone station or any off grid system.

To test the controller I built a setup with a small DC motor coupled to a stepper motor (NEMA 17). The stepper motor is used as a generator and the DC motor allows me to simulate the wind pushing the turbine blades. In the next step I will explain the problem and summarize some important concepts so if you are just interested by making the board, jump to step 3.

Step 1: The Problem

We want to take kinetic energy from the wind, transform it into electricity and store that electricity in a battery. The problem is that the wind fluctuates so the available amount of energy fluctuates too. Moreover the tension of the generator depends on its speed but the battery tension is constant. How can we solve that?

We need to regulate the generator current because the current is proportional to the braking torque. Indeed there is a parallel between the mechanical world (Mechanical power = Torque x Speed) and the electrical world (Electrical power = Current x Tension)(cf. graph). The details about the electronics will be discussed later.

Where is the maximum of power? For a given wind speed, if we let the turbine spin freely (no braking torque), its speed will be maximum (and the voltage too) but we have no current so the power is null. On the other side if we maximize the drawn current, it is likely that we brake too much the turbine and that the optimum aerodynamic speed is not reached. Between these two extremums there is a point where the product of the torque by the speed is maximum. This is what we are looking for!

Now there is different approaches: For example if you know all the equations and parameters that describes the system you can probably calculate the best duty cycle for a certain wind speed and turbine speed. Or, if you know nothing, you can say to the controller: Change a bit the duty cycle then calculate the power. If it is bigger it means that we moved in the good direction so keep going in that direction. If it is lower just move the duty cycle in the opposite direction.

Step 2: The Solution

First we need to rectify the generator output with a diode bridge and then regulate the injected current in the battery with a boost converter. Other systems use a buck or a buck boost converter but as I have a low power turbine I assume that the battery voltage is always bigger than the generator output. To regulate the current we need to change the duty cycle ( Ton / (Ton+Toff) ) of the boost converter.

The parts on the right side of the schematics shows an amplifier (AD8603) with a difference input to measure the tension on R2. The result is used to deduce the current load.

The big capacitors that we see on the first image is an experiment: I turned my circuit in a Delon Voltage doubler. The conclusions are good so if more voltage is needed, just add capacitors to make the transformation.

Step 3: Tools and Material


  • Arduino or AVR programmer
  • Multimeter
  • Milling machine or chemical etching (for PCB prototyping by yourself)
  • Soldering iron, flux, soldering wire
  • Tweezers


  • Bakelite single side copper plate (60*35 mm minimum)
  • Microcontroller Attiny45
  • Operational amplifier AD8605
  • Inductor 100uF
  • 1 Schottky diode CBM1100
  • 8 Schottky diode BAT46
  • Transistors and Capacitors (size 0603) (cf. BillOfMaterial.txt)

Step 4: Making the PCB

I show you my method for prototyping but of course if you can not make PCBs at home you can order it to your favorite factory.

I used a ProxxonMF70 converted into CNC and a triangular end mill. To generate the G-Code I use a plugin for Eagle.

Then the components are soldered starting with the smaller.

You can observe that some connections are missing, this is where I make jumps by hand. I solder curved resistor legs (cf. image).

Step 5: Microcontroller Programming

I use an Arduino (Adafruit pro-trinket and FTDI USB cable) to program the Attiny45 micro-controller. Download the files to your computer, connect the controller pins:

  1. to arduino pin 11
  2. to arduino pin 12
  3. to arduino pin 13 (to controller Vin (voltage sensor) when not programming)
  4. to arduino pin 10
  5. to arduino pin 5V
  6. to arduino pin G

Then load the code on the controller.

Step 6: The Testing Setup

I made this setup (cf. picture) to test my controller. I am now able to select a speed and see how the controller reacts. Also I can estimate how much power is delivered by multiplying U and I showed on the power supply screen. Although the motor doesn't behave exactly like a wind turbine I consider that this approximation is not so bad. Indeed, as the wind turbine, when you break the motor, it slows down and when you let it turn freely, it reaches a maximum speed. (the torque-speed curve is a strait line for a DC motor and a sort of parabola for wind turbines)

I calculated a reduction gearbox (16:1) in order to have the small DC motor spinning at its most efficient speed and the stepper motor spinning at an average speed (200 rpm) for a wind turbine with low wind speed (3 m/s)

Step 7: Results

For this experiment (first graph), I used a power LED as a load. It has a forward voltage of 2.6 volts. As the tension is stabilized around 2.6, I only measured the current.

1) Power supply at 5.6 V (blue line on the graph 1)

  • generator min speed 132 rpm
  • generator max speed 172 rpm
  • generator max power 67mW (26 mA x 2.6 V)

2) Power supply at 4 V (red line on the graph 1)

  • generator min speed 91 rpm
  • generator max speed 102 rpm
  • generator max power 23mW (9 mA x 2.6V)

In the last experiment (second graph), the power is directly calculated by the controller. In this case a 3.7 V li-po battery has been used as a load.

  • generator max power 44mW

Step 8: Discussion

The first graph gives an idea of the power we can expect from this setup.

The second graph shows that there are some local maximums. This is a problem for the regulator because it gets stuck in these locals maximums. The non linearity is due to the transition between continue and discontinue inductor conduction. The good thing is that it happens always for the same duty cycle (doesn't depend on the generator speed). To avoid the controller being stuck in a local maximum, I simply restrict the duty cycle range to [0.45 0.8].

The second graph shows a maximum of 0.044 watts. As the load was a single cell li-po battery of 3.7 volt. This means that the charging current is 12 mA. (I=P/U). At this speed I can charge a 500mAh in 42 hours or use it to run an embedded micro-controller (for example the Attiny for the MPPT controller). Hopefully the wind will blow stronger.

Also here are some problems I noticed with this setup:

  • The battery over voltage is not controlled (there is a protection circuit in the battery)
  • The stepper motor has a noisy output so I need to average the measurement over a long period 0.6 sec.

Finally I decided to make another experiment with a BLDC. Because BLDCs have another topology I had to design a new board. The results obtained in the first graph will be used to compare the two generators but I will explain everything soon in another instructables.

Arduino Contest 2019

Participated in the
Arduino Contest 2019