Wind Turbine MPPT Regulator v2.3 120120
Wind Turbine MPPT Regulator v2.3 120120
Therefore, It can be a very good project to self-build our own regulator, after having been built our own Piggott wind
Turbine
1
Table of content
Introduction ........................................................................................................................................................................... 3
A little theory of MPPT ........................................................................................................................................................... 3
MPPT explanation .............................................................................................................................................................. 3
Specifications and rules...................................................................................................................................................... 5
List of materials ...................................................................................................................................................................... 6
Circuit around sensors............................................................................................................................................................ 7
List of sensors ..................................................................................................................................................................... 7
Circuit diagram around sensors ......................................................................................................................................... 8
Current sensors for Ipri and Ibat .................................................................................................................................... 9
Voltage sensors Vpri and Vsor ....................................................................................................................................... 9
Turbine speed sensor (optional) .................................................................................................................................. 10
The LCD 1602 display with I2C extension......................................................................................................................... 10
Some photos of the realization ........................................................................................................................................ 10
Tests and measures .......................................................................................................................................................... 11
The DC-DC boost converter.................................................................................................................................................. 13
The DC-DC converter ........................................................................................................................................................ 13
Circuit diagram around DC-DC converter......................................................................................................................... 14
All together for the final regulator ....................................................................................................................................... 15
Complete diagram circuit ................................................................................................................................................. 15
The final program ............................................................................................................................................................. 16
Some tips about the program .......................................................................................................................................... 25
Instructions for use .......................................................................................................................................................... 25
How to charge a battery................................................................................................................................................... 26
How to test the regulator................................................................................................................................................. 27
Putting all on a PCB .............................................................................................................................................................. 28
Updates: PCB version 2 .................................................................................................................................................... 30
Illustrations in use ................................................................................................................................................................ 30
How to code the ATmega320p alone? ................................................................................................................................. 34
Some remarks about this regulator once in use for months ............................................................................................... 34
World Wilde Contributions .................................................................................................................................................. 35
2
Introduction
Depending of the geography, there will be more or less wind. However, a wind turbine will sometime turn right,
sometime will turn too much, and sometime will not turn at all. Moreover, the amount of wind can change very quickly,
nearly instantaneously, in fact much quicker than the cloud that will shadow the solar panel.
A very high efficiency: it must be of the MPPT technology, which offer the advantage to “find” the best working
source voltage to get the best power delivery.
A very fast tracking state: due to the erratic behavior of the wind, the MPPT will be a real advantage if the best
working voltage can be reach as fast as possible.
A very good safe for the wind turbine: if it is too windy, or if there is no load, the turbine will turn freely, so it
will turn too fast until damage. That is the reason why a wind turbine regulator is built with a Dump Load
Resistor; this load will break the speed of rotation – if needed of course.
Can operate without knowing any of the wind turbine built specifications, except nominal voltage and power.
Can operate with wind turbine of 24V or 48V,
Can operate until a current of 20A. However, it is possible to easily reach 30A max. For more another sensor
must be adapted.
Can drive the charging batteries, or can be directly connected to a 230V inverter, or any load of proper
consumption
MPPT explanation
The power response of a solar panel or a wind turbine is not linear. If the voltage increases proportionally with the
amount of sun or wind, then the power grows proportionally with the amount of sun or wind. However, not indefinitely,
instead until a maximum value, then power decreases even if the voltage stays growing.
3
Power response of a
solar panel or a wind
turbine :
The fastest algorithms use hardware dependent data that dress a table of characteristics of what to do for any wind
speed, but this kind of tables are specific for a model of turbine. Moreover, we can suppose that the characteristics will
evolve with time…
In our case, the parameters we can get are: delivered voltage, available current and turbine speed.
In the most common cases the MPP is calculated with the use of the PO algorithm – Perturb and Observe – or the INC
algorithm – Incremental Conductance –
4
Algorithm PO Algorithm INC
Both algorithms are based on a similar method: the increase or the decrease of the ratio that drive a DC-DC convertor,
as a result of the comparison between actual measure and precedent’s one. We can imagine that the succession of
cycles or comparisons that makes the ration evaluates until the result is one time a little bit before the MPP, next time a
little bit after; in fact, the method is called HCS for Hill Climbing Search.
The MPPT spend its “time” to increase and decrease to climb over the “hill” – the maximum working state - ,
with no way to get it. This makes a little loss of available power. For this reason the “step” in the ratio change
should be as small as possible, to be able to reach the most possible the “hill” point that will minimize the
losses.
The time spent to reach the MPP is another way of power losses. To increase the speed the number of cycles -
of ratio changes to join the “hill”- should be the lowest possible. For this reason the “step” in the ratio change
must be the highest possible.
We can see that the “step” value is a compromise between losses in:
- the difference between the maximum to obtain and the 2 working values on both sides of the maximum,
the smaller the “step” the better it will be,
- the speed to reach this maximum area, the biggest the “step” the best it will be.
In case of sudden drop of wind, the very low power available may confuse the MPPT : in this case the ratio will
reach the maximum and then go down to the right value
The solution will be to use high accurate voltage and current sensors.
To determine the MPP there are three variables available from any wind turbine:
1- The MPPT will start when Vpri > VprimMin which means that the turbine will not have any load under this voltage to
facilitate the speed increase
5
2- The Dump Load Resistor will be connect as soon as Vpri > VpriMax. In fact, for such a voltage the MPPT is yet
stopped by its own fact.
3- The MPPT will stop if Ipri > IpriMax to prevent overcharge or short-circuit.
4- The MPPT algorithm will state as follow :
Case Vpri increase :
o If Puiss decrease we can increase the load by increasing the current : Step is positive to increase
pwm
o If Puiss increase we must do the opposite in respect of the HCS operation : Step is negative to
decrease pwm
Case Vpri decrease : the opposite actions are taken :
o If Puiss decrease then Step is negative to decrease pwm so Vpri may increase
o If Puiss increase Step is positive to increase pwm
5- Fpri can be used to determine the value of Step: the higher the rotation speed changes, the higher will be Step.
6- If Vpri < VpriMin a brutal fall down is done on Step to unload the turbine and trying so to increase Vpri. If not the
MPPT will finish to stop: with no load the turbine has much more facilities to increase speed, and voltage as well.
7- The MPPT will stop if Vsor > VsorMax to prevent overcharge battery or inverter
8- If Vsor < VsorMin the Step is forced positive – or null – in order to increase voltage, the inverter is disconnected
9- If Ibat > IbatMax the Step is forced negative – or null - in order to decrease pwm
10- If Ibat > IbatMax and MPPT stopped then the Dump Load Resistor is connected
11- If Vsor > VsorFlo the inverter is connected
VsorMin : minimal output voltage for a discharged battery, or under voltage for the inverter
VsorFlo : floating output voltage for the battery, or starting working voltage for the inverter
VsorMax : maximal output voltage for battery or the inverter
IbatMax : maximal charging current, usually 0.23 the capacity of the battery : for instance IbatMax # 13A for a
54A/H battery.
List of materials
2- One Dump Load Resistor that can absorb the total power of the wind
turbine
6
4- Two current sensors ACS712 module; there are 3 versions: 5A, 20A et
30A. For our purpose, we chose the 20A model.
7- At least (*) one Schottky diode that can stand 150V (for a 48V wind turbine) and twice the max current. For a
350W/24V wind turbine the MBR30200 is great. A (small) radiator is required.
(*) at least because it can be a very good idea to parallelize them in case of heat. In fact, the TO220 ship contains 2
diodes.
11- Two transistors like 2N2222, few 4.7V zeners, few electrolytic capacitors,
few resistors….
12- One prototype shield sized for Arduino Uno R3 or the ready to use PCB
13- One 12V power supply. It can be either a 230V/12V or a 24V/12V or 48V/12V for those who works with a battery.
14- For a realization with the PCB : a 12MHz crystal with 2x 22pF capacitors, and a Atmega328p, 1 DIP28 adapter.
List of sensors
7
Vpri range from 0 to twice the nominal wind turbine voltage :
24V : 0 – 50V divided to comply with the analog read of the Arduino, or
48V : 0 – 100V divided to comply with the analog read of the Arduino.
Ipri defined by the ACS72 circuit module: 20A in our case.
Fpri we can get the frequency above the rectifier, picking up from one of the 3 coils of the turbine.
The result signal must match a digital of the Arduino by a 0-5V square.
Vsor range from 0 to twice the maximum Vpri voltage, because the DC-DC converter is a Boost so
Then output voltage is supposed to be able to reach twice the input voltage:
24V : 0 - 100V divided to comply with the analog read of the Arduino, or
48V : 0 – 200V divided to comply with the analog read of the Arduino.
Ibat defined by the ACS72 circuit module: 20A in our case.
8
Current sensors for Ipri and Ibat
Each sensor is built with a ACS712 current sensor module for Arduino. The voltage available at their output varies from 0
to 5V, according to the current from –Imax to +Imax. So 0A gives 2.5V, and the current measured will give a variation of
the output either over 2.5V, or under 2.5V, depending of the way of wiring. The conversion ratio I/U is:
These sensors are simple voltage dividers built with R6 and R7 for Vpri, R8 and R9 for Vsor, according the formula:
with R6 = 10K :
with R6 = 10K :
D4 and D5 are 4.7V zeners that protect the Arduino entries for any surge.
R7 can be 91K + 91K in series with a switch that can shunt one of these resistors; likewise, R9 can be 180K + 180K. If so,
the regulator will comply with any 24V or 48V turbine.
Vsor must be accurate. The life of the battery depends of this accuracy. However, the resistors used has a tolerance of
5%, so the resistor divider has at least 10% of tolerance. If I have 23.7V instead of an expected value of 24V, it is a
problem. Further, we will set Vsor_calibration to correct this tolerance.
Above calculations can be done for a 12V wind turbine, or for any voltages with these 3 rules:
Results given for a 12V Wind Turbine : R7 = 38K and R8 = 95K # 91K
9
Turbine speed sensor (optional)
The turbine speed sensor is built with R5, D2 and C4 that offer a positive half-square signal lower than 5V.
1
C4 and R5 form a low frequencies pass filter according to the formula : 𝑓𝑐 =
2𝜋𝑅5 𝑐4
With Fc = 50Hz (which is yet a high speed of turbine rotation), R5 = 27K, we get C# 100nF.
At the beginning of this project, the signal on D2 and C4 went directly to input 2 of the Arduino. However, for low wind –
and very low frequencies too - the voltage is low with many accuracy maters in frequencies measures. Moreover, it is
worth once the DC-DC converter in place, because it generates many electrical parasites.
So after first disappointing tests, a homemade flip-flop is added, built with R10 to R15 and 2 bipolar small signal
transistors – like 2N2222 -
It is not required – just like the turbine speed sensor – but it is almost a good idea to easily see how the regulator is
working.
The 1602 LCD is very basic and very little expensive. As it requires many wires, we added a I2C extension which makes it
driven with 2 wires only SDA and SCL, respectively A4 and A5 Arduino Uno R3 inputs – these inputs are hardware
required -.
To be able to use the 1602 LCD I2C a specific library is needed, and must be installed on the Arduino IDE.
10
Note that this shield had undergone multiple modifications, thus the setting-up can be gratefully improved to limit
electric wires. Keep enough place for the two TC428.
All components will take place on the shield. A place must be let for future add-ons: 2 circuits TC428 and 4 LEDs.
I do not have photos of the realization, as my prototype is the result of many experiments and the components do not
take place in the best final way…
11
A simple 24V AC transformer with a rectifier and the capacitor C1 in input, output on a load of 22R 50W if allowed by
the transformer power (at least 50VA), otherwise the lowest value possible belong the transformer’s power.
12
The DC-DC boost converter
The MPPT Regulator must be able to control the current flow to the load by playing with the voltage available on the
load, according to the law P = U * I.
Either the turbine will produce a voltage lower than the nominal value (24V or 48V), and the converter will have to
develop to reach it, either the regulator will determine the correct tension, because the available current is emitted by
the law I = U / load, the correct tension is set for the best P = U* I. For a power available from the turbine, the more is
the voltage, the more is the current. Thus, the Converter will always boost voltage.
In fact, since the beginning of the project 4 different converters had been tested, in particular the buck-boost inverter
converter, but the results gave that such a circuit was always working in boost operation mode, offered a poor efficiency
of 78%, and the disadvantage to invert voltage polarity in output.
A very well description of the theory of a boost converter is given there: https://en.wikipedia.org/wiki/Boost_converter
The self must allow the nominal working current, in our case 15A, and must not saturate for very high current surge.
The diode must have the lowest forward voltage possible, that is a loss of available power and generate heat. In
addition, a fast answer, otherwise it is also a loss of available power and generate heat. So, we use a Shottky diode. The
current should be twice the need, in our case 30A. Several diodes can be placed in parallel to divide the heat between
them. The inconvenient of these diodes is the quite low inverse voltage possible before avalanche. It must be at least
twice the maximum voltage, we have chosen 200V by security.
13
The transistor is a channel N CMOS that is fast, can stand very high surge current and at least twice the maximum
voltage, The main loss of CMOS is due to the low residual resistance when it is in the switching position: Rds. The lower
Rds is the lower heat will be to dissipate.
The efficiency of a boost converter is more than 90%. Our converter is more than 94%, only the Shottky diode need a
small dissipation heat. Efficiency can be improved by replacing this diode by a CMOS for instance.
one in the input (before the self) to be able to switch the Dum Load Resistor for security
one in the output (in parallel with the load) to allow power to the inverter: in the charging battery configuration,
we must take care to its discharge level. So in this case the inverter is not always connected, but only if the
battery is correctly charged.
14
Here is a picture as a witness to a previous version:
15
Please note: relative to the two precedent diagrams, the 3 push-buttons are now added. There is also an Output and an
Inverted Output to connect a SSR: this SSR can connect an external battery charger if the batteries are becoming too
empty. Some SSR are active at LOW level, others are active at HIGH level, so both is proposed.
/*
Wind Turbine MPTT Regulator, for direct injection or battery charging
_________________________________________________________________
| |
| author : Philippe de Craene <[email protected] |
| Free of use - Any feedback is welcome |
_________________________________________________________________
Materials :
• 1* Arduino Uno R3 - IDE version 1.8.7
• 2* 20A current sensor ACS712 modules
• 2* Power MOSFET drivers TC428
• 1* LCD 1602 with I2C extension
• 1 DC-DC boost converter : PCB is proposed for the use of a DIP28 Atmega328p
16
• external charger : ssrN_Pin => output 8 = PB0 - Normal output to SSR
• external charger : ssrI_Pin => output 9 = PB1 - Inverted output to SSR
• "ok" push button : pbE_Pin => output 10 = PB2
• "-" push button : pbM_Pin => output 11 = PB3
• "+" push button : pbP_Pin => output 12 = PB4
• overhead alarm : alarmPin => output 13 = PB5 - red LED (!!! pin9 in V1.x!!!)
Versions history :
version 0.4 - 26 march 2019 - Fpri sensor rebuild with interrupt function
version 0.5 - 27 march 2019 - Ipri sensor rebuild for average value
version 0.6 - 26 april 2019 - MPPT algorithm rebuild without Fpri
version 0.7 - 27 april 2019 - DC-DC converter rebuilt from buck-boost inverter to boost
version 1.0 - 2 june 2019 - First full working version
version 1.1 - 5 july 2019 - added EEPROM and menus
version 1.2 - 5 july 2019 - improvment of the display of voltages
version 1.3 - 13 july 2019 - improvment of security underload and overload and Ibat measure
version 1.4 - 8 oct. 2019 - new LiquidCrystal-I2C-library and direct injection bug correction
version 2.0 - 9 oct. 2019 - update for PCB
version 2.1 - 8 dec. 2019 - bug correction for VpriMax and Dumpload
version 2.3 - 3 jan. 2020 - VpriMax and VsorMax treatment improvement, SSR for external battery
charger if available
*/
const bool VERBOSE = false; // if true : debugging mode => very slow !
const bool REGLAGE = false; // if true : for current sensor offset settings
bool USAGE_FPRI = true; // if true : the turbine speed is calculated
bool mode_injection = false; // if true : direct injection : no batteries needed
// Depending of the way the ACS712 module is wired, polarity ajustment may be required
// to get the charging batteries current positive, values can be 1 or -1
const int IbatPolarity = 1;
// General parameters
const int Ioffset = 510; // offset is set with REGLAGE = true, to get Ipri=0 with no
current (~512)
const byte pwm_gate_Max = 220; // Max PWM allowed (<250)
int IbatMax = 15; // must be = 0,23 time the battery capacity => 13A for 54Ah batteries
int VpriMin = 15; // the voltage that will start the MPPT process. Too low the wind
turbine may have difficulties to start
int Vsor_calibrate = 100; // to adjust Vsor to match real value with multimeter 100 = 100%
//
// SETUP
//_____________________________________________________________________________________________
void setup() {
// inputs outputs declaration
pinMode(VpriPin, INPUT); // input for Vpri sensor - input voltage
pinMode(VsorPin, INPUT); // input for Vsor sensor - output voltage
pinMode(IpriPin, INPUT); // input for Ipri sensor - input current
pinMode(IbatPin, INPUT); // input for Ibat sensor - battery current
pinMode(FpriPin, INPUT); // input for Fpri sensor - turbine speed
pinMode(gatePin, OUTPUT); // pwm output pwm_gate
pinMode(loadPin, OUTPUT); // inverted output for dumpload resistor
pinMode(ondulPin, OUTPUT); // output for enabling injection
pinMode(mpptPin, OUTPUT); // output to green LED
pinMode(limitPin, OUTPUT); // output to yellow LED
pinMode(alarmPin, OUTPUT); // output to red LED
pinMode(ssrN_Pin, OUTPUT); // output for SSR for external battery charger
pinMode(ssrI_Pin, OUTPUT); // inverted output for external battery charger
pinMode(pbE_Pin, INPUT_PULLUP); // push-button for menus acces
pinMode(pbM_Pin, INPUT_PULLUP); // push-button -
pinMode(pbP_Pin, INPUT_PULLUP); // push-button +
// LCD initialisation
lcd.begin(); // initialize the lcd for 16 chars 2 lines
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" Wind Turbine ");
lcd.setCursor(0, 1);
lcd.print(" MPPT regulator ");
delay(1000);
lcd.clear();
} // fin de setup
//
// Fpri_detect : what is done at each interruption
//____________________________________________________________________________________________
void Fpri_detect() {
Fpri_flag = true;
}
//
// LOOP
//_____________________________________________________________________________________________
void loop() {
// overcurrent security
//_______________________________________________
// cumulative Ipri and Ibat measures between 2 interupts = one turbine rotation
somme_lect_Ipri += lect_Ipri;
somme_lect_Ibat += lect_Ibat;
lect_Ipri_count++;
// Every turbine period, or every second if no wind, or every 100ms is Fpri not measured
19
//_______________________________________________
if( (USAGE_FPRI == true && (Fpri_flag == true || tempo - memo_tempo > 1000))
|| (USAGE_FPRI == false && tempo - memo_tempo > 100) ) {
noInterrupts(); // disable any possible interruption
Fpri_flag = false; // flag reset, will be ready to be set at next interrupt
memo_tempo = tempo;
memo_Puiss = Puiss; // memorization of the previous Puiss measurement
memo_Vpri = Vpri; // memorization of the previous Vpri measurement
if ( (Vsor > VsorFlo) && (extCharger == LOW) ) digitalWrite(ondulPin, HIGH); // start the
inverter
if ( Ibat > IbatMax && Step > 0 ) Step = -Step; // 'Step' is forced to be negative
// every 'refresh_tempo' have a look for push-button activity and update display, and setup
external charger
if( tempo - memo_tempo_LCD > refresh_tempo ) {
memo_tempo_LCD = tempo;
ret_push_button = push_button(); // reading push-button status here only
lcd.setCursor(0, 0);
count_before_timeout++;
//
// NEXT_WINDOW : next window procedure
//____________________________________________________________________________________________
void next_window() {
//
// PUSH_BUTTON : return value depending of the state of the 3 push-buttons
//____________________________________________________________________________________________
byte push_button() {
if ( digitalRead(pbE_Pin) == 0 ) {
count_before_timeout = 0; // reset the timeout counter
refresh_tempo = 1000;
lcd.backlight(); // switch on display
lcd.clear();
return 1;
}
if ( pbP == 0 ) {
count_before_timeout = 0; // reset the timeout counter
if ( memo_pbP == 0 ) refresh_tempo = 300; // temporary lower display update duration
lcd.backlight(); // switch on display
return 2;
}
if ( pbM == 0 ) {
count_before_timeout = 0; // reset the timeout counter
if ( memo_pbM == 0 ) refresh_tempo = 300; // temporary lower display update duration
24
lcd.backlight(); // switch on display
return 3;
}
refresh_tempo = 1000; // return back to usual display update duration
return 0;
} // end of push_button function
Some parameters can be modified once the program is running: VpriMin, VpriMAx, IbatMax, VsorMin, VsorFlo,
VsorMax and Vsor_calibrate. Predefined values are proposed in the program for general use.
Some parameter that are mostly hardware dependent cannot be modified once the program is compiled like: the
model of current sensor stored in convI, the current offset Ioffset, the max ratio of cutting signal pwm_gate_Max,
IbatPolarity, VERBOSE and REGLAGE.
o pwm_gate_Max must be under 250. The highest is this value, the highest can reach Vsor, but more delicate
the life of the CMOS transistor T1.
o IbatPolarity is set to 1 or -1, in order to read a positive Ibat value when the battery is charging
o REGLAGE allows the setup of Ioffset in order to get 0.0 when there is no current. This is done only one time
during tests. Value should be 511 or 512.
o VERBOSE allows watching most important variables on the console. Remind that this slows a lot the
program, and should be set during test only.
Please note : VERBOSE and REGLAGE mode cannot be anymore useful if the circuit is directly made on the PCB,
because of the lack of the USB serial port only available on the Arduino Uno.
Pwm frequency is set to 31 KHz. It is a low frequency that allows quite long wires between the CPU to the booster
TC428 and then to the CMOS transistor.
Turbine speed rotation is set by calculating the time spent between two interrupts. The interrupts are set on each
rising of the square signal issue from one coil of the turbine. It gives a result in Hertz, not in rpm (tour per minute) as
the number of poles of the generator varies depending of the model.
Ipri and Ibat are calculated from the average of multiple measures between two interrupts. The reason why is that
we are working in high power cutting voltage, and the current is not linear.
powered on.
Each time you will switch on the regulator under wind turbine power, you will burn the cutting CMOS transistor.
This is because “indeterminate things” happens during the short power on time. For the moment the goal is to
build a quite simple device, to prevent against those “indeterminate things” will need a dozen of external
components that would complicate the circuit.
2. Plug the wind turbine, the Dump Load Resistor, the inverter and the battery ( if any ) at the appropriate places.
3. The converter needs 12V DC to operate. Power on the converter.
4. Once on, the LCD displays :
- Ve for Vpri : input voltage of the wind turbine (after the rectifier)
- Vs for Vsor : output voltage of the regulator which is the battery voltage
- Fe for Fpri : rotation speed of the turbine in Hertz or rotations per seconds
- Pe for Puiss : Ve * Ipri
5. Push “Entry” : the display is changed to :
- Ve for Vpri : input voltage of the wind turbine (after the rectifier)
- Vs for Vsor : output voltage of the regulator which is the battery voltage
- Ie for Ipri : the input current
- Ib for Ibat : the battery current
25
6. Push “Entry”: the display shows the maximum measured values :
- VM for kept_VpriMax is the maximum value measured for Vpri
- IM for kept_IpriMax is the maximum value measured for Ipri
- The second line will indicate, if installed, the maximum speed measured for Fpri in Hz
- PM for kept_PuissMax is the maximum input power calculated for Puiss
7. Push again “Entry” : the display proposes to reset these values. Press “+” will reset. Of course, these values need
some storms to become interesting…
8. Push again “Entry” : the display proposes to enter in parameters if “+” pushed.
9. Push “+”: we enter in the parameters menu. Any change is immediately taken in account. Each push “Entry” will
review one by one parameters in this order :
10. Display: Fpri measured or not: we can change with “+” or “-“.
If not measured, MPPT will update every 100ms. Otherwise, update time is proportional to the turbine speed.
11. Display: Battery mode or Inverter mode: we can change with “+” or “-“.
In battery mode, the parameters that come will define the absolute characteristics of the battery.
In inverter mode, they will define the working area of the inverter.
12. Display : VpriMax: absolute highest wind turbine voltage
13. Display : VpriMin: minimum voltage for regulator starts
14. Display : IbatMax: absolute highest battery charging current
15. Display : VsorMin: defined according the battery or inverter mode :
- Absolute lower voltage to consider the battery as discharged.
- Lower value that shutoff the inverter.
16. Display: VsorFlo defined according the battery or inverter mode :
- Floating voltage for battery.
- Level value that startup the inverter.
17. Display: VsorMax : defined according the battery or inverter mode :
- Absolute higher voltage during the battery charge.
- Absolute higher allowable voltage for the inverter
18. Display: Vsor_calibrate : define the correction factor for the most accurate reading measure of Vsor. At this
state, Push “-“ or “+” to adjust Vsor (displayed at the same time) according to a multimeter reading. Default
value is 100 for 100%.
19. Display debug information: ‘s’ for the ‘Step’ value and ‘p’ for’ pwm_gate.
After a while the display will automatically light off, the pull of any of the 3 push-button for arrould 1 second will light on
it back.
The main mater with green energy is that it is rarely available when we need it. A solar panel alone will never light any
lamp during night, nor a wind turbine will help if there is no wind.
So, the first idea that come in mind is to use a battery. Unfortunately a battery has a very bad efficiency, 50% of energy
is lost for charging a battery. So, we should consider using a battery only for required equipment like lights during
nights.
The second problem of a battery is its lifetime. However, well kept a battery can stay “alive” for 10 years…
One of the elements guaranteeing a long lifetime is the respect of its electrical characteristics:
Each model of battery owns its proper characteristics. Each technologies owns its advantages and drawbacks. The lead
acid battery has the advantage to be very cheap and robust, with a poor self-discharge. Its first disadvantage is its low
watt/kg rate.
Usually for any 12V lead acid battery, the characteristics are:
26
- The nominal working voltage is 12.6V
- When discharged, the voltage fall down around 11V. The lower is this voltage, the lower is the lifetime, a battery
suffers a lot when over discharged. The problem with a wind turbine is that a battery can stay a very long time
discharged if there is no wind… Moreover, more the discharge is slow, the better it is.
For the regulator the default value for VsorMin = 24.0V = 2*12.0V
- The highest voltage of charge is around 14.4V. Never go over. It is the problem of cheap car battery charger which
most of them go over.
For the regulator the default value for VsorMax = 28.8V = 2*14.4V
- The highest charging current. It is 0.23 time the capacity of the battery. It is the other problem of cheap car battery
charger, the current is not controlled and will remain the same for small or big capacity battery.
For the regulator the IbatMax = 13A, which is approximatively the maximum current that a 350W wind turbine can
deliver. The best battery capacity in this case is 54A/h.
- The floating voltage, it is the voltage to ensure a complete
charge.
The Simple way to test if MPPT is working well is with the help of a power supply that uses the LM317K (TO3 case seems
to give more current).
The LM317K is a voltage regulator that offers an output adjustable voltage from 1.2V to 37V, with a maximum current of
2.2A and a security current of 1.5A. That means if the current exceed 2.2A then a security drop it to a limit of 1.5A.
27
First upload the program in VERBOSE = TRUE; (this let you see all variables evolve and slow down a lot the program
execution) then adjust the voltage to the lowest value. The display should show all values near zero except Fpri = 50Hz.
Then slowly increase the voltage. You must notice that as soon as input voltage exceeds VpriMin the MPPT starts : pwm
increases and Vsor increases as well. Whatever the voltage applied you should notice that current stays around 2A, in
this case Puiss is about twice the voltage. With 30V input you can get 60W on the load. Take care of the LM317 and the
load become very hot. However, the converter CMOS transistor T1 and the barrier Shottky D1 stay cold.
With accurate measures with the help of a multimeter the efficiency overcomes 92%.
First a circuit diagram must be drawn. Then a PCB is proposed, we are free to place components wherever we want…
With the use of the PCB, only the ATmega328p DIP-28 microcontroller came from the Arduino Uno. For the clock
service, a 16Mhz crystal and 2 capacitors of 22pF must be added (X1, C9 and C10 on the diagram below).
Below is the diagram made on EasyEDA. All power components – CMOS transistors and Schottky Diode – can be
parallelize by 2 which is better for high current.
28
… and the PCB version 1:
29
Updates: PCB version 2
One request was to get a smaller PCB with push-buttons, leds and LCD display separated apart on the PCB :
Illustrations in use
Prototype in working conditions. Note the green led and the blue one are on:
30
31
The PCB V1 under tests:
32
Final V1 in box : on the right it is the 8 pins plug to the measure bench
33
How to code the ATmega320p alone?
I broke 4 Arduino Uno devices during the studies… So I buy the cheapest… So when I decide of a PCB with a
ATmega328p alone without its Arduino circuit, I had to buy DIP28 CPU. Within a probability of 99.99%, you will get them
without bootloader, except the one you bought within the expensive native Arduino Uno. But after the realization of
this Regulator what will serve an Arduino Uno without its ATmega328p?
1- A 4700uF capacitor must be placed between the 3 phases rectifier and the current sensor.
2- If you power on the regulator when the wind turbine is producing, you will break the cutting CMOS transistor. This is
because during power on the output of the Atmega328p are in undefined state, but nearer to high level. So the
cutting transistor is switch on and make a short circuit.
As the TC428 has both an inverting and an non-inverting driver, may be the exchange between the inverting
DumpLoad driver and the cutting transistor driver – of course according to software adaptation - will solve this issue
(not tested by me).
For a v3 version I will use the SN754410 instead of the TC42x, because SN754410 allows to disallow the outputs with
a EN pin that can be set by a little analogic timer.
3- 100nF-470nF must be added between each ICs power supply and GND.
34
World Wilde Contributions
Many thanks to Heiko Künzel - [email protected] – who had drawn and shared a diagram and a PCB dedicated for its
12V wind turbine.
35
36