Vous êtes sur la page 1sur 24

Rapport

d’asservissement
numérique de
position et de vitesse
Département : Département électrique
Encadrants : Pr. Abdelwahed TOUATI
Pr. Nabila RABBAH

Abdenour RHANJA / Nasrellah IRHMAR


2ème année cycle ingénieur – Génie Electromécanique | 2021/2022
Ismail LASRI / Jawad EL AHMAR
2ème année cycle ingénieur – Management des systèmes électriques | 2021/2022
Remerciements
Nous tiendrons à témoigner notre reconnaissance et notre profonde gratitude à nos professeurs
Nabila RABBAH et Abdelwahed TOUATI, professeurs responsables de l’enseignement des matières de
commandes industrielles avancées et d’identification et modélisation respectivement, pour nous donner
l’opportunité d’aborder ce sujet et de réaliser un tel projet, ainsi que nous permettre de rédiger ce
rapport en toute aisance grâce à la qualité de leurs formations et à la qualité de leurs supports de cours.
Nous tiendrons à leur présenter nos vifs remerciements pour leurs interventions, leur orientation et
leurs conseils constructifs.
Qu’ils tous reçoivent l’assurance de notre reconnaissance, pour leurs conseils personnalisés et pour
le savoir qu’il nous a permis de tirer de cette activité.

1 | Page
Sommaire

Remerciements ..................................................................................................................... 1
Sommaire .............................................................................................................................. 2
Introduction générale .......................................................................................................... 3
Chapitre 1 : Notions générales sur le moteur électrique .................................................... 4
I. Présentation d’un moteur électrique à courant continu ............................................... 4
1. Constitution d’un moteur électrique à courant continu .................................................................. 4
2. Principe de fonctionnement du moteur électrique .......................................................................... 5
II. Modélisation mathématique du moteur électrique à courant continu ........................ 5
1. Modèle de connaissance du MCC à excitation série ....................................................................... 5
2. Elaboration des équations mécaniques et électriques du MCC ...................................................... 6
3. Elaboration de la fonction du transfert du MCC en boucle ouverte ................................................ 6
Chapitre 2 : Identification des paramètres du MCC et validation du modèle
mathématique obtenu ......................................................................................................... 8
I. Identification de la fonction de transfert du MCC sous MATLAB :............................ 8
II. Identification des paramètres du MCC :....................................................................... 8
1. Mesure de la résistance interne du MCC : ....................................................................................... 8
2. Mesure d’inductance du MCC : ....................................................................................................... 9
3. Mesure du coefficient 𝒌𝒌𝝓𝝓 du MCC : ................................................................................................ 9
4. Mesure du moment d’inertie J du MCC : ....................................................................................... 10
5. Mesure du coefficient du frottement visqueux du MCC : ..............................................................11
III. Validation les valeurs calculées des paramètres du MCC : ......................................... 11
Chapitre 3 : Conception des correcteurs ........................................................................... 12
I. Présentation de la boucle de régulation ...................................................................... 12
II. Méthode de placement des pôles ................................................................................ 12
1. Etablissement des cahiers de charges : .......................................................................................... 12
2. Calcul de la fonction de transfert du correcteur de vitesse : .......................................................... 14
3. Calcul de la fonction de transfert du correcteur de position : ........................................................ 14
III. Méthode de réglage de Takahashi .............................................................................. 14
1. Calcul des paramètres du PID numérique de vitesse : .................................................................. 15
2. Calcul des paramètres du PID numérique de position : ................................................................ 16
IV. Choix des correcteurs à implémenter sur Arduino ..................................................... 17
Chapitre 4 : Implémentation de l’asservissement sur Arduino ........................................ 18
I. Présentation du circuit d’asservissement par Arduino ............................................... 18
II. Approximation de PID sur Arduino............................................................................ 19
III. Code Arduino ............................................................................................................... 19
Conclusion générale .......................................................................................................... 22

