SlideShare une entreprise Scribd logo
1  sur  16
Télécharger pour lire hors ligne
Commande par
microcontrôleur
Rapport de µ-projet
Matteo Musaró
Yanis Marchand
Année scolaire 2017-18
Semestre Vert – Parcours Systèmes
Groupe VS2 - TP1
École Nationale Supérieure de Mécanique et des Microtechniques
26, rue de l’Épitaphe
25030 Besançon cedex – France
+33 381 40 27 32
http://www.ens2m.fr
µ-projetdecommandeparmicrocontrôleur
µ-projet de commande par microcontrôleur
Matteo Musaró et Yanis Marchand page 2
Sommaire
Sommaire ............................................................................................................................................ 2
Introduction......................................................................................................................................... 3
Implémentation d’un correcteur PI ..................................................................................................... 3
1- Démarche.................................................................................................................................... 3
1-1. Fonctionnement du moteur en boucle ouverte.................................................................. 3
1-2. Fonctionnement du moteur en boucle fermée ..................................................................... 4
2- Configuration des périphériques................................................................................................. 5
2-1. Port D................................................................................................................................ 5
2-2. Configuration du Convertisseur Analogique - Numérique.................................................. 5
2-2.1. TRISA (Configuration du port A) ................................................................................ 5
2-2.2. ADCON0 (A/D control register 0) ............................................................................... 5
2-2.3. ADCON1 (A/D control register 0) ............................................................................... 6
2-2.4. ANSEL (Analog Select Rgister)................................................................................... 6
2-2.5. INTCON (Interrupt control register) ............................................................................ 7
2-2.6. PIE1 (Peripherical interrupt enable register 1) ............................................................. 7
2-2.7. PIR1 (Peripherical interrupt request register 1)............................................................ 8
2-3. Configuration du Timer 0.................................................................................................... 8
2-3.1. OPTION_REG.............................................................................................................. 8
2-4. Configuration du Timer 1.................................................................................................... 9
2-4.1. T1CON (Timer1 control register)................................................................................. 9
2-5. Configuration de la PWM.................................................................................................... 9
2-5.1. CCP2CON (CCP2 control register).............................................................................. 9
2-5.2. CCPR2L........................................................................................................................ 9
2-5.3. PR2 ............................................................................................................................. 10
2-5.4. T2CON (Timer 2 control register).............................................................................. 10
Conclusion et problèmes rencontrés ................................................................................................. 11
Résultats obtenus............................................................................................................................... 11
Bilans Personnels .............................................................................................................................. 12
Annexes............................................................................................................................................. 13
1- Annexe [1] : Calcul de la vitesse angulaire .............................................................................. 13
2- Annexe [2] : Câblage des drives du moteur.............................................................................. 14
3- Annexe [3] : Schéma du câblage complet ................................................................................ 15
µ-projet de commande par microcontrôleur
Matteo Musaró et Yanis Marchand page 3
Introduction
L’objectif du projet est de programmer un correcteur PID sur un microcontrôleur PIC16F917 afin
d’asservir la vitesse de rotation d’un moteur à courant continu. L’information sur la vitesse angulaire
du moteur est donnée par un capteur incrémental. Nous ne mettrons finalement en place qu’un
régulateur PI mais la différence ne réside qu’en la prise en compte d’un terme dérivée de l’erreur en
plus.
Implémentation d’un correcteur PI
1- Démarche
1-1. Fonctionnement du moteur en boucle ouverte
Le principe du fonctionnement en boucle ouverte est résumé sur le schéma ci-dessus. Grâce à
POT2, on récupère la tension de sortie du potentiomètre que l’on envoie dans le port RA0 (que
nous avons configuré en entrée). Nous utilisons ensuite le convertisseur analogique – numérique
(CAN). Grâce à la configuration de ADCON0, le signal analogique d’entrée du CAN est celui
provenant de AN0/RA0. La valeur numérique est stockée dans ADRESH et ADRESL. Nous
envoyons ces valeurs (stockées dans le microprocesseur) dans la PWM par l’intermédiaire de ses
registres CCPR2L et CCP2CON. La PWM en fait un signal physique qui sort de RD2. En
branchant RD2 aux drives, on commande bien la vitesse de rotation du moteur à partir du
potentiomètre. Le raisonnement du câblage des drives est décrit dans l’annexe [2].
Signal de
commande du
moteur
Tension
analogique du
potentiomètre
Potentiomètre CAN PWM Drives
Signal
numérique de
la tension
µ-projet de commande par microcontrôleur
Matteo Musaró et Yanis Marchand page 4
1-2. Fonctionnement du moteur en boucle fermée
Le principe de fonctionnement en boucle fermée est résumé sur le schéma ci-dessus. Le CAN
renvoie la consigne. Le capteur optique incrémente Timer0 car nous l’avons configuré pour ça et
nous avons branché la sortie du capteur à T0CKI/RA4 que nous avons défini en entrée. Le Timer1
déborde toutes les 0.52s grâce au prescaler réglé au maximum. Lors de cette interruption, la valeur
de la vitesse angulaire du moteur est calculée grâce à la formule démontrée en annexe [1]. L’erreur
calculée permet de calculer la commande (grâce au PID). On applique un anti wind-up pour éviter
d’envoyer des commandes trop violentes au moteur en cas d’erreur importante. La commande est
envoyée dans la PWM (grâce à ses registres CCPR2L et CCP2CON) qui en fait un signal physique.
En branchant RD2 (sortie de la PWM) aux drives, on pilote le moteur.
Un schéma du câblage complet se trouve sur le en annexe [3]. Une photo est également
disponible sur la dernière page mais elle a été prise un jour où les Drives 1 et 2 de notre carte
électronique ne fonctionnaient pas donc nous avions utilisé les 3 et 4. De plus, le port RD7 ne
fonctionnant pas non plus, nous avions utilisé RD6 pour allumer la diode « bug detector ».
Signal
physique de
la
commande
Commande
Erreur
Consigne
Signal
électrique
Tension
analogique
du
potentiomètre
Potentiomètre CAN
Capteur
Optique
Timer0 (compte le
nombre de fronts)
Timer1 (définit la période
d’échantillonnage)
Vitesse
angulaire
+
- PID PWM Drives
Moteur
µ-projet de commande par microcontrôleur
Matteo Musaró et Yanis Marchand page 5
2- Configuration des périphériques
2-1. Port D
Conformément aux commentaires qui ont été introduits, on définit RD4 en entrée. En effet, la
commande TRIS est celle qui permet de configurer un port (pas de l’utiliser) et définir le bit « i »
comme égal à 1 permet de configurer RDi en entrée (input) alors que la valeur 0 impose la sortie
(output).
On utilise une logique « ou » qui permet de placer les 1. Ici, étant donné que 0x10 correspond à
0001 0000 en binaire, on ne place que le bit 4 en entrée sans modifier la valeur des autres bits.
On utilise une logique « et » qui permet de placer les 0. Ici, 0x1F correspond à 0001 1111 en
binaire donc on a placé les ports 7, 6, 5 et 2 en sortie.
En branchant RD6 à une diode (D7 pour nous), celle-ci sera utilisée pour savoir s’il y a un gros
problème dans notre code. On la fera s’allumer si, dans la procédure d’interruption, on n’a pas réussi
à déterminer sa source.
2-2. Configuration du Convertisseur Analogique - Numérique
On va faire entrer le signal analogique de la tension de sortie du potentiomètre dans le CAN par
l’intermédiaire du port RA0 et le résultat sera stocké sur les 8 bits du registre ADRESH (ADC result
register High) pour les bits de poids forts ainsi que sur les bits 7 et 6 du registre ADRESL (ADC
result register Low) pour les bits de poids faibles.
2-2.1. TRISA (Configuration du port A)
TRISA on définit le port RA0 en entrée : c’est celui qui sera utilisé en entrée analogique du CAN.
Le port RA4 est également en entrée : il recevra le signal du capteur optique.
2-2.2. ADCON0 (A/D control register 0)
En binaire, ADCON0 = 0000 0001
µ-projet de commande par microcontrôleur
Matteo Musaró et Yanis Marchand page 6
Le bit ADFM est fixé à 0 pour obtenir une justification à gauche conformément au schéma ci-
dessous. On aurait également pu choisir une justification à droite.
Les bits VCFG1 et VCFG0 (voltage reference bit) sont fixés à 0 pour prendre Vss (5V) et Vdd
(0V) pour avoir une plage de conversion de 0-5V. C’est la plus grande qu’on peut choisir.
Les bits CHS<2:0> (Analog Channel Select bits) sont fixés à 0 et cette combinaison permet de
choisir le port AN0 comme étant l’entrée du signal analogique à convertir. C’est pour ça que nous
avons branché la sortie de la tension de sortie du potentiomètre à AN0.
Le bit GO/𝑫𝑶𝑵𝑬̅̅̅̅̅̅̅̅̅ (conversion status bit) est fixé à 0 pour ne pas démarrer la conversion dans
l’initialisation (c’est déconseillé pour l’intégrité du CAN).
Le bit ADON (ADC enable bit) est fixé à 1 pour permettre l’utilisation du CAN évidemment.
2-2.3. ADCON1 (A/D control register 0)
En binaire, ADCON1 = 0001 0000
Les bits ADCS<2 :0> (A/D Conversion clock select bits) sont fixés à 0 car cette configuration
permet d’obtenir une fréquence de conversion élevée (Fosc/8).
2-2.4. ANSEL (Analog Select Rgister)
En binaire, ANSEL = 0000 0001
Seul le port AN0 est défini comme entrée analogique car on n’a besoin que d’une seule entrée.
Conformément à la note dans la documentation, on a défini le TRIS correspondant (TRISA) en entrée
pour permettre le contrôle externe de la tension du port.
µ-projet de commande par microcontrôleur
Matteo Musaró et Yanis Marchand page 7
2-2.5. INTCON (Interrupt control register)
En binaire, INTCON = 1110 0000
Le bit GIE (global interrupt enable) est fixé à 1 pour autoriser les interruptions.
Le bit PEIE (peripherical interrupt enable) est fixé à 1 pour autoriser les interruptions des
périphériques. En effet, Timer1 est considéré comme un périphérique et nous allons en avoir besoin
dans la suite donc il est nécessaire de permettre ce type d’interruption.
Le bit T0IE (Timer0 overflow enable) est fixé à 1 pour autoriser les interruptions du Timer0 dont
nous aurons également besoin dans la suite.
Les bits INTE (RB0/INT External Interrupt Enable) et RBIE (PORTB Change Interrupt Enable)
sont fixés à 0 ce qui interdit les interruptions externes de RB0/INT ainsi que celles de PORTB
(respectivement). Nous n’avons pas besoin de ces interruptions donc il faut les interdire pour qu’elles
ne perturbent pas le programme si jamais elles se produisaient.
Les bits T0IF (Timer0 interrupt flag), INTF (RB0/INT External Interrupt flag) et RBIF (PORTB
Change Interrupt flag) sont fixés à 0 car ce sont tous les trois des drapeaux (flags) donc on les initialise
toujours à 0.
2-2.6. PIE1 (Peripherical interrupt enable register 1)
En binaire, PIE1 = 0100 0001
Le bit EEIE (EE write complete interrupt enable) est fixé à 0 car nous n’utilisons pas cette
interruption.
Le bit ADIE (A/D converter intrrupt enable) est fixé à 1 pour autoriser les interruptions du CAN
car nous allons utiliser le CAN donc potentiellement ses interruptions.
Les bits RCIE (USART receive interrupt enable), TXIE (USART transmit interrupt enable),
SSPIE (Synchronous Serial Port Interrupt enable), CCP1IE (CCP1 interrupt enable) et TMR2IE
(TMR2 to PR2 Match interrupt enable) sont tous fixés à 0 pour interdire les interruptions liées à ces
périphériques car nous ne les utilisons pas.
Le bit TMR1IE (Timer1 overflow interrupt enable) est fixé à 1 pour autoriser les interruptions du
Timer1 car nous allons les utiliser (période d’échantillonnage de l’asservissement)
µ-projet de commande par microcontrôleur
Matteo Musaró et Yanis Marchand page 8
2-2.7. PIR1 (Peripherical interrupt request register 1)
En binaire, PIR1 = 0000 0000
L’ensemble des bits de ce registre sont fixés à 0 car ce sont tous des drapeaux (flags).
2-3. Configuration du Timer 0
Le Timer 0 va compter le nombre de fronts montants du capteur optique au cours d’une période
d’échantillonnage.
Les registres INTCON et TRISA ont déjà été initialisés.
2-3.1. OPTION_REG
En binaire OPTION_REG = 0010 1000
Les bits 𝑹𝑩𝑷𝑼̅̅̅̅̅̅̅̅̅ (PORTB Pull-up enable) et INTEDG (Interrupt edge select) peuvent être fixés à
n’importe quelle valeur car nous n’utilisons pas les fonctions qui leur sont liées.
Le bit T0CS (Timer0 Clock source select) doit être fixé à 1. En branchant la sortie du capteur
optique sur le port RA4/T0CKI, le Timer0 sera bien incrémenté en fonction des valeurs du capteur
optique.
Le bit T0SE (Timer0 source edge select) peut être choisi de manière arbitraire car nous apportons
peu d’importance au fait d’incrémenter Timer0 sur un front montant de RA4 ou un front descendant.
Nous choisissons ici un front montant.
Le bit PSA (prescaler assignment) est fixé à 1 pour envoyer le prescaler au watch dog. Nous ne
voulons pas de prescaler et toute combinaison de valeurs des bits suivants conduit à un prescaler non
nul s’il est assigné au Timer0.
Les bits PS<2 :0> (prescaler rate select) seront fixés à 000 ce qui conduit à un prescaler de 1 pour
le watch dog qui n’est pas utilisé de toute façon.
µ-projet de commande par microcontrôleur
Matteo Musaró et Yanis Marchand page 9
2-4. Configuration du Timer 1
Les registres PIR1, PIE1 et INTCON ont déjà été initialisés.
Le registre CMCON1 possède uniquement 2 bits implémentés qui concernent des fonctions que
nous n’utilisons pas donc nous ne configurons pas ce registre.
2-4.1. T1CON (Timer1 control register)
En binaire, T1CON = 0011 0001
Le bit T1GINV (Timer1 Gate Invert) peut être fixé arbitrairement.
Le bit TMR1GE (Timer1 Gate Enable) doit être fixé à 0 pour que Timer 1 compte en permanence.
Les bits T1CKPS<1 :0> (Timer1 Input Clock Prescale Select) sont fixés à 11 pour avoir la valeur
maximale du prescaler : 1/8.
Le bit T1OSCEN (LP oscillator Enable control) doit être fixé à 0 pour ne pas mettre en route
l’oscillateur. On ne l’utilise pas alors l’activer serait une perte d’énergie.
Le bit 𝑻𝟏𝑺𝒀𝑵𝑪̅̅̅̅̅̅̅̅̅̅̅̅ (Timer1 external Clock input Synchronisation control) peut être fixé à n’importe
quelle valeur puisqu’on va fixer TMR1CS à 0.
Le bit TMR1CS (Timer1 Clock Source Select) est fixé à 0 pour utiliser Timer1 en horloge interne.
Le bit TMR1ON sera fixé à 1 pour autoriser le Timer1 évidemment.
2-5. Configuration de la PWM
2-5.1. CCP2CON (CCP2 control register)
En binaire, CCP2CON = 00001100
Les bits CCP2X et CCP2Y sont les bits de poids faible du signal de sortie de la PWM.
Les bits CCP2M<3 :0> doivent être configurés à 11xx pour utiliser le mode PWM.
2-5.2. CCPR2L
Les bits de CCPR2L sont les bits de poids fort du signal de sortie de la PWM.
µ-projet de commande par microcontrôleur
Matteo Musaró et Yanis Marchand page 10
2-5.3. PR2
En binaire, PR2 = 1111 1111
On fixe PR2 comme ceci pour avoir la plus grande précision possible sur la tension de sortie. Le
Timer 2 déborde quand il atteint la valeur de PR2 et alors la PWM passe à 1. De plus, la PWM passe
à 0 lorsque le Timer 2 atteint la valeur de CCPR2L.
2-5.4. T2CON (Timer 2 control register)
En binaire, T2CON = 0000 0100
On fixe les bits TOUTPS<3 :0> (Timer 2 output postscaler select) à 0 pour avoir un postscaler de
1:1.
On fixe le bit TMR2CON (Timer2 On) sur 1 pour utiliser le Timer 2 car la PWM fonctionne avec
le Timer 2.
Les bits T2CKPS<1:0> (Timer2 Clock prescale select) sont fixés à 0 pour obtenir un prescaler de
1:1 car on veut aller le plus vite possible conformément à la formule issue de la documentation ci-
dessous :
µ-projet de commande par microcontrôleur
Matteo Musaró et Yanis Marchand page 11
Conclusion et problèmes rencontrés
La première étape pour réaliser un asservissement est de définir une stratégie. Le choix des timers
est important car on ne peut pas avoir les mêmes périodes suivant les prescaler choisis sur chacun
d’eux. Ensuite, savoir gérer les interruptions et les ordres d’exécution est déterminant. Par
conséquent, il est essentiel d’avoir une idée de l’ordre de grandeur des temps et de l’ordre d’exécution
des différentes tâches. Savoir quelle interruption utiliser pour réaliser une action n’était pas évident
au premier abord.
L’étape d’après est de coder en pensant au câblage. Nous avons parfois rencontré des problèmes
d’électronique. Par exemple, les Drives 1 et 2 ne fonctionnaient pas lors de notre dernière séance de
TP. La découverte de ce souci nous a coûté du temps car notre premier réflexe était de chercher
d’éventuelles erreurs de programmation.
Nous avons trouvé difficile de trouver une manière de débuguer un code de microcontrôleur. La
première raison est sûrement que c’était une première pour nous. De plus, la façon de tester des
fonctions nous est apparue moins systématique qu’en informatique pure. Quand il s’agit juste de faire
afficher l’état des variables qui nous intéressent dans la console sur un ordinateur, il s’avère déjà plus
difficile d’afficher des données sur l’écran de la carte électronique. C’est d’autant plus vrai que
l’écran disponible ne permet d’afficher qu’un nombre très réduit de caractères et la méthode de
conversion des nombres codés sur 10 bits n’était pas claire.
Enfin, il peut être nécessaire de mesurer des tensions voire d’afficher des signaux sur un
oscilloscope. La combinaison de l’électronique et de la programmation informatique démultiplie les
sources d’erreurs potentielles et augmente ainsi le temps de résolution des problèmes.
Résultats obtenus
Finalement, le régulateur PI que nous avons essayé de mettre en place est opérationnel et les
performances sont très satisfaisantes. Sur la plage de valeurs de vitesse angulaire, nous avons en
général une erreur statique de 9 rotations par minute. Etant donné la formule présentée en annexe [1],
cela correspond à une erreur de 0.78 pics sur le signal obtenu en sortie du capteur optique. De plus,
cette erreur statique est obtenue rapidement (de l’ordre d’une seconde).
µ-projet de commande par microcontrôleur
Matteo Musaró et Yanis Marchand page 12
Bilans Personnels
Yanis Marchand : L’étude des microcontrôleurs s’est avérée très intéressante. Nous avons
développé des savoir-faire à la frontière entre l’électronique et l’informatique et cela nous a fait
découvrir comment un code permet de recueillir des données provenant de capteurs et de piloter des
actionneurs. En étudiant l’automatique en première année, j’avais bien compris que les modèles
mathématiques que nous définissions devaient être implantés sur une carte électronique pour être
fonctionnels mais je ne voyais pas vraiment comment procéder. C’était donc une grande satisfaction
de découvrir l’implémentation d’un correcteur PID car même si ce principe de régulation est très
simple, je peux aisément imaginer comment mettre en place un correcteur plus complexe.
Matteo Musaró : J’ai beaucoup aimé le projet de microcontrôleur parce qu’il était vraiment
intéressant de bien comprendre comme ça marche ce dispositif pratiquement, comme nous dévons
faire pour envoyer une commande avec l’interface MPLAB. Il été la première fois pour moi que je
travaille pratiquement sur ce thème, et avec l’aide de mon ami Yanis et du professeur j’ai bien
compris, malgré les difficultés linguistiques. J’ai aussi bien apprécié qu’avec cette approche pratique
c’est plus facile de comprendre les concepts qui dans la théorie peuvent sembler loin. Et j’ai constaté
et compris les problèmes liés à une procédure automatique.
µ-projet de commande par microcontrôleur
Matteo Musaró et Yanis Marchand page 13
Annexes
1- Annexe [1] : Calcul de la vitesse angulaire
Le principe de fonctionnement du capteur optique est rappelé sur la figure ci-dessus. Si ce capteur
a n trous, chaque trous intersecte un angle de 360/n
Si en Te (période d’échantillonnage), on voit défiler x pics, alors l’angle qui a défilé est 360×x/n
(en °) d’où le fait que le moteur a tourné de x/n tours
Par conséquent, la vitesse angulaire égale à 𝜔 =
60×𝑥
𝑛×𝑇𝑒
Signal obtenu
µ-projet de commande par microcontrôleur
Matteo Musaró et Yanis Marchand page 14
2- Annexe [2] : Câblage des drives du moteur
Le branchement du moteur est réalisé selon le schéma ci-dessus. Nous devons donc mettre en
place le câblage nécessaire à la configuration des 4 mosfets en mode interrupteur tel que spécifié sur
ce schéma. Ci-dessus, on voit le schéma interne du drive 1 :
µ-projet de commande par microcontrôleur
Matteo Musaró et Yanis Marchand page 15
D’après la spécification apportée par le premier schéma, nous devons configurer le mosfet à canal
P du Drive 1 en mode interrupteur fermé. Pour cela, d’après la documentation, il faut appliquer à son
entrée un niveau bas. Or, la présence d’un inverseur impose que P1 soit connecté à un niveau haut.
De plus, c’est avec ce port qu’on pilote le moteur donc P1 doit être relié à la sortie de la PWM.
Ensuite, le canal N doit être configuré en mode interrupteur ouvert et d’après la documentation, et la
logique « ET », il faut imposer un état bas à N1 donc on peut ne pas le câbler.
Pour le Drive 2, le canal P doit être configuré en mode interrupteur ouvert. Par conséquent, on doit
imposer à P2 un niveau bas pour que l’entrée du canal P soit un niveau haut.
Le canal N du Drive 2 doit être configuré en mode interrupteur fermé donc on doit imposer un niveau
haut à son entrée. Donc, on doit envoyer 5V (un niveau haut) à N2.
3- Annexe [3] : Schéma du câblage complet
Câblage : le fil orange doit être branché sur RD2 (PWM)
RelationsindustriellesENSMM–servicedesstages

