Partage de technologie

[Mise en œuvre du moteur sans balais stm32 FOC à partir de zéro] [Théorie] [3/6 positions, vitesse, contrôle du courant]

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Section précédente , grâce à la dérivation du SVPWM, nous avons acquis la capacité de contrôler n'importe quelle force sur le rotor du moteur. Dans cette section, nous choisissons la forme SVPWM de découplage de l'axe dq du rotor obtenue dans la section précédente pour contrôler raisonnablement la force du rotor et atteindre l'objectif ultime du contrôle du moteur FOC : contrôle de la position, de la vitesse et du courant.

Contrôle PID

Les personnes qui lisent cette section comprennent très probablement le contrôle PID (proportion proportionnelle, intégrale intégrale, différentiel dérivé), qui est également limité par mes capacités. Je ne donnerai pas ici une explication complète et cela n'impliquera pas de méthodes de contrôle avancées.
Qu’il s’agisse de la position, de la vitesse ou du courant du moteur, ils peuvent tous être considérés comme des paramètres contrôlés.
D'un point de vue intuitif, lorsque la valeur en temps réel d'un paramètre contrôlé est inférieure à la valeur cible, une force externe doit être appliquée pour augmenter le paramètre contrôlé. Si la force externe appliquée est trop importante, le paramètre contrôlé sera dépassé, ce qui entraînera une amplitude d'oscillation du paramètre contrôlé proche de la valeur cible de plus en plus grande. Si la force externe appliquée est trop faible, le paramètre atteindra la valeur cible ; trop lentement. Il est donc nécessaire d'obtenir une force externe adaptée pour que les paramètres contrôlés n'oscillent pas de plus en plus violemment et que la vitesse de réglage ne soit pas trop lente. De cette idée de contrôle intuitive est le P dans PID. Lorsque vous utilisez simplement le contrôle P, définissez la taille de la force externe = la différence entre le paramètre contrôlé et la valeur cible * le coefficient P. Il est très intuitif que plus la différence est grande, plus la force externe exercée est grande. Si le coefficient P est réglé relativement petit, bien que le paramètre contrôlé n'oscille pas tout le temps et puisse se stabiliser lentement à la valeur cible, la vitesse de réglage est trop lente. À ce moment, le contrôle D du PID peut être ajouté pour effectuer le réglage. Le paramètre contrôlé oscille à l'origine. Rétrécit rapidement à la valeur cible.
Pensons au contrôle D d'un point de vue intuitif Lorsque le paramètre contrôlé s'approche ou dépasse la valeur cible sous contrôle P pur, une force de correction dans la direction opposée à la vitesse aide le paramètre contrôlé à freiner près de la valeur cible, permettant au paramètre contrôlé de se ralentir. Freiner pour atteindre la valeur cible plus rapidement. Cette force de correction en sens inverse de la vitesse est la commande D. Après avoir ajouté le contrôle D, la taille de la force externe de contrôle = la différence entre le paramètre contrôlé et la valeur cible * Coefficient P paramètre contrôlé vitesse * Coefficient D. Lors de l'utilisation du contrôle D pur, puisque la vitesse du paramètre contrôlé est de 0 dans l'état initial, le paramètre contrôlé ne recevra pas de force externe. On peut également voir que le contrôle P fournit une force externe et que le contrôle D contraint la force externe. Si le coefficient D est choisi trop grand, une légère vitesse peut provoquer une force externe énorme ; si le coefficient D est choisi trop petit, il ne suffit pas à contraindre la force externe de la production de contrôle P, et les paramètres contrôlés mettront du temps à se stabiliser. .
Pensons au contrôle I d'un point de vue intuitif. Lorsqu'il y a une charge sur le paramètre contrôlé, la force externe fournie par un simple contrôle P peut ne pas être suffisante pour supporter la charge. Par conséquent, un tel mécanisme peut être ajouté pour réduire la différence entre. le paramètre contrôlé et la valeur cible au fil du temps. Accumulée, la puissance nécessaire pour que le paramètre contrôlé atteigne la valeur cible lorsqu'il y a une charge peut être obtenue. Ce mécanisme, je le contrôle. Après avoir ajouté le contrôle I, la taille de la force externe de contrôle = la différence entre le paramètre contrôlé et la valeur cible * Coefficient P, la vitesse du paramètre contrôlé * Coefficient D, la différence entre le paramètre contrôlé et la valeur cible s'accumule au fil du temps * I coefficient.
Lors du contrôle du moteur, sans circonstances particulières, puisque l'axe d ne contribue pas à la rotation du moteur, le contrôle pid ne peut contrôler que la force de l'axe q, et l'axe d peut être contrôlé ou la sortie peut être directement mis à 0.