2| Page
Introduction générale
Dans la plupart des processus industriels, il est indispensable de maîtriser certains
paramètres physiques. En automatique lorsque l’on souhaite atteindre une certaine vitesse,
température, position, angle..., il est donc très souvent nécessaire d’avoir recours à un
asservissement, c’est à dire un système capable d’atteindre et de maintenir une consigne en
utilisant une mesure. Il s’agit donc d’un système bouclé, dont il reste à déterminer la fonction
permettant de corriger la commande en fonction de la consigne initiale et de l’erreur mesurée.
Les moteurs électriques sont aujourd’hui présents dans toutes les branches de l’industrie
et dans nombreuses domaines. Cet intérêt grandissant envers les moteurs électriques exige
le besoin des processus industriels de commander ces moteurs en position et en vitesse afin
de contrôler un processus ou un système avec précision et une dépense minimale d’énergie.
Dans ce contexte, notre projet s’inscrit à réaliser un asservissement numérique de
position et de vitesse d’un moteur à courant continu par un circuit à base d’Arduino
Alors, le plan suivi dans la rédaction de ce rapport du projet est comme suit :
 Le premier chapitre est dédié à la présentation et la modélisation mathématique du moteur à
courant
 Le deuxième chapitre est consacré à l’identification des paramètres du MCC et validation du
modèle mathématique obtenu.
 Le troisième chapitre est consacré à la conception des correcteurs en premier lieu par méthode
de placement des pôles et en deuxième lieu par méthode de Takahashi.
 Le quatrième chapitre est dédié à la partie pratique étant l’implémentation sur Arduino

3| Page
Chapitre 1 : Notions générales sur le moteur
électrique
I. Présentation d’un moteur électrique à courant continu
Une machine à courant continu est une machine électrique. Il s'agit d'un convertisseur
électromécanique permettant la conversion bidirectionnelle d'énergie entre une installation électrique
parcourue par un courant continu et un dispositif mécanique ; selon la source d'énergie.

1. Constitution d’un moteur électrique à courant continu


Un moteur courant continu est composé des éléments suivants :

 Un inducteur ou stator qui est l’élément du circuit magnétique immobile sur lequel un
enroulement est bobiné afin de produire un champ magnétique.

 Un induit ou rotor qui correspond à un cylindre en tôles magnétiques isolées entre elles et
perpendiculaires à l'axe du cylindre. L'induit est mobile en rotation autour de son axe et est
séparé de l'inducteur par un entrefer. A sa périphérie, des conducteurs sont régulièrement
répartis.

 Un collecteur, qui est solidaire de l'induit, est un ensemble de lames de cuivre, isolées
latéralement les unes des autres et disposées suivant un cylindre, en bout de rotor. Ces lames
sont réunies aux conducteurs de l’induit. Le collecteur a pour fonction d’assurer la
commutation du courant d’alimentation dans les conducteurs de l’induit.

 Des balais, fixés sur la carcasse par le biais de portes balais, ils sont en carbone ou en
graphite permettent l’alimentation de l'induit (partie en rotation) grâce à un contact glissant

4| Page
entre les lames du collecteur reliées aux conducteurs de l’induit et le circuit électrique
extérieur.
2. Principe de fonctionnement du moteur électrique
Lorsque l'inducteur est alimenté, il crée un champ magnétique (flux d’excitation) dans l'entrefer,
dirigé suivant les rayons de l'induit. Ce champ magnétique « rentre » dans l'induit du côté du pôle Nord
de l'inducteur et « sort » de l'induit du côté du pôle Sud de l'inducteur. Quand l'induit est alimenté, ses
conducteurs situés sous un même pôle inducteur (d'un même côté des balais) sont parcourus par des
courants de même sens et sont donc, d'après la loi de Laplace, soumis à une force. Les conducteurs
situés sous l'autre pôle sont soumis à une force de même intensité et de sens opposé. Les deux forces
créent un couple qui fait tourner l'induit du moteur.

II. Modélisation mathématique du moteur électrique à courant


continu
1. Modèle de connaissance du MCC à excitation série
D’un point de vue électrique, le moteur courant continu peut être modélisé comme un
système dont l’entrée est la tension de commande de l’induit 𝑢𝑢(𝑡𝑡) et la sortie la vitesse de rotation
de l’arbre moteur 𝛺𝛺(𝑡𝑡). L’induit est modélisé par une résistance en série avec une inductance et
une force contre électromotrice. On donne ci- dessous le modèle de connaissance du moteur
courant continu :

Avec :

𝑢𝑢(𝑡𝑡) : Tension appliquée aux bornes du moteur [𝑉𝑉]

5| Page
𝑒𝑒(𝑡𝑡) : Force contre-électromotrice du moteur ; tension créée par le bobinage du moteur pour s’opposer
à la variation du flux du champ magnétique le traversant [𝑉𝑉]
𝑖𝑖(𝑡𝑡) : Intensité du courant traversant le moteur [𝐴𝐴]
𝐶𝐶𝑚𝑚 (𝑡𝑡 ) : Couple moteur généré [𝑁𝑁. 𝑚𝑚]
𝐶𝐶𝑟𝑟 (𝑡𝑡) : Couple résistant sur l’axe moteur [𝑁𝑁. 𝑚𝑚]
𝐶𝐶𝑟𝑟 (𝑡𝑡) : Couple des frottements [𝑁𝑁. 𝑚𝑚]
𝛺𝛺(𝑡𝑡) : Vitesse de rotation du rotor [𝑟𝑟𝑟𝑟𝑟𝑟/𝑠𝑠]
𝑅𝑅 : Valeur de la résistance du moteur [𝛺𝛺]
𝐿𝐿 : Valeur de l’inductance du moteur [𝐻𝐻]
𝑉𝑉
𝑘𝑘𝜙𝜙 : Coefficient de la force contre-électromotrice � �
(𝑟𝑟𝑟𝑟𝑟𝑟/𝑠𝑠)

𝐽𝐽 : Moment d’inertie de l’axe du rotor [𝑘𝑘𝑘𝑘. 𝑚𝑚²]


𝑓𝑓 : Coefficient de frottement visqueux [𝑁𝑁. 𝑚𝑚. 𝑠𝑠]

2. Elaboration des équations mécaniques et électriques du MCC


En passant au domaine de Laplace, on suppose que les conditions initiales sont nulles :
a) Equations électriques :
𝑑𝑑𝑑𝑑 𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇é𝑒𝑒 𝑑𝑑𝑑𝑑
( ) ( )
𝑢𝑢 𝑡𝑡 = 𝑅𝑅. 𝑖𝑖 𝑡𝑡 + 𝐿𝐿 + 𝑒𝑒 𝑡𝑡 ( ) 𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿 𝑈𝑈(𝑠𝑠) = 𝑅𝑅. 𝐼𝐼(𝑠𝑠) + 𝐿𝐿𝐿𝐿. 𝐼𝐼 (𝑠𝑠) + 𝐸𝐸 (𝑠𝑠)
� 𝑑𝑑𝑑𝑑 ������������ �
𝐸𝐸 (𝑠𝑠) = 𝑘𝑘𝜙𝜙. 𝛺𝛺(𝑠𝑠)
𝑒𝑒(𝑡𝑡 ) = 𝑘𝑘𝜙𝜙. 𝛺𝛺(𝑡𝑡 )

⇒ 𝑈𝑈(𝑠𝑠) = 𝑅𝑅. 𝐼𝐼(𝑠𝑠) + 𝐿𝐿. 𝑠𝑠. 𝐼𝐼 (𝑠𝑠) + 𝑘𝑘𝜙𝜙. 𝛺𝛺 (𝑠𝑠) = (𝑅𝑅 + 𝐿𝐿. 𝑠𝑠). 𝐼𝐼(𝑠𝑠) + 𝑘𝑘𝜙𝜙. 𝛺𝛺(𝑠𝑠)