Contenu connexe

Tendances

Supervision Postes Moyenne Tension
Supervision Postes Moyenne TensionSupervision Postes Moyenne Tension
Supervision Postes Moyenne Tension
Karim Hassaouan
 
Communication courant porteur sur réseau Moyenne Tension
Communication courant porteur sur réseau Moyenne TensionCommunication courant porteur sur réseau Moyenne Tension
Communication courant porteur sur réseau Moyenne Tension
Karim Hassaouan
 
Microcontroleur Pic16 F84
Microcontroleur Pic16 F84Microcontroleur Pic16 F84
Microcontroleur Pic16 F84
guest1e7b02
 

Tendances (20)

Horloge
HorlogeHorloge
Horloge
 
SORTING SYSTEM (ITS PLC MHJ EDITION) PROGRAMMING
SORTING SYSTEM (ITS PLC MHJ EDITION) PROGRAMMING SORTING SYSTEM (ITS PLC MHJ EDITION) PROGRAMMING
SORTING SYSTEM (ITS PLC MHJ EDITION) PROGRAMMING
 
we config - procédure configuration rapide réseau Ethernet
we config - procédure configuration rapide réseau Ethernetwe config - procédure configuration rapide réseau Ethernet
we config - procédure configuration rapide réseau Ethernet
 
Fpga handout
Fpga handoutFpga handout
Fpga handout
 
Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32
 
Projet boat loader avec le pic16F887_rapport
Projet boat loader avec le pic16F887_rapportProjet boat loader avec le pic16F887_rapport
Projet boat loader avec le pic16F887_rapport
 
Atelier i2 c
Atelier  i2 cAtelier  i2 c
Atelier i2 c
 
Micocontroleur16 fxxx (1)
Micocontroleur16 fxxx (1)Micocontroleur16 fxxx (1)
Micocontroleur16 fxxx (1)
 
introduction automatisme industriel
introduction automatisme industrielintroduction automatisme industriel
introduction automatisme industriel
 
Emp
EmpEmp
Emp
 
Pic 16f877 ..
Pic 16f877 ..Pic 16f877 ..
Pic 16f877 ..
 
Ddr sdram dimm (184 pin, unbuffered) pinout
Ddr sdram dimm (184 pin, unbuffered) pinoutDdr sdram dimm (184 pin, unbuffered) pinout
Ddr sdram dimm (184 pin, unbuffered) pinout
 
SoC Hamdi -chap4
SoC Hamdi -chap4SoC Hamdi -chap4
SoC Hamdi -chap4
 
Supervision Postes Moyenne Tension
Supervision Postes Moyenne TensionSupervision Postes Moyenne Tension
Supervision Postes Moyenne Tension
 
STRATO Presentation
STRATO PresentationSTRATO Presentation
STRATO Presentation
 
Communication courant porteur sur réseau Moyenne Tension
Communication courant porteur sur réseau Moyenne TensionCommunication courant porteur sur réseau Moyenne Tension
Communication courant porteur sur réseau Moyenne Tension
 
Conception avec pic
Conception avec pic Conception avec pic
Conception avec pic
 
Microcontroleur Pic16 F84
Microcontroleur Pic16 F84Microcontroleur Pic16 F84
Microcontroleur Pic16 F84
 
Microcontrôleur PIC Microchip part1/2
Microcontrôleur PIC Microchip part1/2Microcontrôleur PIC Microchip part1/2
Microcontrôleur PIC Microchip part1/2
 
Généralités sur les microcontrôleurs et PicBasic
Généralités sur les microcontrôleurs et PicBasicGénéralités sur les microcontrôleurs et PicBasic
Généralités sur les microcontrôleurs et PicBasic
 

Similaire à Rapport Projet ENSMM - programmation sur microcontrôleur

Soutenance rapport ht 60k v nahidi hassan
Soutenance rapport ht 60k v nahidi hassanSoutenance rapport ht 60k v nahidi hassan
Soutenance rapport ht 60k v nahidi hassan
riemmen
 
