Académique Documents
Professionnel Documents
Culture Documents
ELE8203 AppD Moteurs Oct3 2021
ELE8203 AppD Moteurs Oct3 2021
Moteurs électriques
Les stratégies de commande d’un robot doivent être exécutées par les actionneurs présents
sur ce robot, c’est-à-dire par des moteurs capables de fournir l’énergie mécanique nécessaire.
Dans un robot classique 6R, chaque segment porte typiquement un moteur à son extrémité
pour actionner l’articulation suivante, bien qu’il soit aussi possible de garder les moteurs vers
la base et de transmettre leur mouvement par des systèmes de câbles et poulies, afin d’alléger
les segments. Comme mentionné au chapitre 1, les moteurs électriques à courant continu sont
actuellement les moteurs les plus souvent rencontrés en robotique 1 . Le but de ce chapitre est
de passer en revue la modélisation de ces moteurs et leur asservissement local en position,
vitesse ou couple/courant, afin de mieux comprendre comment les stratégies de commande
d’un robot peuvent être implémentées à l’aide de ces moteurs, voir aussi la figure 7.1.
Pour expérimenter avec l’asservissement en vitesse et en position d’un moteur à courant
continu, le lecteur pourra se référer aux tutoriels de Matlab sur le sujet.
208
We will analyze in some detail the dynamics of permanent magnet DC-
motors, as these are the simplest actuators to analyze and are commonly
used in robot manipulators. Other types of motors, in particular AC-
motors and so-called brushless DC-motors are also used as actuators
for robots but we will not discuss them here.
308 8.9. Actuation, Gearing, and Friction
A DC-motor works on the principle that a current-carrying conductor
in a magnetic field experiences a force F = i x ¢, where 1> is the magnetic
flux and i is the current in the conductor. The motor itself consists of a Encoder
Commutator
fixed stator and a movable rotor that rotates inside the stator as shown in
Figure 6.2. Magnet
Windings
Motor shaft
Ball bearings
Gearhead
Commutator Windings output shaft
Magnet
Figure 6.2: Principle of operation of a permanent magnet DC motor. The Shaft
magnitude of the force (or torque) on the armature is proportional to the
product of the current and magnetic flux. A commutator is required to
periodically switch the direction of the current through the armature to keep
Brush Housing
it rotating in the same direction.
Figure
If the stator D.1
produces – Moteurs
a radial électriques
magnetic flux à courant
1> and the current continu. Figure de gauche
of Maxon :Precision
schéma simplifié de
Figure 8.11: (Top) A cutaway view of a Maxon brushed DC motor with an encoder
in the
and gearhead. (Cutaway image courtesy Motors, Inc., maxonmo-
fonctionnement (source : [MWS05, Fig. 6.2]). Un commutateur
torusa.com.) permet
The motor’s rotor consists of the de renverser
windings, commutatorla ring,
direction
and shaft.
Each of the several windings connects different segments of the commutator, and as
du courant périodiquement dans l’armature afin
the motor quethelatwoforce
rotates, brushesde
slideLorentz produise
over the commutator unmake
ring and couple
contact
permettant de toujours tourner dans la même direction. Figure de droite : schéma réaliste d’un
with different segments, sending current through one or more windings. One end of the
motor shaft turns the encoder, and the other end is input to the gearhead. (Bottom)
moteur à courant continu avec encodeur et réducteur
A simplified à engrenage
cross-section intégrés
of the motor only, showing (source : [LP17,
the stator (brushes, Fig.
housing, and
magnets) in dark gray and the rotor (windings, commutator, and shaft) in light gray.
8.11] et Maxon Precision Motors, Inc.)
where I, measured in amps (A), is the current through the windings. The
constant kt , measured in newton-meters per amp (N m/A), is called the torque
Lorsqu’un courant i(t) parcoure l’armature,
constant.leTheconducteur surasleheat
power dissipated rotor subit
by the en chaque
windings, measured point
in watts
(W), is governed by
l’effet de la force de Lorentz F = i ⇥ , où est le flux magnétique Pheat = I 2constant
R, dû à l’aimant.
La géométrie de l’induit et des aimants sur le stator est choisie de telle façon qu’il s’exerce
finalement un couple de magnitude Dec 2019 preprint of updated first edition of Modern Robotics, 2017. http://modernrobotics.org
209
(2) km (2)
⌧m,ss = V
R ss
(2)
Vss
(1)
⌧m,ss ..
(1) .
(0)
Vss
⌧m,ss (0)
Vss
Figure D.2 – Droites vitesse-couple pour un moteur à courant continu (en régime permanent).
est finalement
di di
v=L + Ri + vb = L + Ri + kb !m (t). (D.2)
dt dt
La résistance R de l’induit implique qu’une puissance Ri2 (t) = (R/km2 2
)⌧m (t) est dissipée à
tout instant, ce qui entraîne l’échauffement du moteur lorsqu’il fournit un couple. En consé-
quence, le constructeur d’un moteur spécifie généralement une valeur ⌧cont donnant le couple
maximum en opération continue, c’est-à-dire qu’on ne doit pas avoir ⌧ (t) > ⌧cont pendant une
durée prolongée. Un robot industriel est en général équipé de capteurs de température qui
coupent l’alimentation du système en cas de surchauffe.
Régime Permanent
Si on applique une tension constante Vss au moteur (ou si l’on maintient i constant), il
s’établit avec une constante de temps L/R un régime permanent tel que
R
Vss = RIss + kb !m,ss = ⌧m,ss + kb !m,ss ,
km
c’est-à-dire qu’on a en régime permanent une relation affine entre le couple et la vitesse angu-
laire, pour une tension constante
km kb km 1 R
⌧m,ss = Vss !m,ss ou !m,ss = Vss ⌧m,ss . (D.3)
R R kb kb km
210
The remainder of this section refers to Figure 6.5 consisting of the DC-
motor in series with a gear train with gear ratio r : 1 and connected to a
link of the manipulator. The gear ratio r typically has values in the range
20 to 200 or more. Referring to Figure 6.5, we set Jm = Ja + J9 , the sum of
the actuator and gear inertias.
Jl
Jm
<latexit sha1_base64="+YcRazkDSpOoDXuFO2B5tLcO0X0=">AAAB6nicbVBNSwMxEJ3Ur1q/qh69BIvgqexKRY8FL+Kpov2AdinZNNuGJtklyQpl6U/w4kERr/4ib/4b03YP2vpg4PHeDDPzwkRwYz3vGxXW1jc2t4rbpZ3dvf2D8uFRy8SppqxJYxHrTkgME1yxpuVWsE6iGZGhYO1wfDPz209MGx6rRztJWCDJUPGIU2Kd9HDXl/1yxat6c+BV4uekAjka/fJXbxDTVDJlqSDGdH0vsUFGtOVUsGmplxqWEDomQ9Z1VBHJTJDNT53iM6cMcBRrV8riufp7IiPSmIkMXackdmSWvZn4n9dNbXQdZFwlqWWKLhZFqcA2xrO/8YBrRq2YOEKo5u5WTEdEE2pdOiUXgr/88ippXVT9y6p3X6vUa3kcRTiBUzgHH66gDrfQgCZQGMIzvMIbEugFvaOPRWsB5TPH8Afo8wcdqI2k</latexit>
!m = !l
<latexit sha1_base64="2nm7/HDYFK/3hdI1bmW+8afZBl0=">AAACA3icbVBNS8NAEN34WetX1JteFovgqSRS0YtQ8KDHCvYDmhAm2027dDcJuxuhhIIX/4oXD4p49U9489+4bXPQ1gcDj/dmmJkXppwp7Tjf1tLyyuraemmjvLm1vbNr7+23VJJJQpsk4YnshKAoZzFtaqY57aSSggg5bYfD64nffqBSsSS+16OU+gL6MYsYAW2kwD70EkH7EAh8hb0bEAJwofDArjhVZwq8SNyCVFCBRmB/eb2EZILGmnBQqus6qfZzkJoRTsdlL1M0BTKEPu0aGoOgys+nP4zxiVF6OEqkqVjjqfp7Igeh1EiEplOAHqh5byL+53UzHV36OYvTTNOYzBZFGcc6wZNAcI9JSjQfGQJEMnMrJgOQQLSJrWxCcOdfXiSts6p7XnXuapV6rYijhI7QMTpFLrpAdXSLGqiJCHpEz+gVvVlP1ov1bn3MWpesYuYA/YH1+QO2upbi</latexit>
bm
<latexit sha1_base64="M4ewrme+/iFEwy/HkJ0O0Amapqc=">AAAB6nicbVDLSgNBEOyNrxhfUY9eBoPgKeyKoseAF48RzQOSJcxOepMhM7PLzKwQQj7BiwdFvPpF3vwbJ8keNLGgoajqprsrSgU31ve/vcLa+sbmVnG7tLO7t39QPjxqmiTTDBssEYluR9Sg4AoblluB7VQjlZHAVjS6nfmtJ9SGJ+rRjlMMJR0oHnNGrZMeop7slSt+1Z+DrJIgJxXIUe+Vv7r9hGUSlWWCGtMJ/NSGE6otZwKnpW5mMKVsRAfYcVRRiSaczE+dkjOn9EmcaFfKkrn6e2JCpTFjGblOSe3QLHsz8T+vk9n4JpxwlWYWFVssijNBbEJmf5M+18isGDtCmebuVsKGVFNmXTolF0Kw/PIqaV5Ug6uqf39ZqV3mcRThBE7hHAK4hhrcQR0awGAAz/AKb57wXrx372PRWvDymWP4A+/zB0I4jbw=</latexit>
211
avec f la force exercée par la roue du moteur sur la roue de la charge, bm , bl des coefficients
de frottement et ⌧l le couple exercé sur l’axe de la charge. On en déduit
f ⇢l
⌧m = Jm !˙ m + bm !m +
✓ ◆ ✓ ◆
Jl bl ⌧l
⌧m = Jm + 2 !˙ m + bm + 2 !m +
⌧l
⌧m := Jeq !˙ m + beq !m + . (D.4)
⌧m = Jm !˙ m + bm !m + d(t), (D.5)
avec
d = (Jl !˙ m + bl !m )/ 2
+ ⌧l / (D.6)
(Ls + R)I(s) = V (s) kb ⌦m (s) et (Jm s + bm )⌦m (s) = km I(s) D(s), (D.7)
donc (Ls + R)(Jm s + bm )⌦m (s) = km V (s) km kb ⌦m (s) (Ls + R)D(s) (D.8)
km
⌦m (s) = V (s) + D̃(s), (D.9)
(Ls + R)(Jm s + bm ) + km kb
avec D̃(s) ⇡ D(s)/(Jm s + bm ) un terme de perturbation. On traite ici la tension aux bornes
du moteur comme l’entrée et la vitesse angulaire du moteur !m comme la sortie. La figure
212
D
V + 1 I ⌧m + 1 ⌦m
Ls+R km Jm s+bm
kb
Figure D.4 – Schéma bloc de la dynamique d’un moteur à courant continu, incluant l’influence
de la charge comme terme de perturbation D.
V km + 1 ⌦m
R Jm s+b
Figure D.5 – Schéma bloc simplifié d’ordre 1 de la fonction de transfert V (s) ! ⌦m (s) d’un
moteur à courant continu, négligeant l’inductance et donc la dynamique du circuit électrique.
D.4 présente la dynamique du moteur sous forme de schéma bloc. Fréquemment, la constante
de temps électrique L/R est très inférieure à la constante de temps mécanique Jm /bm , auquel
cas on peut faire l’approximation 2 Ls/R ⌧ 1 pour obtenir une équation du premier ordre
remplaçant (D.8)
km km kb
(Jm s + bm )⌦m (s) = V (s) ⌦m (s) D(s) (D.10)
R R
d’où l’on déduit la relation suivante, correspondant au schéma de la figure D.5,
✓ ◆
1 km
⌦m (s) = V D , avec b = bm + km kb /R. (D.11)
Jm s + b R
Nous pouvons alors tirer une conclusion analogue à celle faîte en dessous de (D.3), à savoir que
la tension aux bornes du moteur commande essentiellement la vitesse de rotation, mais cette
relation est perturbée par le terme D dû à la charge, ainsi que par la dynamique propre du
moteur capturée ici par la fonction de transfert 1/(Jm s + b). Si l’on néglige ce terme D pour
l’instant, on obtient en régime permanent, pour une tension constante Vss , par le théorème de
la valeur finale,
1 km Vss km Vss
!m,ss = lim s = Vss = .
s!0 Jm s + b R s Rb kb + bkmmR
213
D
⌦d + V km - 1 ⌦m
C
R + Jm s + b
-
Figure D.6 – Schéma bloc illustrant l’asservissement en vitesse d’un moteur à courant continu.
Le contrôleur C reçoit une commande de vitesse désirée et ajuste la tension du moteur pour
suivre cette commande, en limitant l’effet de la perturbation D.
locale autour de ce moteur. La boucle de commande du robot opère à plus haut niveau et
interagit avec ce contrôleur local plutôt qu’avec le moteur directement. La commande locale
permet de considérer le système contrôleur+moteur+réducteur (ou servomoteur) comme un
système capable de suivre approximativement un signal d’entrée qui est normalement un signal
de position, de vitesse ou de couple désiré, selon le mode choisi pour le contrôleur. Le contrôleur
de moteur se charge quant à lui d’ajuster les signaux électrique afin que la position, vitesse ou
couple du moteur suive ces signaux d’entrée. Au niveau supérieur de la commande du robot,
cet asservissement permet de simplifier le problème de commande, en négligeant la dynamique
du moteur. L’asservissement en position et en vitesse est aussi utilisé pour implémenter des
stratégies de commande décentralisées négligeant la dynamique du robot. On ne donne ici que
quelques exemples illustratifs et succincts de stratégies d’asservissement de moteurs, d’autres
approches sont certainement possibles.
214
proportionnel-integral (PI), c’est-à-dire C(s) = Kp + Ki
s
, ou encore dans le domaine temporel
Jm s2 + (b + K̃p )s + K̃i = 0,
ce qui montre que le système est stable pour tout choix de constantes
q K̃p > b, K̃i > 0.
La pulsation naturelle de cette équation du second ordre 3 est !n = K̃i
Jm
et le coefficient
b+K̃p
d’amortissement est ⇣ = p . Souvent, on choisit ⇣ = 1, c’est-à-dire un amortissement
2 K̃i Jm
critique, et on augmente !n pour accélérer la réponse. La vitesse de cette réponse est toutefois
limitée en pratique par le courant qui peut circuler dans l’armature, les erreurs de modélisation,
le bruit dans la mesure de !m et ✓m , etc.
Le terme intégral du contrôleur donne pour la fonction en boucle ouverte C̃(s)P (s) un
système de type 1, ce qui a pour conséquence de rejeter les perturbations d constantes et de
produire une erreur nulle ess = !d,ss !m,ss en régime permanent pour !d une fonction échelon,
c’est-à-dire ⌦d = A/s. En effet, par le théorème de la valeur finale, pour la réponse à !d ,
et on raisonne de manière similaire pour la réponse à d. Sans le terme intégral, on doit géné-
ralement avoir recours à des gains Kp élevés pour maintenir les erreurs suffisamment faibles,
ce qui peut amener les actuateurs à saturer et est donc généralement indésirable.
La figure D.7 montre les réponses !m de la vitesse d’un moteur asservi par une commande
PI, pour deux signaux d’entrée possibles !d , d’une part une échelon et d’autre part un signal
sinusoïdal. On a aussi rajouté une perturbation sinusoïdale via le couple ⌧l (t) dans (D.6).
Comme cette perturbation passe directement dans la sortie !m , le moteur est inutilisable en
boucle ouverte, en plus d’avoir une réponse très lente.
215
Moteur en b. o. Moteur en b. f. - rép. échelon
1.5 1.2
1
1
0.8
(rad/s)
(rad/s)
0.6
0.5
0.4
m
m
0.2
0
0
-0.5 -0.2
0 2 4 6 8 10 0 0.5 1 1.5 2 2.5 3
t (s) t (s)
Moteur en b. f. - rép. sin. lente Moteur en b. f. - rép. sin. rapide
1 1
0.5 0.5
(rad/s)
(rad/s)
0 0
m
-0.5 -0.5
-1 -1
0 0.5 1 1.5 2 2.5 3 0 0.5 1 1.5
t (s) t (s)
Figure D.7 – Asservissement en vitesse d’un moteur à courant continu. On a utilisé ici
une commande proportionnelle-intégrale C(s) = 5 + 10/s. Le terme intégral permet d’éliminer
l’erreur en régime permanent dans la réponse à un échelon et d’éliminer une erreur d constante.
Paramètres utilisés dans les simulations (on utilise pour ces tests le modèle du moteur complet) :
km = 0.1 N · m/A, kb = km , R = 1 ⌦, L = 1 µH, Jm = 0.01 kg · m2 , Jl = Jm , bm =
0.01 N · m · s/rad, bl = bm , = 100. La perturbation en couple est ⌧l (t) = sin(t). Pour le
moteur en boucle ouverte, on applique un échelon V = 0.2 V, ce qui donnerait !m,ss = 1
rad/s en régime permanent, en l’absence de perturbation. Cependant même dans un tel cas
idéal, la réponse du système est beaucoup trop lente en boucle ouverte pour être utile. En
boucle fermée, pour une entrée sinusoïdale, on peut remarquer que lorsque la fréquence (donc
l’accélération) augmente, la sortie a du mal à suivre. Ceci illustre les limites du contrôleur,
dont doit tenir compte l’utilisateur dans sa spécification de trajectoire.
216
+ -
!d
Kd
s
D
+ + V km - 1 1 ✓m
Kp +
✓d R + Jm s + b ⌦m s
- +
Ki / s
Figure D.8 – Asservissement en position d’un moteur à courant continu par un contrôleur
PID.
configurations intermédiaires et se reposer complètement sur les contrôleurs de bas niveau pour
atteindre ces configurations. Dans ce cas, le contrôleur de moteur doit essentiellement répondre
à une séquence de fonctions échelon. Pour un contrôle en position, la même structure de contrô-
leur (D.12) correspond maintenant un contrôleur proportionnel-dérivée (PD), avec Ki jouant
maintenant le rôle du gain proportionnel à la différence d’angle et Kp le gain proportionnel à
la différence des dérivées. En renommant les paramètres du contrôleur, on peut écrire
v(t) = Kp (✓d ✓m ) + Kd (!d !m ).
Encore une fois, le terme dérivée ici s’obtient plutôt par mesure de la vitesse !m que par
dérivation numérique de ✓m . La fonction !d s’obtient analytiquement et pas par dérivation
numérique, puisque la trajectoire ✓d est connue. On peut aussi ne pas inclure !d pour utiliser
un terme dérivée plus simple Kd !m .
Comme pour l’asservissement en vitesse, il est souvent utile d’inclure aussi un terme intégral
dans la commande, afin d’annuler au moins les perturbations constantes et l’erreur en régime
permanent dans la réponse à un échelon. Dans ce cas,
Z t
v(t) = Ki (✓d (⌧ ) ✓m (⌧ ))d⌧ + Kp (✓d ✓m ) + Kd (!d !m ),
0
1
1
0.8
0.5
(rad)
(rad)
0.6
0
m
m
0.4
-0.5
0.2
-1
0
-0.2 -1.5
0 0.5 1 1.5 2 2.5 3 0 0.5 1 1.5 2 2.5 3
t (s) t (s)
Figure D.9 – Asservissement en position d’un moteur à courant continu. On a utilisé ici une
commande PID C(s) = 30 + 5s + 1/s. Les paramètres de la simulation sont les mêmes que
pour la figure D.7.
Si on règle d’abord Kp , Kd , cette condition place une limite supérieur sur le gain intégral. La
figure D.9 montre la réponse en boucle fermée ✓m (t) pour un contrôleur PID et une perturbation
⌧l sinusoÏdale.
Lorsque l’asservissement en position est utilisé pour suivre une trajectoire ✓d (t) variant
dans le temps, pas seulement pour atteindre une position constante, on ajoute souvent pour
améliorer la performance un terme d’action anticipatrice ou de feedforward, comme montré
sur la figure D.10. Ce terme permet de commencer à produire le signal ✓m voulu plus tôt, en
utilisant notre connaissance de ✓d , au lieu d’attendre qu’une erreur significative entre ✓d et ✓m
se développe pour activer la boucle de rétroaction. En prenant P̃ (s) = kRm P (s) et F la fonction
de transfert de feedforward, on obtient pour l’erreur
La fonction F n’a pas besoin d’être une fonction de transfert propre en général, car elle agit
seulement sur ✓d et des termes comme s⇥d (s) correspondent à la dérivée ✓˙d de l’entrée, connue,
plutôt qu’à la dérivation d’un signal physique. Si on prend F (s) = 1/P̃ (s) = s(Jm s + b), on
obtient pour la dynamique de l’erreur
(1 + P̃ (s)C(s))E(s) = 0,
et donc ✓m suivra l’entrée ✓d , quelle que soit ✓d . Le contrôleur PID avec feedforward sera alors
Z t
v(t) = Jm ✓¨d + b !d + Kp (✓d (t) ✓m (t)) + Kd (!d (t) !m (t)) + Ki ✓d (⌧ ) ✓m (⌧ )d⌧.
0
218
F
D
+ + V - 1 ✓m
km 1
C
✓d - e + R + Jm s + b ⌦m s
Figure D.10 – Asservissement en position d’un moteur à courant, avec terme de feedforward
F.
⌧m
D
-
Id V + 1 - 1 ⌦m
C km
+ - R I + J m s + bm
kb
Figure D.11 – Asservissement en courant ou couple d’un moteur à courant continu. Ici d est
donné par (D.6). De manière équivalente, on peut remplacer sur le schéma d par ⌧l / ainsi que
Jm et bm par Jeq et beq , voir (D.4).
E 1 Jm s + b m
= , P (s) = .
Id 1 + PC R(Jm s + b)
s (p + ✏p )
C(s) = K ,
s(s (z + ✏z ))
avec ✏z , ✏p deux petits nombres positifs ou nuls. Ce contrôleur possède un pôle à 0 afin d’obtenir
en boucle fermée une erreur nulle en régime permanent dans la réponse à un échelon. Le lieu
des racines, en fonction de K, est montré sur la figure D.12. Finalement, la figure D.13 illustre
la réponse obtenue pour le système en boucle fermée avec ce contrôleur.
(s+1.9)
Figure D.12 – Lieu des racines pour un système P (s) = s+1
s+2
et un contrôleur C(s) = K s(s+0.9) .
220
Moteur en b. f. - rép. à un échelon Moteur en b. f. - rép. à un une sin.
0.12 1
0.1
0.5
0.08
i (A)
i (A)
0.06 0
0.04
-0.5
0.02
0 -1
0 0.5 1 1.5 2 2.5 3 0 1 2 3 4 5
t (s) t (s)
221