b) Equations mécaniques :
𝑑𝑑𝛺𝛺
⎧ 𝐶𝐶𝑚𝑚 (𝑡𝑡 ) − 𝐶𝐶𝑟𝑟 (𝑡𝑡 ) − 𝐶𝐶𝑓𝑓 (𝑡𝑡 ) = 𝐽𝐽 𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇é𝑒𝑒 𝑑𝑑𝑑𝑑 𝐶𝐶𝑚𝑚 (𝑠𝑠) − 𝐶𝐶𝑟𝑟 (𝑠𝑠) − 𝐶𝐶𝑓𝑓 (𝑠𝑠) = 𝐽𝐽𝐽𝐽. 𝛺𝛺(𝑠𝑠)
⎪ 𝑑𝑑𝑑𝑑 𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿
𝐶𝐶𝑚𝑚 (𝑡𝑡 ) = 𝑘𝑘𝑘𝑘. 𝑖𝑖 (𝑡𝑡 ) ������������ � 𝐶𝐶𝑚𝑚 (𝑠𝑠) = 𝑘𝑘𝑘𝑘. 𝐼𝐼(𝑠𝑠)
⎨𝐶𝐶 (𝑡𝑡 ) = 𝐶𝐶 + 𝐶𝐶 (𝑡𝑡 ) = 𝐶𝐶 + 𝑓𝑓. 𝛺𝛺(𝑡𝑡 ) 𝐶𝐶 (𝑠𝑠) = 𝑓𝑓. 𝛺𝛺(𝑠𝑠)
⎪ 0 𝜐𝜐 0
⎩ 𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴 𝐶𝐶0 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠é 𝑛𝑛𝑛𝑛𝑛𝑛

⟹ 𝐶𝐶𝑚𝑚 (𝑠𝑠) − 𝐶𝐶𝑟𝑟 (𝑠𝑠) = (𝐽𝐽. 𝑠𝑠 + 𝑓𝑓). 𝛺𝛺(𝑠𝑠)

3. Elaboration de la fonction du transfert du MCC en boucle ouverte


La fonction de transfert du MCC en boucle ouverte s’écrit à partir des équations mécaniques et
électriques élaborées auparavant :
𝛺𝛺(𝑝𝑝) 𝑘𝑘𝑘𝑘
=
𝑈𝑈(𝑝𝑝) 𝐿𝐿. 𝐽𝐽. 𝑠𝑠 + (𝐿𝐿. 𝑓𝑓 + 𝑅𝑅. 𝐽𝐽). 𝑠𝑠 + 𝑅𝑅. 𝑓𝑓 + (𝑘𝑘𝑘𝑘)2
2

6| Page
La forme canonique de la fonction de transfert du MCC en boucle ouverte s’écrit donc :
𝑘𝑘𝑘𝑘
𝛺𝛺(𝑝𝑝) 𝑅𝑅. 𝑓𝑓 + (𝑘𝑘𝑘𝑘)2
=
𝑈𝑈(𝑝𝑝) 𝐿𝐿. 𝐽𝐽 (𝐿𝐿. 𝑓𝑓 + 𝑅𝑅. 𝐽𝐽)
2 . 𝑠𝑠 2 + . 𝑠𝑠 + 1
𝑅𝑅. 𝑓𝑓 + (𝑘𝑘𝑘𝑘) 𝑅𝑅. 𝑓𝑓 + (𝑘𝑘𝑘𝑘)2

On implémente la boucle du MCC ci-dessus sur Simulink :

7| Page
Chapitre 2 : Identification des paramètres du MCC
et validation du modèle mathématique obtenu
I. Identification de la fonction de transfert du MCC sous
MATLAB :
Afin de s’assurer de la validité des différents mesures effectuées pour déterminer les paramètres de
notre MCC, il s’avère primordial l’identification de la fonction de transfert du MCC qui présente son
comportement réel. D’où vient l’implémentation du bloc suivant sur l’outil Simulink sur MATLAB.

Ce bloc permet en permet de récupérer et enregistrer, sur des périodes de temps précises, les
données reçus de la part de l’Arduino qui se présentent sous forme de nombres d’impulsions. Ces
nombres d’impulsions sont transformées à l’aide du bloc en valeurs de vitesse exprimée en 𝑡𝑡𝑡𝑡�𝑚𝑚𝑚𝑚𝑚𝑚 .
Ces valeurs de vitesse du MCC obtenus sont enregistrées dans le « IDDATA Sink ».

II. Identification des paramètres du MCC :


