🛠 Commande FOC de Moteur BLDC sur HPM5100

HPMicro HPM5100 : Microcontrôleur RISC-V 400 MHz avec analogique intégré · avance · Utilisation simultanée des ADC SAR 16 bits et des 32 canaux PWM pour une commande vectorielle haute performance.

Objectifs

Ce tutoriel vise à implémenter une commande vectorielle (FOC) sur un moteur BLDC en exploitant les capacités analogiques intégrées du HPM5100. L'objectif est de réduire le coût matériel en utilisant les amplificateurs opérationnels internes comme amplificateurs de mesure de courant, tout en configurant les ADC SAR 16 bits pour un échantillonnage précis à 2 MSPS. Nous allons synchroniser les conversions ADC avec les signaux PWM générés par les 32 canaux disponibles pour minimiser le bruit de commutation.

Matériel nécessaire

Étapes

Configurez deux des quatre amplificateurs opérationnels intégrés en mode PGA (Programmable Gain Amplifier). Connectez les shunts de mesure de courant phase U et V aux entrées différentielles. Ajustez le gain pour que la tension maximale de shunt corresponde à la pleine échelle de l'ADC (généralement 3.3V ou 1.8V selon la référence interne). ``c // Configuration pseudo-code SDK adc_configure_input(ADC_CH0, PGA_GAIN_10X); adc_configure_input(ADC_CH1, PGA_GAIN_10X); ``

  1. Configuration des amplificateurs opérationnels (PGA)

Configurez trois paires de canaux PWM (6 canaux au total sur les 32 disponibles) pour générer des signaux complémentaires avec temps mort (dead-time) pour les trois phases. Définissez la fréquence de commutation à 20 kHz. Assurez-vous que le registre de synchronisation globale est activé pour aligner tous les compteurs PWM.

  1. Initialisation des PWM

Configurez les quatre ADC SAR pour qu'ils soient déclenchés par le signal de début de cycle PWM. Cela garantit que l'échantillonnage des courants se fait au centre de l'impulsion PWM, là où le bruit de commutation est minimal. Activez le mode double-buffering pour ne pas perdre d'échantillons pendant le traitement. ``c pwm_trigger_adc_enable(PWM_TIMER0); adc_set_trigger_source(ADC_TRIG_PWM0); ``

  1. Synchronisation ADC-PWM

Dans l'interruption de fin de conversion ADC, lisez les valeurs brutes. Appliquez la transformation Clark puis Park pour obtenir les composantes Id et Iq. Utilisez des régulateurs PI pour contrôler ces courants. La sortie des régulateurs est transformée par la transformation inverse de Park pour générer les tensions de référence. Ces tensions sont converties en rapports cycliques pour les canaux PWM.

  1. Implémentation de la boucle de contrôle

Vérification

Utilisez un oscilloscope pour vérifier que les signaux PWM sont correctement complémentaires avec le temps mort appliqué. Tracez les courants de phase via les sorties DAC (si disponibles) ou un analyiseur logique. Vérifiez que la rotation du moteur est fluide et que la vitesse répond aux commandes de consigne sans oscillations excessives. Vérifiez que le mode haute performance (480 MHz) est activé si nécessaire pour le calcul rapide de la FOC.

Pour aller plus loin

Explorez l'utilisation des comparateurs analogiques pour la protection contre les surintensités matérielles. Implémentez un démarrage sans capteur en injectant des signaux HF. Testez la sécurité Secure Boot pour protéger l'algorithme de contrôle.

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels