Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2016:solar-reg

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
2016:solar-reg [2017/01/14 11:39]
Ivan Sieklik [Software]
2016:solar-reg [2017/01/14 16:25] (aktuální)
Ivan Sieklik [Záver]
Řádek 8: Řádek 8:
 ===== Úvod ===== ===== Úvod =====
 ---- ----
-Cieľom projektu je vytvoriť funkčný PWM regulátor výkonu pre solárnu elektráreň s maximálnym dodávaným výkonom solárnych článkov - 100W. Regulátor bude schopný regulovať dodávaný výkon do Lithium-iontového (Li-ion) akumulátoru spolu s dodržiavaním doporučených módov nabíjania za účelom predĺžiť životnosť batérie (Počet nabíjacích/​vybíjacích cyklov). Súčasťou takéhoto regulátora je aj LCD displej ktorý zobrazuje aktuálne parametre systému. Súčasťou sú aj ochranné prvky ktoré sprostredkúvajú ochranu:+Cieľom projektu je vytvoriť funkčný PWM regulátor výkonu pre solárnu elektráreň s maximálnym dodávaným výkonom solárnych článkov - 100W. Regulátor bude schopný regulovať dodávaný výkon do Lithium-iontového (Li-ion) akumulátoru spolu s dodržiavaním doporučených módov nabíjania za účelom predĺžiť životnosť batérie (Počet nabíjacích/​vybíjacích cyklov). Súčasťou takéhoto regulátora je aj LCD displejktorý zobrazuje aktuálne parametre systému. Súčasťou sú aj ochranné prvky ktoré sprostredkúvajú ochranu:
  
   - Pod-vybitie akumulátora   - Pod-vybitie akumulátora
Řádek 26: Řádek 26:
 ==== Vývojová doska s STM32F103C8 ==== ==== Vývojová doska s STM32F103C8 ====
  
-Jedná sa o mikroprocesor s architektúrou Cortex ARM M3 s pracovnou frekvenciou 72MHz. Mikroprocesor obsahuje multiplexovatelný 12bitový ADC a DAC prevodník, viaceré časovače využívane hlavne na realizáciu funkcie wait() a PWM(). V rámci realizácie boli aj využité Hallovej sondy na meranie pretekajúceho prúdu a taktiež displej 16x02. K napaľovaniu softvéru je využívaný modul FTDI232 zobrazený na obrázku nižšie.+Jedná sa o mikroprocesor s architektúrou Cortex ARM M3 s pracovnou frekvenciou 72MHz. Mikroprocesor obsahuje multiplexovatelný 12bitový ADC a DAC prevodník, viaceré časovače využívane hlavne na realizáciu funkcie wait() a PWM. V rámci realizácie boli aj využité Hallovej sondy na meranie pretekajúceho prúdu a taktiež displej 16x02. K napaľovaniu softvéru je využívaný modul FTDI232 zobrazený na obrázku nižšie.
  
 {{ :​2016:​arduino_stm32f103c8t6.jpg?​direct&​300 |}} {{ :​2016:​arduino_stm32f103c8t6.jpg?​direct&​300 |}}
Řádek 46: Řádek 46:
 ==== Solarný modul 100W ==== ==== Solarný modul 100W ====
  
-Zdrojom energie je polykrištalický solárny panel s maximálnym príkonom 100W. Výkon panelu je zámerne predimenzovaný najmä kvôli faktu že často-krát svetelné podmienky počas jednotlivých dní v roku nedosahujú takej intenzity aby bol dosiahnutý maximálny výkon solárneho panelu. ​ Parametre solárneho panelu:+Zdrojom energie je polykrištalický solárny panel s maximálnym príkonom 100W. Výkon panelu je zámerne predimenzovaný najmä kvôli faktuže často-krát svetelné podmienky počas jednotlivých dní v roku nedosahujú takej intenzityaby bol dosiahnutý maximálny výkon solárneho panelu. ​ Parametre solárneho panelu:
   * Napätie v bode maximálneho výkonu 17,9V   * Napätie v bode maximálneho výkonu 17,9V
   * Prúd v bode maximálneho príkonu 6,01A   * Prúd v bode maximálneho príkonu 6,01A