Ayant déjà exprimé le modèle mathématique du moteur à courant continu et obtenu sa fonction de
transfert en boucle ouverte qui s’écrit :
𝑘𝑘𝑘𝑘
𝛺𝛺(𝑝𝑝) 𝑅𝑅. 𝑓𝑓 + (𝑘𝑘𝑘𝑘)2
=
𝑈𝑈(𝑝𝑝) 𝐿𝐿. 𝐽𝐽 (𝐿𝐿. 𝑓𝑓 + 𝑅𝑅. 𝐽𝐽)
2 . 𝑠𝑠 2 + . 𝑠𝑠 + 1
𝑅𝑅. 𝑓𝑓 + (𝑘𝑘𝑘𝑘) 𝑅𝑅. 𝑓𝑓 + (𝑘𝑘𝑘𝑘)2
L’étape suivante est la détermination des valeurs numériques des paramètres du MCC mentionnées
auparavant et exprimées au sein de la fonction de transfert ci-dessus.

1. Mesure de la résistance interne du MCC :


La mesure de la résistance interne du MCC se fait à l’aide d’un multimètre avec le moteur non
alimenté et à vide.
La valeur de la résistance interne du MCC que nous avons obtenu est :
𝑅𝑅 = 22.7 𝛺𝛺

8| Page
2. Mesure d’inductance du MCC :
La mesure de l’inductance interne du MCC s’effectue par l’alimentation du moteur en un signal
alternatif carré à l’aide d’un Générateur de Basses Fréquences (GBF) et la visualisation à l’aide d’un
oscilloscope de la tension aux bornes des condensateurs (en série) branchés en série avec le moteur.
La valeur moyenne du signal alternatif, alimentant le MCC, étant nulle implique que le rotor du
moteur ne tourne pas. Ainsi la force contre-électromotrice 𝑒𝑒(𝑡𝑡) s’annule et le moteur se comporte
comme un circuit RL.
Le circuit complet est un circuit RLC dont l’équation différentielle, qui le gouverne pendant la charge,
s’écrit :
𝑟𝑟é𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 𝑒𝑒𝑒𝑒 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 2𝜋𝜋𝜋𝜋
𝑑𝑑 2 𝑢𝑢𝑐𝑐 𝑑𝑑𝑢𝑢𝑐𝑐 𝑙𝑙𝑙𝑙𝑙𝑙 𝐶𝐶.𝐼𝐼 𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛 𝑢𝑢𝑐𝑐 (𝑡𝑡 ) = 𝐸𝐸 cos � �
𝐿𝐿𝐿𝐿 + 𝑅𝑅𝑅𝑅 + 𝑢𝑢 𝑐𝑐 = 𝐸𝐸 ������������������� � 𝑇𝑇0
𝑑𝑑𝑡𝑡 2 𝑑𝑑𝑑𝑑
𝑇𝑇0 = 2𝜋𝜋√𝐿𝐿𝐿𝐿

Avec la capacité équivalente des condensateurs étant : 𝐶𝐶é𝑞𝑞 = 6,19 𝑛𝑛𝑛𝑛


Et en extrayant la valeur de la pseudo-période 𝑇𝑇0 à partir du signal bleu dans la figure ci-dessus :
𝑇𝑇0 = 4 × 10−5 𝑠𝑠
On obtient donc la valeur de l’inductance par la relation suivante :
1 𝑇𝑇0 2
𝐿𝐿 = × � � = 0,00654 𝐻𝐻
𝐶𝐶 2𝜋𝜋

3. Mesure du coefficient 𝑘𝑘𝜙𝜙 du MCC :


Ayant déjà élaboré les équations électriques du moteur, étant comme suit :

