Vous êtes sur la page 1sur 40

Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011

1
Projet Robotique LEGO NXT
Etude de la motorisation du robot LEGO
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
2
Projet Robotique LEGO NXT
Objectif
- analyser le fonctionnement des moteurs NXT en rgime statique et dynamique
- aborder la rgulation de position et/ou de vitesse
- intgrer les moteurs dans l'tude du mouvement du robot
- tudier le dplacement du robot en situation relle
- piloter les mouvements en vue de la ralisation d'un objectif
- asservir les mouvements en vue du dplacement autonome du robot suivi de ligne
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
3
Projet Robotique LEGO NXT
- lments du servo-moteur
- caractristiques du moteur
- capteur de position
- asservissement de base
- tude du rgulateur PID
- numrisation de la rgulation
- prise en compte des non-linarits
Etude de la motorisation NXT
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
4
Projet Robotique LEGO NXT
Capteur :
codeur optique de position
(rotation) sur l'arbre
du moteur
Servo-moteur NXT
Problmes inhrents la construction:
- Jeu codeur/ moteur , jeu moteur/arbre de sortie
- Pas de mesure lectrique (tension, courant)
- Pas de mesure de vitesse instantane
Actionneur lectrique :
moteur courant
continu rotor sans fer
et aimants permanents
(flux constant)
Effecteur: rducteur
mcanique pignons
avec sortie rotation
Rducteur tage par tage

10:30:40 = 1:4
9:27 = 1:3
10:20 = 1:2
10:13:20 = 1:2
Rduction totale 1:48
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
5
Projet Robotique LEGO NXT
Servo-moteur NXT : Codeur optique
Y = A XOR B
logique
A
B
Y
DIR
Compteur
dcompteur
remise zro
position numrique
de l'arbre de sortie
360 encoder pulses per revolution of a LEGO motor (1 resolution)with
quadrature signals, (max resolution is 720 pulses/rev but not used)
lments raliss par software sur processeur ARM
codeur en
quadrature
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
6
Projet Robotique LEGO NXT
Hacheur de commande
intgr la brique NXT
Servo-moteur NXT : Cblage gnral
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
7
Projet Robotique LEGO NXT
Servo-moteur NXT : Hirarchie du contrle
AVR ATmega
(8 bits)
AVR32
(32 bits)
Hacheur
bidirectionnel
Moteur CC
commande
pwm
Batterie
7.2V
Programme
Codeur optique
sortie
puissance
pwm
liaison
mcanique
AVR32
ATmega8
Hacheurs
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
8
Projet Robotique LEGO NXT
Servo-moteur NXT: quations
Equation mcanique:
avec
courant rotor A
tension rotor V
force contre lectromotrice V
angle arbre sortie rad
vitesse arbre sortie rad/s
couple moteur N.m
couple rsistant N.m
inductance rotor H
rsistance rotor
constante de couple mca N.m/A
constante de fem V/rad/s
moment d'inertie kg.m
2
coefficient de frotement visqueux Nm/rad/s
i
a
e
a
e
f
0
u
C
m
C
r
L
R
K
m
K
e
J
f
L
di
a
dt
+Ri
a
+e
f
=u
a
Equation lectrique:
avec
J
d u
dt
+ f u =C
m
C
r
e
f
= K
e
u
C
m
= K
m
i
a
En rgime statique, les drives sont nulles.
RI
a
+K
e
D =U
a
K
m
I
a
f D = C
r
La relation statique est donc :

R K
e
K
m
f
|

I
a
D
|
=

U
a
C
r
|
Les valeurs des paramtres peuvent
tre dduites de quelques expriences
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
9
Projet Robotique LEGO NXT
Servo-moteur NXT : exprimentations
caractristique vide (philohome.com) caractristique en court circuit
travail : calculer Ke en V/rd/s partir de la courbe
travail : valuer Ra et Km
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
10
Projet Robotique LEGO NXT
caractristique en charge couple constant (philohome.com)
travail : valuer f partir du tableau ci-dessus
Servo-moteur NXT : exprimentations
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
11
Projet Robotique LEGO NXT
Servo-moteur NXT : exprimentations (philohome.com)
C
m
=
K
m
R
U
a

