MCU Based Peak Power Tracker Solar Charger(70W,100W)

Microcontroller, DSP and FPGA Topics

MCU Based Peak Power Tracker Solar Charger(70W,100W)

Postby nwclasantha » Thu May 02, 2013 1:46 pm

MCU Based Peak Power Tracker Solar Charger.png

MCU Based Peak Power Tracker Solar Charger (70W,100W)

සම්පුර්ණ පද්ධතිය පිලිබදව සරලම අදහස:

මෙහි MOSFET වල සහ ඔතාගන්න Ring Inductor එකෙහි ධාරාව ඉහල අගයකට දැමිය හැකි කොයිල් සහ High Current MOSFETs මෙයට ආදේශ කර 100W/300W හෝ ඔබට රිසි ලෙස සැකසිය හැකිබව මතක තබාගෙන මෙය කියවන්න.නමුත් මෙහි D.C Output Voltage එක ඉහල දමීමටනම් ඔබට සමස්ත Circuite එකම වෙනසකට ලක්කළ යුතු යි .

Solar Panel එක මගින් එන විචල්‍ය වන D.C. විදුලිය ස්ථාවර කර නිශ්චිත D.C. Output එකක් ලබා දීමට Charge Controller එක යොදාගැනේ ..!


Charge Controller එකට ලබාගත් Solar Panel එක මගින් එන D.C. විදුලිය දෙවනුව Battery Pack එකෙහි ගබඩා කර එය Inverter එකකට ලබාදිය යුතුය . Inverter එක මගින් D.C. විදුලිය A.C. 230V - 50 Hz ලෙස හරවනු ලැබේ. විශේෂයෙන් Charge Controller එක Peak Power Tracker ලෙස නිතරම උපරිම ප්‍රමාණයකින් Solar Panel එක මගින් එන විචල්‍ය වන D.C. විදුලිය Battery Pack එකෙහි ගබඩා කිරීම සිදුකිරීම ස්වයන්ක්‍රියව සිදුකරනු ලැබේ.

එයට සාමාන්තරව Inverter එකට සාමාන්‍ය නිවසක විදුලිය ගිය විට Generator එකක් කියාත්මක වන ලෙස අවශ්‍යනම් පමණක් ඩීසල්/පෙට්රෝල් Generator මගින් Solar Panel එකෙන් දෙන විදුලිය අවසන් වුවහොත් Battery Pack එකෙහි ගබඩා වූ ආරෝපිත D.C. විදුලිය නැති විට එකී Generator එක ක්‍රියාත්මක වීමට සම්බන්ධ කරන්න .

මෙය සිදුකිරීමට අප යොදාගන්නේ ඉතාමත් අවම මිලකට Lankatronics LTD වෙතින් මිලට ගතහැකි උසස්ම තත්වයේ අවම මිලෙන් යුතු Arduino Development Board එක යි ..! එය මත මෙම අතිරේක Charge Controller පරිපථය පහසුවෙන් එකට සම්බන්ධ කරන ආකාරය සහ එකී අදාළ Coding, Circuite Diagram, PCB සහ එහි Watts ගණන වැඩි කරන ආකාරය සරලව පහදා දීම මාගේ අරමුණ යි .


මෙවැනි දීපව්‍යාප්ත පද්ධති රාශියක් එකට ජාලකරණ කරන ආකාරය පිලිබදව කෙටි සටහන:

විශේෂයෙන් මෙවැනි පැනලයක් මගින් නිපදවෙන විදුලිය 1Ohm 10W resister එකක් මගින් ලබාදී එහි V=I*R අනුව විභව අන්තරය Comparator එකකට ලබාදී එම හරවාගත් Analog to Digital සිග්නල් එක ඔබගේ Micro Controller යොදා ගනිමින් කල Bord එකට එකට බද්ධ කල හැකිය.! තවත් විකල්පයක් ලෙස Analog to Digital  Convertor චිපයක් මගින් ද මෙය කලහැකිය .එසේම පසුව එම Micro Controller යොදා ගනිමින් කල Bord එක මගින් USART to Ethernet වලට හරවන Module එකක් මගින් මෙවැනි බලාගාර විශාල ප්‍රමාණයක එකට ජාලගත කර හැකිය.! තවත් විකල්පයක් ලෙස අවශ්‍ය නම මෙයට SMS පණිවිඩ ඔස්සේ බලගැන්වීම සහ අක්‍රිය කිරීමද ලෝකය ඕනෑම ස්ත්නයක සිට කිරීමට නිර්මාණය කල හැකිය .  