9| Page
𝑑𝑑𝑑𝑑
𝑢𝑢(𝑡𝑡 ) = 𝑅𝑅. 𝑖𝑖 (𝑡𝑡 ) + 𝐿𝐿 + 𝑒𝑒(𝑡𝑡 )
� 𝑑𝑑𝑑𝑑
𝑒𝑒(𝑡𝑡 ) = 𝑘𝑘𝜙𝜙. 𝛺𝛺(𝑡𝑡 )
𝑑𝑑𝑑𝑑
Ainsi, par supposition, on admet qu’en régime permanent : =0
𝑑𝑑𝑑𝑑
D’où :
𝑈𝑈 = 𝑅𝑅 . 𝐼𝐼 + 𝐸𝐸 = 𝑅𝑅. 𝐼𝐼 + 𝐾𝐾𝐾𝐾 . 𝛺𝛺
𝑈𝑈 − 𝑅𝑅. 𝐼𝐼
⟹ 𝑘𝑘𝑘𝑘 = = 0,047
𝛺𝛺
4. Mesure du moment d’inertie J du MCC :
Afin de calculer le moment d’inertie du MCC, on entraîne le moteur en rotation à vide sans aucune
charge.
D’où, le couple résistant est nul : 𝐶𝐶𝑟𝑟 = 0
Puis on l’entraîne en freinage en coupant l’alimentation du moteur tout en visualisant sur MATLAB la
courbe 𝛺𝛺 (𝑡𝑡 ) = 𝑓𝑓 (𝑡𝑡 ).
Ainsi :
Δ𝛺𝛺
𝐶𝐶𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓 = 𝐽𝐽
Δ𝑡𝑡

Connaissant le couple mécanique de freinage du moteur et en extrayant la pente du courbe 𝛺𝛺 (𝑡𝑡 ) =


𝑓𝑓 (𝑡𝑡 ) de la figure ci-dessus, on obtient :

𝐽𝐽 = 4.3 × 10−6 𝐾𝐾𝐾𝐾. 𝑚𝑚2

10 | P a g e
5. Mesure du coefficient du frottement visqueux du MCC :
La valeur du coefficient du frottement 𝑓𝑓 est calculée de la fonction de transfert du MCC identifiée
auparavant par MATLAB, ayant déjà déterminé tous les autres paramètres du moteur à courant continu
à notre disposition.

III. Validation les valeurs calculées des paramètres du MCC :


Afin de comparer la fonction du transfert obtenu par modélisation mathématique du MCC et celle
obtenue par identification du MCC, le schéma suivant est établi sur Simulink :

Après simulation, on aboutit à la visualisation suivante :

1. ;;ll

On remarque que le module identifié du MCC représenté par le signal bleu est proche et similaire
au modèle mathématique du MCC représenté par le signal vert.
Alors :
On valide les valeurs qu’on a calculé des paramètres du MCC et par conséquent on procède à l’utilisation
du modèle mathématique qu’on a déjà élaboré.

11 | P a g e
Chapitre 3 : Conception des correcteurs
I. Présentation de la boucle de régulation
L’asservissement de la position et de la vitesse est accompli par une boucle cascade dont la boucle
intérieure régule la grandeur intermédiaire étant la vitesse de rotation du MCC, et la boucle extérieure
régule la grandeur principale étant la position.

II. Méthode de placement des pôles


Appelée aussi méthode du modèle de référence, cette méthode consiste à traduire le cahier des
charges en une fonction de transfert désirée de la boucle fermée.
En connaissant la fonction de transfert FTBO(𝑠𝑠) du moteur en boucle ouverte et on impose un
modèle de référence de fonction de transfert 𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹(𝑠𝑠) pour la boucle fermée.
La fonction du transfert du correcteur s’obtient donc par la relation suivante :
1 𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹(𝑠𝑠)
𝐶𝐶 (𝑠𝑠) = ×
𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹(𝑠𝑠) 1 − 𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹(𝑠𝑠)

1. Etablissement des cahiers de charges :

12 | P a g e
13 | P a g e
2. Calcul de la fonction de transfert du correcteur de vitesse :
 FTBF désirée :
𝜔𝜔𝑛𝑛 2 144
𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹 (𝑠𝑠) = 2 2
= 2
𝑠𝑠 + 2𝜉𝜉𝜔𝜔𝑛𝑛 . 𝑠𝑠 + 𝜔𝜔𝑛𝑛 𝑠𝑠 + 24. 𝑠𝑠 + 144
Avec les pôles étant :
𝑠𝑠1 = −12

𝑠𝑠2 = −12

 Discrétisation de la fonction du transfert de correcteur de vitesse :


0.00008. 𝑧𝑧 2 + 0.0140. 𝑧𝑧 − 0.01395
𝐶𝐶(𝑧𝑧) =
𝑧𝑧 2 − 1.8869. 𝑧𝑧 + 0.8869

3. Calcul de la fonction de transfert du correcteur de position :


 FTBF désirée :