Řádek 58: Řádek 58:
  
 ====Li-ion Akumulátor ==== ====Li-ion Akumulátor ====
-Prototypový akumulátor je zložený z troch trojíc LI-ion akumulátorov zapojených do série tvoriacich ​tak približne 10,8V až 12,6V batériu pre 12V aplikácie. Na obrázku nižšie je uvedený prototyp takejto batérie. Akumulátor disponuje kapacitou 2300mAh resp. 27Wh. Takto navrhnutý akumulátor slúži len na overenie funkcie zariadenia. Pri finálnej ​realizácií ​je nutné sledovať a vyhodnocovať aktuálny stav každého jedného bloku batérietak aby nedochádzalo k postupnej ​degradácií ​celého akumulátoru na základe pod/​prebíjania niektorého z blokov.+Prototypový akumulátor je zložený z troch trojíc LI-ion akumulátorov zapojených do série tvoriacich približne 10,8V až 12,6V batériu pre 12V aplikácie. Na obrázku nižšie je uvedený prototyp takejto batérie. Akumulátor disponuje kapacitou 2300mAh resp. 27Wh. Takto navrhnutý akumulátor slúži len na overenie funkcie zariadenia. Pri finálnej ​realizácii ​je nutné sledovať a vyhodnocovať aktuálny stav každého jedného bloku batérie takaby nedochádzalo k postupnej ​degradácii ​celého akumulátoru na základe pod/​prebíjania niektorého z blokov.
  
 {{ :​2016:​bateriamini.png?​direct&​400 |}} {{ :​2016:​bateriamini.png?​direct&​400 |}}
     Obr.4 Li-ion batéria s výkonom 27Wh     Obr.4 Li-ion batéria s výkonom 27Wh
  
-Na obrázku nižšie je uvedená batéria zložená s viacerých blokov s výstupným svorkovým napätím (25,2V až 29,4V) pre 24V aplikácie. Táto batéria disponuje kapacitou 22 000mAh resp. 600Wh. ​Táto batéria je uvedená len pre ilustráciu a pre fakt že navrhovaný regulátor bude v budúcnosti upravený podrobený aj výkonovým skúškam na tomto akumulátore.+Na obrázku nižšie je uvedená batéria zložená s viacerých blokov s výstupným svorkovým napätím (25,2V až 29,4V) pre 24V aplikácie. Táto batéria disponuje kapacitou 22 000mAh resp. 600Wh. ​Je uvedená len pre ilustráciu a pre faktže navrhovaný regulátor bude v budúcnosti upravený ​podrobený aj výkonovým skúškam na tomto akumulátore.
  
 {{ :​2016:​bateriabig.png?​direct&​400 |}} {{ :​2016:​bateriabig.png?​direct&​400 |}}
Řádek 71: Řádek 71:
  
 ===== Zapojenie ===== ===== Zapojenie =====
