Commande embarquée de moteurs 1 Prise en main du Microcontrôleur Christian Koechli
Composants de l’électronique de commande CPU: DSP ou mcontrôleur Signaux de mesure Mesure Capteurs Signaux logiques Driver Alim. de la « logique » Signaux de commande Alim puissance
Au sommaire: Présentation du microcontrôleur et de ses fonctionnalités Tâches dans la commande électronique Manière d’utiliser les divers périphériques
Tâches du CPU Calculer les paramètres de commutation et de réglage Effectuer la commande des transistors (Pwm) Mesurer les grandeurs de réglage (AD, IO) Communiquer avec l’utilisateur (CAN, RS232, SPI,I2C,AD,IO) Surveiller que rien ne casse
mC: STM32F401RE ARM Cortex M4 (32bit) avec FPU + DSP 512KB flash /96KB RAM 84Mhz 64 pattes Basse consommation 4.5$ (1000 pièces) Comment choisit-on un uC? Fréquence pour faire les calculs FPU: a-t-on besoin de calculer en virgule flottante Quels sont les périphs. nécessaires
Périphérique Unité de calcul Mémoire vive (RAM) Exemples de périphériques Etage de sortie (Push/Pull) GPIO: output Unité de calcul Pattes Convertisseur AD Etage d’entrée (Sample and hold) Mémoire morte (Flash)
STM32F401RE
Memory Map 1
Exemple GPIO
Configuration par CubeMX HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_SET);
Configuration par les registres void HAL_GPIO_WritePin( GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) { /* Check the parameters */ assert_param(IS_GPIO_PIN(GPIO_Pin)); assert_param(IS_GPIO_PIN_ACTION(PinState)); if(PinState != GPIO_PIN_RESET) GPIOx->BSRR = GPIO_Pin; } else GPIOx->BSRR = (uint32_t)GPIO_Pin << 16U;
Périphériques importants GPIO Timers + PWM+Capture/Compare/QEP Convertisseur AD DMA Gestionnaire d’interruptions Watchdog timer Communication
Famille STM32
Interruptions 16 ARM Cortex M4 52 lignes d’interruption masquables (NVIC) 16 niveaux de priorité Notion d’interruption Notion de masque Notion de priorité Vecteur d’interruption Sauvegarde du contexte Restauration du contexte
Interruption / événement Une interruption coupe l’exécution du programme La plupart des routines d’interruption peuvent/doivent être reprogrammées Un événement n’interrompt pas le programme Il permet de déclencher l’action d’un autre périph. sans intervention du «CPU»
DMA Accès direct à la mémoire au lieu d’interrompre le CPU interruption Périph. (ADC, Com, Timers,…) CPU DMA Gère le fait qu’on ne peut pas écrire en même temps au même endroit, etc… RAM
Timers 1 advanced control timer 16-bit (TIM1) 4 General purpose times (TIM2-TIM5) 2x 32-bit (TIM2 & TIM5) 2x 16-bit (TIM3 & TIM4) Utilisation DMA, interface capteur incrémental (QEP) 3 General purpose timers 16-bits (TIM9-TIM11) Le timer 1 est le plus complet et permet de faire la commande d’un moteur triphasé avec un seul timer
TIM9
TIM1
Timer 1 propriétés (§12.2 ref) 16-bit up, down, up/down auto-reload counter. 16-bit programmable prescaler allowing dividing the counter clock frequency either by any factor between 1 and 65536. Up to 4 independent channels for: Input Capture Output Compare PWM generation (Edge and Center-aligned Mode) One-pulse mode output Complementary outputs with programmable dead-time Synchronization circuit to control the timer with external signals and to interconnect several timers together. Repetition counter to update the timer registers only after a given number of cycles of the counter. Break input to put the timer’s output signals in reset state or in a known state.
Timer 1 propriétés (suite) Interrupt/DMA generation on the following events: Update: counter overflow/underflow, counter initialization (by software or internal/external trigger) Trigger event (counter start, stop, initialization or count by internal/external trigger) Input capture Output compare Break input Supports incremental (quadrature) encoder and hall-sensor circuitry for positioning purposes Trigger input for external clock or cycle-by-cycle current management
Mode et exemple d’événements
Configuration 1 Slave mode, trigger source, clock source Channels: Capture Output compare PWM Forced Output Break Input One pulse
Configuration 2 Prescaler Mode: UP / Down / Center align mode(1-3) (interrupt flag set when counting 1=down, 2=up, 3=UP and down) Period Trigger Output (TRGO) Break state/polarity Dead Time
PWM Channel configuration PWM Mode 1 = Active Low PWM Mode 2 = Active High Pulse = Niveau de comparaison Polarity = signal de sortie lorsqu’actif
Watchdog timers Assurent que le uc n’est pas planté Compteurs à ne jamais laisser atteindre 0 2 possibilités: Independent watchdog (IWDG) Window Watchdog (WWDG)
ADC
Modes de conversion AD Scan Countinuous Discontinuous Action du DMA et EOC flag Trigger
Exemple d’application Commande en vitesse d’un moteur à courant continu: Tâches temps réel: Régulateur courant Régulateur vitesse Autres tâches: Acquisition de la consigne de vitesse, affichage de la vitesse,…
Implémentation 1 Interruption rapide (20 kHz) pour le régulateur de courant 1 interruption lente pour le régulateur de vitesse (1kHz) Communication dans la boucle « main »
Modulation à largeur d’impulsion : PWM Source: wikipedia
Interruption rapide et PWM AD, int rapide AD, int rapide CNTR CMP PWM i(t) t
Avantages Nombre limité d’interruptions=> garantie du temps réel Régulateur de courant dans interruption rapide, prioritaire, générée par le PWM=> synchrone avec le PWM Régulateur de vitesse dans interruption lente mais à temps fixe Tâche non-prioritaires dans main=> système simple et efficace
Prochain Labo