𝜔𝜔𝑛𝑛 2 1,3976
𝐹𝐹𝐹𝐹𝐹𝐹𝐹𝐹 (𝑠𝑠) = 3 = 2
𝑠𝑠 + 2𝜉𝜉𝜔𝜔𝑛𝑛 . 𝑠𝑠 + 𝜔𝜔𝑛𝑛 . 𝑠𝑠 𝑠𝑠 + 1,3966. 𝑠𝑠 2 + 1,3976. 𝑠𝑠
2 2

Avec les pôles étant :


𝑠𝑠1 = 0
�𝑠𝑠2 = −0,6983 + 0,9539𝑗𝑗
𝑠𝑠3 = −0,6983 − 0,9539𝑗𝑗

 Discrétisation de la fonction du transfert de correcteur de vitesse :


0.9583. 𝑧𝑧 2 − 1.8041. 𝑧𝑧 + 0.8484
𝐶𝐶(𝑧𝑧) =
𝑧𝑧 2 − 1.9216. 𝑧𝑧 + 0.9231

III. Méthode de réglage de Takahashi


La méthode de Takahashi est la généralisation au cas discret de la méthode de Ziegler-Nichols
utilisée pour le domaine continu. Par conséquent, comme le cas continu il faut soumettre le système
discret à l’un des deux essais : en boucle ouverte (BO) (essai indiciel qui donne les valeurs de 𝜏𝜏 et 𝑎𝑎 )
et en boucle fermée (BF) (essai en boucle fermée avec un gain K : on augmente K jusqu'à 𝐾𝐾𝑜𝑜𝑜𝑜𝑜𝑜 valeur
du gain pour laquelle on obtient une oscillation entretenue de période 𝑇𝑇𝑜𝑜𝑜𝑜𝑜𝑜 )

14 | P a g e
1. Calcul des paramètres du PID numérique de vitesse :

Les paramètres ont été obtenus à l’aide de l’outil PID Tuner de Simulink qui est basé sur la
méthode de Takahashi.

15 | P a g e
2. Calcul des paramètres du PID numérique de position :
Les paramètres ont été obtenus à l’aide de l’outil PID Tuner de Simulink qui est basé sur la
méthode de Takahashi.

16 | P a g e
IV. Choix des correcteurs à implémenter sur Arduino
Sur Simulink, on visualise la sortie corrigée issue du MCC, avec le signal bleu représentant la sortie
corrigée par les correcteurs obtenus par méthode de Takahashi, le signal orange représentant la sortie
corrigée par les correcteurs obtenus par méthode de placement des pôles et le signal jaune représentant
la consigne :

On remarque donc :

Alors :
On implémente les fonctions de transfert des PID obtenus par méthode de réglage de Takahashi sur
ARDUINO

17 | P a g e
Chapitre 4 : Implémentation de l’asservissement
sur Arduino
I. Présentation du circuit d’asservissement par Arduino

Le circuit d’asservissement du MCC en position et en vitesse est constitué d’un Arduino Méga et un
Driver L298N.
 Driver L298N :
La puce L298N est un circuit intégré de chez STMicroelectronics. Elle contient essentiellement : 2
ponts en H, permettant de piloter chacun 1 moteur électrique DC (dans un sens, ou dans l’autre) et une
logique de commande à « faible courant », pour piloter ces ponts à « fort courant »
En somme, le L298N est simplement un « double étage de puissance », permettant de commander
directement deux moteurs électriques, via des commandes logiques « basse puissance ».

 Arduino Méga :
La carte Arduino Méga 2560 est une version augmentée de l’Arduino UNO. Elle possède une
grande capacité mémoire et un nombre important d’entrée/sortie et dispose de 54 E/S dont 14 PWM,

18 | P a g e
16 analogiques et 4 UARTs. Elle est idéale pour des applications exigeant des caractéristiques plus
complètes que la Uno et des projets nécessitant un grand nombre de capteur et d’actionneur.

II. Approximation de PID sur Arduino


 Calcul approximé de la dérivée :