filtre

Dans le contrôle de vitesse et le contrôle de courant, limités par la précision et la fréquence d'échantillonnage, la vitesse et le courant sont instables et changent rapidement. Par exemple, la figure suivante est une valeur directement calculée de la vitesse du moteur. Il existe de nombreuses dents de scie et fluctue autour de la valeur réelle. Si une telle valeur est utilisée directement, la sortie PID fluctuera considérablement.
Insérer la description de l'image ici
L'image ci-dessous montre qu'après filtrage, elle est plus proche de la vraie valeur :Insérer la description de l'image ici Il existe de nombreuses méthodes de filtrage, telles que le filtrage passe-bas et le filtrage de Kalman. L'essentiel est d'estimer une valeur proche de la valeur réelle des données mélangées à du bruit. Le filtrage étant un sujet très vaste, le principe ne sera pas expliqué dans cette section. Vous pourrez directement visualiser le code dans la partie pratique suivante. Nous vous rappelons simplement que les calculs de filtrage doivent être effectués avant de saisir le contrôleur PID.

contrôle de position individuel

La position fait référence à l'angle. Il convient de noter qu'il existe deux angles physiques, l'un est l'angle du moteur et l'autre est l'angle du rotor. L'encodeur du moteur est installé sur le boîtier du rotor, de sorte que l'encodeur obtient l'angle du boîtier du rotor, et le rotor est situé à l'intérieur. Puisque le boîtier du rotor et le rotor sont fixés l'un à l'autre, il existe un décalage fixe entre les deux angles. . Lors de l'installation, l'encodeur Le degré zéro de l'appareil ne peut pas être exactement face à l'aimant permanent du rotor. L'angle du codeur est fourni par le codeur, et l'angle du rotor peut également être connu. Comment obtenir ce décalage fixe sera expliqué dans la partie pratique suivante. Dans cette section, il vous suffit de réaliser la partie calcul théorique. Le vecteur magnétique résultant agit sur l’aimant permanent du rotor, le calcul théorique est donc basé sur l’angle du rotor.
Insérer la description de l'image ici
Il existe deux méthodes pour contrôler la position du rotor :

méthode pid :
L'idée intuitive est d'utiliser l'axe q du rotor pour tirer continuellement le rotor vers la gauche et la droite. Une fois que le rotor s'écarte de la position cible, appliquez une force inverse sur l'axe q pour tirer. Plus l'écart est grand, plus il est important. la force de traction et le rotor revient à la position cible.
Avantages : l'axe q peut fournir une force plus importante et le contrôle de position est plus rapide et plus puissant.
Inconvénients : étant donné que l'axe q est différent de 90 degrés du vecteur magnétique de l'aimant permanent du rotor, la position (angle) en temps réel du rotor doit être connue.
Étant donné que la position du rotor en temps réel est facile à obtenir avec un encodeur, le pid est utilisé pour contrôler la position dans la plupart des cas.
Insérer la description de l'image ici
Le schéma fonctionnel de contrôle FOC d'un emplacement distinct est présenté ci-dessous. Ce que l'image signifie est de saisir une position cible, de calculer la différence avec l'angle calculé par l'encodeur, puis de saisir le contrôleur pid pour contrôler uniquement la force de l'axe q du rotor, de régler la force de l'axe d directement sur 0, et enfin, définir la force de l'axe dq (0 ~ 1) est entré dans la fonction SVPWM dérivée précédemment, et la sortie est le cycle de service pwm du bras de pont uvw.Ce qu'il convient de noter ici, c'est la position cible d'entrée θ dans theta_{in}θdansIl peut s'agir de l'angle du rotor, de l'angle du codeur ou de l'angle multitours, à condition qu'il soit lié au retour d'information. θ thêtaθGardez simplement le même angle.
Insérer la description de l'image ici