ArduinoSolar.pdf


Complete Coding.txt


MCU Based Peak Power Tracker Solar Charger .pdf
User avatar
nwclasantha
 
Posts: 75
Joined: Tue Apr 23, 2013 7:27 pm
Cash on hand: 5,884.10
Location: Malabe

Invitations sent: 0
Registered friends: 0
Reputation point: 13
Corporal

Re: MCU Based Peak Power Tracker Solar Charger(70W,100W)

Postby Herath » Thu May 02, 2013 4:10 pm

It is interesting to see articles talking about Solar energy. But it is hard to find solar panels. Were you able to build a system or are these just articles?. :)

I am wanting to try solar, but can't seem to find the panels to begin with. Not looking for a total replacement of the grid but to supplement.
User avatar
Herath
Support Team
Support Team
 
Posts: 433
Joined: Thu Aug 05, 2010 1:39 pm
Cash on hand: 1,893.30
Bank: 96,267.80
Medals: 1
EC_Achievment (1)

Invitations sent: 1
Registered friends: 0
Highscores: 6
Reputation point: 11
Corporal

Re: MCU Based Peak Power Tracker Solar Charger(70W,100W)

Postby nwclasantha » Thu May 02, 2013 4:26 pm

Herath wrote:It is interesting to see articles talking about Solar energy. But it is hard to find solar panels. Were you able to build a system or are these just articles?. :)

I am wanting to try solar, but can't seem to find the panels to begin with. Not looking for a total replacement of the grid but to supplement.



It is proper to test with this peak power tracker unit with variable input D.C. source accordingly. otherwise you just find a solar panel to test that asap. finally you can have yr own multi purpose Emulator whrere already wittern in C# language with rs 232 access through a dll.bez  i have my own work bench which is supporting USB,RS232 as well asa Ethernet actually.
User avatar
nwclasantha
 
Posts: 75
Joined: Tue Apr 23, 2013 7:27 pm
Cash on hand: 5,884.10
Location: Malabe

Invitations sent: 0
Registered friends: 0
Reputation point: 13
Corporal

Re: MCU Based Peak Power Tracker Solar Charger(70W,100W)

Postby SemiconductorCat » Thu May 02, 2013 4:35 pm

Your implementation is based on the state machines, this  a descrete one. Pretty hard coded right.
LMIN_SOL_WATTS to 5 watts , and etc etc..
Anyway this is not the pure dynamic implementation of MPPT algorithm. It's a binary search like
algorithm where it divides the search space by 2 and it's time complexity is lg(N).
Anyway I like your code. Only disadvantage is when somebody plug a different solar cell into your
design , he need to change the firmware values, cos it does not calculate it dynamically. I'm not
bugging anybody here, but with little study or review of that white paper, you could easily implement it.
Or change this existing code to work according to that.

This is like a reflexive agent, but will work with the solar cell that you planing. Problem is when somebody
connected another solar cell. that's I told this is hardcoded. Anyway one little simple effort. I'm not familiar with
arduno but your code is easy to read anyway. So I can't introduce a patch into this, I could not bug the author
at all.So nice work, but need some little more effort. There's no magic in that white paper.

I love state machine based implementation, keep up good coding.

