P. 1
Régulation PID en Position

Régulation PID en Position

|Views: 2,900|Likes:
Publié parBouiche Hachemi

More info:

Published by: Bouiche Hachemi on Mar 12, 2010
Droits d'auteur :Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

06/16/2013

pdf

text

original

Asservissement en position d’un moteur er réglage du PID

6 avril 2007

1

Introduction

Ce document a pour but d’expliquer de manière concise, une méthode simple permettant de déterminer les coefficients d’un régulateur PID pour un asservissement en position d’un moteur. Cette méthode, bien que générale est appliquée ici dans le cadre d’un asservissement pour un robot mobile.

2

Fonction de transfert de la boucle d’asservissement

Pour pouvoir régler convenablement le régulateur PID, il faut tout d’abord calculer la fonction de transfert en boucle fermée de la boucle d’asservissement. Le schéma bloc utilisé est le suivant :

Fig. 1 – Schéma bloc de la boucle d’asservissement

Classiquement, la fonction de tranfert d’un moteur à courant continu (MCC) peut être assimilée à un système du premier ordre (la constante de temps électrique étant beaucoup plus rapide que la constante de temps mécanique) soit : 1

Hm (s) = Avec : – K=
1 , Ke

K 1 + sT

(1)

Ke (V /rd.s−1 ) étant la constante électrique du moteur.

RJ – T = KtKe , avec R la résistance de l’induit du moteur, J l’inertie du moteur et Kt (Nm/A) la constante de couple.

La fonction de transfert du PID s’écrit quant à elle : HP ID (s) = P + Ki Ki + P s + Kd s 2 + Kds = s s (2)

La fonction de transfert de la boucle fermée s’ecrit donc de la manière suivante : H(s) =
K HP ID s(1+sT )

1+

K HP ID s(1+sT )

=

HP ID K s(1 + sT ) + HP ID K

(3)

Ki K + P Ks + KKd s2 H(s) = 2 s (1 + sT ) + KKi + KP s + KKd s2 Ki K + P Ks + KKd s2 = KKi + KP s + (KKd + 1)s2 + T s3

(4) (5)

On peut également écrire cette fonction de transfert sous forme canonique H(s) =
Ki K K + PT s + KKd s2 T T (KKd +1) 2 KKi KP + T s+ s + T T

s3

(6)

2

3

Réglage des coefficients du PID

Pour régler un PID, il existe de nombreuses méthodes. Le réglage proposé dans ce document permet de déterminer les 3 coéfficients du PID en fonction de deux paramètres physiques représentatifs. Le dénominateur de la fonction de transfert en boucle fermée peut s’écrire de la manière suivante : 2 D(s) = (s + ωn )(s2 + 2ξωn s + ωn ) (7) en posant : – – – KKi 3 = ωn T KP 2 = ωn (1 + 2ξ) T KKd + 1 = ωn (1 + 2ξ) T

Sous cette écriture, on se rend compte que cela correspond à un système du premier ordre suivi d’un second ordre. De plus, les paramètres ξ et ωn étant des réels strictement positifs, le système est toujours stable. On voit donc qu’en jouant sur le paramètre ξ, on peut spécifier si oui ou non on souhaite un dépassement de la consigne. En jouant sur le paramètre ωn , on peut régler la vitesse de réponse (appelée bande passante) du système. Par défaut, on considère qu’un "Bon réglage" de ωn consiste à prendre : ωn = 2π T

Avec T la constante de temps du moteur définie précédemment. Les coefficients du régulateur sont donc les suivants : – P = – Ki = – Kd =
2 T ωn (1 + 2ξ) K 3 T ωn K

T ωn (1 + 2ξ) − 1 K

3

4

Introduction de l’Antiwindup

Considérons de nouveau notre système d’asservissement en position du moteur. On garde le schéma de régulation précédent, mais on va ajouter un bloc de saturation qui traduit le fait que la tension que l’on souhaite appliquer au moteur ne peut pas dépasser la tension d’alimentation de notre système (par exemple 12V) :

Fig. 2 – Introduction d’un bloc de saturation Lorsque le système arrive en saturation, cela veut dire que : – Le PID est mal réglé – La consigne d’entrée est trop importante donc le moteur ne peut pas suivre – L’axe du moteur est arrêté pour une raison quelconque donc la commande augmente pour corriger l’erreur (sans y arriver) Lorsqu’un de ces cas ce produit, cela veut dire que l’erreur entre la consigne et la mesure est non nulle et reste de même signe. Or, lorsque l’erreur est non nulle et quelle reste de meme signe pendant un moment, le terme intégrale ne fait qu’augmenter. Cela veut dire que si les conditions redeviennent normale, il va falloir un certain temps à l’intégrateur pour se décharger et revenir à des valeurs cohérentes. Si l’on reprend notre exemple d’asservissement en position, si on bloque l’axe du moteur pendant un court instant, lorsqu’on le relache celui si va se mettre à tourner à plein régime (phénomène d’emballement). Ce genre de phénomène peut être préjudiciable pour de gros systèmes (voir même dangereux) et il peut également rendre le système complètement instable. Pour éviter ce genre de problème, on indroduit donc le principe de l’Antiwindup (littéralement anti emballement). Cette astuce est extrèmement simple à mettre en place numériquement puisqu’elle consiste simplement à geler le terme intégrateur du PID si jamais la commande du moteur est en saturation.

4