Traînée forcée sur l’axe D :
L'idée principale est de contrôler artificiellement la bobine pour générer un vecteur magnétique de bobine cible, et l'axe d de l'aimant permanent sera attiré vers la position cible. Notez que cette méthode attire l'axe D vers la position cible.
Avantages : Puisque la position cible est générée, il n'est pas nécessaire de connaître l'angle du rotor, le rotor y sera naturellement attiré.
Inconvénients : la composante de la force tangentielle est faible et une légère force externe tangentielle peut évidemment provoquer un déplacement du rotor hors de sa position.
Insérer la description de l'image ici

Contrôle individuel de la vitesse

Il n'est pas approprié d'utiliser la méthode de traînée sur l'axe d pour le contrôle de la vitesse, car le but de la traînée sur l'axe d n'est pas d'utiliser un encodeur. Sans les données de l'encodeur, il est difficile de calculer la vitesse. Le contrôle de la vitesse peut utiliser la méthode de contrôle pid, mais comme la valeur de la vitesse change de manière relativement instable pendant la rotation du moteur et que le contrôle D est proportionnel à la modification du paramètre contrôlé, seul le contrôle PI est généralement utilisé.
La méthode de calcul de la vitesse est très simple, c'est-à-dire Angle actuel - Dernier angle enregistré Δ t frac{Angle actuel - Dernier angle enregistré}{Delta{t}}Δtangle actuelDernier angle enregistré
Le contrôle de la vitesse peut être obtenu en saisissant la différence entre la vitesse cible et la vitesse en temps réel dans le contrôle PI.
Le schéma fonctionnel de contrôle FOC de la vitesse individuelle est présenté ci-dessous.
Insérer la description de l'image ici

Contrôle individuel du courant

Le courant du moteur représente le couple. Une fois la force du rotor découplée de l'axe dq, on peut constater que seul l'axe q contribue à la rotation du moteur et que seul l'axe q génère un couple. Par conséquent, seul le courant de l'axe q doit être contrôlé pour. contrôler le couple du moteur. Si le courant de l'axe D est également contrôlé, le taux d'utilisation du courant du moteur peut être amélioré, la génération de chaleur peut être réduite et le couple de sortie maximal du moteur peut être augmenté.
Insérer la description de l'image ici
Obtenez le courant du moteur :
L'axe dq du rotor est un concept abstrait, utilisé pour faciliter le découplage de la force du rotor. Le courant de l'axe dq ne peut pas être détecté directement. Le courant qui peut être directement détecté est le courant sur le circuit de la ligne de phase du moteur. Le courant peut être calculé en fonction du courant de ligne de phase obtenu.
Il existe de nombreuses façons de détecter le courant de ligne de phase. Les deux méthodes les plus courantes sont : 1. La détection de courant est placée entre les tubes de puissance du bras de pont supérieur et inférieur, ce qui est appelé détection en ligne. 2. La détection de courant est placée entre l'avant-bras et GND, appelée détection côté bas.
Insérer la description de l'image ici
à cause d'un nœud流出电流 流入电流=0 , seules deux unités de détection de courant sont nécessaires pour les lignes triphasées. Cependant, il est préférable d'utiliser trois unités de détection de courant pour la détection du côté bas, car lorsque le cycle de service PWM d'un certain bras de pont est de 1 ou proche de 1, aucun courant ne traversera le bras de pont inférieur ou le courant ne passera pas. être instable, et les lignes triphasées ne feront que collecter le courant normalement. Une fois qu'il y a trois unités de détection de courant, les trois unités de détection de courant peuvent être lues. Deux des valeurs de courant sont sélectionnées en fonction du devoir. cycle, et l’autre est calculé en supposant que la somme des courants est 0. La détection en ligne ne pose pas ce problème, car que le bras du pont inférieur soit fermé ou non, du courant circule toujours à travers la ligne de phase. Etant donné que la tension au niveau de la position de détection en ligne est relativement élevée, l'unité de détection de courant pour la détection en ligne doit être capable de supporter une tension élevée et est relativement coûteuse.