And you could use [ code ] You Code [ / code ] tags.
like bellow -V
Code: Select all
void run_charger(void) {
 
  static int off_count = OFF_NUM;

  switch (charger_state) {
    case on:                                       
      if (sol_watts < MIN_SOL_WATTS) {              //if watts input from the solar panel is less than
        charger_state = off;                        //the minimum solar watts then it is getting dark so
        off_count = OFF_NUM;                        //go to the charger off state
        TURN_OFF_MOSFETS;
      }
      else if (bat_volts > MAX_BAT_VOLTS) {        //else if the battery voltage has gotten above the float
        charger_state = bat_float;                 //battery float voltage go to the charger battery float state
      }
      else if (sol_watts < LOW_SOL_WATTS) {        //else if the solar input watts is less than low solar watts
        pwm = PWM_MAX;                             //it means there is not much power being generated by the solar panel
        set_pwm_duty();                     //so we just set the pwm = 100% so we can get as much of this power as possible
      }                                            //and stay in the charger on state
      else {                                         
        pwm = ((bat_volts * 10) / (sol_volts / 10)) + 5;  //else if we are making more power than low solar watts figure out what the pwm
        charger_state = bulk;                              //value should be and change the charger to bulk state
      }
      break;
    case bulk:
      if (sol_watts < MIN_SOL_WATTS) {              //if watts input from the solar panel is less than
        charger_state = off;                        //the minimum solar watts then it is getting dark so
        off_count = OFF_NUM;                        //go to the charger off state
        TURN_OFF_MOSFETS;
      }
      else if (bat_volts > MAX_BAT_VOLTS) {        //else if the battery voltage has gotten above the float
        charger_state = bat_float;                //battery float voltage go to the charger battery float state
      }
      else if (sol_watts < LOW_SOL_WATTS) {      //else if the solar input watts is less than low solar watts
        charger_state = on;                      //it means there is not much power being generated by the solar panel
        TURN_ON_MOSFETS;                         //so go to charger on state
      }
      else {                                     // this is where we do the Peak Power Tracking ro Maximum Power Point algorithm
        if (old_sol_watts >= sol_watts) {        //  if previous watts are greater change the value of
          delta = -delta;         // delta to make pwm increase or decrease to maximize watts
        }
        pwm += delta;                           // add delta to change PWM duty cycle for PPT algorythm
        old_sol_watts = sol_watts;              // load old_watts with current watts value for next time
        set_pwm_duty();            // set pwm duty cycle to pwm value
      }
      break;
    case bat_float:
      if (sol_watts < MIN_SOL_WATTS) {          //if watts input from the solar panel is less than
        charger_state = off;                    //the minimum solar watts then it is getting dark so
        off_count = OFF_NUM;                    //go to the charger off state
        set_pwm_duty();               
        TURN_OFF_MOSFETS;
      }
      else if (bat_volts > MAX_BAT_VOLTS) {    //since we're in the battery float state if the battery voltage
        pwm -= 1;                               //is above the float voltage back off the pwm to lower it   
        set_pwm_duty();               
      }
      else if (bat_volts < MAX_BAT_VOLTS) {    //else if the battery voltage is less than the float voltage
        pwm += 1;                              //increment the pwm to get it back up to the float voltage
        set_pwm_duty();               
        if (pwm >= 100) {                      //if pwm gets up to 100 it means we can't keep the battery at
          charger_state = bulk;                //float voltage so jump to charger bulk state to charge the battery
        }
      }
      break;
    case off:                                  //when we jump into the charger off state, off_count is set with OFF_NUM
      if (off_count > 0) {                     //this means that we run through the off state OFF_NUM of times with out doing
        off_count--;                           //anything, this is to allow the battery voltage to settle down to see if the 
      }                                        //battery has been disconnected
      else if ((bat_volts > HIGH_BAT_VOLTS) && (bat_volts < MAX_BAT_VOLTS) && (sol_volts > bat_volts)) {
        charger_state = bat_float;              //if battery voltage is still high and solar volts are high
        set_pwm_duty();                      //change charger state to battery float         
        TURN_ON_MOSFETS;
      }   
      else if ((bat_volts > MIN_BAT_VOLTS) && (bat_volts < MAX_BAT_VOLTS) && (sol_volts > bat_volts)) {
        pwm = PWM_START;                        //if battery volts aren't quite so high but we have solar volts
        set_pwm_duty();            //greater than battery volts showing it is day light then   
        charger_state = on;                     //change charger state to on so we start charging
        TURN_ON_MOSFETS;
      }                                          //else stay in the off state
      break;
    default:
      TURN_OFF_MOSFETS;
      break;
  }
}
User avatar
SemiconductorCat
 
Posts: 462
Joined: Mon Aug 22, 2011 3:12 pm
Cash on hand: 23,861.30
Location: currently in hyperspace

Invitations sent: 0
Registered friends: 0
Reputation point: 9
Corporal


Return to Embedded Processors & Programming

Who is online

Users browsing this forum: No registered users and 2 guests