.. _session-dcdc: ################ Conversion DC/DC ################ Ce premier TP vise à 1. prendre en main le matériel d'électronique de puissance 2. étudier deux concepts fondamentaux de l'électronique puissance : la **modulation en largeur d'impulsion** (MLI, ou PWM en anglais) et le modèle moyen Dans ce but, on s'intéressant au convertisseur de structure simple : un **bras de pont** (ou demi pont) utilisé pour faire de la conversion continu/continue (DC/DC), plus précisément un abaisseur de tension (hacheur dévolteur ou “buck”). Dispositif expérimental ======================= Description et schémas ----------------------- Un hacheur alimente une charge (représenté par une résistance R) à une tension réglable, à partir d'une alimentation fixe Vdc. Le courant est lissé par une inductance Lf. Schémas : .. figure:: images/ownverter_wiring_dcdc.png :height: 20em :alt: Câblage de convertisseur OwnVerter sur charge résistive, avec filtre inductif Câblage de convertisseur OwnVerter sur charge résistive, avec filtre inductif .. figure:: images/converter_dcdc_1leg_PWM.png :height: 25em :alt: Convertisseur DC/DC abaisseur de tension sur charge résistive, avec filtre inductif Convertisseur DC/DC abaisseur de tension sur charge résistive, avec filtre inductif Remarque : pour une meilleure lisibilité des schémas, un seul convertisseur est représenté. Cependant, la carte utilisée dispose de 3 bras de ponts et, pour ce TP, ils sont pré-câblés chacun avec une inductance de valeur différente. Les expériences se feront en utilisant un seul bras à la fois, à choisir selon la valeur d'inductance souhaitée. Liste du matériel ----------------- * Carte OwnTech `OwnVerter `_ qui inclut : * **Convertisseur** électronique de puissance : 3 bras de pont, utilisés ici en hacheur abaisseur * **Capteurs** de courant et de tension * **Microcontrôleur** `SPIN`_ (de la famille `STM32G4`_) : recueil des mesures, contrôle du convertisseur (en particulier génération de signal de Modulation en Largeur d'Impulsion, MLI ou PWM) et communication avec un ordinateur de supervision * Ordinateur, utilisé pour 1. Programmation de la carte 2. Supervision de la carte : réception des mesures et envoi des consignes * Alimentation DC : fournit la tension haute au convertisseur abaisseur * Filtre inductif Lf pour lisser le courant : 3 valeurs différentes pour étudier l'effet de la valeur de l'inductance. Valeurs disponibles : 75 µH, 157 µH, 346 µH et 630 µH (inductances toriques de la série `WE-SI `_) * Charge résistive R=10 Ω (intégré à la maquette “transformateur 12V”) * Oscilloscope avec sondes de tension isolées et sonde de courant .. _SPIN: https://docs.owntech.org/1.0.0/spin/1.2.0/getting_started/ .. _STM32G4: https://www.st.com/en/microcontrollers-microprocessors/stm32g4-series.html .. _model-dcdc: Modèle de simulation -------------------- Modèle Simulink/Simscape du convertisseur avec la charge et filtre inductif * Modèle Simulink: :download:`half_bridge_FR_flat.slx ` * Script Matlab compagnon: :download:`half_bridge_FR_params.m ` (définition des paramètres) .. figure:: downloads/half_bridge_FR_flat.png :height: 20em :alt: Modèle Simulink/Simscape du convertisseur DC/DC sur charge résistive, avec filtre inductif Modèle Simulink/Simscape du convertisseur DC/DC sur charge résistive, avec filtre inductif Mise en route de la carte OwnTech (programmation) ------------------------------------------------- En plus du câblage électrique, l'utilisation des carte OwnTech nécessite une étape de programmation. Cela signifie : 1. Décrirer le comportement du microcontrôleur dans le language C++ (étape la plus longue, déjà faite → cf. code fournit) 2. Compiler le code dans le language du microcontrôleur (`assembleur `_/`jeu d'instructions `_) 3. Charger le code compilé dans la mémoire du microcontrôleur : via un câble USB-C La programmation se fait dans l'environnement de développement `VSCode `_ avec l'extension `PlatformIO `_ (dédié au développement pour les microcontrôleurs des “systèmes embarqués”). Cet environnement est déjà configuré sur les ordinateurs de la salle de TP. Ceci dit, l'environnement étant open source, vous pouvez utiliser un ordinateur personnel (en espérant qu'une erreur de branchement ne l'endommage pas !). Le guide de démarrage officiel est disponibles à l'adresse https://docs.owntech.org/latest/core/docs/environment_setup/, avec deux différences : * Les premières étapes (installations de VSCode et PlatformIO) ont déjà été faites sur les ordinateurs de la salle * Utiliser le code de ce TP plutôt que l'exemple par défaut (qui fait clignoter une LED) .. admonition:: Code à utiliser :class: attention Le microcontrôleur de la carte OwnTech est à programmer avec le template suivant : https://github.com/pierre-haessig/ownverter-dcdc Expériences en régime permanent =============================== Dans cette partie, le rapport cyclique du convertisseur est fixé et les mesures se font en régime permanent. .. admonition:: Question préambule 1 :class: note Rappeler la constante de temps du circuit RL connecté au hacheur et l'évaluer pour voir combien de temps il est nécessaire de patienter avant d'attendre le régime permanent dans le pire cas (préciser ce pire cas). Objectif -------- Le but des expériences en régime permanent est d'étudier l'effet des facteurs suivants : * Inductance de lissage Lf * Rapport cyclique d (d pour “duty cycle” ou α) * Fréquence de découpage f * Tension d'alimentation Vdc sur ces grandeurs importantes : * Valeur moyenne des tensions et du courant * Ondulation du courant ΔI (crête-à-crête) Travail à effectuer ------------------- .. admonition:: Expériences 1 : régime permanent :class: important 1. **Concevoir un plan d'expérience** "en étoile" : variation d'un paramètre à la fois, tous les autres étant gardés constants. Chaque paramètre devra prendre 3 valeurs. Présenter le plan à l'encadrant.e de TP 2. **Réaliser les mesures** et les noter dans un tableau (une ligne par expérience). Ajouter en regard dans le tableau les valeurs théoriques attendues. Voir :ref:`details-exp-dcdc-perm` pour la démarche à suivre. 3. **Analyse des résultats** : représenter graphiquement l'effet de chaque paramètre (un graphique par paramètre), accompagné de l'effet théorique attendu 4. **Comparaison à un modèle de simulation** : reproduire une des mesures (1 jeu de paramètres) avec le :ref:`model-dcdc` Simulink/Simscape fourni : tracé temporel et mesures .. admonition:: Question préambule 2 :class: note Rappeler les expressions théoriques attendues pour les grandeurs à mesurer (valeurs moyennes et ondulation ΔI) Remarques : * Il n'est pas demandé d'enregistrer des captures temporelles à l'oscilloscope de chacune des mesures. Par contre, il est demandé d'en choisir quelques unes particulièrement représentative de vos expériences et des principaux effets illustrés. * Pour une bonne comparaison entre mesures et modèle de simulation, produire un tracé temporel simulé correspondant exactements à un enregistrement expérimental (même paramètres, même durée du tracé...) .. _details-exp-dcdc-perm: Détails de la procédure expérimentale ------------------------------------- .. admonition:: Question préambule 3 :class: attention Les résistances R=10 Ω utilisées comme charge conçues pour dissiper au maximum 25 W. Sachant qu'un hacheur abaisseur fournit une tension inférieur ou égale à la tension d'alimentation, calculer la plus haute valeur de la tension d'alimentation telle que les résistances ne chauffe pas trop. 1. **Câbler et programmer** le hacheur, y compris les mesures (cf. ci-après) 2. *Après validation* par l'encadrant.e de TP, mettre sous tension l'alimentation DC, réglée sur la valeur max calculée 3. **Mesurer** : la tension filtrée (au borne de la résistance), la tension non filtrée (en sortie du hacheur, avant l'inductance) et le courant de sortie. En particulier : * Mesurer la valeur moyenne des tensions et du courant * Mesurer l'ondulation du courant ΔI (crête à crête) Expériences en régime transitoire ================================= Dans cette partie, on s'intéresse au **comportement dynamique** du convertisseur, c'est-à-dire l'évolution des grandeurs (courant, tension) suite à un changement du signal d'entrée, à savoir le rapport cyclique. Motivation : la modélisation de la dynamique est la première étape indispensable si l'on souhaite mettre en place une régulation (de la tension ou du courant de sortie, voir :ref:`regulation-dcdc`). Travail à effectuer ------------------- .. admonition:: Expériences 2 : régime transitoire :class: important 1. Enregistrer un transitoire de variation de rapport cyclique (essai indiciel). Voir :ref:`details-exp-dcdc-trans` 2. Comparer les résultats aux modèles de simulation commuté (fourni) et au modèle moyen (à construire) 3. Modélisation par fonction de transfert .. _details-exp-dcdc-trans: Mesure expérimentale des transitoires ------------------------------------- Enregistrer à l'oscilloscope les signaux de tension et courant lors d'un transitoire de variation de rapport cyclique (essai indiciel) * Méthode : utiliser le mode de déclenchement “Single” de l'oscilloscope, avec un réglage du niveau du trigger tel que le signal déclenche le trigger lors du transitoire, mais pas avant. * Réaliser la mesure pour deux valeurs d'inductance de filtrage Comparaison au modèle commuté ----------------------------- Reproduire les transitoires avec le :ref:`model-dcdc` fourni. Discuter les éventuelles différences. Comparaison au modèle moyen --------------------------- Modifier le modèle du convertisseur pour y implémenter le modèle moyen, c'est-à-dire où la tension de sortie du bras de pont est égale à sa **valeur moyenne sur la période de découpage** (⚠️ c'est une moyenne qui change au cours du temps si le rapport cyclique varie). Le modèle moyen a vocation à représenter la dynamique lente des signaux (plus lente que la fréquence de découpage), qui est celle surlaquelle une régulation peut agir (car le comportement à l'intérieur d'une période de découpage est dictée par la modulation en largeur d'impulsion). Reproduire les transitoires avec le modèle moyen. Discuter les différences. Remarques : * Faire la modification dans une *copie du modèle fourni*, pour garder le modèle commuté. * Composants Simulink/Simscape utiles : `Controlled Voltage Source `_, Multiplieur .. figure:: images/converter_dcdc_1leg_avg.png :height: 13em :alt: Modèle moyen du convertisseur DC/DC, avec charge résistive et filtre inductif Modèle moyen du convertisseur DC/DC, avec charge résistive et filtre inductif Modélisation par fonction de transfert -------------------------------------- Alors que l'électronique de puissance utilise des composants fortement non linéaires (diodes et transistors qui commutent), le modèle moyen est un circuit électrique linéaire “classique”. Cela ouvre la voie à une modélisation par fonction de transfert. 1. Calculer la fonction de transfert du système (tension de sortie / rapport cyclique): :math:`H(p) = V_R(p)/d(p)` 2. Implémenter cette fonction de transfert dans Simulink 3. Reproduire les transitoires avec le modèle fonction de transfert. Remarque : le modèle fonction de transfert est censé avoir *exactement* le même comportement que le modèle moyen. .. _regulation-dcdc: Régulation de tension ===================== La régulation de tension consiste à ajuster automatique que rapport cyclique pour que la tension de sortie suive une tension consigne de référence 1. Régler un correcteur PI avec une constante de temps en boucle fermée de 0.1 ms (ou autrement dit une pulsation de coupure à 10 krad/s) 2. Tester la performance du correcteur en simulation 3. Implémenter le correcteur expérimentalement et mesurer sa performance * Modifier le code pour que l'interface utilisateur ne fournisse non plus un rapport cyclique de référence, mais une tension de référence * Implémenter l'équation du correcteur Aide : Correcteur PI en temps discret ------------------------------------- Soit :math:`\varepsilon = V^* - V_{mes}` l'écart à consigne (référence − mesure) que l'on souhaite ramener à zéro. L'expression de la commande (le rapport cyclique :math:`d(t)`) pilotée par un correcteur PI est : .. math:: d(t) = K_p \left[ \varepsilon(t)+ \frac{1}{T_i} \int_0^t \varepsilon(t).dt \right] avec pour paramètres :math:`K_p` le gain proportionnel et :math:`T_i` la constante de temps de l'action intégrale (en s). Cette expression peut être transformée en un contrôleur à temps discret (avec une période d'échantillonage :math:`T_s`) grâce à l'approximation de l'intégrale par des rectangles (discrétisation d'Euler explicite) : .. math:: d(k) = K_p \left[ \varepsilon(k)+ \frac{1}{T_i} \varepsilon_{int}(k) \right] où l'écart à consigne en temps discret est :math:`\varepsilon(k) = V^*(k) - V_{mes}(k)` et où son intégrale est calculée par l'approximation d'Euler : .. math:: \varepsilon_{int}(k) = \varepsilon_{int}(k-1) + T_s.\varepsilon(k) Ainsi, l'implémentation en C nécessite de déclarer des nouvelles variables “float” (représentation à `virgule flottante `_): * des constantes pour les paramètres :math:`K_p, T_i`: ``const float32_t Kp=123.456;`` * une variable statique (~ globale, persistente) pour l'intégrale de l'écart à la consigne :math:`\varepsilon_{int}`: ``static float32_t ecart_int;``. Dans la fonction d'initialisation ``setup_routine()``, il faut l'initialiser ``ecart_int = 0.0;``