Memoire
Memoire
Memoire
MEMOIRE
Présenté pour obtenir le diplôme de
MASTER EN ELECTRONIQUE
Par
Nessar Ahmed
Intitulé du sujet
Implémentation d’un régulateur PID sur Arduino nano pour la
régulation en position d’un moteur à courant continu
1
Dédicaces
Nous dédions ce mémoire à nos chers parents, nos seours et nos frères et toute
la famille de nessar et meslem, sans oublier nos chérs amis et proches.
Nous tenons à exprimer nos remerciements les plus sincères aux membres du
jury : Mr.Djelti et Mr.Bentoumi et Mme.Berradja, qui ont accepté d’examiner ce
travail.
Table des matières
Introduction générale .................................................................................. 1
Chapitre 1 : L’asservissement et la régulation de systèmes ........................... 2
1. Généralités sur les systèmes ................................................................................................................. 2
1.1. Définition d’un système ................................................................................................................ 2
1.2. Représentation d’un système ......................................................................................................... 2
1.3. Classification des systèmes ........................................................................................................... 2
1.4. Propriétés d’un système................................................................................................................. 3
1.4.1. Le nombre et la nature des entrées et des sorties ;.................................................................. 3
1.4.2. Le régime permanent ou établi d’un système ......................................................................... 3
1.4.3. Comportement statique et dynamique d’un système .............................................................. 4
1.4.4. Le modèle d’un système : ....................................................................................................... 4
1.4.5. Système linéaire (non linéaire) ............................................................................................... 5
1.4.6 Système causal : ...................................................................................................................... 5
1.4.7. Système à temps invariant : .................................................................................................... 5
1.4.8. Système instantané ou statique et système dynamique .......................................................... 5
1.5. Classification des systèmes dynamiques ....................................................................................... 6
1.6. Modèle d’un système dynamique .................................................................................................. 7
1.6.1. Systèmes dynamiques linéaires à constantes localisés ........................................................... 7
1.6.2. Systèmes dynamiques non linéaires : ..................................................................................... 7
1.6.3. Systèmes dynamiques linéaires d’ordre supérieur à deux. ..................................................... 7
1.7. Le modèle d’un moteur à courant continu ..................................................................................... 8
1.8. Les différentes techniques de commande des systèmes asservis (régulés) ................................... 8
1.9. Objectif d’un asservissement ou régulation .................................................................................. 9
1.10. Qualités ou performances d’un asservissement. ........................................................................ 10
1.10.1. Stabilité des systèmes asservis ........................................................................................... 10
1.10.2. Précision d’un système asservi ........................................................................................... 11
1.10.3. La rapidité d’un système asservi ........................................................................................ 11
1.10.4. La robustesse d’un système asservi .................................................................................... 11
C'est autour de ce contexte que se situe l’objet de ce projet. Il s'agit réaliser un régulateur
PID numérique de position angulaire d’un moteur à courant continu à l’aide d’une plateforme
arduino nano.
Ceci étant dit, le mémoire de notre projet est organisé en quatre chapitres. Le premier est
consacré aux vocabulaires et à la présentation de toutes les notions relatives à l’asservissement et
à la régulation des systèmes, le deuxième au contrôle par PID, le troisième aux méthodes de
synthèse d’un régulateur PID numérique et le quatrième à la réalisation matérielle et logicielle et
à la présentation des résultats obtenus.
Page 1
Chapitre 1 : L’asservissement et la régulation de systèmes
1. Généralités sur les systèmes
1.1. Définition d’un système
De manière générale, un système est un ensemble d’objets interagissant entre eux en vue
de réaliser une tâche donnée. Il peut être simple ou complexe.
1.2. Représentation d’un système
On le rappelle : En automatique, on représente un système par un schéma fonctionnel
(Figure 1).
e1(t) s1(t)
e2(t) s2(t)
. Système .
. .
. .
systèmes
issus de
conçus et construits l'environnement (e.g biologique, écologique,
par l'homme (e.g : : l'eau, l'air, la roche, sociaux, ..., ( tout ce qui
les sytèmes ... ) constitue les êtres
mécaniques, ...) vivants)
possèdent des
possèdent des comportements subis
comportements donc plus ou moins possèdent des
choisis identifiables facile à prévoir et à comportements qui
donc faciles à prévoir contrôler évoluent donc difficile à
et à contrôler prévoir et à contrôler
possèdent des
possèdent des modèles moins
possèdent des
modèles précis précis
modèles très peu
précis
Dans les paragraphes qui suivent, notre intérêt va porter tout particulièrement sur les
systèmes SISO (Figure 3) étant donné que celui qu’on veut contrôler dans notre projet fait partie
de cette catégorie.
Système
mono ou
e(t) multi- s(t)
variables
Page 3
1.4.3. Comportement statique et dynamique d’un système
On donne à la figure 3 suivante à titre illustratif un exemple de tels comportements d’un système.
Pour le comportement statique, c’est le régime permanent dans le cas où l’entrée est
constante. Il est caractérisé par le gain statique :
𝑙𝑖𝑚𝑡→∞ 𝑠(𝑡)
𝐾= |𝑒(𝑡) = 𝑐𝑜𝑛𝑠𝑡𝑎𝑛𝑡𝑒
𝑙𝑖𝑚𝑡→∞ 𝑒(𝑡)
Ceci dit, et on le rappelle : tout système physique peut être représenté selon quatre manières
(Figure 5).
Page 4
Entrée(s)
Sortie(s)
Système physique
s(t)
s(t) = uR(t)
e(t)
Page 5
Du point de vue de l'automaticien, un tel système peut être décrit par son gain statique.
Dans tous les autres cas, il est dit à mémoire ou dynamique, par exemple :
s(t) = a.e(t-τ) ou s(t) = a.e(t) + b.s’(t).
Un tel système, a sa sortie qui peut dépendre non seulement de l'entrée présente mais aussi
des entrées, éventuellement des sorties passées.
1 𝑡 1 𝑡
𝑠(𝑡) = 𝑢𝑐 (𝑡) = 𝐶 ∫−∞ 𝑖𝑐 (𝜏). 𝑑𝜏 = 𝐶 ∫−∞ 𝑒(𝜏) . 𝑑𝜏
s(t) = uc(t)
systèmes
dyamiques
à parmamètres à paramètres
distribués localisés
déterministes stochastiques
à temps à temps
continu discret
Page 6
1.6. Modèle d’un système dynamique
Un système dynamique est mathématiquement représentable par un système d’équations
différentielles d'ordre 1, linéaires ou non comme suit :
𝑑𝑥1(𝑡)
= 𝑓1(𝑥1(𝑡), … 𝑥𝑛(𝑡)) + 𝑔1(𝑒(𝑡))
𝑑𝑡
𝑑𝑥2(𝑡)
= 𝑓2(𝑥1(𝑡), … 𝑥𝑛(𝑡)) + 𝑔2(𝑒(𝑡))
𝑑𝑡
….
𝑑𝑥𝑛(𝑡)
= 𝑓2(𝑥1(𝑡), … 𝑥𝑛(𝑡)) + 𝑔𝑛(𝑒(𝑡))
𝑑𝑡
𝑠(𝑡) = ℎ(𝑥1(𝑡), … 𝑥𝑛(𝑡)) + 𝑑(𝑒(𝑡))
Les xi sont les variables internes (variables d’état) du système, e(t) l’entrée et s(t) la sortie.
Dans le cas où les paramètres du système sont constants, le système est dit à constantes
localisées et les équations différentielles sont des équations différentielles aux dérivées totales.
Dans le cas contraire, on a affaire à un système à paramètres distribués et sa représentation est faite
à l’aide d’un système d’équations aux dérivées partielles.
1.6.1. Systèmes dynamiques linéaires à constantes localisés
C’est un système que l’on peut représenter par un système d’équations différentielles
linéaires d’ordre 1 à coefficients constants.
1.6.2. Systèmes dynamiques non linéaires :
Les systèmes physiques (réels) ne sont pas nécessairement linéaires. Il est néanmoins
souvent possible de les étudier avec les outils classiques de l’automatique linéaire après avoir
linéarisé leur comportement autour d’un point de repos (façon de procéder familière aux
électroniciens).
Page 7
1.7. Le modèle d’un moteur à courant continu
Un moteur électrique à courant continu est un système dynamique SISO, régit par des équations
physiques qui découlent de ses caractéristiques électriques, mécaniques et magnétiques :
𝑑𝑖(𝑡)
𝑢(𝑡) = 𝑒(𝑡) + 𝑅. 𝑖(𝑡) + 𝐿. u : Tension appliquée au moteur
𝑑𝑡
𝑑𝜔(𝑡)
𝑐𝑚 − 𝑐𝑟 = 𝐽𝑇 . ω : Vitesse de rotation du rotor du moteur
𝑑𝑡
Généralement l’inductance interne L du moteur est négligeable devant sa résistance interne d’où le
modèle du MCC est un modèle du second ordre qui s’apparente à un modèle du premier ordre.
Soit :
Ω𝑚 (𝑃) 𝐴 𝐴
= 2𝜀 1 ≈ 2𝜀
𝑈(𝑃) 1+ 𝑃+ 2 𝑃2 1+ 𝑃
𝜔0 𝜔0 𝜔0
1
Avec : 𝐴=𝐾 ------------------ gain statique
𝑒
𝑅 𝐽𝑇
𝜀 = 2 √𝐾 ------------------- facteur d’amortissement
𝑒 𝐾𝑐 𝐿
𝑒 𝐾 𝐾𝑐
𝜔0 = √ 𝐿𝐽 -------------------- Pulsation propre
𝑇
Page 8
Techniques de commande dans les
systèmes asservis
par exemple :
Par exemple - en boucle unique
- La commande robuste - en boucle multiple
- La commande prédictive - en cascade
- La commande adaptative -.
- La commande par modes glissants -.
- La commande par platitudes différentielles. - etc
- La commande floue
- La commande à l’aide d’un système expert
Page 9
Entrée
Sortie
Entrée
Sortie
Page 10
Autrement dit, un système asservi est stable s’il retourne vers son état d’équilibre lorsqu’il
en est écarté. Il est instable dans le cas contraire.
1.10.2. Précision d’un système asservi
La précision s’exprime par l’écart « e » entre la consigne yc et la sortie y du système
asservi.
1.10.3. La rapidité d’un système asservi
Pour ce qui est de la rapidité, on cherche à obtenir par les asservissements, une réponse rapide
aux variations de la consigne et une aptitude à effacer rapidement les perturbations.
En pratique, on évalue la rapidité d’un système avec un temps de réponse à 5%. Ce dernier
exprime le temps mis par la sortie du système soumis à un échelon pour atteindre sa valeur de
régime permanent à ±5% près et y rester (Fig.14).
Le temps de réponse est lié à l’inertie du système, c'est-à-dire à ses propriétés physiques.
1.10.4. La robustesse d’un système asservi
Un système asservi est dit robuste, s’il a la capacité de conserver ses performances
(stabilité, rapidité et précision) même en présence de perturbations agissant sur le système ou
variations de ses paramètres.
Page 11
Chapitre 2 : Le contrôleur PID dans les systèmes d’asservissement
2.1. La régulation et l’asservissement par PID
C’est une méthode de commande, souvent employée pour des asservissements ou des
régulations de systèmes SISO.
Te
e(kTe) u(kTe) u(t) s(t)
c(t) c(kTe) Contrôleur Bloqueur
PID Système contrôlé
d’ordre
C(p) C(z) E(z) Numérique U(z) zéro
H(p)
PID(z) BOZ(p)
S(z) sm(kTe)
Te
Echantillonneur
Figure …16 : asservissement (régulation) continu commandé par un signal échantillonné et
2.3. Principes deavec
correction l’asservissement
pid numérique et de la régulation par PID
Page 12
Le contrôle de type P applique une correction proportionnelle à l’erreur corrigeant de
manière instantanée tout écart de la grandeur à régler :
𝑐𝑜𝑚𝑚𝑎𝑛𝑑𝑒(𝑡) = 𝐾𝑝 𝜀(𝑡)
Lorsque l’on augmente Kp, le système réagit plus vite et l’erreur statique s’en trouve
améliorée, mais en contrepartie le système perd en stabilité. Le dépassement se fait de plus en plus
grand, et le système peut diverger dans le cas d’un Kp démesuré.
On donne à la Figure 17 ci-dessous son impact sur la réponse d’un système dans le cas
d’une régulation.
Consigne
Réponse
Page 13
2.2.2. Rôle de l’action I
ElIe complète l’action P en réduisant voire annulant l’erreur statique de l’action P, sans
modifier la réaction du régulateur PID. L’idée est d’intégrer l’erreur depuis le début et d’ajouter
cette erreur à la commande : lorsque l’on se rapproche de la valeur demandée, l’erreur devient de
plus en plus faible. Le terme proportionnel n’agit plus mais le terme intégral subsiste et reste stable,
ce qui maintient la sortie du système à la valeur demandée dans le cas par exemple d’une régulation
de vitesse d’un moteur à courant continu :
𝒕
𝒄𝒐𝒎𝒎𝒂𝒏𝒅𝒆(𝒕) = 𝑲𝒑 . 𝜺(𝒕) + 𝑲𝒊 . ∫𝟎 𝜺(𝝉) . 𝒅𝝉
L’intégrale agissant comme un filtre sur le signal intégré, elle permet aussi de diminuer
l’impact des perturbations (bruit, parasites), et il en résulte alors un système plus stable.
Malheureusement, un terme intégral trop important peut lui aussi entraîner un dépassement de la
consigne, une stabilisation plus lente, voire même des oscillations divergentes (Figure 18).
Fig. 18 : Effet de Ki sur la réponse d’un système en régulation (erreur statique améliorée, stabilité
diminuée)
Page 14
Fig. 19 : Effet de Kd sur la réponse d’un système en régulation (stabilité améliorée,
dépassement diminué)
Remarque :
L’action dérivée est surtout utilisée dans le cas de grandeur à régler non bruitées, car la
dérivation est très sensible au bruitage du signal : on diminuera donc son influence dans un
asservissement où la grandeur à régler est soumise à de nombreuses perturbations (e.g : vitesse
d’un moteur) .
Pour récapituler on donne au tableau 1 suivant un résumé des effets combinés des trois
actions P, I et D :
P.I.D série : P I D
Page 15
P
P.I.D parallèle :
I
I
P.I.D mixte: P
D
PID
Implémentation Implémentation
matérielle logicielle
Analogique
Page 16
2.5.1. Implémentation matérielle analogique ou continue en technologie pneumatique
Page 17
Fig. 23 : Exemple de PID réalisé à l’aide de circuits CDBA(current
differencing buffered amplifier)
Page 18
2.5.4. Implémentation logicielle discrète sur µp/µc ou dsp/dsc
Dite aussi implémentation software, elle est constituée d’un algorithme PID, codé avec un
langage de programmation de haut niveau, le plus souvent le langage c/c++ et exécuté sur du
matériel tel qu’un µc, DSP ou DSC.
Tout comme pour les fpga, une telle implémentation s’appuie sur la forme numérique du
PID. On donne à la figure 25, à titre illustratif, un exemple d’algorithme PID que l’on peut exécuter
par exemple sur un µc.
previous_error := 0
integral := 0
loop:
error := setpoint − measured_value
integral := integral + error × dt
derivative := (error − previous_error) / dt
output := Kp × error + Ki × integral + Kd × derivative
previous_error := error
wait(dt)
goto loop
Page 19
2.5.5. Implémentation logicielle discrète sur automate programmable (api ou plc)
Page 20
Chapitre 3 : Synthèse d’un contrôleur PID numérique
1.Méthodes de synthèse
On le rappelle, l'obtention de la forme discrète d’un régulateur ( pid inclus) peut se faire
selon trois manières (Fig.27 ).
Synthèse d'un
contrôleur discret
Dans les paragraphes qui suivent, nous allons les rappeler de manière succincte.
Dans ce projet, et étant donné les circonstances dans lesquelles a été réalisé ce dernier, nous
avons utilisé pour des raisons de simplicité la troisième (l’empirique).
Page 21
point de départ : l'asservissement numérique à réaliser
Fig. 28: étapes de synthèse d’un régulateur numérique par transposition du continu en
numérique
Page 22
Etape 1 : aspect général d’un asservissement numérique à réaliser:
Consigne
numérique
c(k.Te) Commande
u(t) Système à y(t)
Algorithme
CNA régler
régulateur
u(k.Te) Grandeur
y(k.Te) réglée
Grandeur
réglée numérique
CAN
HORLOGE
(Te)
Modélisation du CAN
Page 23
Etant donné qu’en pratique, l’ensemble échantillonnage-numérisation est très rapide , ce schéma
peut être simplifié sous la forme d’un simple échantillonneur (Fig.31).
Modélisation du CNA
De même, un CNA peut être schématisé sous la forme suivante (Fig.32) :
L’on peut simplifier ce modèle par un simple bloqueur d’ordre zéro (Fig.33) .
On le rappelle : le bloqueur BOZ peut être assimilé à un retard pur pour les fréquences
d’échantillonnage élevées, ce qui implique une fonction de transfert dans le domaine de Laplace
égale à e-PTe où Te est la période d’échantillonnage.
Page 24
Etape 3 : Synthèse en continu d'un régulateur analogique équivalent : les exigences
Dite aussi réglage, elle consiste à déterminer les coefficients ou paramètres du régulateur
afin d'obtenir une réponse adéquate du système et de la régulation ou asservissement. Les objectifs
sont d'être stable, rapide, précis et robuste
Les élements du
cahier des
charges
forme de la Précision en
marges de stabilité : régime Rapidité Robustesse
réponse
marge de gain et permanent en
indicielle en
marge de phase boucle fermée
boucle fermée
optimiser les
garantir un temps critères de
valeurs usuelles : apériodique de montée et un performance
erreur statique temps :stabilité,
mp ≥ 45° qui ne doit pas d'établissement de précision et
dépasser une la réponse et une
mg ≥ 10db rapidité
oscillatoire cartaine valeur bande passante
amorti
Page 25
Etape 4 : calcul d’une version discrète
Dans cette étape, on revient en numérique et on calcule une version discrète du
régulateur analogique de l’étape 3 (Fig.36).
Discrétisation
Te
C(z) ε(z) Hc(z)= ? BOZ(s)H(P) Y(z)
Ce calcul peur être effectué en utilisant les méthodes d’approximations d’Euler (différences
vers l’avant), d’Euler (différences vers l’arrière) et de Tustin ,
Dans les paragraphes qui suivent, nous allons brièvement rappeler le principe de
fonctionnement de ces méthodes.
2 𝑧−1 2 1−𝑧 −1
𝑃= = si Tustin
𝑇𝑒 𝑧+1 𝑇𝑒 1+𝑧 −1
𝑧−1 1−𝑧 −1
ou 𝑃 = = si Euler (vers l’avant)
𝑇𝑒 𝑇𝑒 𝑧 −1
𝑧−1 1−𝑧 −1
ou 𝑃 = = si Euler (vers l’arrière)
𝑇𝑒 𝑧 𝑇𝑒
La relation liant z à P permettant de basculer entre ces deux domaines est égale à :
1
𝑧 = 𝑒 𝑃𝑇𝑒 ⇒ 𝑃 = 𝑇 ln(𝑧) qui est une relation non linéaire qu'on linéarise en effectuant les
𝑒
approximations suivantes :
Page 26
Dans le cas de Tustin, on a :
𝑃𝑇𝑒 𝑇
𝑒 2 1+ 𝑒 𝑃 2 𝑧−1 2 1−𝑧 −1
2
𝑧= −𝑃𝑇𝑒 ≈ 𝑇𝑒 ⇒𝑃= =
1− 𝑃 𝑇𝑒 𝑧+1 𝑇𝑒 1+𝑧 −1
𝑒 2 2
𝑧−1 1−𝑧 −1
𝑧 = 𝑒 𝑃𝑇𝑒 ≈ 1 + 𝑃𝑇𝑒 ⇒ 𝑃 = =
𝑇𝑒 𝑇𝑒 𝑧 −1
1 𝑧−1 1−𝑧 −1
𝑧= ≈ 1 − 𝑃𝑇𝑒 ⇒ 𝑃 = =
𝑒 −𝑃𝑇𝑒 𝑇𝑒 𝑧 𝑇𝑒
D’où les versions numériques dans le cas d’un régulateur pid par les deux méthodes de
transposition conseillées avec dérivée filtrée :
1 𝑇𝑒 𝑁(𝑧−1)
𝑃𝐼𝐷(𝑧) = 𝐾𝑝 [1 + + 𝑁𝑇𝑒 ] avec Euler arrière (la plus utilisée en pratique car
𝑇𝑖 𝑧−1 𝑧−(1− )
𝑇𝑑
plus simple).
𝑇𝑒 𝑧+1 𝑁(𝑧−1)
𝑃𝐼𝐷(𝑧) = 𝐾𝑝 [1 + + 𝑁𝑇 𝑁𝑇 ] avec Tustin
2𝑇𝑖 𝑧−1 (1+ 𝑒 )𝑧−(1− 𝑒 )
2𝑇𝑑 𝑇𝑑
𝑑𝑒(𝑡) 𝑒(𝑡)−𝑒(𝑡−𝑇𝑒 )
≈
𝑑𝑡 𝑇𝑒
1−𝑧−1
𝑍{
𝑒(𝑡)−𝑒(𝑡−𝑇𝑒 )
𝑇𝑒
} = 𝑇𝑒
𝐸(𝑧) = 𝑧−1
𝑧𝑇
𝐸(𝑧)
𝑒
𝑧−1
D’où : 𝑃 ↔ 𝑧𝑇
𝑒
par la formule des rectangles (Euler), comme une différence vers l’avant si Euler
avant ;
Page 27
𝑧−1
D'où : 𝑃 ↔ 𝑇
𝑒
𝑘𝑇𝑒 𝑒𝑘 +𝑒𝑘−1
𝐼𝑘 = ∫0 𝑒(𝑡) 𝑑𝑡 ≈ 𝐼𝑘−1 + 𝑇𝑒 ( 2
)
2 𝑧−1 2 1−𝑧 −1
D’où : I(z)= 𝑒(𝑧) = 𝑒(𝑧)
𝑇𝑒 𝑧+1 𝑇𝑒 1+𝑧 −1
par la formule des rectangles (Euler), comme une différence vers l’arrière si Euler arrière ;
𝑘𝑇𝑒
𝐼𝑘 = ∫0 𝑒(𝑡) 𝑑𝑡 ≈ 𝐼𝑘−1 + 𝑇𝑒 . 𝑒𝑘
par la formule des rectangles (Euler), comme une différence vers l’avant si Euler
𝑘𝑇𝑒
avant;𝐼𝑘 = ∫0 𝑒(𝑡) 𝑑𝑡 ≈ 𝐼𝑘−1 + 𝑇𝑒 . 𝑒𝑘−1
Page 28
Point de départ : l'équation
différentielle du PID
Fig.37: étapes de synthèse d’un régulateur PID numérique par la méthode empirique
Page 29
4. Synthèse directe en numérique
On donne à la figure 38 suivante les différentes étapes de cette méthode :
Discrétiser l'équation
différentielle du PID à l'aide
d'une méthode
d'approximation(Euler, Tustin)
Régulateur discret
Page 30
5. Les différentes formes discrètes de contrôleurs PID numériques
Deux formes discrètes peuvent être obtenues suite à la discrétisation de l’équation
différentielle du PID :
Avec :
𝑻
𝒒𝟎 = 𝑲𝒑 (𝟏 + 𝑻𝒅 )
𝒆
𝟐𝑻𝒅 𝑻
𝒒𝟏 = −𝑲𝒑 (𝟏 + − 𝑻𝒆 )
𝑻𝒆 𝒊
𝑻𝒅
𝒒𝟐 = −𝑲𝒑 𝑻
𝒆
L'avantage majeur de cette forme est qu'elle est récursive. Elle permet de calculer la sortie
incrémentale à chaque instant d'échantillonnage. Par conséquent, elle ne nécessite de stocker que
les trois valeurs précédentes : e (k), e (k-1) et e (k-2). En plus, elle a plusieurs autres avantages.
Donc pour cette raison, c’est cette forme ci que nous avons utilisée dans notre projet.
Page 31
Chapitre 4 : Réalisation matérielle et logicielle
1. Réalisation matérielle
1.1.Schéma bloc de l’asservissement réalisé
Consigne Commande
(Échelon) (PWM)
Contrôleur PID Driver du
(Arduino nano) moteur
(L293D)
Encodeur
Phase A et Phase B de
l’encodeur, en
quadrature de phase
Fig.39: schéma synoptique du régulateur réalisé
Remarque : Les circonstances dans lesquelles ce projet a été fait (Covid-19) ne nous ont pas
permis de le réaliser matériellement. Nous nous sommes alors limités à sa simulation sous
proteus.
modes de commande
d'un moteur à courant
continu
La commande en tension est utilisée avec les petits moteurs à courant continu et la
commande en courant est utilisée avec les gros moteurs à courant continu.
Remarque :
Le moteur utilisé dans notre projet étant supposé (car simulé) un petit moteur, nous avons
alors utilisé la commande en tension. Donc une régulation avec une boucle unique.
1.1.2.2. L’encodeur optique incrémental
Comme tout encodeur optique, c’est un type de capteur qui permet de mesurer la position
angulaire ou la vitesse de rotation d’un arbre de moteur ainsi que son sens de rotation
Il est conçu avec un disque à segments translucides et opaques configurés pour laisser
passer la lumière en certains endroits (Figure 41).
En plaçant une LED et des photodiodes de part et d'autre du disque, les photodiodes
détectent la lumière traversant le disque et génèrent des formes d'ondes impulsionnelles avec une
différence de phase de 90° entre eux, correspondant aux formes translucides et opaques sur les
segments du disque (Fig.42). De plus lorsque l'arbre du codeur tourne dans le sens horaire, la forme
Page 33
d'onde A précède la forme d'onde B. Si le sens de rotation devient anti-horaire, le signal B précède
le signal A.
Fig. 42: Les signaux en quadrature générés par un encodeur optique incrémental.
Page 34
Techniques de création
d'un signal analogique à
partir d'un système
numérique
Arduino nano intégrant la pseudo-analogique, c’est celle-ci que nous avons alors utilisée
dans notre projet.
1.1.2.3.3. La PWM
Le principe est de créer un signal logique (valant 0 ou 1), à fréquence fixe mais dont
le rapport cyclique est contrôlé numériquement, la valeur moyenne de ce signal étant une grandeur
analogique égale au produit du rapport cyclique par l'amplitude maximale du signal (Fig.45).
Rapport cyclique 0%
Rapport cyclique 10%
Rapport cyclique 25%
Rapport cyclique 50%
Rapport cyclique 80%
Rapport cyclique 100%
En extrayant la moyenne de ce signal (au moyen d'un filtre passe-bas), on obtient une valeur
analogique Vmoy, proportionnelle à ce rapport cyclique :
𝑇𝑂𝑁 𝑇
1 𝑇𝑂𝑁 𝑁
𝑉𝑚𝑜𝑦 = ( ∫ 𝐸. 𝑑𝑡 + ∫ 0 . 𝑑𝑡) = 𝐸. = 𝐸.
𝑇 𝑇 𝑁𝑀𝐴𝑋
0 𝑇𝑂𝑁
Page 35
Avec :
E : amplitude maximale du signal logique
T : période du signal logique
TON : durée de l’impulsion du signal logique
N : la valeur numérique correspondant à TON
NMAX : la valeur numérique correspondant à T.
1.1.2.3.4. Limites d’utilisation de la PWM
Pour qu'un signal de PWM puisse être utilisé, il faut que la charge se comporte comme
un filtre passe-bas conservant la composante variable du signal. La période doit donc être petite
(ou la fréquence grande) devant la fréquence de coupure du filtre pour que le signal de PWM
n'influence pas la valeur moyenne.
Maintenant le moteur se comportant comme un filtre passe bas, alors l’utilisation d’un tel
filtre pour le commander n’est pas nécessaire.
1.1.2.4. Le LD293D
Simple d’utilisation et se présentant sous forme d’un circuit intégré, il est constitué d’un
double pont en H à transistors bipolaires pour charges inductives, comme les moteurs CC (petits
moteurs CC).
Page 36
On donne à la figure .47 ci-dessous comment nous l’avons mis en œuvre dans notre
projet.
Nous avons branché le moteur entre deux sorties ayant la même ligne de validation (ligne
1). Cette ligne de validation est mise à un niveau logique haut. Pour faire tourner le moteur dans
un sens, on appliquera un niveau logique haut sur une des deux entrées et un niveau logique bas
sur l’autre. Pour faire tourner le moteur dans le sens inverse, on inversera les niveaux logiques sur
les entrées. On a donc besoin de deux lignes seulement pour piloter un moteur. Maintenant lorsque
les signaux d’entrées sont au même niveau, d’après la table de fonctionnement du LD293, les deux
bornes du moteur seront au même potentiel ; situation qui correspond au court-circuit du moteur
et donc à un freinage dynamique de ce dernier.
2. Réalisation logicielle
2.1. Le PID analogique sélectionné pour l’implémentation
1 𝑡
̇
Équation (1) : 𝑢(𝑡) = 𝐾(𝑒(𝑡) + 𝑇 ∫0 𝑒(𝜏)𝑑𝜏 + 𝑇𝑑 𝑒(𝑡))
𝑖
Page 37
Etape 1 : Différentiation de u
1
Equation (2) : 𝑢̇ = k(𝑒̇ + 𝜏 𝑒 + 𝜏𝑑 𝑒̈ )
𝑖
Etape 2 : Approximation de 𝒖̇
𝒖𝒌 −𝒖𝒌−𝟏
Equation (3) : 𝒖̇ = en utilisant Euler
𝑻𝒆
Etape 5 : Remplacement de (3), (4) et (6) dans (2), on obtient l’expression finale du signal
de contrôle à l’instant discret k :
Equation (7) : 𝒖𝒌= 𝒖𝒌−𝟏 + 𝑲𝟎 𝒆𝒌 + 𝑲𝟏 𝒆𝒌−𝟏 + 𝑲𝟐 𝒆𝒌−𝟐
𝑻𝒆 𝜏 2𝜏𝑑 𝜏
Avec : 𝐾0 = 𝐾(1 + + 𝑻𝑑 ), 𝐾1 = −𝐾(1 + ), 𝐾2 = 𝐾 𝑻𝑑
𝜏𝑖 𝒆 𝑻𝒆 𝒆
Page 38
Fig.48: Temps de montée d’une réponse indicielle d’un système du 1er ou 2ème ordre
D’où, pour fixer Te, il suffit de tracer la réponse indicielle et de mesurer Tm et de prendre
Te égale par exemple à 10 Tm.
Dans notre projet, n’ayant pas pu se procurer un moteur à courant continu vu les
circonstances dans lesquelles ce dernier a été réalisé mais un modèle simulable de celui-ci, nous
avons alors procéder tout autrement pour fixer un ordre de grandeur de Te.
Partant de l’idée que les processeurs actuellement sont très rapide (hypothèse vraie), et par
conséquent permettent un échantillonnage rapide devant le temps de montée de n‘importe quel
système du 1er ou 2ème ordre (hypothèse vraie aussi), nous nous sommes basés pour fixer un ordre
de grandeur de Te, sur les différents retards accusés par les différentes opérations dans
l’asservissement que nous avons réalisé.
Dans notre projet, un seul retard existe et qui est celui produit par la boucle principale du
logiciel que nous avons développé. On donne à la figure 49 ci-dessous, les détails relatifs aux
différentes fonctions exécutées par cette boucle.
Page 39
KTe
Exécution de la lecture de la consigne + sa
Exécution de la routine d’interruption en conversion en nombre d’impulsions et de
temps réel de la lecture de la grandeur à
la boucle
l’algorithme de régulation.
régler durant l’exécution de la boucle.
boucle
routine d’interruption
Lancement d’une conversion N/A par pwm
Durée d’exécution de la
Durée d’exécution de
de la commande
Survenue des
Te
interruptions dans la
Délai
(K+1)Te
l’algorithme de régulation.
Page 40
Donc pour fixer un ordre de grandeur de Te, il suffit de déterminer la durée d’exécution de la
boucle.
Cette durée est égale à la somme des durées d’exécution des fonctions de:
- Lecture de la consigne.
- Conversion de la consigne
- Mesure de la grandeur à régler
- Exécution de l’algorithme de régulation
- Conversion NA du résultat d’exécution de l’algorithme de régulation
- Exécution de la routine d’interruption
- Affichage de la valeur mesurée de la grandeur à régler.
Pour déterminer ces différentes durées ainsi que celle de la boucle, nous l’avons fait par
programmation.
Loop(){
Int Duree = micros() ;
//le corps de la boucle
Duree= micros() – duree ;
Serial.print(Duree) ;
}
Page 41
Remarque :
Page 42
2.5. L’implémentation du contrôleur PID
Partant de la version digitale (équation (7)) du contrôleur PID, établie dans ce qui précède,
nous avons élaboré l’algorithme PID suivant :
Pour k=0,1,2,3,…
- lire y ; y est le signal à la sortie du capteur
- calculer ek ;
- calculer le signal de contrôle uk ;
- mettre à jour uk-1, ek-1 et ek-2 pour la prochaine itération
uk-1 = uk;
ek-1 = ek;
ek-2 = ek-1;
- appliquer le signal de contrôle à l’actionneur ;
- attendre delai secondes ;
D’où Te = (Delai + dureeDexecutionDeLaBoucle) avec dans notre cas, « Delai » un retard que
nous avons introduit volontairement et qui est calculé sur la base de Te et qui correspondant au
temps qu’il faut attendre avant d’entreprendre une nouvelle régulation étant donné que Te doit être
toujours choisie plus grand ou à la limite égale à la durée d’exécution de la boucle :
dureeDexecutionDeLaBoucle <= Te.
Dans notre projet, nous avons développé une nouvelle méthode que nous ne l’avons
nullement vue utilisée dans tous les projets similaires que nous avons rencontrés !
0 -1 1 0 1 0 0 -1 -1 0 0 1 0 1 -1 0
https://drive.google.com/file/d/1qS-
Bi8S8J7ATk4XDsSky6z_4fgdPFSEp/view?usp=sharing
Sur l’oscilloscope on devrait voir les périodes des deux phases A et B varier depuis une
valeur maximale jusqu’à s’annuler quand le moteur s’arrête.
Idem pour le fréquencemètre, on devrait voir la fréquence de l’une des deux phases A et B
varier depuis une valeur maximale jusqu’à s’annuler quand le moteur s’arrête.
Aucune anomalie n’a été constatée. Cependant et étant donné que ce test est fait par
simulation sur Proteus et que nos machines ne sont pas très rapides, cette dernière n‘est pas faite
en temps réelle et on a l’impression que le moteur met du temps pour se positionner à la valeur
demandée.
On fait remarquer que les valeurs de test utilisées, nous les avons introduites directement
dans le programme que nous avons développé. L’utilisation d’un périphérique pour ce faire, ne
constituait aucun problème pour nous si nous avions voulu l’ajouter.
En perspective, des améliorations pourraient être apportées à notre projet comme par
exemple :
- La maitrise de la vitesse du moteur durant son déplacement vers la consigne car une
régulation PID de position avec boucle unique ne le permet pas.
- La réalisation d’une IHM du type GUI.
Page 44
Conclusion générale
Nous avons réalisé dans ce projet de fin d’études un prototype de régulateur PID numérique
de régulation de position angulaire de petits moteurs à courant continu avec un peu de nouveau en
programmation.
Le nouveau réside dans la méthode que nous utilisons pour lire la position angulaire du
moteur durant sa rotation.
En effet, ce qui est fait dans l’habituel, consiste à vérifier à l’aide d’instructions de contrôle
un tas de conditions et d'ajouter 1 ou de soustraire 1 à une variable définie pour contenir la position
en nombre de fronts capturés des deux phases A et B en quadrature de l’encodeur alors que le
moteur est en mouvement. Or qui dit instructions de contrôle dit programmation plus compliquée
et temps d’exécution élevé et par conséquent non vraiment adaptée pour ce genre d’applications.
Et pourtant, c’est ce qui est fait dans tous les projets similaires que nous avons rencontrés jusqu’à
maintenant.
A la place et pour simplifier, la méthode que nous proposons dans notre projet, consiste
tout simplement à utiliser une table de consultation qui en y accédant à chaque fois que l’on détecte
un front parmi les fronts des phases A et B de l’encodeur, elle nous renseigne sur le fait de ne rien
faire, d’incrémenter ou de décrémenter la variable contenant la position actuelle du moteur. Donc
en matière de programmation, elle est beaucoup plus élégante et pour ce qui est la rapidité elle est
plus adaptée.
Ceci dit, ce projet nous a fait beaucoup apprendre et il nous a permis de consolider nos
connaissances en régulation et asservissement aussi bien en théorie qu’en pratique et de se
familiariser davantage avec des méthodes de développement qui nous ont permis d’améliorer nos
compétences et nos acquis dans la programmation en langage arduino.
Enfin ce projet peut constituer un très bon départ et un très bon prélude pour des projets
futurs se faisant dans ce domaine car nous y avons rassemblés toutes les bases nécessaires et
fondamentales.
Page 45
Bibliographie
[1] http://brettbeauregard.com/blog/2011/04/improving-the-beginners-pid-introduction/
[2] https://zestedesavoir.com/tutoriels/686/arduino-premiers-pas-en-informatique-
embarquee/747_le-mouvement-grace-aux-moteurs/3437_le-moteur-a-courant-continu/
[3] http://perso.iut-nimes.fr/fgiamarchi/?p=740
[4] http://www.specialautom.net/synthese-empirique.htm
[5] http://cerig.pagora.grenoble-inp.fr/tutoriel/automatique/page01.htm
[6] http://prive.iutenligne.net/n8sSMGgmRhBh4HOj/automatique-et-automatismes-
industriels/konn/asnum/numH/temps_fini.html
[7} https://www.abcelectronique.com/annuaire/cours/automatique.php
[8] http://www.bedwani.ch/regul/discret/homedisc.htm
Page 46