K
e
K
m
R
D droite de pente

K
e
K
m
R
C
u
= K
m
I
a
f D
droite de pente , ordonne l'origine non nulle
K
m
travail : valuer Km, Ke et f partir des relevs graphiques fournis ci-dessus
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
12
Projet Robotique LEGO NXT
Servo-moteur NXT :
R
a
= de 6.857.6D
K
e
= 0.46V /( rad / s)
K
m
=0.32 N.m/ A
f = de 1.12 2.210
3
Nm/(rad / s)
valeurs dduites ( signales dans diverses publications,
comparer aux valeurs trouves):
autres valeurs signales:
(mesure directe)
(valeur confirmer par les mesures!)
L = 4.88mH
J
m
= 110
5
kg.m
2
valeur du couple de friction (collage) :
avec tension de dcollage du moteur T
c
= K
m
v
c
R
=3.5610
4
Nm v
c
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
13
Projet Robotique LEGO NXT
Servo-moteur NXT : simulation de la partie mcanique
entre modulation MLI/PWM
sortie mcanique
arbre moteur
tension moteur
Hacheur 1 quadrant
travail : raliser cette simulation multiphysique;
elle sera faite avec l'extension COSELICA sur Scicoslab;
l'installation de l'extension sera guide par l'enseignant
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
14
Projet Robotique LEGO NXT
Servo-moteur NXT : simulation du modulateur PWM
sortie PWM
Horloge PWM 7.5kHz
entre commande [0..100]
modulateur 1 quadrant
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
15
Projet Robotique LEGO NXT
Servo-moteur NXT : simulation du moteur
Signal = chelon d'amplitude 50%
travail : vrifier la valeur du rgime permanent; le gain statique correspond-il
la valeur prvue ?
0.0000 0.0005 0.0010 0.0015 0.0020 0.0025 0.0030 0.0035 0.0040 0.0045 0.0050
-1.0
-0.5
0.0
0.5
1.0
1.5
2.0
Graphic 1
t
y
0.0000 0.0005 0.0010 0.0015 0.0020 0.0025 0.0030 0.0035 0.0040 0.0045 0.0050
-5
0
5
10
15
Graphic 2
t
y
0.0000 0.0005 0.0010 0.0015 0.0020 0.0025 0.0030 0.0035 0.0040 0.0045 0.0050
0
10
20
30
40
50
Graphic 3
t
y
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
16
Projet Robotique LEGO NXT
moteur
Servo-moteur NXT : hacheur 4 quadrants
Modulateur MLI et Schma hacheur 4Q
entre
modulateur
signal MLI
travail pour moi: modifier le schma pour que
la tension de batterie soit une variable d'entre
du hacheur
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
17
Projet Robotique LEGO NXT
Servo-moteur NXT : hacheur 4 quadrants
Rponse chelon
0.0000 0.0005 0.0010 0.0015 0.0020 0.0025 0.0030 0.0035 0.0040 0.0045 0.0050
0
10
20
30
40
50
60
Graphic 1
t
y
0.0000 0.0005 0.0010 0.0015 0.0020 0.0025 0.0030 0.0035 0.0040 0.0045 0.0050
0
2
4
6
8
10
12
14
Graphic 2
t
y
0.0000 0.0005 0.0010 0.0015 0.0020 0.0025 0.0030 0.0035 0.0040 0.0045 0.0050
0
5
10
15
20
Graphic 3
t
y
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
18
Projet Robotique LEGO NXT
Servo-moteur NXT : quations dynamiques
u = L
di
dt
+ Ri + K
e
u K
m
i = J
d u
dt
+ f u
Pour un couple utile Cr = cste, on a :
Passage en Laplace:
U = L p I +R I +K
e
D
K
m
I = J pD+ f D
D( p)
U ( p)
=
K
e
/( K
e
K
m
+Rf )
1+
(
RJ + fL
K
e
K
m
+Rf
)
p +
LJ
K
e
K
m
+Rf
p
2
par identification avec le second ordre , on obtient :
k
0
1 + 2

