Written by: [email protected]
Revision/release date: A, 2015.02.09
Tutoriel n°1
CONVERTISSEUR BOOST AVEC MPPT
POUR APPLICATION PHOTOVOLTAIQUE
Rédigé par : imperix SA, Rte. de l’Industrie 17, 1950 Sion, Switzerland
Nicolas Cherix <[email protected]>
Points abordés : Configuration des entrées analogiques
Configuration des interruptions
Configuration de l’échantillonnage
Utilisation de la ligne de commande
– Mise en place d’une régulation basique
1 INTRODUCTION
Ce tutoriel décrit la procédure à suivre pour contrôler un convertisseur élévateur de tension de
type Boost à laide de la BoomBox. Lapplication envisagée consiste à interfacer un panneau
solaire à une source de tension plus élevée. L’objectif proposé est de soustraire le maximum de
puissance du panneau solaire à disposition.
Le système considéré est représenté à la Figure 1, ses principaux paramètres électriques étant
indiqués dans le Tableau 1 :
Ipv UDC
Upv S1
L
Epv
Figure 1 : Schéma électrique simplifié du système considéré.
Nom Valeur Spécification Capteur utilisé # Canal
I
PV 0-8A Courant extrait du panneau solaire LEM LAH50-P 0
U
PV 10-25V Tension aux bornes du panneau solaire LEM LV25-P 1
U
D
C
100V Tension du bus DC (fixe) IX AMC1200 2
I
D
C
0-2A Courant injecté dans le bus DC N.A. N.A.
fS 10kHz Fréquence de commutation N.A. N.A.
L 1mH Inductance de lissage N.A. N.A.
Tableau 1 : Paramètres électriques du système considéré.
EXEMPLE D’APPLICATION
Convertisseur boost avec MPPT pour application photovoltaïque
2
Concrètement, l’approche proposée consiste à contrôler le courant IPV extrait du panneau
solaire ; la valeur de consigne correspondante étant ensuite définie par un algorithme MPPT afin
de maximiser la puissance extraite. La tension du bus DC est supposée constante.
Une stratégie d’implémentation raisonnable consiste à placer une boucle de réglage rapide sur
le courant IPV dont la valeur de consigne sera mise à jour périodiquement par un algorithme
MPPT exécuté plus sur une base de temps plus longue.
2 MISE EN PLACE DU HARDWARE
Afin de contrôler le convertisseur Boost, un seul signal de commande S1 est nécessaire, qui est
cablé sur le canal PWM #0 (low). Si la conduction inverse dans le transistor est avantageuse, le
signal de commande complémentaire (high) peut également être cablé.
Par ailleurs, trois mesures sont nécessaires afin de constituer la structure maximale de contrôle
correspondant au réglage décrit. Ces mesures sont indiquées dans le Tableau 1. Suivant les choix
de design effectués, il est naturellement possible de se passer de certaines d’entre-elles.
2.a CONFIGURATION DES ENTRÉES ANALOGIQUES
Après avoir connecté les mesures à la BoomBox à laide de câbles RJ45, il est nécessaire de
configurer chacun des canaux analogiques utilisés. La procédure à suivre est la suivante :
1) Sélectionner le menu « analog inputs » sur le frontpanel.
2) Sélectionner un des canaux de mesure à configurer 0 (IPV), 1 (UPV) ou 2 (UDC)
3) En fonction du type de capteur utilisé, choisir entre :
a) L’entrée single-ended, basse impédance (100 Ω). Ce choix est recommandé avec la
plupart des capteurs de type LEM.
b) L’entrée differential, haute impédance (3kΩ). Ce choix est recommandé dans la plupart
des autres cas. Attention, il ne s’agit pas d’une entrée isolée galvaniquement.
4) Choisir les gains permettant d’optimiser l’exploitation 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 désactiver le pré-filtrage sur chaque mesure. On choisit ici de le désactiver et de
privilégier un échantillonnage parfaitement synchrone des valeurs mesurées.
6) Le cas échéant, régler la fréquence de coupure. Cette dernière est ici sans importance
puisque le filtre est désactivé.
7) Régler les seuils de sécurité à des valeurs sûres pour l’utilisateur et l’application. Ces valeurs
sont considérées en tension à l’entrée du convertisseur AD. Les limites proposées sont indi-
quées dans le Tableau 2. Elles tiennent compte de la sensibilité des capteurs utilisés, dont les
plus courants sont décrits dans le Tableau 3
8) Activer les sécurités.
9) Sauvegarder les paramètres configurés et répéter l’opération 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 sécurité programmés sur la Boombox.
EXEMPLE D’APPLICATION
Convertisseur boost avec MPPT pour application photovoltaïque
3
Capteur Type de sortie Sensibilité nominale Précision 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% @25°C
LEM - LAH50-NP/SP1 Courant, single-ended 100 [mV/A] ±0.25% @25°C
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 : Paramètres des capteurs les plus couramment utilisés avec la BoomBox.
3 CONFIGURATION DU SOFTWARE
La configuration logicielle de la BoomBox s’effectue par l’appel de plusieurs routines ad-hoc
présentées ci-après. Ces routines sont typiquement appelées lors de l’initialisation de
l’application, c'est-à-dire au démarrage du code de la BoomBox, dans la fonction UserInit().
3.a CONFIGURATION DES PWMS
Chaque paire de signaux PWM complémentaires possède son propre modulateur PWM qui peut
être calé sur n’importe lequel des 4 générateurs de fréquence disponibles dans la BoomBox.
Ainsi, la configuration d’un modulateur PWM se fait en deux étapes principales :
Configuration du générateur de fréquence
Le code suivant permet de configurer le générateur de fréquence #3 avec une période définie
par SWITCHING_PERIOD (ici 100μs). En fait, le second argument de la fonction est lié au nombre
de coups d’horloge correspondants sur une base de temps de 30Mhz. SWITCHING_PERIOD et
FPGA_CLK_PERIOD sont des constantes de précompilation (#define) définies dans user.h.
SetFreqGenPeriod(3, (int)(SWITCHING_PERIOD/FPGA_CLK_PERIOD));
Configuration du modulateur PWM
La ligne suivante permet d’utiliser le générateur de fréquence #3 c ci-dessus sur le canal PWM #0.
Elle sélectionne également une porteuse de type dent de scie (SAWTOOTH) pour le modulateur
correspondant, ainsi qu’un temps d’anti-chevauchement entre signaux complémentaires 400ns.
Le dernier argument est également défini en nombre de coups d’horloge à 30Mhz.
ConfigPWMChannel(0, 3, SAWTOOTH, (int)(400e-9/FPGA_CLK_PERIOD))
L’instruction suivante permet de configurer le canal PWM #0 comme actif. Cela signifie que dès
lors que les sorties PWM de la BoomBox seront activées (la commande enable est passée dans la
console), les signaux PWM seront directement produits. Dans des applications plus complexes
ou multi-convertisseurs, cette option permet d’activer sélectivement certaines sorties PWM
indépendamment du blocage/déblocage (enable/disable) global de l’ensemble des canaux.
ActivatePWMChannel(0); // Activate the PWM #0 channel
La ligne suivante permet d’imposer une phase relative de 0 degrés sur le canal PWM #0 par
rapport à l’horloge sélectionnée pour ce canal (la source #3). A noter qu’il s’agit ici de la valeur
EXEMPLE D’APPLICATION
Convertisseur boost avec MPPT pour application photovoltaïque
4
par défaut et que ce paramètre est surtout utile pour décaler les porteuses dans un système
polyphasé. L’appel 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 d’obtenir des valeurs directement utilisables pour chacune des entrées analogiques, il est
nécessaire de définir les paramètres de conversion analogique-numérique. Pour ce faire, il suffit
d’invoquer la fonction SetADCAdjustements() et de lui fournir comme paramètres la sensibilité et
l’offset désirés. Ainsi, à la lecture d’un canal analogique, la routine GetADC() retourne directement
un float possédant le sens physique adéquat selon l’équation :
yaxb
y est la valeur retournée, x la valeur brute issue du convertisseur AD ainsi que a et b la
sensibilité et l’offset configurés par SetADCAdjustments(), respectivement. La sensibilité a de la
chaine de conversion complète peut être déterminée à partir des paramètres des capteurs
utilisés selon l’équation :
 
1 32768
10
FE
sG
a
s est la sensibilité du capteur utilisé et GFE est le gain programmé sur l’étage d’entrée
analogique de la BoomBox. Dans l’exemple proposé, les paramètres à 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 l’échantillonnage permet de définir à quel instant les mesures doivent être
prises. Pour l’application proposée, l’échantillonnage peut avantageusement se faire au milieu de
la période de commutation, soit à la valeur moyenne de l’ondulation de courant. Pour ce faire, le
l’échantillonnage est basé sur le générateur de fréquence #3 avec un déphasage de 180°.
L’instruction correspondante est la suivante :
ConfigSampling(3, 0.5); // Phase of 180° between FG #3 and sampling
3.c CONFIGURATION DES INTERRUPTIONS
Comme suggéré plus tôt, il est proposé de configurer deux interruptions :
Interruption rapide
Une interruption rapide est dédiée à l’exécution du régulateur de courant. Avec la ligne suivante,
l’interruption externe #1 (issue de la FPGA) est configurée afin d’utiliser comme routine de
service la fonction UserInterrupt1(). L’événement déclencheur est défini comme étant de
générateur de fréquence #3 (qui est la base de temps utilisée dans l’unique modulateur
configuré). La phase par rapport à cette horloge est choisie à 0 degrés (l’interruption est
déclenché exactement au début de la période PWM) et aucun postscaling n’est utilisé (chaque
flanc d’horloge génère une interruption).
RegisterExt1Interrupt(&UserInterrupt1, 3, 0.0, 0);
EXEMPLE D’APPLICATION
Convertisseur boost avec MPPT pour application photovoltaïque
5
Interruption lente
Une seconde interruption plus lente exécutant l’algorithme MPPT. Avec la ligne suivante, une
interruption plus lente est configurée en utilisant le timer interne et en le configurant de manière
à utiliser UserInterrupt2() comme routine de service. La période choisie est de configuré avec une
période de 10’000us.
RegisterTimerInterrupt(&UserInterrupt2, 10000);
4 MISE EN PLACE DE L’APPLICATION
Dans l’exemple proposé ici, la quantité de code correspondant à l’application est très réduite.
Pour cette raison, l’ensemble du code peut être directement rédigée dans les fichiers User.c/.h
4.a DÉFINITION DE LA MACHINE DÉTAT DE LAPPLICATION
Au vu de la simplicité de cet exemple dapplication, aucune machine d’état n’est mise en place.
C’est pourquoi le canal PWM #0 est directement activé lors de l’initialisation. Ainsi, dès le
démarrage de la BoomBox, le code présent dans les deux interruptions sera directement
exécuté. En revanche, les signaux PWM seront physiquement bloqués tant que la commande
enable n’a pas été passée dans la console.
4.b CONFIGURATION ET EXÉCUTION DU RÉGULATEUR DE COURANT
De nombreuses routines utiles à la mise en place d’applications d’électronique de puissance sont
disponibles dans le dossier API. C’est notamment le cas en ce qui concerne divers types de
régulateurs. Par exemple, la mise en place du régulateur de courant suggéré dans cet exemple
d’application se déroule en deux étapes :
Création et configuration
Cette étape doit se dérouler à l’initialisation (dans UserInit()). Il s’agit de créer un pseudo-objet
correspondant ainsi que de le configurer. Les lignes de code suivantes sont nécessaires :
PIDController Ipv_reg;
ConfigPIDController(&Ipv_reg, Kp, Ki, Kd, 15, -15, SAMPLING_PERIOD, 10);
La définition exacte du prototype de cette fonction se trouve dans le fichier API/controllers.h.
A noter que la variable Ipv_reg est inévitablement une variable globale qu’il convient souvent
d’instancier en début de fichier user.c (ou d’une autre pseudo-classe contenant les mécanismes
de réglage).
Execution
Cette étape consiste à executer de manière répétitive le régulateur (à fréquence d’interruption
fixe). Dans l’application présente, l’invocation du régulateur se déroule comme suit :
Epv = Upv - RunPIController(&Ipv_reg, Ipv_ref - Ipv);
1 / 7 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !