Вы находитесь на странице: 1из 7

Written by: nicolas.cherix@imperix.

ch
Revision/release date: A, 2015.02.09

Tutoriel n1

CONVERTISSEUR BOOST AVEC MPPT


POUR APPLICATION PHOTOVOLTAIQUE
Rdig par : imperix SA, Rte. de lIndustrie 17, 1950 Sion, Switzerland
Nicolas Cherix <nicolas.cherix@imperix.ch>

Points abords : Configuration des entres analogiques


Configuration des interruptions
Configuration de lchantillonnage
Utilisation de la ligne de commande
Mise en place dune rgulation basique

1 INTRODUCTION
Ce tutoriel dcrit la procdure suivre pour contrler un convertisseur lvateur de tension de
type Boost laide de la BoomBox. Lapplication envisage consiste interfacer un panneau
solaire une source de tension plus leve. Lobjectif propos est de soustraire le maximum de
puissance du panneau solaire disposition.
Le systme considr est reprsent la Figure 1, ses principaux paramtres lectriques tant
indiqus dans le Tableau 1 :

L Ipv
UDC
Upv Epv S1

Figure 1 : Schma lectrique simplifi du systme considr.

Nom Valeur Spcification Capteur utilis # Canal


IPV 0-8A Courant extrait du panneau solaire LEM LAH50-P 0
UPV 10-25V Tension aux bornes du panneau solaire LEM LV25-P 1
UDC 100V Tension du bus DC (fixe) IX AMC1200 2
IDC 0-2A Courant inject dans le bus DC N.A. N.A.
fS 10kHz Frquence de commutation N.A. N.A.
L 1mH Inductance de lissage N.A. N.A.
Tableau 1 : Paramtres lectriques du systme considr.
EXEMPLE DAPPLICATION
Convertisseur boost avec MPPT pour application photovoltaque

Concrtement, lapproche propose consiste contrler le courant IPV extrait du panneau


solaire ; la valeur de consigne correspondante tant ensuite dfinie par un algorithme MPPT afin
de maximiser la puissance extraite. La tension du bus DC est suppose constante.
Une stratgie dimplmentation raisonnable consiste placer une boucle de rglage rapide sur
le courant IPV dont la valeur de consigne sera mise jour priodiquement par un algorithme
MPPT excut plus sur une base de temps plus longue.

2 MISE EN PLACE DU HARDWARE


Afin de contrler le convertisseur Boost, un seul signal de commande S1 est ncessaire, qui est
cabl sur le canal PWM #0 (low). Si la conduction inverse dans le transistor est avantageuse, le
signal de commande complmentaire (high) peut galement tre cabl.
Par ailleurs, trois mesures sont ncessaires afin de constituer la structure maximale de contrle
correspondant au rglage dcrit. Ces mesures sont indiques dans le Tableau 1. Suivant les choix
de design effectus, il est naturellement possible de se passer de certaines dentre-elles.

2.a CONFIGURATION DES ENTRES ANALOGIQUES


Aprs avoir connect les mesures la BoomBox laide de cbles RJ45, il est ncessaire de
configurer chacun des canaux analogiques utiliss. La procdure suivre est la suivante :
1) Slectionner le menu analog inputs sur le frontpanel.
2) Slectionner un des canaux de mesure configurer 0 (IPV), 1 (UPV) ou 2 (UDC)
3) En fonction du type de capteur utilis, choisir entre :
a) Lentre single-ended, basse impdance (100 ). Ce choix est recommand avec la
plupart des capteurs de type LEM.
b) Lentre differential, haute impdance (3k). Ce choix est recommand dans la plupart
des autres cas. Attention, il ne sagit pas dune entre isole galvaniquement.
4) Choisir les gains permettant doptimiser lexploitation de la pleine chelle du convertisseur
AD [-10V ; +10V]. Les valeurs retenues sont ici de 4 (IPV), 8 (UPV) ou 8 (UDC)
5) Activer ou dsactiver le pr-filtrage sur chaque mesure. On choisit ici de le dsactiver et de
privilgier un chantillonnage parfaitement synchrone des valeurs mesures.
6) Le cas chant, rgler la frquence de coupure. Cette dernire est ici sans importance
puisque le filtre est dsactiv.
7) Rgler les seuils de scurit des valeurs sres pour lutilisateur et lapplication. Ces valeurs
sont considres en tension lentre du convertisseur AD. Les limites proposes sont indi-
ques dans le Tableau 2. Elles tiennent compte de la sensibilit des capteurs utiliss, dont les
plus courants sont dcrits dans le Tableau 3
8) Activer les scurits.
9) Sauvegarder les paramtres configurs et rpter lopration pour les autres canaux.
Nom Limite max. Limite min. Plage de courant capteur Limites Boombox # Canal
IPV 10A -2A [-1mA ; 5mA] [-0.4V ; 2.0V] 0
UPV 25V -5V [-0.27mA ; 1.33mA] [-0.2V ; 1.1V] 1
UDC 120V -5V [-0.27mA ; 6.38mA] [-0.2V ; 5.1V] 2
Tableau 2 : Seuils de scurit programms sur la Boombox.

