Actionneurs et Automatique Appliquée - ENSEA - PDF
Document Details
Uploaded by Deleted User
ENSEA
2021
ESE
Nicolas Papazoglou
Tags
Summary
These lecture notes from ENSAEA cover the application of electric actuators in embedded industrial applications including different types of electric machines continuous, alternative, and step motors, associated sensors (current, speed, position), systems modeling, and microcontroller implementation with STM32. The presentation also includes diagrams for various types of electric motors.
Full Transcript
ACTIONNEUR ET AUTOMATIQUE APPLIQUÉE [ESE 3745] ENSEA Nicolas Papazoglou [email protected] November 14, 2021 Introduction PAPAZOGLOU 2 / 110 Organisation PAPAZOGLOU 3 / 110 Organisation Objectifs...
ACTIONNEUR ET AUTOMATIQUE APPLIQUÉE [ESE 3745] ENSEA Nicolas Papazoglou [email protected] November 14, 2021 Introduction PAPAZOGLOU 2 / 110 Organisation PAPAZOGLOU 3 / 110 Organisation Objectifs : Ce cours a pour objectif de présenter de manière fonctionnelle les différents types d’actionneurs électriques pouvant être utilisés dans des applications industrielles embarquées. Les différents types de machines électriques (continu, alternatif, pas à pas, etc.). Les principaux capteurs associés : mesures de courant, vitesse, position. Modélisation des actionneurs électriques : ensembles formés de la machine, de son dispositif d’alimentation, des capteurs associés et de la commande. Réalisation d’un système de commande numérique directe et asservissement d’actionneur électrique par micro-controleur STM32. Les travaux pratiques mettrons en œuvre la commande numérique pour moteur à courant continu avec asservissement. PAPAZOGLOU 4 / 110 Organisation Objectifs : Ce cours a pour objectif de présenter de manière fonctionnelle les différents types d’actionneurs électriques pouvant être utilisés dans des applications industrielles embarquées. Les différents types de machines électriques (continu, alternatif, pas à pas, etc.). Les principaux capteurs associés : mesures de courant, vitesse, position. Modélisation des actionneurs électriques : ensembles formés de la machine, de son dispositif d’alimentation, des capteurs associés et de la commande. Réalisation d’un système de commande numérique directe et asservissement d’actionneur électrique par micro-controleur STM32. Les travaux pratiques mettrons en œuvre la commande numérique pour moteur à courant continu avec asservissement. Moyens : 14h de cours/TD 12h de TP PAPAZOGLOU 4 / 110 La cible : Machine à courant continu PAPAZOGLOU 5 / 110 La cible : Machine à courant continu La machine à courant continu PAPAZOGLOU 6 / 110 La cible : Machine à courant continu La machine à courant continu u(t) = Kω(t) + Ri(t) C(t) = Ki(t) PAPAZOGLOU 6 / 110 La cible : Machine à courant continu La machine à courant continu u(t) = Kω(t) + Ri(t) C(t) = Ki(t) Pour controler un moteur, nous avons besoin de connaitre ses grandeurs caractéristiques et asservir courant et tension. PAPAZOGLOU 6 / 110 Le micro-controleur PAPAZOGLOU 7 / 110 Capacité du micro-controleur Qu’avons nous besoin comme périphériques ? PAPAZOGLOU 8 / 110 Capacité du micro-controleur Qu’avons nous besoin comme périphériques ? Qu’avons nous besoin comme capacité de calcul ? PAPAZOGLOU 8 / 110 Capacité du micro-controleur Qu’avons nous besoin comme périphériques ? Qu’avons nous besoin comme capacité de calcul ? Comment l’interfacer avec l’homme ? PAPAZOGLOU 8 / 110 Micro-processeur Kit P-NUCLEO-IHM03 : NUCLEO-G431RB board basé un micro-processeur STM32G431RB STSPIN830 driver pour moteur triphasé PAPAZOGLOU 9 / 110 STM32G431 PAPAZOGLOU 10 / 110 Documentation Directement sur le site de ST : https://www.st.com/ Documentation PAPAZOGLOU 11 / 110 Documentation stm32g431kb.pdf, page 16/197 PAPAZOGLOU 12 / 110 STM32CubeIDE IDE développé par ST avec des outils très puissants : CubeMX Librairie HAL Basé sur Eclipse Compilateur et débug intégré Disponible sous Windows, Mac OS et Linux PAPAZOGLOU 13 / 110 MOOC - STM32CubeIDE basics MOOC by ST. PAPAZOGLOU 14 / 110 Timer, PWM, DMA et ADC PAPAZOGLOU 15 / 110 Timer et PWM PAPAZOGLOU 16 / 110 Timer PAPAZOGLOU 17 / 110 Timer et PWM PAPAZOGLOU 18 / 110 PWM commandé par un Timer PAPAZOGLOU 19 / 110 Il faut savoir quel type de signal vous voulez générer : Période de la PWM Résolution de la PWM Forme de la PWM (edge-aligned ou center-aligned) Symetric ou Asymmetric mode Etc... PAPAZOGLOU 20 / 110 Il faut savoir quel type de signal vous voulez générer : Période de la PWM Résolution de la PWM Forme de la PWM (edge-aligned ou center-aligned) Symetric ou Asymmetric mode Etc... Ces contraintes imposeront d’autres paramètres : Fréquence de l’horloge en entrée du Timer Choix du timer (high résolution ou non) Exercice en TD PAPAZOGLOU 20 / 110 Servo-moteur PAPAZOGLOU 21 / 110 ADC PAPAZOGLOU 22 / 110 Plusieurs façons de programmer le convertisseur analogique-numérique (ADC) : Par pooling, Par déclanchement software et interruption sur l’acquisition des données, Par déclanchement software et interruption par le DMA, Par déclanchement hardware (Timer) et interruption par le DMA. PAPAZOGLOU 23 / 110 ADC par pooling Acquisition par pooling : Un déclenchement a lieu par le micro-processeur (soft) Après un certain temps.... Le processeur va récupérer les valeurs converties par l’ADC (en espérant que la conversion ait eu le temps de finir) PAPAZOGLOU 24 / 110 ADC par pooling Acquisition par pooling : Un déclenchement a lieu par le micro-processeur (soft) Après un certain temps.... Le processeur va récupérer les valeurs converties par l’ADC (en espérant que la conversion ait eu le temps de finir) Fonctions HAL utilisées : HAL StatusTypeDef HAL ADCEx Calibration Start (ADC HandleTypeDef * hadc, uint32 t SingleDiff) HAL StatusTypeDef HAL ADC Start (ADC HandleTypeDef * hadc) HAL StatusTypeDef HAL ADC PollForConversion (ADC HandleTypeDef * hadc, uint32 t Timeout) uint32 t HAL ADC GetValue (ADC HandleTypeDef * hadc) void HAL Delay (uint32 t Delay) PAPAZOGLOU 24 / 110 Par déclanchement software, interruption en fin d’acquisition Par déclanchement software et interruption sur l’acquisition des données : Un déclenchement à lieu par le micro-processeur (soft) Une fois l’acquisition réalisé par l’ADC, une interruption est mise en place, Le processeur va récupérer les valeurs converties par l’ADC PAPAZOGLOU 25 / 110 Par déclanchement software, interruption en fin d’acquisition Par déclanchement software et interruption sur l’acquisition des données : Un déclenchement à lieu par le micro-processeur (soft) Une fois l’acquisition réalisé par l’ADC, une interruption est mise en place, Le processeur va récupérer les valeurs converties par l’ADC Fonctions HAL utilisées : HAL StatusTypeDef HAL ADCEx Calibration Start (ADC HandleTypeDef * hadc, uint32 t SingleDiff) uint32 t HAL ADC GetValue (ADC HandleTypeDef * hadc) HAL StatusTypeDef HAL ADC Start IT (ADC HandleTypeDef * hadc) void HAL ADC ConvCpltCallback(ADC HandleTypeDef* hadc); PAPAZOGLOU 25 / 110 Par déclanchement software et interruption par le DMA Par déclanchement software et interruption par le DMA Un déclenchement à lieu par le micro-processeur (soft) Une fois l’acquisition réalisé par l’ADC, les données sont transmises au DMA, Une fois le buffer rempli par le DMA, un interruption est générée. PAPAZOGLOU 26 / 110 Par déclanchement software et interruption par le DMA Par déclanchement software et interruption par le DMA Un déclenchement à lieu par le micro-processeur (soft) Une fois l’acquisition réalisé par l’ADC, les données sont transmises au DMA, Une fois le buffer rempli par le DMA, un interruption est générée. Fonctions HAL utilisées : HAL StatusTypeDef HAL ADCEx Calibration Start (ADC HandleTypeDef * hadc, uint32 t SingleDiff) HAL StatusTypeDef HAL ADC Start DMA (ADC HandleTypeDef * hadc, uint32 t * pData, uint32 t Length) void HAL ADC ConvCpltCallback(ADC HandleTypeDef* hadc) PAPAZOGLOU 26 / 110 Par déclanchement hardware (Timer) et interruption par le DMA Par déclanchement hardware (Timer) et interruption par le DMA : Création d’une base de temps (Timer) avec Event régulier qui déclenche une conversion (ou succession de conversion), Une fois l’acquisition réalisé par l’ADC, les données sont transmises au DMA, Une fois le buffer rempli par le DMA, un interruption est générée. PAPAZOGLOU 27 / 110 Par déclanchement hardware (Timer) et interruption par le DMA Par déclanchement hardware (Timer) et interruption par le DMA : Création d’une base de temps (Timer) avec Event régulier qui déclenche une conversion (ou succession de conversion), Une fois l’acquisition réalisé par l’ADC, les données sont transmises au DMA, Une fois le buffer rempli par le DMA, un interruption est générée. Fonctions HAL utilisées : HAL StatusTypeDef HAL ADCEx Calibration Start (ADC HandleTypeDef * hadc, uint32 t SingleDiff) HAL StatusTypeDef HAL ADC Start DMA (ADC HandleTypeDef * hadc, uint32 t * pData, uint32 t Length) HAL StatusTypeDef HAL TIM Base Start (TIM HandleTypeDef * htim) PAPAZOGLOU 27 / 110 Direct Memory Access (DMA) PAPAZOGLOU 28 / 110 Direct Memory Access : Mécanisme qui permet l’accès direct à la mémoire vive sans passer par le processeur permettant ainsi une accélération assez importante des performances pour les bus d’entrées/sorties (E/S ou I/O). (Wikipedia) PAPAZOGLOU 29 / 110 Paramètres d’un DMA Direction de périphérique vers mémoire de mémoire vers périphérique de mémoire vers mémoire 2 modes : Normal Circulaire Incrément d’adresse Largeur des données (8, 16 ou 32 bits) PAPAZOGLOU 30 / 110 ADC, pour aller plus loin PAPAZOGLOU 31 / 110 Plusieurs modes de conversion PAPAZOGLOU 32 / 110 Plusieurs modes de conversion PAPAZOGLOU 33 / 110 Plusieurs modes de conversion PAPAZOGLOU 34 / 110 Plusieurs modes de conversion PAPAZOGLOU 35 / 110 Autres paramètres à prendre en compte Temps d’acquisition et de conversion des données (voir horloge et pre-scaler) Mode Single Ended ou Differential PAPAZOGLOU 36 / 110 Moteur pas à pas PAPAZOGLOU 37 / 110 Principe du moteur pas à pas PAPAZOGLOU 38 / 110 Principe du moteur pas à pas unipolaire PAPAZOGLOU 39 / 110 Principe du moteur pas à pas PAPAZOGLOU 40 / 110 Exemple de matériel Driver ULN2003 Moteur pas à pas 28BYJ48 PAPAZOGLOU 41 / 110 Vue interne d’un moteur pas à pas PAPAZOGLOU 42 / 110 Signaux de commande de moteur pas à pas PAPAZOGLOU 43 / 110 Commande du moteur pas à pas 4 types de commande Wave drive Full step drive Half step drive Microstepping PAPAZOGLOU 44 / 110 Commande du moteur pas à pas PAPAZOGLOU 45 / 110 Commande du moteur pas à pas PAPAZOGLOU 46 / 110 Commande du moteur pas à pas PAPAZOGLOU 47 / 110 Commande du moteur pas à pas PAPAZOGLOU 48 / 110 Commande de MCC, commande de hacheur, gestion des temps morts PAPAZOGLOU 49 / 110 Hacheur 4 cadrants PAPAZOGLOU 50 / 110 Advanced-timer PAPAZOGLOU 51 / 110 PWM edge aligned PAPAZOGLOU 52 / 110 PWM center aligned PAPAZOGLOU 53 / 110 PWM center aligned PAPAZOGLOU 54 / 110 PWM Deadtime configuration PAPAZOGLOU 55 / 110 Commande complémentaire décalée PAPAZOGLOU 56 / 110 Commande classique : α = 0.5 PAPAZOGLOU 57 / 110 Commande classique : α = 0.75 PAPAZOGLOU 58 / 110 Commande classique : α = 0.875 PAPAZOGLOU 59 / 110 Commande complémentaire décalée : α = 0.5 PAPAZOGLOU 60 / 110 Commande complémentaire décalée : α = 0.75 PAPAZOGLOU 61 / 110 Commande complémentaire décalée : α = 0.875 PAPAZOGLOU 62 / 110 Cf. TD / TDm PAPAZOGLOU 63 / 110 Capteurs des moteurs (Courant, Hall) PAPAZOGLOU 64 / 110 Pour l’asservissement des moteurs : Nécessite la mesure de plusieurs grandeurs analogiques : Mesure de courant (capteur hall) Mesure de vitesse (tachymétrie) Capteur à effet hall (position moteur synchrone) PAPAZOGLOU 65 / 110 Pour l’asservissement des moteurs : Nécessite la mesure de plusieurs grandeurs analogiques : Mesure de courant (capteur hall) Mesure de vitesse (tachymétrie) Capteur à effet hall (position moteur synchrone) A intervalle de temps régulier PAPAZOGLOU 65 / 110 Capteurs numériques de moteurs (roue codeuse) PAPAZOGLOU 66 / 110 Objectif Asservissement du moteur en vitesse Asservissement du moteur en position Capteur optique, n’intervient pas sur le couple résistif du moteur Capteur ”numérique”, n’est pas sensible au bruit PAPAZOGLOU 67 / 110 Principe mécanique PAPAZOGLOU 68 / 110 Principe mécanique PAPAZOGLOU 69 / 110 Signaux générés PAPAZOGLOU 70 / 110 Signaux générés Caractéristiques des signaux générés : Très semblables à des PWM, Signaux en quadrature de phase, Il faut compter pour connaitre la vitesse du moteur : ω(t) = α ∆n ∆t PAPAZOGLOU 71 / 110 Comment compter... 2 cas : Vitesse rapide : Il ne faut pas saturer le compteur Utilisation d’un timer précis avec ∆t fixé en amont Vitesse lente : Si ∆t trop petit, on ne verra aucun cran passé, ∆t non fixé, on lance un timer (pour compter le temps) et on attend d’arriver à un n fixé. Le timer pourra être alors moins précis mais peut compter plus longtemps sans saturer (PSC plus élevé). Il faut choisir la meilleure des deux solutions en fonction des vitesses mises en oeuvre dans votre moteur. PAPAZOGLOU 72 / 110 Comment compter... Utilisation d’un timer pour compter les pas : Encoder Interface mode La source n’est plus l’horloge mais 2 GPIO connectés à l’encoder. PAPAZOGLOU 73 / 110 Comment compter... Plusieurs vitesses possibles PAPAZOGLOU 74 / 110 Comment compter... Compter et décompter PAPAZOGLOU 75 / 110 Remise à zéro du compteur Deux possibilités Index : cran particulier sur le disque qui spécifie la position avec un angle nul. Sans index On ne connaitre que la position relative par rapport à celle au temps zéro. On doit remettre la valeur du compteur à 0 manuellement Avec index Une entrée spécifique est utilisée pour remettre automatiquement le compteur à 0 PAPAZOGLOU 76 / 110 Remise à zéro du compteur Possibilier de gate sur l’index sur la channel A ou B, ou les deux, ou sans gate PAPAZOGLOU 77 / 110 Pour aller plus loin... PAPAZOGLOU 78 / 110 Test sur un codeur rotatif manuel Les signaux générés sont les mêmes. PAPAZOGLOU 79 / 110 Test sur un codeur rotatif manuel PAPAZOGLOU 80 / 110 Implémentation Correcteur PAPAZOGLOU 81 / 110 PAPAZOGLOU 82 / 110 Transformée bilinéaire PAPAZOGLOU 83 / 110 Objectifs Partir de l’asservissement analogique pour le transformer en asservissement numérique en minimisant l’erreur due à la transformation. PAPAZOGLOU 84 / 110 Transformation bilinéaire L’opérateur d’intégration permet de définir une correspondance entre domaine numérique et domaine analogique. En fait, 1 En analogique, le filtre intégrateur est HA (p) = p Donc, dans le domaine temporelle, on a Z t1 y(t1 ) − y(t0 ) = x(τ )dτ avec x(t) le signal dérivé de y(t) t0 Le pont entre le domaine analogique et domaine numérique est l’approximation de l’intégrale par la méthode des trapèzes : Z t1 x(t1 ) + x(t0 ) x(τ )dτ ∼ (t1 − t0 ) t0 2 PAPAZOGLOU 85 / 110 Transformation bilinéaire Pour t1 = nTe et t0 = (n − 1)Te , avec Te est la période d’échantillonnage, on a Te y[n] − y[n − 1] = (x[n] + x[n − 1]) ; 2 Appliquons la transformée en Z de la relation précédente, on trouve Y (z) Te 1 + z −1 HN (z) = = ; X(z) 2 1 − z −1 Donc, par comparaison, on a : Te 1 Te 1 + z −1 1+ 2 p = ⇐⇒ z =. p 2 1 − z −1 1− Te 2 p PAPAZOGLOU 86 / 110 Transformation bilinéaire Donc le passage du plan p au plan Z peut se faire par la correspondance suivante: Te 1+ 2 p z= Te. 1− 2 p Ainsi, l’homologue numérique d’un filtre analogique HA (p) est obtenue par la relation suivante 2 1 − z −1 HN (z) = HA p =. Te 1 + z −1 PAPAZOGLOU 87 / 110 Impact dans le domaine fréquentiel fN Pour z = ej2π fe et p = j2πfA , on a : 2 1 − z −1 p = Te 1 + z −1 2 1 − e−j2πfN Te j2πfA = Te 1 + e−j2πfN Te 1 e−jπfN Te e+jπfN Te − e−jπfN Te jπfA = Te e−jπfN Te e+jπfN Te + e−jπfN Te 1 2j sin (πfN Te ) jπfA = Te 2 cos (πfN Te ) 1 fA = tan (πfN Te ) πTe PAPAZOGLOU 88 / 110 Impact dans le domaine fréquentiel 1 fA = tan (πfn Te ) πTe La relation fA et fN est non linéaire d’où une distorsion en réponse fréquentielle. Dans le cas où fN Te 1 (c’est à dire fN fe ) : 1 fA = tan (πfN Te ) πTe 1 ≈ (πfN Te ) πTe ≈ fN La distorsion fréquentielle se fait d’avantage ressentir à haute fréquence qu’à basse fréquence. Cette méthode de transformation peut être utilisée pour tout type de filtre : passe-bas, passe-bande, passe-haut et coupe-bande. La nature du filtre sera conservée. PAPAZOGLOU 89 / 110 Conservation de la stabilité par transformation bilinéaire Propriété Un système analogique stable donne un système numérique stable car les pôles dans le demi-plan gauche du plan p sont projetés dans le cercle unité du plan Z : si Re(p) < 0 alors |z| < 1 PAPAZOGLOU 90 / 110 Transformation du demi-plan p en disque z PAPAZOGLOU 91 / 110 Implémentation d’un correcteur simple PID PAPAZOGLOU 92 / 110 Méthode d’implémentation d’un correcteur Etablissement des équations du moteur Calcul théorique de l’asservissement en temporel continu (Laplace) Détermination des fréquences maximales en jeu Détermination des fréquences d’échantillonnage Application des transformées bilinéaires Implementation des filtres PAPAZOGLOU 93 / 110 Côté micro-processeur Mise en place de timer pour l’acquisition des signaux : Timer ADC DMA Interrupt Sur chaque interruption, le calcul des nouvelles valeurs doit avoir lieu. PAPAZOGLOU 94 / 110 Pour aller plus loin Filter math accelerator (FMAC) PAPAZOGLOU 95 / 110 Controle de moteur synchrone PAPAZOGLOU 96 / 110 Schéma 3 phases PAPAZOGLOU 97 / 110 Moteur synchrone PAPAZOGLOU 98 / 110 Commande PAPAZOGLOU 99 / 110 Commande PAPAZOGLOU 100 / 110 Commande PAPAZOGLOU 101 / 110 Commande PAPAZOGLOU 102 / 110 Calculer du champ magnétique résultant ? Comment faire varier de façon continue le flux magnétique ? Comment faire varier la vitesse de rotation ? PAPAZOGLOU 103 / 110 Il faut regénérer les 3 phases sinuoı̈dales : La valeur du rapport cyclique représente la valeur moyenne instantanée de la phase associée. Utilisation du ”Math Accelerators” pour les calculs trigonométriques. L’amplitude (rapport cyclique) commande le couple du moteur, une augmentation de l’amplitude accélère le moteur. Une accélération du moteur implique une augmentation de la fréquence des 3 phases (diminution de la valeur du registre ARR). PAPAZOGLOU 104 / 110 PAPAZOGLOU 105 / 110 PAPAZOGLOU 106 / 110 PAPAZOGLOU 107 / 110 X-NUCLEO-IHM16M1 pinout PAPAZOGLOU 108 / 110 Pour aller plus loin... Mise en place d’un asservissement (cf TP) BEMF : Back Electro-motive Force PAPAZOGLOU 109 / 110 Les outils développés par ST PAPAZOGLOU 110 / 110