Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011

1
Projet Robotique LEGO NXT
Etude de la motorisation du robot LEGO
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011
2
Projet Robotique LEGO NXT
 Objectif
- analyser le fonctionnement des moteurs NXT en régime statique et dynamique
- aborder la régulation de position et/ou de vitesse
- intégrer les moteurs dans l'étude du mouvement du robot
- étudier le déplacement du robot en situation réelle
- piloter les mouvements en vue de la réalisation d'un objectif
- asservir les mouvements en vue du déplacement autonome du robot suivi de ligne →
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011
3
Projet Robotique LEGO NXT
- éléments du servo-moteur
- caractéristiques du moteur
- capteur de position
- asservissement de base
- étude du régulateur PID
- numérisation de la régulation
- prise en compte des non-linéarités
Etude de la motorisation NXT
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011
4
Projet Robotique LEGO NXT
Capteur :
codeur optique de position
(rotation) sur l'arbre
du moteur
Servo-moteur NXT
Problèmes inhérents à la construction:
- Jeu codeur/ moteur , jeu moteur/arbre de sortie
- Pas de mesure électrique (tension, courant)
- Pas de mesure de vitesse instantanée
Actionneur électrique :
moteur à courant
continu à rotor sans fer
et aimants permanents
(flux constant)
Effecteur: réducteur
mécanique à pignons
avec sortie rotation
Réducteur étage par étage

