Documente Academic
Documente Profesional
Documente Cultură
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.
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
K
Hm (s) = (1)
1 + sT
Avec :
– K= 1
Ke
, 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.
Ki Ki + P s + Kd s 2
HP ID (s) = P + + Kds = (2)
s s
Ki K + P Ks + KKd s2
H(s) = 2 (4)
s (1 + sT ) + KKi + KP s + KKd s2
Ki K + P Ks + KKd s2
= (5)
KKi + KP s + (KKd + 1)s2 + T s3
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 :
D(s) = (s + ωn )(s2 + 2ξωn s + ωn2 ) (7)
en posant :
KKi
– = ωn3
T
KP
– = ωn2 (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 :
2π
ωn =
T
T ωn2 (1 + 2ξ)
– P =
K
T ωn3
– Ki =
K
T ωn (1 + 2ξ) − 1
– Kd =
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) :
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.
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.
ek − ek−1
ėk =
Te
U = Kp ∗ ek + Kd.ėk + Ti
if U>Umax then
U=Umax
end if
if U<-Umax then
U=-Umax
end if
ek = ek−1
Fin Algorithme
5
5 Application des résultats pour un robot mobile
5.1 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 2 1 2
Ec = mVRoue + Js ωRoue (8)
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.
On peut déduire de cette équation l’inertie totale d’un demi robot perçu par le moteur. De
plus en remaquant que nJs2 = Jm , Jm étant l’inertie du rotor (fournie dans la documentation
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.
1. Faire un contrôle de position avec une consigne en pas codeur plutôt qu’en unité SI.
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 :
2π ResP W M
Coef f = . (13)
ResCodeur UM ot
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 asservis-
sement 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.