régulation pid en position

8

Click here to load reader

Upload: bouiche-hachemi

Post on 18-Jun-2015

2.764 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Régulation PID en Position

Asservissement en position d’un moteur er réglage duPID

6 avril 2007

1 Introduction

Ce document a pour but d’expliquer de manière concise, une méthode simple permettantde déterminer les coefficients d’un régulateur PID pour un asservissement en position d’unmoteur. Cette méthode, bien que générale est appliquée ici dans le cadre d’un asservissementpour 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é estle suivant :

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

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

1

Page 2: Régulation PID en Position

Hm(s) =K

1 + sT(1)

Avec :– K = 1

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

– T = RJKtKe

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

HPID(s) = P +Ki

s+ Kds =

Ki + Ps + Kds2

s(2)

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

H(s) =HPID

Ks(1+sT )

1 + HPIDK

s(1+sT )

=HPIDK

s(1 + sT ) + HPIDK(3)

H(s) =KiK + PKs + KKds

2

s2(1 + sT ) + KKi + KPs + KKds2(4)

=KiK + PKs + KKds

2

KKi + KPs + (KKd + 1)s2 + Ts3(5)

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

H(s) =KiK

T+ PK

Ts + KKd

Ts2

KKi

T+ KP

Ts + (KKd+1)

Ts2 + s3

(6)

2

Page 3: Régulation PID en Position

3 Réglage des coefficients du PID

Pour régler un PID, il existe de nombreuses méthodes. Le réglage proposé dans ce documentpermet de déterminer les 3 coéfficients du PID en fonction de deux paramètres physiquesreprésentatifs.Le dénominateur de la fonction de transfert en boucle fermée peut s’écrire de la manièresuivante :

D(s) = (s + ωn)(s2 + 2ξωns + ω2n) (7)

en posant :

–KKi

T= ω3

n

–KP

T= ω2

n(1 + 2ξ)

–KKd + 1

T= ωn(1 + 2ξ)

Sous cette écriture, on se rend compte que cela correspond à un système du premier ordresuivi d’un second ordre. De plus, les paramètres ξ et ωn étant des réels strictement positifs, lesystème est toujours stable. On voit donc qu’en jouant sur le paramètre ξ, on peut spécifiersi 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, onconsidè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 =Tω2

n(1 + 2ξ)

K

– Ki =Tω3

n

K

– Kd =Tωn(1 + 2ξ)− 1

K

3

Page 4: Régulation PID en Position

4 Introduction de l’Antiwindup

Considérons de nouveau notre système d’asservissement en position du moteur. On gardele schéma de régulation précédent, mais on va ajouter un bloc de saturation qui traduit lefait que la tension que l’on souhaite appliquer au moteur ne peut pas dépasser la tensiond’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 estnon nulle et reste de même signe. Or, lorsque l’erreur est non nulle et quelle reste de memesigne pendant un moment, le terme intégrale ne fait qu’augmenter. Cela veut dire que siles conditions redeviennent normale, il va falloir un certain temps à l’intégrateur pour sedécharger et revenir à des valeurs cohérentes. Si l’on reprend notre exemple d’asservissementen position, si on bloque l’axe du moteur pendant un court instant, lorsqu’on le relachecelui si va se mettre à tourner à plein régime (phénomène d’emballement). Ce genre dephé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 lacommande du moteur est en saturation.

4

Page 5: Régulation PID en Position

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 PIDek = θd − θ

ek =ek − ek−1

Te

if |U| < Umax then

Ti = Ti + Ki ∗ ek + ek−1

2∗ Te

elseTi = Ti

end if

U = Kp ∗ ek + Kd.ek + Ti

if U>Umax thenU=Umax

end ifif U<-Umax then

U=-Umaxend if

ek = ek−1

Fin Algorithme

Cet algorithme est calculé à chaque période d’echantillonage Te.

5

Page 6: Régulation PID en Position

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éoriquesdéveloppés précédemment ne sont pas modifiés. Seulement, l’étude ne concernait jusqu’iciqu’un moteur seul sans charges. En concidérant un robot dans son entier, il faut donc tenircompte de son comportement dynamique. Hors comme cela n’est pas évident d’identifier lesparamètres dynamiques d’un robot (surtout lorsqu’on à pas les moyens pour le faire), on vasimplifier le problème. Dans la majorité des applications ou le robot mobile ne se déplacepas très vite, on va alors faire l’hypothèse qu’on peut négliger l’influence d’un moteur surl’autre et que, par conséquent, chaque moteur se vera en charge la propulsion d’une moitiéede robot.Concrètement dans les calculs, cela revient à déterminer l’inertie d’un demi robot perçue parle moteur. Pour déterminer cela, une solution simplifiée consiste à calculer l’énergie cinétiquedu demi robot pour un déplacement en ligne droite :

Ec =1

2mV 2

Roue +1

2Jsω

2Roue (8)

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 = ωRoueRRoue, l’energie cinétique se simplifie :

Ec =1

2

(mR2

Roue + Js

)ω2

Roue (9)

L’expression de l’energie cinétique dépend ici de la vitesse de rotation de la roue. Hors, lescalculs théorique étant fait en fonction de la vitesse de rotation du moteur, il faut alorsprendre en compte le rapport de réduction n :

ωMoteur = nωRoue (10)

L’énergie cinétique peut donc se calculer en fonction de la vitesse de rotation du moteur :

Ec =1

2

(mR2

Roue

n2+

Js

n2

)ω2

Roue (11)

On peut déduire de cette équation l’inertie totale d’un demi robot perçu par le moteur. Deplus en remaquant que Js

n2 = Jm, Jm étant l’inertie du rotor (fournie dans la documentationconstructeur), on a :

6

Page 7: Régulation PID en Position

J =mR2

Roue

n2+ Jm (12)

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 toutela boucle de régulation (PID + moteur) ne peut pas être calculée dans le système des unitésSI (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 nombrede 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 dedé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 ponten H, donc une nouvelle conversion entre un nombre numérique et une valeur de tensionanalogique.

Pour obtenir une boucle de régulation non plus compatible avec le système SI, maiscompatible 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 avecdes 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 :

Coeff =2π

ResCodeur

.ResPWM

UMot

(13)

Avec :– Rescodeur La résolution du codeur (par ex 2048 points par tour),– ResPWM 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)– UMot : La tension d’alimentation du pont en H (ex 12V)

7

Page 8: Régulation PID en Position

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 sicette méthode permet de déterminer un bon réglage des coefficients PID, compte tenu desdifférentes hypothèses, il est possible que l’utilisateur doivent légèrement les modifier.

8