2
EXEMPLE DAPPLICATION
Convertisseur boost avec MPPT pour application photovoltaque

Capteur Type de sortie Sensibilit nominale Prcision typ. (non calib.)


LEM - LV25-P Courant, single-ended 250 / RIN [V/V] 1%
LEM - LAH50-P Courant, single-ended 50 [mV/A] 0.25% @25C
LEM - LAH50-NP/SP1 Courant, single-ended 100 [mV/A] 0.25% @25C
LEM - LA25-NP Courant, single-ended 100 [mV/A] 0.5%
IX - AMC1200 Tension, balanced diff. 5.4 [mV/V] 1.8%
IX - ACS709 Tension, balanced diff. 90 [mV/A] 5%
Tableau 3 : Paramtres des capteurs les plus couramment utiliss avec la BoomBox.

3 CONFIGURATION DU SOFTWARE
La configuration logicielle de la BoomBox seffectue par lappel de plusieurs routines ad-hoc
prsentes ci-aprs. Ces routines sont typiquement appeles lors de linitialisation de
lapplication, c'est--dire au dmarrage du code de la BoomBox, dans la fonction UserInit().

3.a CONFIGURATION DES PWMS


Chaque paire de signaux PWM complmentaires possde son propre modulateur PWM qui peut
tre cal sur nimporte lequel des 4 gnrateurs de frquence disponibles dans la BoomBox.
Ainsi, la configuration dun modulateur PWM se fait en deux tapes principales :

Configuration du gnrateur de frquence