Chap 1 Intro Microcontroleurs et Interruptions.pdf
Chap 1 Intro Microcontroleurs et Interruptions.pdfChap 1 Intro Microcontroleurs et Interruptions.pdf
Chap 1 Intro Microcontroleurs et Interruptions.pdf
DAPcreat
 
PréSentation Tsx37
PréSentation Tsx37PréSentation Tsx37
PréSentation Tsx37
youri59490
 
ETUDE D UN SYSTEME NUMERIQUE.pdf
ETUDE D UN SYSTEME NUMERIQUE.pdfETUDE D UN SYSTEME NUMERIQUE.pdf
ETUDE D UN SYSTEME NUMERIQUE.pdf
ssuser457a8b
 

Similaire à Rapport Projet ENSMM - programmation sur microcontrôleur (20)

Exam IIA5 INSAT 2018
Exam IIA5 INSAT  2018Exam IIA5 INSAT  2018
Exam IIA5 INSAT 2018
 
Système d'acquisition température
Système d'acquisition températureSystème d'acquisition température
Système d'acquisition température
 
Electronique et-loisirs-n011
Electronique et-loisirs-n011Electronique et-loisirs-n011
Electronique et-loisirs-n011
 
[Présentation PFE] Conception et implémentation d'un estimateur conjoint de l...
[Présentation PFE] Conception et implémentation d'un estimateur conjoint de l...[Présentation PFE] Conception et implémentation d'un estimateur conjoint de l...
[Présentation PFE] Conception et implémentation d'un estimateur conjoint de l...
 
Automates Programmables Industriels (API).pdf
Automates Programmables Industriels (API).pdfAutomates Programmables Industriels (API).pdf
Automates Programmables Industriels (API).pdf
 
Série révision. 2
Série révision. 2Série révision. 2
Série révision. 2
 
Pcs250 fi00 guide
Pcs250 fi00 guidePcs250 fi00 guide
Pcs250 fi00 guide
 
Les automates-programmables-industriels
Les automates-programmables-industrielsLes automates-programmables-industriels
Les automates-programmables-industriels
 
les-automates-programmables-industriels
les-automates-programmables-industrielsles-automates-programmables-industriels
les-automates-programmables-industriels
 
Soutenance rapport ht 60k v nahidi hassan
Soutenance rapport ht 60k v nahidi hassanSoutenance rapport ht 60k v nahidi hassan
Soutenance rapport ht 60k v nahidi hassan
 
Cours_Automatismes_1_2015.pptx
Cours_Automatismes_1_2015.pptxCours_Automatismes_1_2015.pptx
Cours_Automatismes_1_2015.pptx
 
Chap 1 Intro Microcontroleurs et Interruptions.pdf
Chap 1 Intro Microcontroleurs et Interruptions.pdfChap 1 Intro Microcontroleurs et Interruptions.pdf
Chap 1 Intro Microcontroleurs et Interruptions.pdf
 
3cmoscours
3cmoscours3cmoscours
3cmoscours
 
Minitiouner Pro Récepteur DATV pour Es'Hail2
Minitiouner Pro Récepteur DATV pour Es'Hail2Minitiouner Pro Récepteur DATV pour Es'Hail2
Minitiouner Pro Récepteur DATV pour Es'Hail2
 
PréSentation Tsx37
PréSentation Tsx37PréSentation Tsx37
PréSentation Tsx37
 
L'application de l'amdec sur le valideur vpe 412
L'application de l'amdec sur le valideur vpe 412L'application de l'amdec sur le valideur vpe 412
L'application de l'amdec sur le valideur vpe 412
 
Automate--Programmable--Industrielle.ppt
Automate--Programmable--Industrielle.pptAutomate--Programmable--Industrielle.ppt
Automate--Programmable--Industrielle.ppt
 
CAN
CANCAN
CAN
 
T ps dsp
T ps dspT ps dsp
T ps dsp
 
ETUDE D UN SYSTEME NUMERIQUE.pdf
ETUDE D UN SYSTEME NUMERIQUE.pdfETUDE D UN SYSTEME NUMERIQUE.pdf
ETUDE D UN SYSTEME NUMERIQUE.pdf
 