u
n
p +
p
2
u
n
2
travail : calculer la frquence propre et l'amortissement , vrifier la cohrence
avec la simulation
u
n
=
.
K
e
K
m
+Rf
L J
=
1
2
1
( K
e
K
m
+Rf )
1/ 2
RJ + fL
( LJ )
1/ 2
k
0
=
K
e
( K
e
K
m
+Rf )
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
19
Projet Robotique LEGO NXT
Servo-moteur NXT : quations dynamiques
Cas o le systme est amorti
1
On pose :
f
e
=
L
R
f
m
=
RJ
K
e
K
m
+Rf
d'o avec
D( p)
U ( p)

K
0
(1+f
e
p)(1+f
m
p)
K
0
=
K
e
K
e
K
m
+Rf
Rponse : Avec les valeurs proposes, on obtient :
ces valeurs tant proches, le modle simplifi n'est pas valide; il faut conserver le modle
complet.
f
e
=0.72ms
f
m
=0.41ms
Travail : calculer les constantes de temps avec les paramtres proposs
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
20
Projet Robotique LEGO NXT
Servo-moteur NXT : test direct (en l'air sans roues)
Travail faire:
Faire un programme nxc de relev l'chelon de la position des moteurs
Mthode :
- les mesures [position] converties en chane de caractre seront stockes dans
un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D).
Pour une relecture sus Excel/Calc ou Matlab/Scilab, les champs texte seront
spars par des blancs et chaque ligne termine par "return".
- crer le fichier par CreateFile (s'il existe un ancien fichier du mme nom, le
supprimer pralablement)
- l'heure d'une mesure est donne par CurrentTick
- la position d'un moteur est donne par MotorTachoCount, la vitesse par
diffrence des positions entre deux mesures
- initialiser toutes les variables utilises
- ne pas oublier d'arrter les moteurs en quittant !
- contrler le temps de boucle par Wait(ms) [valeur trs petite, voire nulle]
Exloitation:
Tracer la rponse en position sur Calc ou Scilab et valider [ou non !] les
paramtres proposs du moteur. En dduire les caractristiques du moteur
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
21
Projet Robotique LEGO NXT
0 50 100 150 200 250
0
10
20
30
40
50
60
70
80
Servo-moteur NXT : test direct (en l'air sans roues)
Rsultat: trac sur Scilab pour PWM=50%
Commandes sous Scilab
[M,text]=fscanfMat('test.txt');
plot2d(M(:,1),M(:,2:3))

Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
22
Projet Robotique LEGO NXT
Servo-moteur NXT : test direct (en l'air sans roues)
Rsultat par exploitation graphique directe:
La rponse en position est une rampe (intgrale de la rponse l'chelon),
plutt caractristique d'un premier ordre que d'un deuxime ordre
On constate que l'asymptote pour t-->infini est une droite de pente 52 pulses
en 150ms soit 6.01 rad/s
La commande est de 50% avec une tension de batterie (releve avec Bricx) de 7.52V. En supposant
les pertes du hacheur ngligeables (commutateurs idaux Ron trs faible), la commande est donc
de 3.76V
On en dduit le gain en vitesse d'o
Cette valeur est comparable aux valeurs dcrites par les autres auteurs .
K
e
0.62(rad / s)/ V k
0
=
6.01
3.76
=1.60( rad / s)/V
En supposant que la commande a t applique sans retard par le processeur, l'asymptote
montre un tranage de 50 ms ; c'est la constante de temps mcanique du systme
il est vraisemblable que la valeur de Jmoteur propose prcdemment est fausse !
f =5010
3
s
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
23
Projet Robotique LEGO NXT
Servo-moteur NXT : test direct (en l'air sans roues)
Rsultat par modlisation de la rponse :
La rponse en position est une rampe (intgrale de la rponse l'chelon),
plutt caractristique d'un premier ordre que d'un deuxime ordre. En considrant
que la fonction de transfert est du 1
er
ordre (avec intgration pour la position) , la
rponse temporelle est de la forme:
d'o y(t )=AK (t ) + AK e
t /
y(t )=L
1

A
p
K
p(1+ p)
|
avec =
RJ
K
e
2
et K=1/ K
e
function z = fun (p , t , y )
z = y - p (1 ) ( t p(2)) - p (1) * p(2) exp( t / p(2) ) ;
endfunction
p0=[ 0 , 0 ] ;
Uo=0.50*7.2;
[ f f , p]=leastsq ( l i s t ( fun , t , y/Uo) , p0 ) ;
Rsolution sous Scilab par les moindres-carrs non-linaires:
Travail faire:
- appliquer la mthode propose aux mesures faites prcdemment .
rfrence State Feedback Controller Design Roberto Bucher April 18, 2010
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
24
Projet Robotique LEGO NXT
Servo-moteur NXT : avec roues (en l'air)
L'inertie totale est la somme de l'inertie des systmes en rotation
(rotor moteur, pignons, roue) ajout de l'inertie de la roue
masse = 0.017 kg;
Rayon = 0.028 m ;
A.N. En supposant la masse concentre sur la priphrie de la roue, l'inertie est :
soit J= 1.38 e-5 kgm^2 (valeur survalue)
J = mr
2
Travail :
- Refaire la mesure de la rponse l'chelon.
- A-t-elle volu par rapport la rponse en l'air sans roues ?
- Conclure sur la valeur de J estime .
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
25
Projet Robotique LEGO NXT
Servo-moteur NXT : avec roues (en l'air)
Rsultat:
Les nouvelles mesures donnent sensiblement le mme rsultat que prcdemment .
L'inertie des roues est donc ngligeable devant l'inertie propre du moteur . Ceci
vient confirmer que la valeur d'inertie propose en dbut de l'tude est incorrecte !
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
26
Projet Robotique LEGO NXT
Servo-moteur NXT : robot en translation
L'inertie totale est la somme de l'inertie des systmes en rotation
(rotor, pignons, roue) et de l'inertie du robot (masse en translation)
v
u
M
r
L'nergie cintique de M en translation est gale l'nergie cintique d'une inertie J_equ en
rotation:
avec d'o :

1
2
J
equ
u
2
=
1
2
M v
2
v = r u J
equ
= Mr
2
masse totale en translation pour le
robot diffrentiel : 0.590 kg
Travail :
Refaire la rponse l'chelon en posant le robot sur une surface et valuer la
nouvelle constante de temps. Peut-on donner une estimation de l'inertie propre du
moteur par comparaison avec l'exprience prcdente vide?
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
27
Projet Robotique LEGO NXT
0 50 100 150 200 250 300 350 400 450 500
0
50
100
150
Servo-moteur NXT : robot en translation
Rsultat:
La constante de temps passe 60ms environ. Etant donn que , on peut
en dduire que la constante de temps a volu de 20% soit

f
m
=
RJ
K
e
K
m
+Rf
J
moteur
=5J
translation
J
translation
= M
1/2corps
r
roue
2
= 0.2950.028
2
=0.23kg.m
2
J
moteur
= 1.1510
3
kg.m
2
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
28
Projet Robotique LEGO NXT
Servo-moteur NXT : Robot sur roues
Travail :
- Complter le schma de simulation du robot avec l'inertie des roues,
la conversion du mouvement en translation et la 1/2 masse du corps du robot
- Observer la simulation de la motorisation avec ces nouveaux lments et
ajuster les paramtres (en particulier Jmoteur) pour reproduire le comportement
exprimental du moteur .
- Quelle est la valeur de Jmoteur permettant de correspondre aux valeurs
exprimentales de comportement ?
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
29
Projet Robotique LEGO NXT
Servo-moteur NXT : Robot sur roues
Rsultat:
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
30
Projet Robotique LEGO NXT
0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50
0
2
4
6
8
10
12
14
Graphic 1
t
y
0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50
0.0
0.2
0.4
0.6
0.8
1.0
Graphic 2
t
y
Servo-moteur NXT : Robot sur roues
Rsultat:
Inertie du moteur : J=1 e-3 kg.m^2 soit une valeur sensiblement identique l'estimation prcdente
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
31
Projet Robotique LEGO NXT
Servo-moteur NXT : Robot sur roues
Programme type pour les mesures demandes:
#define FILE_SIZE 200*3
task record()
{
byte fileHandle;
short bytesWritten,bytesWrittenTotal,err;
long phi_d,phi_g;
long t_init,t_current;
string val;
err=DeleteFile("myFile.txt");
CreateFile("myFile.txt", FILE_SIZE, fileHandle);
bytesWrittenTotal=0;
bytesWritten=0;
//Ecriture entte
strcpy(val,"temps MotG MotD");
WriteLnString(fileHandle,val,bytesWritten);
bytesWrittenTotal+=bytesWritten;

Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
32
Projet Robotique LEGO NXT
Servo-moteur NXT : Robot sur roues
Programme type pour les mesures demandes (suite):
//start move with tachos reset;
OnFwdEx(OUT_AC,20,RESET_NONE);
t_init=CurrentTick();

while (bytesWrittenTotal + bytesWritten<FILE_SIZE)
{
//-------------------
t_current= CurrentTick()-t_init;
phi_d=MotorRotateCount(OUT_A);
phi_g=MotorrotateCount(OUT_C);
//-------------------
val=NumToStr(t_current);
val=StrCat(val," ");
val=StrCat(val,NumToStr(phi_g));
val=StrCat(val," ");
val=StrCat(val,NumToStr(phi_d));
//-------------------
WriteLnString(fileHandle,val,bytesWritten);
bytesWrittenTotal += bytesWritten;
Wait(3);
}
Off(OUT_AC);
CloseFile(fileHandle);
}
task main()
{
start record;
}
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
33
Projet Robotique LEGO NXT
Servo-moteur NXT : Asservissement de position
Objectif: raliser un asservissement de position du robot par commande discrte
implante en langage NXC. La commande retenue sera du type Proportionnel puis
Proportionnel/Drive.
On suppose que le systme en boucle ouverte a la forme suivante:
1/ K
e
p(1+ p)
tension
commande
OnFwd
0..100
K
H
Hacheur Moteur Codeur
K
C
Position
angulaire
Position
numrique
Travail faire:
- Dterminer les coefficients du robot partir des expriences prcdentes et des
informations dj fournies.
- Construire ce schma sur Scicos
- Appliquer un chelon d'amplitude 50% et vrifier que la simulation est conforme aux rsultats
pratiques dj obtenus.

Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
34
Projet Robotique LEGO NXT
Servo-moteur NXT : Asservissement de position
Bouclage basique avec rgulateur proportionnel:
Travail faire:
- Tenir compte dans le schma de la contrainte de saturation de la commande borne entre -100 et
+100 (fonction SAT)
- Introduire un rgulateur type "Proportionnel" de coefficient Kp (fonction GAIN)
- Boucler le systme simul avec un retour en position .
- Appliquer un chelon de position et vrifier que la simulation est conforme aux rsultats pratiques.
- Rechercher exprimentalement la valeur de Kp permettant d'obtenir un amortissement de 0.7 .

1/ K
e
p(1+ p)
K
H
Hacheur
Moteur Codeur
K
C
Position
numrique
Sat
Consigne de
Position
numrique
Regulateur
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
35
Projet Robotique LEGO NXT
Servo-moteur NXT : Asservissement de position
Bouclage numrique : le programme d'asservissement doit effectuer priodiquement les tches
suivantes:
- lire l'heure courante
- lire la position du moteur (codeur )
- calculer l'erreur de position (diffrence entre la consigne et la mesure)
- calculer la commande (loi proportionnelle puis saturation)
- l'appliquer au moteur
- attendre jusqu' la fin de priode d'chantillonnage
- recommencer au dbut
La boucle de rgulation est infinie. Pour des considrations pratiques, il est souhaitable de prvoir
un arrt (lecture bouton, nombre maximum de boucle...)
Travail faire:
- Les conditions exprimentales seront: Kp la valeur dfinie prcdemment , chelon de position
d'amplitude 100, priode d'chantillonnage 5 ms, dure totale 1s .
- Ecrire le programme en NXC, en incluant l'enregistrement du temps, de la position ralise et de
la commande.
- Discuter du rsultat (prcision, rapidit) . Pensez-vous que la priode d'chantillonnage a une
influence critique pour ce type de commande?
.
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
36
Projet Robotique LEGO NXT
0 200 400 600 800 1000 1200 1400
0
20
40
60
80
100
120
140
Temps
P
o
s
i
t
i
o
n

a
n
g
u
l
a
i
r
e

e
n

r
a
d
Servo-moteur NXT : Asservissement de position
exemple de rsultat pour kp=5
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
37
Projet Robotique LEGO NXT
Servo-moteur NXT : Compensation PID de l'Asservissement de position
Le systme possdant un ple nul en boucle ouverte (intgration), il ne prsente pas d'erreur de
position en boucle ferme
L'introduction d'un terme d'intgration dans le correcteur permet d'liminer l'erreur de position
en cas de frottements (collage) ou de couple d'opposition (robot sur une pente).
Pour amliorer les performances dynamiques, il convient d'introduire une compensation drive .
Le compensateur PID a pour quation continue:
ou encore:
C( p) = K
p
(1 +
1
T
i
p
+T
d
p)
u(t ) = K
p
(
(t ) +
1
T
i

(t ) dt +T
d
d (t )
dt )
Compensateur PD ou PIDavec drivateur bande passante limite: ce correcteur permet de
limiter l'influence du bruit , trs sensible pour le terme driv
Gnralement, on adopte 5 < N <20 pour un effet de filtrage.
C( p) = K
p
(1 +
1
T
i
p
+
T
d
p
1+pT
d
/ N
)
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
38
Projet Robotique LEGO NXT
Servo-moteur NXT : Compensation PID de l'Asservissement de position
Algorithme numriqueTerme Intgral
En considrant constant entre deux instants d'chantillonnage, l'intgrale est approxime par la
somme des valeurs de aux instants de mesure (intgration d'Euler dite des rectangles)
Lors des transitoires importants (erreur importante), l'intgrale peut atteindre des valeurs leves
et provoquer la saturation de la commande. Il est judicieux de limiter l'intgrale des valeurs
et dfinies par l'utilisateur.

C
I
( p) =
U
I
( p)
( p)
=
1
T
i
p
u
I
(t ) =
1
T
i

0
t
(t )

u
I
n| =u
I
n1| +
T
e
T
i
n|
u
I min
u
I max
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
39
Projet Robotique LEGO NXT
Servo-moteur NXT : Compensation PID de l'Asservissement de position
Algorithme numriqueTerme Drive
l'expression temporelle est:
En approximant la drive par la diffrence arrire, on obtient:
On en dduit la rcurrence de calcul du terme driv:

C
D
( p) =
U
D
( p)
( p)
=
T
d
p
1+pT
d
/ N
u
D
(t ) =T
d

(t )
T
d
N

u
D
(t )
u
D
n| =T
d
n| n1|
T
e

T
d
N
u
D
n|u
D
n1|
T
e
u
D
n| =
NT
d
T
d
+NT
e
(n| n1|) +
T
d
T
d
+N T
e
u
D
n1|
Commande du hacheur: c'est la somme des 3 termes P, I et D
u n| = K
p
( n| + u
I
n| + u
D
n|)
Master ASE Projet S1 - Pierre Bonnet , John Klein - Sept/Dc 2011
40
Projet Robotique LEGO NXT
Servo-moteur NXT : Compensation de l'Asservissement de position
Travail faire:
- Complter la simulation pour ajouter la compensation drive seule (modle continu) bande
passante limite avec N=10
- Rechercher la valeur de Td donnant un compromis rapidit/dpassement acceptable .
- Implanter cette commande dans le robot et observer le comportement.