Le code suivant permet de configurer le gnrateur de frquence #3 avec une priode dfinie
par SWITCHING_PERIOD (ici 100s). En fait, le second argument de la fonction est li au nombre
de coups dhorloge correspondants sur une base de temps de 30Mhz. SWITCHING_PERIOD et
FPGA_CLK_PERIOD sont des constantes de prcompilation (#define) dfinies dans user.h.
SetFreqGenPeriod(3, (int)(SWITCHING_PERIOD/FPGA_CLK_PERIOD));

Configuration du modulateur PWM


La ligne suivante permet dutiliser le gnrateur de frquence #3 c ci-dessus sur le canal PWM #0.
Elle slectionne galement une porteuse de type dent de scie (SAWTOOTH) pour le modulateur
correspondant, ainsi quun temps danti-chevauchement entre signaux complmentaires 400ns.
Le dernier argument est galement dfini en nombre de coups dhorloge 30Mhz.
ConfigPWMChannel(0, 3, SAWTOOTH, (int)(400e-9/FPGA_CLK_PERIOD))

Linstruction suivante permet de configurer le canal PWM #0 comme actif. Cela signifie que ds
lors que les sorties PWM de la BoomBox seront actives (la commande enable est passe dans la
console), les signaux PWM seront directement produits. Dans des applications plus complexes
ou multi-convertisseurs, cette option permet dactiver slectivement certaines sorties PWM
indpendamment du blocage/dblocage (enable/disable) global de lensemble des canaux.
ActivatePWMChannel(0); // Activate the PWM #0 channel

La ligne suivante permet dimposer une phase relative de 0 degrs sur le canal PWM #0 par
rapport lhorloge slectionne pour ce canal (la source #3). A noter quil sagit ici de la valeur

3
EXEMPLE DAPPLICATION
Convertisseur boost avec MPPT pour application photovoltaque

par dfaut et que ce paramtre est surtout utile pour dcaler les porteuses dans un systme
polyphas. Lappel de fonction suivant pourrait donc tre omis ici.
SetPWMPhase(0, 0.0); // 0.0 degrees between FG #3 and PWM #0

3.b CONFIGURATION DE LA CONVERSION ANALOGIQUE-NUMERIQUE


Afin dobtenir des valeurs directement utilisables pour chacune des entres analogiques, il est
ncessaire de dfinir les paramtres de conversion analogique-numrique. Pour ce faire, il suffit
dinvoquer la fonction SetADCAdjustements() et de lui fournir comme paramtres la sensibilit et
loffset dsirs. Ainsi, la lecture dun canal analogique, la routine GetADC() retourne directement
un float possdant le sens physique adquat selon lquation :
y ax b
o y est la valeur retourne, x la valeur brute issue du convertisseur AD ainsi que a et b la
sensibilit et loffset configurs par SetADCAdjustments(), respectivement. La sensibilit a de la
chaine de conversion complte peut tre dtermine partir des paramtres des capteurs
utiliss selon lquation :
1 32768
s GFE
a 10
o s est la sensibilit du capteur utilis et GFE est le gain programm sur ltage dentre
analogique de la BoomBox. Dans lexemple propos, les paramtres utiliser sont les suivants :
SetADCAdjustments(0, 6.10e-3/4, 0.0); // Nominal sensitivity and x4 gain (Ipv)
SetADCAdjustments(1, 57.4e-3/8, 0.0); // Nominal sensitivity and x8 gain (Upv)
SetADCAdjustments(2, 113e-3/8, 0.0); // Nominal sensitivity and x8 gain (Udc)

La configuration de lchantillonnage permet de dfinir quel instant les mesures doivent tre
prises. Pour lapplication propose, lchantillonnage peut avantageusement se faire au milieu de
la priode de commutation, soit la valeur moyenne de londulation de courant. Pour ce faire, le
lchantillonnage est bas sur le gnrateur de frquence #3 avec un dphasage de 180.
Linstruction correspondante est la suivante :
ConfigSampling(3, 0.5); // Phase of 180 between FG #3 and sampling

3.c CONFIGURATION DES INTERRUPTIONS


Comme suggr plus tt, il est propos de configurer deux interruptions :

Interruption rapide
Une interruption rapide est ddie lexcution du rgulateur de courant. Avec la ligne suivante,
linterruption externe #1 (issue de la FPGA) est configure afin dutiliser comme routine de
service la fonction UserInterrupt1(). Lvnement dclencheur est dfini comme tant de
gnrateur de frquence #3 (qui est la base de temps utilise dans lunique modulateur
configur). La phase par rapport cette horloge est choisie 0 degrs (linterruption est
dclench exactement au dbut de la priode PWM) et aucun postscaling nest utilis (chaque
flanc dhorloge gnre une interruption).
RegisterExt1Interrupt(&UserInterrupt1, 3, 0.0, 0);

4
EXEMPLE DAPPLICATION
Convertisseur boost avec MPPT pour application photovoltaque

Interruption lente
Une seconde interruption plus lente excutant lalgorithme MPPT. Avec la ligne suivante, une
interruption plus lente est configure en utilisant le timer interne et en le configurant de manire
utiliser UserInterrupt2() comme routine de service. La priode choisie est de configur avec une
priode de 10000us.
RegisterTimerInterrupt(&UserInterrupt2, 10000);

4 MISE EN PLACE DE LAPPLICATION


Dans lexemple propos ici, la quantit de code correspondant lapplication est trs rduite.
Pour cette raison, lensemble du code peut tre directement rdige dans les fichiers User.c/.h

4.a DFINITION DE LA MACHINE DTAT DE LAPPLICATION


Au vu de la simplicit de cet exemple dapplication, aucune machine dtat nest mise en place.
Cest pourquoi le canal PWM #0 est directement activ lors de linitialisation. Ainsi, ds le
dmarrage de la BoomBox, le code prsent dans les deux interruptions sera directement
excut. En revanche, les signaux PWM seront physiquement bloqus tant que la commande
enable na pas t passe dans la console.

4.b CONFIGURATION ET EXCUTION DU RGULATEUR DE COURANT


De nombreuses routines utiles la mise en place dapplications dlectronique de puissance sont
disponibles dans le dossier API. Cest notamment le cas en ce qui concerne divers types de
rgulateurs. Par exemple, la mise en place du rgulateur de courant suggr dans cet exemple
dapplication se droule en deux tapes :

Cration et configuration
Cette tape doit se drouler linitialisation (dans UserInit()). Il sagit de crer un pseudo-objet
correspondant ainsi que de le configurer. Les lignes de code suivantes sont ncessaires :
PIDController Ipv_reg;
ConfigPIDController(&Ipv_reg, Kp, Ki, Kd, 15, -15, SAMPLING_PERIOD, 10);

La dfinition exacte du prototype de cette fonction se trouve dans le fichier API/controllers.h.


A noter que la variable Ipv_reg est invitablement une variable globale quil convient souvent
dinstancier en dbut de fichier user.c (ou dune autre pseudo-classe contenant les mcanismes
de rglage).

Execution
Cette tape consiste executer de manire rptitive le rgulateur ( frquence dinterruption
fixe). Dans lapplication prsente, linvocation du rgulateur se droule comme suit :
Epv = Upv - RunPIController(&Ipv_reg, Ipv_ref - Ipv);

5
EXEMPLE DAPPLICATION
Convertisseur boost avec MPPT pour application photovoltaque

A noter que plusieurs variantes dexcution (P, PI, I, PID) sont disponibles partir dun mme
pseudo-objet. Autrement dit, lobjet et la fonction de configuration sont les mmes quel que soit
la variante de rgulateur employe.

4.c DFINITION DES COMMANDES OFFERTES LUTILISATEUR


Laccs en ligne de commande offert par la BoomBox permet lutilisateur de passer des
commandes indpendamment de linterface de debug prsente dans Code Composer Studio.
En plus du blocage/dblocage de la BoomBox (commandes enable/disable), de nombreuses
fonction peuvent tre dfinies librement par lutilisateur. La dfinition des actions accessibles par
la ligne de commande seffectue dans le fichier cli_commands.c.
Dans le cas prsent, les commandes dj existantes peuvent tre typiquement compltes par :
a) setmppt, qui doit permettre dactiver ou de dsactiver le MPPT (la commande setmppt 0
vise le dsactiver, alors que la commande setmppt 1 doit lactiver.
b) setipv, qui doit permettre de dfinir la valeur de consigne pour le courant IPV (cela sup-
pose que le MPPT soit inactif).
Concrtement, la configuration de ces commandes se droule comme suit :
1) Prototyper les fonctions effectueront les actions choisies et seront invoques par la ligne de
commande. Dans le cas prsent, il sagit des prototypes suivants :
void SetMPPT(unsigned int argc, char *argv[]);
void SetIpv(unsigned int argc, char *argv[]);