Après avoir obtenu les courants de ligne triphasés, trouvez ensuite un moyen de les convertir en courants d’axe dq.Le courant de la ligne de phase peut être projeté sur l'axe dq, de sorte que le courant de l'axe dq puisse être obtenu directement. Cependant, la méthode courante actuelle consiste à projeter d'abord l'axe dq sur. alpha-alphaαAxe et β bêtaβaxe (cette étape est appelée transformation de Clark), puis alpha-alphaαAxe et β bêtaβLe courant de l'axe est projeté sur l'axe dq (cette étape est appelée transformation de parc), car il sera utilisé dans des positions plus avancées FOC sans capteur alpha-alphaαAxe et β bêtaβcourant d'axe.

Transformation de Clark :
Le courant triphasé Je u, je v, je w Je_u,Je_v,Je_wjetoi,jev,jemProjet à Je α , Je β I_alpha,I_betajeα,jeβComme le montre la relation géométrique dans la figure ci-dessous, l’expression de projection est :
{ I α = I u − I v ∗ cos ⁡ 6 0 ° − I w ∗ cos ⁡ 6 0 ° I β = I v ∗ cos ⁡ 3 0 ° − I w ∗ cos ⁡ 3 0 °{jeα=jetoijevparce que60degréjemparce que60degréjeβ=jevparce que30degréjemparce que30degré {jeα=jetoijevparce que60°jemparce que60°jeβ=jevparce que30°jemparce que30°
Insérer la description de l'image ici

transformation du parc :
Volonté Je α , Je β I_alpha,I_betajeα,jeβL'axe est projeté sur l'axe dq (en fait multiplié par une matrice de rotation). Comme le montre la relation géométrique dans la figure ci-dessous, l'expression de projection est :
{ I d = I α ∗ cos ⁡ θ I β ∗ sin ⁡ θ I q = − I α ∗ sin ⁡ θ I β ∗ cos ⁡ θ{jed=jeαparce queθ jeβpéchéθjeq=jeαpéchéθ jeβparce queθ {jed=jeαparce queθ jeβpéchéθjeq=jeαpéchéθ jeβparce queθ
Insérer la description de l'image ici

Le diagramme de contrôle FOC d'un seul courant est présenté ci-dessous. Étant donné que le changement de courant est relativement instable, le contrôle D lié à la vitesse de changement du paramètre contrôlé n'est généralement pas utilisé ici, seul le contrôle PI est utilisé.
Insérer la description de l'image ici

Contrôle en cascade position-vitesse-courant

S'il existe une telle exigence : lors du contrôle de la position, spécifiez la vitesse maximale et le courant maximal lorsque le moteur revient à la position ou lors du contrôle de la vitesse, spécifiez le courant maximal lorsque le moteur atteint la vitesse cible, alors vous devez utiliser ; le contrôle du niveau de chaîne position-vitesse-courant. Le contrôle en cascade ici ne contrôle pas le moteur pour qu'il atteigne une certaine valeur de courant ou de vitesse, mais exige que le moteur atteigne la valeur de courant maximale ou la valeur de vitesse maximale pendant le processus de contrôle, car il est impossible de maintenir le moteur dans une position. Il y a de la vitesse ou il y a du courant.
Le contrôle en cascade signifie que l'entrée de la boucle de contrôle actuelle est la sortie de la boucle de contrôle précédente. En prenant comme exemple le contrôle de position en cascade, le schéma fonctionnel de contrôle est :
Insérer la description de l'image ici


La partie théorique est maintenant terminée. Nous avons obtenu la méthode de calcul du SVPWM et le processus de contrôle de la position, de la vitesse et du courant. Nous pouvons cependant écrire du code FOC. Cependant, nous rencontrerons divers problèmes en pratique, comme la séquence des lignes de phase et. Fonction PWM Par rapport à la façon de mettre en œuvre, au temps d'échantillonnage actuel, à la configuration des périphériques, etc., la partie pratique suivante utilise le roi rentable à puce unique ultra-courant : les outils smt32f103c8t6 et stm32cube, sans utiliser la bibliothèque de moteurs, pour obtenir un résultat complet. Contrôle FOC à partir de zéro.