10:30:40 = 1:4
9:27 = 1:3
10:20 = 1:2
10:13:20 = 1:2
Réduction totale 1:48
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011
5
Projet Robotique LEGO NXT
Servo-moteur NXT : Codeur optique
Y = A XOR B
logique°
A
B
Y
DIR
Compteur
décompteur°
remise à zéro
position numérique
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)
° éléments réalisés par software sur processeur ARM
codeur en
quadrature
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011
6
Projet Robotique LEGO NXT
Hacheur de commande
intégré à la brique NXT
Servo-moteur NXT : Câblage général
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011
7
Projet Robotique LEGO NXT
Servo-moteur NXT : Hiérarchie du contrôle
AVR ATmega
(8 bits)
AVR32
(32 bits)
Hacheur
bidirectionnel
Moteur CC
commande
pwm
Batterie
7.2V
Programme
Codeur optique
sortie
puissance
pwm
liaison
mécanique
AVR32
ATmega8
Hacheurs
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011
8
Projet Robotique LEGO NXT
Servo-moteur NXT: équations
Equation mécanique:
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 résistant N.m
inductance rotor H
résistance rotor 
constante de couple méca 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 régime statique, les dérivées 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 paramètres peuvent
être déduites de quelques expériences
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011
9
Projet Robotique LEGO NXT
Servo-moteur NXT : expérimentations
caractéristique à vide (philohome.com) caractéristique 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/Déc 2011
10
Projet Robotique LEGO NXT
caractéristique en charge à couple constant (philohome.com)
travail : évaluer f à partir du tableau ci-dessus
Servo-moteur NXT : expérimentations
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011
11
Projet Robotique LEGO NXT
Servo-moteur NXT : expérimentations (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 , ordonnée à l'origine non nulle
K
m
travail : évaluer Km, Ke et f à partir des relevés graphiques fournis ci-dessus
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011
12
Projet Robotique LEGO NXT
Servo-moteur NXT :
R
a
= de 6.85à7.6D
K
e
= 0.46V /( rad / s)
K
m
=0.32 N.m/ A
f = de 1.12à 2.2×10
−3
Nm/(rad / s)
valeurs déduites ( signalées dans diverses publications, à
comparer aux valeurs trouvées):
autres valeurs signalées:
(mesure directe)
(valeur à confirmer par les mesures!)
L = 4.88mH
J
m
= 1×10
−5
kg.m
2
valeur du couple de friction (collage) :
avec tension de décollage du moteur T
c
= K
m
v
c
R
=3.56×10
−4
Nm v
c
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011
13
Projet Robotique LEGO NXT
Servo-moteur NXT : simulation de la partie mécanique
entrée modulation MLI/PWM
sortie mécanique
arbre moteur
tension moteur
Hacheur 1 quadrant
travail : réaliser cette simulation multiphysique;
elle sera faite avec l'extension COSELICA sur Scicoslab;
l'installation de l'extension sera guidée par l'enseignant
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011
14
Projet Robotique LEGO NXT
Servo-moteur NXT : simulation du modulateur PWM
sortie PWM
Horloge PWM 7.5kHz
entrée commande [0..100]
modulateur 1 quadrant
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011
15
Projet Robotique LEGO NXT
Servo-moteur NXT : simulation du moteur
Signal = échelon d'amplitude 50%
travail : vérifier la valeur du régime permanent; le gain statique correspond-il
à la valeur prévue ?
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/Déc 2011
16
Projet Robotique LEGO NXT
moteur
Servo-moteur NXT : hacheur 4 quadrants
Modulateur MLI et Schéma hacheur 4Q
entrée
modulateur
signal MLI
travail pour moi: modifier le schéma pour que
la tension de batterie soit une variable d'entrée
du hacheur
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011
17
Projet Robotique LEGO NXT
Servo-moteur NXT : hacheur 4 quadrants
Réponse é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/Déc 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 fréquence propre et l'amortissement , vérifier la cohérence
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/Déc 2011
19
Projet Robotique LEGO NXT
Servo-moteur NXT : équations dynamiques
Cas où le système 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
Réponse : Avec les valeurs proposées, on obtient :
ces valeurs étant proches, le modèle simplifié n'est pas valide; il faut conserver le modèle
complet.
f
e
=0.72ms
f
m
=0.41ms
Travail : calculer les constantes de temps avec les paramètres proposés
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 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
Méthode :
- les mesures [position] converties en chaîne de caractère seront stockées 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
séparés par des blancs et chaque ligne terminée par "return".
- créer le fichier par CreateFile (s'il existe un ancien fichier du même nom, le
supprimer préalablement)
- l'heure d'une mesure est donnée par CurrentTick
- la position d'un moteur est donnée par MotorTachoCount, la vitesse par
différence des positions entre deux mesures
- initialiser toutes les variables utilisées
- ne pas oublier d'arrêter les moteurs en quittant !
- contrôler le temps de boucle par Wait(ms) [valeur très petite, voire nulle]
Exloitation:
Tracer la réponse en position sur Calc ou Scilab et valider [ou non !] les
paramètres proposés du moteur. En déduire les caractéristiques du moteur
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 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)
Résultat: 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/Déc 2011
22
Projet Robotique LEGO NXT
Servo-moteur NXT : test direct (en l'air sans roues)
Résultat par exploitation graphique directe:
La réponse en position est une rampe (intégrale de la réponse à l'échelon),
plutôt caractéristique d'un premier ordre que d'un deuxième 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 (relevée avec Bricx) de 7.52V. En supposant
les pertes du hacheur négligeables (commutateurs idéaux à Ron très faible), la commande est donc
de 3.76V
On en déduit le gain en vitesse d'où
Cette valeur est comparable aux valeurs décrites 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é appliquée sans retard par le processeur, l'asymptote
montre un traînage de 50 ms ; c'est la constante de temps mécanique du système
 il est vraisemblable que la valeur de Jmoteur proposée précédemment est fausse !
f =50×10
−3
s
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011
23
Projet Robotique LEGO NXT
Servo-moteur NXT : test direct (en l'air sans roues)
Résultat par modélisation de la réponse :
La réponse en position est une rampe (intégrale de la réponse à l'échelon),
plutôt caractéristique d'un premier ordre que d'un deuxième ordre. En considérant
que la fonction de transfert est du 1
er
ordre (avec intégration pour la position) , la
réponse 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 ) ;
Résolution sous Scilab par les moindres-carrés non-linéaires :
Travail à faire :
- appliquer la méthode proposée aux mesures faites précédemment .
référence State Feedback Controller Design Roberto Bucher April 18, 2010
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011
24
Projet Robotique LEGO NXT
Servo-moteur NXT : avec roues (en l'air)
L'inertie totale est la somme de l'inertie des systèmes 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 concentrée sur la périphérie de la roue, l'inertie est :
soit J= 1.38 e-5 kgm^2 (valeur surévaluée)
J = mr
2
Travail :
- Refaire la mesure de la réponse à l'échelon.
- A-t-elle évolué par rapport à la réponse en l'air sans roues ?
- Conclure sur la valeur de J estimée .
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011
25
Projet Robotique LEGO NXT
Servo-moteur NXT : avec roues (en l'air)
Résultat:
Les nouvelles mesures donnent sensiblement le même résultat que précédemment .
L'inertie des roues est donc négligeable devant l'inertie propre du moteur . Ceci
vient confirmer que la valeur d'inertie proposée en début de l'étude est incorrecte !
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011
26
Projet Robotique LEGO NXT
Servo-moteur NXT : robot en translation
L'inertie totale est la somme de l'inertie des systèmes en rotation
(rotor, pignons, roue) et de l'inertie du robot (masse en translation)
v
u
M
r
L'énergie cinétique de M en translation est égale à l'énergie cinétique 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 différentiel : 0.590 kg
Travail :
Refaire la réponse à 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'expérience précédente à vide?
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 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
Résultat:
La constante de temps passe à 60ms environ. Etant donné que , on peut
en déduire que la constante de temps a évolué de 20% soit

f
m
=
RJ
K
e
K
m
+Rf
J
moteur
=5×J
translation
J
translation
= M
1/2corps
r
roue
2
= 0.295×0.028
2
=0.23kg.m
2
⇒ J
moteur
= 1.15×10
−3
kg.m
2
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011
28
Projet Robotique LEGO NXT
Servo-moteur NXT : Robot sur roues
Travail :
- Compléter le schéma 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 éléments et
ajuster les paramètres (en particulier Jmoteur) pour reproduire le comportement
expérimental du moteur .
- Quelle est la valeur de Jmoteur permettant de correspondre aux valeurs
expérimentales de comportement ?
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011
29
Projet Robotique LEGO NXT
Servo-moteur NXT : Robot sur roues
Résultat:
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 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
Résultat:
Inertie du moteur : J=1 e-3 kg.m^2 soit une valeur sensiblement identique à l'estimation précédente
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011
31
Projet Robotique LEGO NXT
Servo-moteur NXT : Robot sur roues
Programme type pour les mesures demandées:
#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 entête
strcpy(val,"temps MotG MotD");
WriteLnString(fileHandle,val,bytesWritten);
bytesWrittenTotal+=bytesWritten;

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011
32
Projet Robotique LEGO NXT
Servo-moteur NXT : Robot sur roues
Programme type pour les mesures demandées (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/Déc 2011
33
Projet Robotique LEGO NXT
Servo-moteur NXT : Asservissement de position
 Objectif : réaliser un asservissement de position du robot par commande discrète
implantée en langage NXC. La commande retenue sera du type Proportionnel puis
Proportionnel/Dérivée.
On suppose que le système 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
numérique
Travail à faire:
- Déterminer les coefficients du robot à partir des expériences précédentes et des
informations déjà fournies.
- Construire ce schéma sur Scicos
- Appliquer un échelon d'amplitude 50% et vérifier que la simulation est conforme aux résultats
pratiques déjà obtenus.

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011
34
Projet Robotique LEGO NXT
Servo-moteur NXT : Asservissement de position
 Bouclage  basique avec régulateur proportionnel:
Travail à faire:
- Tenir compte dans le schéma de la contrainte de saturation de la commande bornée entre -100 et
+100 (fonction SAT)
- Introduire un régulateur type "Proportionnel" de coefficient Kp (fonction GAIN)
- Boucler le système simulé avec un retour en position .
- Appliquer un échelon de position et vérifier que la simulation est conforme aux résultats pratiques.
- Rechercher expérimentalement 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
numérique
Sat
Consigne de
Position
numérique
Regulateur
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011
35
Projet Robotique LEGO NXT
Servo-moteur NXT : Asservissement de position
 Bouclage  numérique : le programme d'asservissement doit effectuer périodiquement les tâches
suivantes :
- lire l'heure courante
- lire la position du moteur (codeur )
- calculer l'erreur de position (différence entre la consigne et la mesure)
- calculer la commande (loi proportionnelle puis saturation)
- l'appliquer au moteur
- attendre jusqu'à la fin de période d'échantillonnage
- recommencer au début
La boucle de régulation est infinie. Pour des considérations pratiques, il est souhaitable de prévoir
un arrêt (lecture bouton, nombre maximum de boucle...)
Travail à faire:
- Les conditions expérimentales seront : Kp à la valeur définie précédemment , échelon de position
d'amplitude 100, période d'échantillonnage 5 ms, durée totale 1s .
- Ecrire le programme en NXC, en incluant l'enregistrement du temps, de la position réalisée et de
la commande.
- Discuter du résultat (précision, rapidité) . Pensez-vous que la période d'échantillonnage a une
influence critique pour ce type de commande ?
.
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 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 résultat pour kp=5
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011
37
Projet Robotique LEGO NXT
Servo-moteur NXT : Compensation PID de l'Asservissement de position
Le système possédant un pôle nul en boucle ouverte (intégration), il ne présente pas d'erreur de
position en boucle fermée
L'introduction d'un terme d'intégration 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 améliorer les performances dynamiques, il convient d'introduire une compensation dérivée .
 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 PID avec dérivateur à bande passante limitée : ce correcteur permet de
limiter l'influence du bruit , très sensible pour le terme dérivé
Généralement, 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/Déc 2011
38
Projet Robotique LEGO NXT
Servo-moteur NXT : Compensation PID de l'Asservissement de position
 Algorithme numérique Terme Intégral
En considérant constant entre deux instants d'échantillonnage, l'intégrale est approximée par la
somme des valeurs de aux instants de mesure (intégration d'Euler dite des rectangles)
Lors des transitoires importants (erreur importante), l'intégrale peut atteindre des valeurs élevées
et provoquer la saturation de la commande. Il est judicieux de limiter l'intégrale à des valeurs
et définies 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
¦ n−1| +
T
e
T
i
ε¦ n|
u
I min
u
I max
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011
39
Projet Robotique LEGO NXT
Servo-moteur NXT : Compensation PID de l'Asservissement de position
 Algorithme numérique Terme Dérivée
l'expression temporelle est :
En approximant la dérivée par la différence arrière, on obtient :
On en déduit la récurrence de calcul du terme dérivé :

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| −ε¦n−1|
T
e

T
d
N
u
D
¦ n|−u
D
¦ n−1|
T
e
u
D
¦ n| =
NT
d
T
d
+NT
e
(ε¦n| −ε¦ n−1|) +
T
d
T
d
+N T
e
u
D
¦ n−1|
 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/Déc 2011
40
Projet Robotique LEGO NXT
Servo-moteur NXT : Compensation de l'Asservissement de position
Travail à faire:
- Compléter la simulation pour ajouter la compensation dérivée seule (modèle continu) à bande
passante limitée avec N=10
- Rechercher la valeur de Td donnant un compromis rapidité/dépassement acceptable .
- Implanter cette commande dans le robot et observer le comportement.