2) Associer les commandes avec les fonctions correspondantes, c'est--dire inscrire les
fonctions dfinies ci-dessus parmi celles accessibles par ligne de commande. Pour ce faire, il
est ncessaire dajouter dans la fonction LoadCLIUserFunctions() les lignes suivantes :
fs_mkcmd_user("setmppt", SetMPPT);
fs_mkcmd_user("setipv", SetIpv);

3) Dfinir le contenu exact des fonctions, c'est--dire les actions quelles effectuent. Un
exemple est donn ci-aprs :
void SetIpv(unsigned int argc, char *argv[]){
if (*argv[1] == '?'){
printf("\nSet the PV current value (Ipv).");
printf("\nExample : setIpv 1.2");
return;
}
Ipv_ref = atof(argv[1]);;
}
void SetMPPT(unsigned int argc, char *argv[]){
if (*argv[1] == '?'){
printf("\nSet the MPPT state. (1 to activate and 0 to deactivate)");
printf("\nExample : setMPPT 1");
return;
}
enable_MPPT = atoi(argv[1]);;
}

6
EXEMPLE DAPPLICATION
Convertisseur boost avec MPPT pour application photovoltaque

Une fois dfinies, ces actions deviennent disponibles dans le rpertoire virtuel user de la
Boombox. Elles peuvent ainsi tre invoques selon lexemple suivant :
user@boombox / > user
user@boombox /user > enable
user@boombox /user > setipv 3.0
user@boombox /user > setmppt 1
user@boombox /user > disable

4.d DROULEMENT DE LINTERRUPTION RAPIDE


La fonction UserInterrupt1() dbute logiquement par lacquisition des mesures laide de la
fonction GetADC(). Linstant dchantillonnage exact correspond celui configur plus tt au
travers de la fonction ConfigSampling(). Cela correspond alors :
Upv = GetADC(1); // Voltage on the PV panel
Ipv = -GetADC(0); // PV panel current (sensor is positive outbound)
Udc = GetADC(2); // DC bus voltage

Aprs lexcution des tches de rglage, la mise jour des paramtres de modulation se fait au
moyen des deux lignes prsentes ci-aprs. Le nouveau rapport cycles est appliqu au canal
PWM 0 et ces informations sont transmises au modulateur proprement dit, situ dans la FPGA :
SetPWMDutyCycle(0, Epv/Udc); // Refresh the duty-cycle of PWM #0
UpdatePWMData(); // Send the new PWM parameters to the FPGA

4.e DROULEMENT DE LINTERRUPTION LENTE


Afin dexploiter en permanence le panneau solaire en un point de fonctionnement optimal dun
point de vue de la puissance qui en est extraite, il est ncessaire dajuster en permanence le
point de fonctionnement le long de la caractristique courant-tension du panneau. Un exemple
de caractristique est montr la Figure 2 :

Figure 2 : Caractristique courant-tension typique dun panneau photovoltaque (en rouge) et profil quivalent de la
puissance extraite (en bleu).

Une technique simple et efficace permettant dajuster en permanence le point de fonctionne-


ment au sommet de la caractristique de puissance consiste perturber lgrement le point de
fonctionnement actuel et observer limpact rsultant sur la puissance extraite (approche type
perturb &observe). Un exemple dalgorithme est dcrit dans UserInterrupt2().

Вам также может понравиться