Bonjour,
Dans le cadre d'une commande d'un moteur (brushless), je réaliserai la commande de celui-ci par 3 boucles imbriquées:
- Boucle de courant : permettant ainsi dans ce mode de réguler le couple du moteur.
- Boucle de courant puis Boucle de vitesse: permettant dans ce mode de réguler la vitesse du moteur
- Boucle de position, puis boucle de vitesse, puis boucle de courant: permettant dans ce mode de réguler la position du moteur.
Le moteur brushless est commandé via 3 phases en PWM.
Les couches bas niveau, via une transformé de Park / Clark me permettent d'avoir une commande "équivalente" en tension et d'avoir un retour de courant ET de position (via un codeur) et donc de vitesse.
J'assimile donc cet ensemble à un simple moteur à courant Continue. (Est-je réellement entièrement raison en faisant cet hypothèse?)
Ma boucle de courant se compose donc d'une consigne, comparée (soustraction) au retour de courant (image), puis via un correcteur (P ou PI) qui commande la tension moteur.
Manuellement, pour mon moteur, à une tension de pont donnée (30V), j'ai réglé mes coefficients du correcteur de la manière suivante:
- Je bloque l'axe du moteur.
- J'envoi des échelons de consigne de courant (fixer arbitrairement...???)
- J'observe l'évolution de mon courant (son image)
- J'ajuste le Kp de manière à ne pas dépasser un certain dépassement fixé (5%, 10%...) => Erreur statique.
- J'augment Ki progressivement jusqu'à obtenir un temps de réponse à 5% qui n'évolue plus (temps de réponse le plus court possible). Cela augmente un peu le dépassement.
- Je diminue Kp de manière à revenir sous le dépassement maximal fixé. => Plus d'erreur statique.
Donc j'ai obtenue pour mon cas présent (Le moteur / Tension de pont) un certain réglage (Kp, Ki) de ma boucle de courant.
Maintenant, j'aimerai que mon système puisse de lui-même par un algorithme trouver les coefficients tout seul en lui indiquant le dépassement maximal souhaité et cela pour n'importe quel moteur (dont on ne connaît pas forcément les caractéristique comme R, L, l'inertie, le coefficient de frottement...)
En poursuivant mon raisonnement, je me dis que le plus simple est de créer un automate qui recréer les différentes étapes citées ci-dessus.
Malheureusement, le 1er point était "moteur bloqué". Or dans la réalité, le moteur ne sera pas bloqué, mais placé dans son environnement (avec son inertie).
Je me suis donc dit qu'il fallait que je fasse ces réglages avec une consigne de courant assez faible qui ne permet pas au moteur de vaincre son coupe résistant et donc de ne pas prendre de vitesse. Les moteurs ayant très peu de couple résistant, l’ordre de grandeur du courant qu’il faudrait envoyer commence à se fondre dans le bruit.
J’ai donc essayé de modéliser le moteur (Réponse fréquentielle, impulsionnelle, indicielle) puis la boucle de courant (Réponse fréquentielle, impulsionnelle, indicielle) en fonction de Ki et Kp.
Toutes les théories appris à l’école ou trouvée ici et là sur le net indique qu’une boucle de courant (en P seulement) se résume à un système du 1er ordre. (En considérants le moteur comme un système du second ordre).
Toutes les théories aboutissent à la détermination des coefficients proportionnels et intégrales, mais en fonction des paramètres du moteur.
Bref je tourne en rond, les moyens matériels me permettent facilement de générer n’importe quelle excitation sur le moteur ou la boucle de courant et d’observer le courant retour.
(et donc de faire une réponse fréquentielle => bode, indicielle et impulsionnelle)
Mais je tourne en rond sur la manière à suivre pour trouver les fameux coefficients du correcteur nécessaire à une réponse en courant la plus rapide pour un dépassement donné.
Avez-vous des pistes à me conseiller ?
Merci
-----