Le code permettant de calculer ce régulateur PID peut s’écrire selon l’algorithme suivant : Remarque : Le calcul de l’intégrale est effectué en utilisant la méthode des trapèzes. Algorithme de calcul du PID ek = θ d − θ ek = ˙ ek − ek−1 Te

if |U| < Umax then ek + ek−1 Ti = Ti + Ki ∗ ∗ Te 2 else Ti = T i end if U = Kp ∗ ek + Kd.˙ k + Ti e if U>Umax then U=Umax end if if U<-Umax then U=-Umax end if ek = ek−1 Fin Algorithme Cet algorithme est calculé à chaque période d’echantillonage Te.

5

5
5.1

Application des résultats pour un robot mobile
Identification du robot

Pour un robot mobile classiquement équipé de deux roues motrices, les calculs théoriques développés précédemment ne sont pas modifiés. Seulement, l’étude ne concernait jusqu’ici qu’un moteur seul sans charges. En concidérant un robot dans son entier, il faut donc tenir compte de son comportement dynamique. Hors comme cela n’est pas évident d’identifier les paramètres dynamiques d’un robot (surtout lorsqu’on à pas les moyens pour le faire), on va simplifier le problème. Dans la majorité des applications ou le robot mobile ne se déplace pas très vite, on va alors faire l’hypothèse qu’on peut négliger l’influence d’un moteur sur l’autre et que, par conséquent, chaque moteur se vera en charge la propulsion d’une moitiée de robot. Concrètement dans les calculs, cela revient à déterminer l’inertie d’un demi robot perçue par le moteur. Pour déterminer cela, une solution simplifiée consiste à calculer l’énergie cinétique du demi robot pour un déplacement en ligne droite : 1 1 2 2 Ec = mVRoue + Js ωRoue 2 2 Avec : – m : le poids d’un demi robot (P/2), – VRoue : La vitesse d’avance du centre de la roue, – Js : L’inertie du moteur au niveau de l’axe de la roue, – ωRoue : La vitesse de rotation de la roue. En remarquant que VRoue = ωRoue RRoue , l’energie cinétique se simplifie : Ec = 1 2 2 mRRoue + Js ωRoue 2 (9) (8)

L’expression de l’energie cinétique dépend ici de la vitesse de rotation de la roue. Hors, les calculs théorique étant fait en fonction de la vitesse de rotation du moteur, il faut alors prendre en compte le rapport de réduction n : ωM oteur = nωRoue (10)

L’énergie cinétique peut donc se calculer en fonction de la vitesse de rotation du moteur : 1 Ec = 2
2 mRRoue Js + 2 n2 n 2 ωRoue

(11)

On peut déduire de cette équation l’inertie totale d’un demi robot perçu par le moteur. De J plus en remaquant que ns = Jm , Jm étant l’inertie du rotor (fournie dans la documentation 2 constructeur), on a : 6

2 mRRoue J= + Jm (12) n2 A présent que l’on connaît l’inertie totale perçue par chaque moteur, ce nouveau J est utilisé pour calculer la constante de temps de réponse du moteur (T) de l’équation 1.

5.2

Conversion des données

L’aspect conversion des données est quelquechose de fondamental en robotique puisque toute la boucle de régulation (PID + moteur) ne peut pas être calculée dans le système des unités SI (contrairement à la simulation). Cette impossibilité s’explique par plusieurs phénomènes : – L’organe permettant de connaître la position du moteur est généralement un codeur incrémental. Le microcontrôleur aura donc une première conversion à faire entre un nombre de pas codeurs et la rotation réelle du moteur. – Le deuxième phénomène est plutôt d’ordre hardware puisque suivant le type de microcontroleur utilisé (8, 16 ou 32 bits, avec ou sans calculs flottant), il peut être necessaire de dégrader la précision des calculs pour que le temps d’execution soit suffisemment petit. – La dernière étape de conversion se situe au niveau de la commande du moteur. Classiquement, ce pilotage est réalisé à partir d’une commande de type PWM associée à un pont en H, donc une nouvelle conversion entre un nombre numérique et une valeur de tension analogique. Pour obtenir une boucle de régulation non plus compatible avec le système SI, mais compatible avec l’environnement de calcul du microcontroleur, la méthode suivante peut être utilisée. 1. Faire un contrôle de position avec une consigne en pas codeur plutôt qu’en unité SI. 2. Calculer les coefficient PID comme expliqué précedemment. 3. Appliquer un facteur d’echelle afin que les coefficients PID soient compatibles avec des consignes en pas codeurs et le module de génération du signal PWM. Pour la dernière étape de cette méthode, le facteur de conversion doit être le suivant : Coef f = 2π ResP W M . ResCodeur UM ot (13)

Avec : – Rescodeur La résolution du codeur (par ex 2048 points par tour), – ResP W M La résolution du module PWM, c’est a dire le nombre de pas qui permettent d’aller de 0 à 100% de la vitesse du moteur (ex 255 soit 8 bits) – UM ot : La tension d’alimentation du pont en H (ex 12V) 7

6

Conclusion

La méthode présentée ici constitue une méthode simple permettant de réaliser un asservissement en position d’un moteur (ou d’un robot). Il faut tout de même noter que même si cette méthode permet de déterminer un bon réglage des coefficients PID, compte tenu des différentes hypothèses, il est possible que l’utilisateur doivent légèrement les modifier.

8

You're Reading a Free Preview

Télécharger
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->