Está en la página 1de 8

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 fonc-
tion 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
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.

La fonction de transfert du PID s’écrit quant à elle :

Ki Ki + P s + Kd s 2
HP ID (s) = P + + Kds = (2)
s s

La fonction de transfert de la boucle fermée s’ecrit donc de la manière suivante :


K
HP ID s(1+sT ) HP ID K
H(s) = K
= (3)
1+ HP ID s(1+sT )
s(1 + sT ) + HP ID K

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

On peut également écrire cette fonction de transfert sous forme canonique


Ki K
T
+ PTK s + KK T
d 2
s
H(s) = KKi (KK +1)
(6)
T
+ KP T
s+ T
d
s2 + 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 :


ωn =
T

Avec T la constante de temps du moteur définie précédemment.

Les coefficients du régulateur sont donc les suivants :

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) :

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éra-


lement 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−1
ėk =
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

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 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.

En remarquant que VRoue = ωRoue RRoue , l’energie cinétique se simplifie :


1 2
 2
Ec = mRRoue + Js ωRoue (9)
2
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 :


2
 
1 mRRoue Js 2
Ec = + ωRoue (11)
2 n2 n2

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.

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 in-
cré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 microcon-
troleur 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. Classique-
ment, 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 :
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.

También podría gustarte