Rapport Projet ENSMM - programmation sur microcontrôleur

  • 1. Commande par microcontrôleur Rapport de µ-projet Matteo Musaró Yanis Marchand Année scolaire 2017-18 Semestre Vert – Parcours Systèmes Groupe VS2 - TP1 École Nationale Supérieure de Mécanique et des Microtechniques 26, rue de l’Épitaphe 25030 Besançon cedex – France +33 381 40 27 32 http://www.ens2m.fr µ-projetdecommandeparmicrocontrôleur
  • 2. µ-projet de commande par microcontrôleur Matteo Musaró et Yanis Marchand page 2 Sommaire Sommaire ............................................................................................................................................ 2 Introduction......................................................................................................................................... 3 Implémentation d’un correcteur PI ..................................................................................................... 3 1- Démarche.................................................................................................................................... 3 1-1. Fonctionnement du moteur en boucle ouverte.................................................................. 3 1-2. Fonctionnement du moteur en boucle fermée ..................................................................... 4 2- Configuration des périphériques................................................................................................. 5 2-1. Port D................................................................................................................................ 5 2-2. Configuration du Convertisseur Analogique - Numérique.................................................. 5 2-2.1. TRISA (Configuration du port A) ................................................................................ 5 2-2.2. ADCON0 (A/D control register 0) ............................................................................... 5 2-2.3. ADCON1 (A/D control register 0) ............................................................................... 6 2-2.4. ANSEL (Analog Select Rgister)................................................................................... 6 2-2.5. INTCON (Interrupt control register) ............................................................................ 7 2-2.6. PIE1 (Peripherical interrupt enable register 1) ............................................................. 7 2-2.7. PIR1 (Peripherical interrupt request register 1)............................................................ 8 2-3. Configuration du Timer 0.................................................................................................... 8 2-3.1. OPTION_REG.............................................................................................................. 8 2-4. Configuration du Timer 1.................................................................................................... 9 2-4.1. T1CON (Timer1 control register)................................................................................. 9 2-5. Configuration de la PWM.................................................................................................... 9 2-5.1. CCP2CON (CCP2 control register).............................................................................. 9 2-5.2. CCPR2L........................................................................................................................ 9 2-5.3. PR2 ............................................................................................................................. 10 2-5.4. T2CON (Timer 2 control register).............................................................................. 10 Conclusion et problèmes rencontrés ................................................................................................. 11 Résultats obtenus............................................................................................................................... 11 Bilans Personnels .............................................................................................................................. 12 Annexes............................................................................................................................................. 13 1- Annexe [1] : Calcul de la vitesse angulaire .............................................................................. 13 2- Annexe [2] : Câblage des drives du moteur.............................................................................. 14 3- Annexe [3] : Schéma du câblage complet ................................................................................ 15
  • 3. µ-projet de commande par microcontrôleur Matteo Musaró et Yanis Marchand page 3 Introduction L’objectif du projet est de programmer un correcteur PID sur un microcontrôleur PIC16F917 afin d’asservir la vitesse de rotation d’un moteur à courant continu. L’information sur la vitesse angulaire du moteur est donnée par un capteur incrémental. Nous ne mettrons finalement en place qu’un régulateur PI mais la différence ne réside qu’en la prise en compte d’un terme dérivée de l’erreur en plus. Implémentation d’un correcteur PI 1- Démarche 1-1. Fonctionnement du moteur en boucle ouverte Le principe du fonctionnement en boucle ouverte est résumé sur le schéma ci-dessus. Grâce à POT2, on récupère la tension de sortie du potentiomètre que l’on envoie dans le port RA0 (que nous avons configuré en entrée). Nous utilisons ensuite le convertisseur analogique – numérique (CAN). Grâce à la configuration de ADCON0, le signal analogique d’entrée du CAN est celui provenant de AN0/RA0. La valeur numérique est stockée dans ADRESH et ADRESL. Nous envoyons ces valeurs (stockées dans le microprocesseur) dans la PWM par l’intermédiaire de ses registres CCPR2L et CCP2CON. La PWM en fait un signal physique qui sort de RD2. En branchant RD2 aux drives, on commande bien la vitesse de rotation du moteur à partir du potentiomètre. Le raisonnement du câblage des drives est décrit dans l’annexe [2]. Signal de commande du moteur Tension analogique du potentiomètre Potentiomètre CAN PWM Drives Signal numérique de la tension
  • 4. µ-projet de commande par microcontrôleur Matteo Musaró et Yanis Marchand page 4 1-2. Fonctionnement du moteur en boucle fermée Le principe de fonctionnement en boucle fermée est résumé sur le schéma ci-dessus. Le CAN renvoie la consigne. Le capteur optique incrémente Timer0 car nous l’avons configuré pour ça et nous avons branché la sortie du capteur à T0CKI/RA4 que nous avons défini en entrée. Le Timer1 déborde toutes les 0.52s grâce au prescaler réglé au maximum. Lors de cette interruption, la valeur de la vitesse angulaire du moteur est calculée grâce à la formule démontrée en annexe [1]. L’erreur calculée permet de calculer la commande (grâce au PID). On applique un anti wind-up pour éviter d’envoyer des commandes trop violentes au moteur en cas d’erreur importante. La commande est envoyée dans la PWM (grâce à ses registres CCPR2L et CCP2CON) qui en fait un signal physique. En branchant RD2 (sortie de la PWM) aux drives, on pilote le moteur. Un schéma du câblage complet se trouve sur le en annexe [3]. Une photo est également disponible sur la dernière page mais elle a été prise un jour où les Drives 1 et 2 de notre carte électronique ne fonctionnaient pas donc nous avions utilisé les 3 et 4. De plus, le port RD7 ne fonctionnant pas non plus, nous avions utilisé RD6 pour allumer la diode « bug detector ». Signal physique de la commande Commande Erreur Consigne Signal électrique Tension analogique du potentiomètre Potentiomètre CAN Capteur Optique Timer0 (compte le nombre de fronts) Timer1 (définit la période d’échantillonnage) Vitesse angulaire + - PID PWM Drives Moteur
  • 5. µ-projet de commande par microcontrôleur Matteo Musaró et Yanis Marchand page 5 2- Configuration des périphériques 2-1. Port D Conformément aux commentaires qui ont été introduits, on définit RD4 en entrée. En effet, la commande TRIS est celle qui permet de configurer un port (pas de l’utiliser) et définir le bit « i » comme égal à 1 permet de configurer RDi en entrée (input) alors que la valeur 0 impose la sortie (output). On utilise une logique « ou » qui permet de placer les 1. Ici, étant donné que 0x10 correspond à 0001 0000 en binaire, on ne place que le bit 4 en entrée sans modifier la valeur des autres bits. On utilise une logique « et » qui permet de placer les 0. Ici, 0x1F correspond à 0001 1111 en binaire donc on a placé les ports 7, 6, 5 et 2 en sortie. En branchant RD6 à une diode (D7 pour nous), celle-ci sera utilisée pour savoir s’il y a un gros problème dans notre code. On la fera s’allumer si, dans la procédure d’interruption, on n’a pas réussi à déterminer sa source. 2-2. Configuration du Convertisseur Analogique - Numérique On va faire entrer le signal analogique de la tension de sortie du potentiomètre dans le CAN par l’intermédiaire du port RA0 et le résultat sera stocké sur les 8 bits du registre ADRESH (ADC result register High) pour les bits de poids forts ainsi que sur les bits 7 et 6 du registre ADRESL (ADC result register Low) pour les bits de poids faibles. 2-2.1. TRISA (Configuration du port A) TRISA on définit le port RA0 en entrée : c’est celui qui sera utilisé en entrée analogique du CAN. Le port RA4 est également en entrée : il recevra le signal du capteur optique. 2-2.2. ADCON0 (A/D control register 0) En binaire, ADCON0 = 0000 0001
  • 6. µ-projet de commande par microcontrôleur Matteo Musaró et Yanis Marchand page 6 Le bit ADFM est fixé à 0 pour obtenir une justification à gauche conformément au schéma ci- dessous. On aurait également pu choisir une justification à droite. Les bits VCFG1 et VCFG0 (voltage reference bit) sont fixés à 0 pour prendre Vss (5V) et Vdd (0V) pour avoir une plage de conversion de 0-5V. C’est la plus grande qu’on peut choisir. Les bits CHS<2:0> (Analog Channel Select bits) sont fixés à 0 et cette combinaison permet de choisir le port AN0 comme étant l’entrée du signal analogique à convertir. C’est pour ça que nous avons branché la sortie de la tension de sortie du potentiomètre à AN0. Le bit GO/𝑫𝑶𝑵𝑬̅̅̅̅̅̅̅̅̅ (conversion status bit) est fixé à 0 pour ne pas démarrer la conversion dans l’initialisation (c’est déconseillé pour l’intégrité du CAN). Le bit ADON (ADC enable bit) est fixé à 1 pour permettre l’utilisation du CAN évidemment. 2-2.3. ADCON1 (A/D control register 0) En binaire, ADCON1 = 0001 0000 Les bits ADCS<2 :0> (A/D Conversion clock select bits) sont fixés à 0 car cette configuration permet d’obtenir une fréquence de conversion élevée (Fosc/8). 2-2.4. ANSEL (Analog Select Rgister) En binaire, ANSEL = 0000 0001 Seul le port AN0 est défini comme entrée analogique car on n’a besoin que d’une seule entrée. Conformément à la note dans la documentation, on a défini le TRIS correspondant (TRISA) en entrée pour permettre le contrôle externe de la tension du port.
  • 7. µ-projet de commande par microcontrôleur Matteo Musaró et Yanis Marchand page 7 2-2.5. INTCON (Interrupt control register) En binaire, INTCON = 1110 0000 Le bit GIE (global interrupt enable) est fixé à 1 pour autoriser les interruptions. Le bit PEIE (peripherical interrupt enable) est fixé à 1 pour autoriser les interruptions des périphériques. En effet, Timer1 est considéré comme un périphérique et nous allons en avoir besoin dans la suite donc il est nécessaire de permettre ce type d’interruption. Le bit T0IE (Timer0 overflow enable) est fixé à 1 pour autoriser les interruptions du Timer0 dont nous aurons également besoin dans la suite. Les bits INTE (RB0/INT External Interrupt Enable) et RBIE (PORTB Change Interrupt Enable) sont fixés à 0 ce qui interdit les interruptions externes de RB0/INT ainsi que celles de PORTB (respectivement). Nous n’avons pas besoin de ces interruptions donc il faut les interdire pour qu’elles ne perturbent pas le programme si jamais elles se produisaient. Les bits T0IF (Timer0 interrupt flag), INTF (RB0/INT External Interrupt flag) et RBIF (PORTB Change Interrupt flag) sont fixés à 0 car ce sont tous les trois des drapeaux (flags) donc on les initialise toujours à 0. 2-2.6. PIE1 (Peripherical interrupt enable register 1) En binaire, PIE1 = 0100 0001 Le bit EEIE (EE write complete interrupt enable) est fixé à 0 car nous n’utilisons pas cette interruption. Le bit ADIE (A/D converter intrrupt enable) est fixé à 1 pour autoriser les interruptions du CAN car nous allons utiliser le CAN donc potentiellement ses interruptions. Les bits RCIE (USART receive interrupt enable), TXIE (USART transmit interrupt enable), SSPIE (Synchronous Serial Port Interrupt enable), CCP1IE (CCP1 interrupt enable) et TMR2IE (TMR2 to PR2 Match interrupt enable) sont tous fixés à 0 pour interdire les interruptions liées à ces périphériques car nous ne les utilisons pas. Le bit TMR1IE (Timer1 overflow interrupt enable) est fixé à 1 pour autoriser les interruptions du Timer1 car nous allons les utiliser (période d’échantillonnage de l’asservissement)
  • 8. µ-projet de commande par microcontrôleur Matteo Musaró et Yanis Marchand page 8 2-2.7. PIR1 (Peripherical interrupt request register 1) En binaire, PIR1 = 0000 0000 L’ensemble des bits de ce registre sont fixés à 0 car ce sont tous des drapeaux (flags). 2-3. Configuration du Timer 0 Le Timer 0 va compter le nombre de fronts montants du capteur optique au cours d’une période d’échantillonnage. Les registres INTCON et TRISA ont déjà été initialisés. 2-3.1. OPTION_REG En binaire OPTION_REG = 0010 1000 Les bits 𝑹𝑩𝑷𝑼̅̅̅̅̅̅̅̅̅ (PORTB Pull-up enable) et INTEDG (Interrupt edge select) peuvent être fixés à n’importe quelle valeur car nous n’utilisons pas les fonctions qui leur sont liées. Le bit T0CS (Timer0 Clock source select) doit être fixé à 1. En branchant la sortie du capteur optique sur le port RA4/T0CKI, le Timer0 sera bien incrémenté en fonction des valeurs du capteur optique. Le bit T0SE (Timer0 source edge select) peut être choisi de manière arbitraire car nous apportons peu d’importance au fait d’incrémenter Timer0 sur un front montant de RA4 ou un front descendant. Nous choisissons ici un front montant. Le bit PSA (prescaler assignment) est fixé à 1 pour envoyer le prescaler au watch dog. Nous ne voulons pas de prescaler et toute combinaison de valeurs des bits suivants conduit à un prescaler non nul s’il est assigné au Timer0. Les bits PS<2 :0> (prescaler rate select) seront fixés à 000 ce qui conduit à un prescaler de 1 pour le watch dog qui n’est pas utilisé de toute façon.
  • 9. µ-projet de commande par microcontrôleur Matteo Musaró et Yanis Marchand page 9 2-4. Configuration du Timer 1 Les registres PIR1, PIE1 et INTCON ont déjà été initialisés. Le registre CMCON1 possède uniquement 2 bits implémentés qui concernent des fonctions que nous n’utilisons pas donc nous ne configurons pas ce registre. 2-4.1. T1CON (Timer1 control register) En binaire, T1CON = 0011 0001 Le bit T1GINV (Timer1 Gate Invert) peut être fixé arbitrairement. Le bit TMR1GE (Timer1 Gate Enable) doit être fixé à 0 pour que Timer 1 compte en permanence. Les bits T1CKPS<1 :0> (Timer1 Input Clock Prescale Select) sont fixés à 11 pour avoir la valeur maximale du prescaler : 1/8. Le bit T1OSCEN (LP oscillator Enable control) doit être fixé à 0 pour ne pas mettre en route l’oscillateur. On ne l’utilise pas alors l’activer serait une perte d’énergie. Le bit 𝑻𝟏𝑺𝒀𝑵𝑪̅̅̅̅̅̅̅̅̅̅̅̅ (Timer1 external Clock input Synchronisation control) peut être fixé à n’importe quelle valeur puisqu’on va fixer TMR1CS à 0. Le bit TMR1CS (Timer1 Clock Source Select) est fixé à 0 pour utiliser Timer1 en horloge interne. Le bit TMR1ON sera fixé à 1 pour autoriser le Timer1 évidemment. 2-5. Configuration de la PWM 2-5.1. CCP2CON (CCP2 control register) En binaire, CCP2CON = 00001100 Les bits CCP2X et CCP2Y sont les bits de poids faible du signal de sortie de la PWM. Les bits CCP2M<3 :0> doivent être configurés à 11xx pour utiliser le mode PWM. 2-5.2. CCPR2L Les bits de CCPR2L sont les bits de poids fort du signal de sortie de la PWM.
  • 10. µ-projet de commande par microcontrôleur Matteo Musaró et Yanis Marchand page 10 2-5.3. PR2 En binaire, PR2 = 1111 1111 On fixe PR2 comme ceci pour avoir la plus grande précision possible sur la tension de sortie. Le Timer 2 déborde quand il atteint la valeur de PR2 et alors la PWM passe à 1. De plus, la PWM passe à 0 lorsque le Timer 2 atteint la valeur de CCPR2L. 2-5.4. T2CON (Timer 2 control register) En binaire, T2CON = 0000 0100 On fixe les bits TOUTPS<3 :0> (Timer 2 output postscaler select) à 0 pour avoir un postscaler de 1:1. On fixe le bit TMR2CON (Timer2 On) sur 1 pour utiliser le Timer 2 car la PWM fonctionne avec le Timer 2. Les bits T2CKPS<1:0> (Timer2 Clock prescale select) sont fixés à 0 pour obtenir un prescaler de 1:1 car on veut aller le plus vite possible conformément à la formule issue de la documentation ci- dessous :
  • 11. µ-projet de commande par microcontrôleur Matteo Musaró et Yanis Marchand page 11 Conclusion et problèmes rencontrés La première étape pour réaliser un asservissement est de définir une stratégie. Le choix des timers est important car on ne peut pas avoir les mêmes périodes suivant les prescaler choisis sur chacun d’eux. Ensuite, savoir gérer les interruptions et les ordres d’exécution est déterminant. Par conséquent, il est essentiel d’avoir une idée de l’ordre de grandeur des temps et de l’ordre d’exécution des différentes tâches. Savoir quelle interruption utiliser pour réaliser une action n’était pas évident au premier abord. L’étape d’après est de coder en pensant au câblage. Nous avons parfois rencontré des problèmes d’électronique. Par exemple, les Drives 1 et 2 ne fonctionnaient pas lors de notre dernière séance de TP. La découverte de ce souci nous a coûté du temps car notre premier réflexe était de chercher d’éventuelles erreurs de programmation. Nous avons trouvé difficile de trouver une manière de débuguer un code de microcontrôleur. La première raison est sûrement que c’était une première pour nous. De plus, la façon de tester des fonctions nous est apparue moins systématique qu’en informatique pure. Quand il s’agit juste de faire afficher l’état des variables qui nous intéressent dans la console sur un ordinateur, il s’avère déjà plus difficile d’afficher des données sur l’écran de la carte électronique. C’est d’autant plus vrai que l’écran disponible ne permet d’afficher qu’un nombre très réduit de caractères et la méthode de conversion des nombres codés sur 10 bits n’était pas claire. Enfin, il peut être nécessaire de mesurer des tensions voire d’afficher des signaux sur un oscilloscope. La combinaison de l’électronique et de la programmation informatique démultiplie les sources d’erreurs potentielles et augmente ainsi le temps de résolution des problèmes. Résultats obtenus Finalement, le régulateur PI que nous avons essayé de mettre en place est opérationnel et les performances sont très satisfaisantes. Sur la plage de valeurs de vitesse angulaire, nous avons en général une erreur statique de 9 rotations par minute. Etant donné la formule présentée en annexe [1], cela correspond à une erreur de 0.78 pics sur le signal obtenu en sortie du capteur optique. De plus, cette erreur statique est obtenue rapidement (de l’ordre d’une seconde).
  • 12. µ-projet de commande par microcontrôleur Matteo Musaró et Yanis Marchand page 12 Bilans Personnels Yanis Marchand : L’étude des microcontrôleurs s’est avérée très intéressante. Nous avons développé des savoir-faire à la frontière entre l’électronique et l’informatique et cela nous a fait découvrir comment un code permet de recueillir des données provenant de capteurs et de piloter des actionneurs. En étudiant l’automatique en première année, j’avais bien compris que les modèles mathématiques que nous définissions devaient être implantés sur une carte électronique pour être fonctionnels mais je ne voyais pas vraiment comment procéder. C’était donc une grande satisfaction de découvrir l’implémentation d’un correcteur PID car même si ce principe de régulation est très simple, je peux aisément imaginer comment mettre en place un correcteur plus complexe. Matteo Musaró : J’ai beaucoup aimé le projet de microcontrôleur parce qu’il était vraiment intéressant de bien comprendre comme ça marche ce dispositif pratiquement, comme nous dévons faire pour envoyer une commande avec l’interface MPLAB. Il été la première fois pour moi que je travaille pratiquement sur ce thème, et avec l’aide de mon ami Yanis et du professeur j’ai bien compris, malgré les difficultés linguistiques. J’ai aussi bien apprécié qu’avec cette approche pratique c’est plus facile de comprendre les concepts qui dans la théorie peuvent sembler loin. Et j’ai constaté et compris les problèmes liés à une procédure automatique.
  • 13. µ-projet de commande par microcontrôleur Matteo Musaró et Yanis Marchand page 13 Annexes 1- Annexe [1] : Calcul de la vitesse angulaire Le principe de fonctionnement du capteur optique est rappelé sur la figure ci-dessus. Si ce capteur a n trous, chaque trous intersecte un angle de 360/n Si en Te (période d’échantillonnage), on voit défiler x pics, alors l’angle qui a défilé est 360×x/n (en °) d’où le fait que le moteur a tourné de x/n tours Par conséquent, la vitesse angulaire égale à 𝜔 = 60×𝑥 𝑛×𝑇𝑒 Signal obtenu
  • 14. µ-projet de commande par microcontrôleur Matteo Musaró et Yanis Marchand page 14 2- Annexe [2] : Câblage des drives du moteur Le branchement du moteur est réalisé selon le schéma ci-dessus. Nous devons donc mettre en place le câblage nécessaire à la configuration des 4 mosfets en mode interrupteur tel que spécifié sur ce schéma. Ci-dessus, on voit le schéma interne du drive 1 :
  • 15. µ-projet de commande par microcontrôleur Matteo Musaró et Yanis Marchand page 15 D’après la spécification apportée par le premier schéma, nous devons configurer le mosfet à canal P du Drive 1 en mode interrupteur fermé. Pour cela, d’après la documentation, il faut appliquer à son entrée un niveau bas. Or, la présence d’un inverseur impose que P1 soit connecté à un niveau haut. De plus, c’est avec ce port qu’on pilote le moteur donc P1 doit être relié à la sortie de la PWM. Ensuite, le canal N doit être configuré en mode interrupteur ouvert et d’après la documentation, et la logique « ET », il faut imposer un état bas à N1 donc on peut ne pas le câbler. Pour le Drive 2, le canal P doit être configuré en mode interrupteur ouvert. Par conséquent, on doit imposer à P2 un niveau bas pour que l’entrée du canal P soit un niveau haut. Le canal N du Drive 2 doit être configuré en mode interrupteur fermé donc on doit imposer un niveau haut à son entrée. Donc, on doit envoyer 5V (un niveau haut) à N2. 3- Annexe [3] : Schéma du câblage complet
  • 16. Câblage : le fil orange doit être branché sur RD2 (PWM) RelationsindustriellesENSMM–servicedesstages