-Schéma zapojenia spočíva vo využiti Buck Converteru pre tvorbu konštantného napätia ktoré je nasledovne spínanie PMOS výkonovým tranzistorom Q1 (IRF9640 ​nieje pre túto aplikáciu najvhodnejší kvôli vysokému Rds ON). Druhý tranzistor Q2 je využívaný len ako spínač záťaže. Dióda D1 slúži na oddelenie a zabráneniu prenikaniu napätia z batérie na sondu Usol v prípade ak Usol < Ubat. Tranzistor Q1 je spínaný pomocou PWM vďaka čomu dochádza k regulovaniu prenášaného výkonu do batérie. Podmienka pre použitie solárneho panelu Usol > 15V. Pri využití panelu ktorý podmienku nespĺňa je možné využiť Buck/Boost Converter s dodatočnou úpravcov softvéru. S nastavením softvéru je možné regulátor nastaviť na nabíjanie ľubovolnej batérie s Ubat> 1.5V s použitím ľubovolného panelu s Usol > 5V (Pri využití Buck/Boost Converteru). Na schéme uvedenej nižšie niesu uvedené použité deliče a RC články použité pre snímanie napätí a prúdov. (Snímanie strednej hodnoty PWM signálu).+Schéma zapojenia spočíva vo využiti Buck Converteru pre tvorbu konštantného napätiaktoré je nasledovne spínanie PMOS výkonovým tranzistorom Q1 (IRF9640 ​nie je pre túto aplikáciu najvhodnejší kvôli vysokému Rds ON). Druhý tranzistor Q2 je využívaný len ako spínač záťaže. Dióda D1 slúži na oddelenie a zabráneniu prenikaniu napätia z batérie na sondu Usol v prípade ak Usol < Ubat. Tranzistor Q1 je spínaný pomocou PWM vďaka čomu dochádza k regulovaniu prenášaného výkonu do batérie. Podmienka pre použitie solárneho panelu Usol > 15V. Pri využití paneluktorý podmienku nespĺňa je možné využiť Buck/Boost Converter s dodatočnou úpravcov softvéru. S nastavením softvéru je možné regulátor nastaviť na nabíjanie ľubovolnej batérie s Ubat> 1.5V s použitím ľubovolného panelu s Usol > 5V (Pri využití Buck/Boost Converteru). Na schéme uvedenej nižšie niesu uvedené použité deliče a RC články použité pre snímanie napätí a prúdov. (Snímanie strednej hodnoty PWM signálu).
 {{ :​2016:​mpoa_schema.png?​direct |}} {{ :​2016:​mpoa_schema.png?​direct |}}
     Obr.6 Schéma zapojenia     Obr.6 Schéma zapojenia
 ===== Software ===== ===== Software =====
 ---- ----
-Softvér bol prvotne vyvíjaný na platforme MBED pomocou online kompilátoru na doske FRDM-K64F, ktorá bohužiaľ počas testovania odišla do kremíkového neba. Autor bol nútený celú aplikáciu realizovať v prostredí Arduino a však kód bol dokončený pre obe platformy. Prvý kód je pre MBED platformu, kód pre ARDUINO je uvedený v prílohe. Princíp fungovania softvéru spočíva v stavovom automate ktorý mení šírku PWM (Duty) signálu s určitým krokom tak aby boli docielené stanovené podmienky (fázy nabíjania). Zvyšovanie a znižovanie prenášaného výkonu je realizované funkciami pwm_up a pwm_down. Pre správnu funkciu regulátora je nutné dodržať viaceré podmienky (uvedené v úvode). Program je realizovaný parametricky,​ čiže jednotlivé medze, limity alebo parametre je možné meniť pomocou statických hodnôt v úvode programu.+Softvér bol prvotne vyvíjaný na platforme MBED pomocou online kompilátoru na doske FRDM-K64F, ktorá bohužiaľ počas testovania odišla do kremíkového neba. Autor bol nútený celú aplikáciu realizovať v prostredí Arduino a však kód bol dokončený pre obe platformy. Prvý kód je pre MBED platformu, kód pre ARDUINO je uvedený v prílohe. Princíp fungovania softvéru spočíva v stavovom automatektorý mení šírku PWM (Duty) signálu s určitým krokom takaby boli docielené stanovené podmienky (fázy nabíjania). Zvyšovanie a znižovanie prenášaného výkonu je realizované funkciami pwm_up a pwm_down. Pre správnu funkciu regulátora je nutné dodržať viaceré podmienky (uvedené v úvode). Program je realizovaný parametricky,​ čiže jednotlivé medze, limity alebo parametre je možné meniť pomocou statických hodnôt v úvode programu.
  
 ==== Definícia premenných a nastavenie vstupno-výstupných periférií ==== ==== Definícia premenných a nastavenie vstupno-výstupných periférií ====
Řádek 203: Řádek 203:
     ​     ​
     lcd.locate(15,​1);​     lcd.locate(15,​1);​
-    lcd.printf("​%f", data6_i);+    lcd.printf("​%d", data6_i);
     ​     ​
     return 0;    ​     return 0;    ​
Řádek 209: Řádek 209:
 </​code>​ </​code>​
 ==== Funkcia main ==== ==== Funkcia main ====