On estime le nombre dérivé en tenant compte des deux dernières mesures par une approximation
au premier ordre de la fonction erreur 𝜀𝜀 à l’instant considéré. Étant donné que ∆𝑡𝑡 (temps entre deux
mesures, ∆𝑡𝑡 = 50 𝑚𝑚𝑚𝑚)

 Calcul approximé de l’intégrale :


On utilise la formule de Riemann pour obtenir une approximation de l’intégration de l’erreur par la
somme discrète des erreurs mesurées :

 Calcul approximé de la fonction du transfert du correcteur :


𝑘𝑘
𝑇𝑇𝑒𝑒 𝑇𝑇𝑑𝑑 𝜀𝜀 (𝑘𝑘 ) − 𝜀𝜀(𝑘𝑘 − 1)
𝑢𝑢(𝑘𝑘 ) = 𝐾𝐾𝑝𝑝 . 𝜀𝜀 (𝑘𝑘 ) + . � 𝜀𝜀(𝑗𝑗) + .
𝑇𝑇𝑖𝑖 𝑇𝑇𝑒𝑒 𝑧𝑧 − 1
𝑗𝑗=0

III. Code Arduino


 Code d’asservissement en vitesse :
// VKp, VKi et VKd sont définis statiquement par des « #define »

19 | P a g e
// PID et Encodeur sont des structures globales
void PID_Recalc(void) {
// Acquisition des données et mesure de l’erreur
PID.vitesse = (Encodeur.position - PID.position_old)/DeltaT ; // Exprimé en « pas par DeltaT »
PID.position_old = Encodeur.position ;
// Mesure de l’erreur
PID.erreur_old = PID.erreur ;
PID.erreur = PID.consigne_vitesse - PID.vitesse ;
// Calcul du nombre dérivé
PID.derive = PID.erreur - PID.erreur_old/DeltaT ;
// Calcul du terme intégral
PID.integral += PID.erreur*DeltaT ;
// Calcul de la nouvelle commande
PID.pid = VKp*PID.erreur + VKi*PID.integral + VKd*PID.derivee ;
// Actualisation de la PWM envoyée au moteur
Moteur_PWM(PID.pid) ;
}

 Code d’asservissement en position :


// Appelé par interruption3 tous les DeltaT
// PID et Encodeur sont des structures globales, PKp, PKi, PKd et Vmax sont définis statiquement
PID.consigne_vitesse_old = PID.consigne_vitesse ; // Sauvegarde de l’ancienne consigne
PID.erreur_position_old = PID.erreur_position ; // Sauvegarde de l’ancienne erreur
PID.erreur_position = PID.consigne_position - Encodeur.position ; // Calcul de la nouvelle erreur
PID.integral_position += PID.erreur_position*DeltaT ; // Recalcul de l’intégrale
PID.derivative_position = (PID.erreur_position- PID.erreur_position_old)/DeltaT // Recalcul de la
derivative
PID.consigne_vitesse = PKp*PID.erreur_position + PKi*PID.integral_position +
PKd*PID.derivative_position
// Écrêtage de la vitesse
if (PID.consigne_vitesse > Vmax) {
PID.consigne_vitesse = Vmax ;
} else if (PID.consigne_vitesse < -Vmax) {
PID.consigne_vitesse = -Vmax ;
}

20 | P a g e
PID_Recalc() ;
}

21 | P a g e
Conclusion générale
En guise de conclusion, l’expérience de réalisation de ce projet dont on a conçu et réalisé une
boucle cascade afin d’asservir numériquement la position et d’un moteur à courant continu s’est avérée
bénéfique. Durant la durée de notre travail sur ce projet, on a acquis des nouvelles connaissances
concernant la commande industrielle numérique, les moteurs à courant continu et l’utilisation de
l’Arduino et ses modules complémentaires, chose qui est primordiale dans le domaine de l’ingénierie
dont on est inscrit.
Aussi ce projet, nous a permis de se familiariser avec le logiciel MATLAB et l’outil Simulink et
apprendre à utiliser les fonctionnalités présentes dedans.
Enfin, je tiens à remercier encore nos professeurs Nabila RABBAH et Abdelwahed TOUATI pour
leur encadrement tout le long de ce processus.

22 | P a g e

Vous aimerez peut-être aussi