-Princíp funkcie programu spočíva v stavovom automate ktorý hľadá optimálnu hodnotu PWM spísaného tranzistora Q1 podľa zadaných kritérií v jednotlivých módoch nabíjania. Módy regulátoru:​+Princíp funkcie programu spočíva v stavovom automatektorý hľadá optimálnu hodnotu PWM spísaného tranzistora Q1 podľa zadaných kritérií v jednotlivých módoch nabíjania. Módy regulátoru:​
   * 0 - Nevhodná batéria alebo prekročenie limitného prúdu na záťaži   * 0 - Nevhodná batéria alebo prekročenie limitného prúdu na záťaži
   * 1 - Nabíjanie konštantným prúdom I_1C    * 1 - Nabíjanie konštantným prúdom I_1C 
Řádek 215: Řádek 215:
   * 3 - Batéria nabitá (Z módu 3 dochádza k prepnutiu do iného iba vtedy ak napätie na nabitom akumulátore klesne pod hodnotu U_bat_charged)   * 3 - Batéria nabitá (Z módu 3 dochádza k prepnutiu do iného iba vtedy ak napätie na nabitom akumulátore klesne pod hodnotu U_bat_charged)
  
-Rýchlosť hľadania optimálnej hodnoty PWM je závislá najmä od zvolenej hodnoty wait_ms() na koniec programu a zvoleného kroku PWM pwm_step. Vypisovanie na displej je možné vykonávať iba n-tý krát počas behu programu ​čím sa zvýši rýchlosť stavového automatu.+Rýchlosť hľadania optimálnej hodnoty PWM je závislá najmä od zvolenej hodnoty wait_ms() na koniec programu a zvoleného kroku PWM pwm_step. Vypisovanie na displej je možné vykonávať iba n-tý krát počas behu programučím sa zvýši rýchlosť stavového automatu.
  
 <code c> <code c>
Řádek 263: Řádek 263:
         }         }
         //​----------------------------------------------------------------------         //​----------------------------------------------------------------------
-        else if (Ubat>​=U_bulk_limit){ ​ // nabijanie konstantym napatim+        else if (Ubat>​=U_bulk_limit ​&& mode!=3 ​){  // nabijanie konstantym napatim
                                        // napatie vystupa nad hodnotu U_bulk_limit                                        // napatie vystupa nad hodnotu U_bulk_limit
         ​         ​
             mode=2;             mode=2;
         ​         ​
-            if (Usol>​=U_sol_limit && Ubat<​=U_abso_limit && Istep<= I_StepMax && Ibat<​=2*I_1C ​&& mode!=3 ​) {   // Panel pracuje v pasme efektivity nad 15V a zaroven nebol prekroceny Max nabijaci prud a MAX prud step-downu+            if (Usol>​=U_sol_limit && Ubat<​=U_abso_limit && Istep<= I_StepMax && Ibat<​=2*I_1C) {   // Panel pracuje v pasme efektivity nad 15V a zaroven nebol prekroceny Max nabijaci prud a MAX prud step-downu
  
                 Pwm_Mos.pulsewidth_us(pwm_up(pwm_step,​max_pwm_width_us));​                 Pwm_Mos.pulsewidth_us(pwm_up(pwm_step,​max_pwm_width_us));​
Řádek 276: Řádek 276:
                 Pwm_Mos.pulsewidth_us(pwm_down(pwm_step,​min_pwm_width_us));​                 Pwm_Mos.pulsewidth_us(pwm_down(pwm_step,​min_pwm_width_us));​
             }                        }           
- +         } 
-                if (Ibat<​=0.1*I_1C && pwm >= (max_pwm_width_us - min_pwm_width_us)/​2) { // nabita bateria je vtedy ak je napatie udrziavane na konstantej hodnote ​ a prud klesne pod 10% z I_1C a pritom ho neobmedzeuje prikon z solar panelu +          
-                    mode=3; +        ​if (Ibat<​=0.1*I_1C && pwm >= (max_pwm_width_us - min_pwm_width_us)/​2 && mode==2) { // nabita bateria je vtedy ak je napatie udrziavane na konstantej hodnote ​ a prud klesne pod 10% z I_1C a pritom ho neobmedzeuje prikon z solar panelu
-                    pwm=0; ​   +
-                    Pwm_Mos.pulsewidth_us(pwm);​ +
-         +
-                        lcd.cls();​ +
-                        lcd.locate(0,​0);​ +
-                        lcd.printf("​--Battery FULL--"​);​ +
-                        lcd.locate(0,​1);​ +
-                        lcd.printf("​%4.2f",​ Ubat); +
-                        wait(3);  +
-                         +
-                     if (Ubat<​=U_charged_limit) {mode=0;} +
-                 ​} ​   ​+
             ​             ​
-        }+            mode=3; ​                    
 +            pwm=0; ​   
 +            Pwm_Mos.pulsewidth_us(pwm);​ 
 +             
 +             //​---------vypis nabita--------- 
 +             ​lcd.cls();​ 
 +             ​lcd.locate(0,​0);​ 
 +             ​lcd.printf("​--Battery FULL--"​);​ 
 +             ​lcd.locate(0,​1);​ 
 +             ​lcd.printf("​%4.2f",​ Ubat); 
 +             ​wait(3);​  
 +             //​------------------------------ 
 +         }         
 +                 
 +         if (Ubat<​=U_charged_limit && mode==3) {mode=0;} 
 +                      
 +             
 +        ​
         //​---------------------------------------------------------------------- ​                         //​---------------------------------------------------------------------- ​                
         if (mode!=3){ ​   // ak nieje nabita vypis aktualne hodnoty  ​         if (mode!=3){ ​   // ak nieje nabita vypis aktualne hodnoty  ​
Řádek 305: Řádek 310:
 ===== Ukázkové video ===== ===== Ukázkové video =====
 ---- ----
 +Súčasťou vide je demonštrácia módu 2 - nabíjanie konštantným napätím. Krok PWM (pwm_step=5) a rýchlosť jeho zmeny je zámerne spomalená s obnovovacou periódou približne 400ms z dôvodu zreteľnosti zmeny parametrov na LCD displeji. Na videu je možné sledovať snahu regulátora udržať konštantné napätie Ubat na hodnote 12,30V so zmenou hodnoty PWM. Jemnosť kroku PWM je možné zvoliť (1 až 255 alebo 1 až 65535 podľa vlastností časovačov použitého mikroprocesora). Na videu je demonštrovaný proces nabíjania bez pripojenej záťaže Iload=0, nakoľko počas nahrávania videa boli nepostačujúce svetelné podmienky. Solárny panel nieje na videu uvedený ale bol využitý panel uvedený na obr.3.
  
 +{{youtube>​FL2WGumVBf0?​medium}}
  
 ---- ----
 ===== Záver ===== ===== Záver =====
  
 +Výsledkom semestrálneho projektu do predmetu MPOA je funkčný PWM regulátor, ktorý vyhovuje všetkým uvedeným požiadavkám v zadaní. Pre správnu funkciu je však kľúčové presne merať všetky parametre systému (napätie, prúd). Využitie halovej sondy prináša výhodu merania oboch polarít pretekajúceho prúdu, ale značnou nevýhodou je meranie malých prúdov v okolí nulovej hodnoty (značná hysterézia). PWM regulátor by molo možné doplniť o viaceré nadstavbové funkcie ako napríklad meranie teploty akumulátoru alebo taktiež o hľadanie ​ bodu maximálneho výkonu solárneho panelu (MPPT), čím by vznikol plnohodnotný MPPT regulátor. Ďalším návrhom na vylepšenie by mohla byť tvorba užívateľského prostredia, kde by si užívateľ mohol zvoliť parametre a regulátor autonómne nastaví potrebné parametre nabíjania. Spomenuté úpravy sú v procese vývoja ale žiaľ spadajú mimo časový limit riešenia semestrálneho projektu.
  
 +DOWNLOAD
 +{{ :​2016:​mpoa.rar |}}
  
  
2016/solar-reg.1484390378.txt.gz · Poslední úprava: 2017/01/14 11:39 autor: Ivan Sieklik