1.3. generation du signal mli par le timer de l`AT9S8535

publicité
Pilotage d'un moteur à courant continu par MLI
1. ELEMENTS DE COURS
Objectif : Expliquer comment s'effectue la commande d'un moteur à courant continu afin de
contrôler son sens de rotation et sa vitesse.
1.1. PRINCIPE DE FONCTIONNEMENT D’UN MOTEUR A COURANT
CONTINU A AIMANTS PERMANENTS
Un moteur à courant continu permet de convertir une énergie électrique en une énergie
mécanique utile. Il est constitué d'une partie fixe, stator ou inducteur composé d'aimants
permanents (pôles) chargés de générer un flux magnétique ; et d'une partie mobile, rotor ou
induit, composé d'un bobinage alimenté à ses extrémités (collecteur) par une tension continue
U.
La variation de vitesse d'un moteur à courant continu :
1.1.1.
Mise en situation
La variation de vitesse  d'un moteur à courant continu est obtenue en faisant varier la valeur
moyenne de la tension d'alimentation de l'induit U. Cette dernière est obtenue en appliquant
une tension rectangulaire d'amplitude Û constante et de rapport cyclique α= tH/T variable.
Dans ce cas, la valeur moyenne <U> = Û x α.
Cette commande s'appelle la Modulation de Largeur d'Impulsion (MLI ou PWM pour Pulse
Width Modulation).
1.1.2. Modulation « numérique »
Clk
00
Compteur
binaire sur n
bits
Mot binaire de valeur image du
rapport cyclique de sortie
01
02
… 00
01
n
U
m
Comparateur
nu
Signal MLI
La MLI est obtenue à la sortie d'un comparateur numérique, qui compare un mot binaire issu
d’un compteur générant un cycle continu de comptage avec un mot binaire réglable.
1.2. LA VARIATION DU SENS DE ROTATION D'UN MOTEUR A COURANT
CONTINU :
Pour modifier le sens de rotation d’un moteur à courant continu, il suffit d’inverser
l’alimentation à ses bornes (induit). La structure permettant de réaliser cette inversion est
appelée « pont en H ».
Page 1 sur 8
1.2.1. Principe de fonctionnement du pont en H
Le pont en H peut être symbolisé par une structure à quatre interrupteurs ouverts au repos
(voir fig1). Dans ce cas, la tension aux bornes du moteur est nulle.
Pour mettre en rotation le moteur il suffit de fermer un couple d’interrupteurs (voir fig2) et de
laisser les deux autres au repos. Le moteur est donc alimenté avec la tension UM=VCC.
Pour modifier le sens de rotation, il suffit de permuter le couple d’interrupteurs fermés et
ouverts (voir fig3). On aura donc UM= - VCC.
1.2.2.
Structure autour de transistors
Les transistors vont assurer la fonction des interrupteurs et fonctionneront en saturé/bloqué.
Ainsi en bloquant un couple de transistor et en saturant l’autre, on établit une tension UM aux
bornes du moteur, dont on change le signe en modifiant les couples saturés/bloqués (voir fig4
et 5).
Les diodes placées entre émetteurs et collecteurs des transistors jouent le rôle de diodes de
roue libre (DRL). Elles permettent de protéger les transistors en devenant passantes lorsque
ces derniers sont tous bloqués et qu’il faut évacuer le courant IM de l’inductance du moteur.
1.3. GENERATION DU SIGNAL MLI PAR LE TIMER DE L'AT9S8535
1.3.1. PREPARATION
On désire piloter le moteur à l’aide du générateur de signal MLI (PWM) intégré au timer1 de
l’AT90S8535. Seule la MLI (PWM) associée au timer 1 sera étudiée ici.
Le signal MLI sera fourni par la broche OC1B La MLI sera configurée en mode 10 bits.
L’horloge système CK possède une fréquence valant 4MHz et les bits de commande non
utilisés dans cette application seront positionnés à « 0 ».
Page 2 sur 8
Travail à faire :
1. Sur le document réponse 1, compléter l’Initialisation des ports A, C et D.
2. Combien de « timer » possède le microcontrôleur AT90S8535 ou ATmega8535.
(préciser les caractéristiques principales).
3 timers 2 de 8 bits et 1 de 16 bits
3. Un timer est composé d’un compteur. Préciser le fonctionnement d’un compteur
binaire.
Un compteur est composé de bascules et s’incrémente à chaque impulsion active.
4. Un timer est composé de registre. Préciser le fonctionnement d’un registre.
Un registre est une mémoire interne au µC de 8 bits
5. Quel est le rôle d’un comparateur binaire.
Comparer 2 nombres binaires (N1<N2, N1>N2 ou N1=N2)
6. Comment sont nommés les registres de contrôle du timer1.
TCCR1A et TCCR1B
7. Comment est nommé le registre de comparaison du timer1.
OCR1A
8. On désire utiliser la fonction PWM du timer (10 bits). Préciser l’état des bits1 et 0 du
registre de commande TCCR1A. (compléter le document réponse 2).
TCCR1A :1er registre de contrôle du timer 1.
PWM11
0
0
1
1
PWM10
0
1
0
1
Mode de fonctionnement du timer1
Mode normal (Non PWM)
PWM 8 bits
PWM 9 bits
PWM 10 bits
 PWM 10 bit
PWM11 = 1 PWM10 = 1
Adresse
$2F ($4F)
Bit 7
COM1A1
Bit 6
COM1A0
Bit 5
COM1B1
Bit 4
COM1B0
Bit 3
-------
Bit 2
--------
Bit 1
PWM11
Bit 0
PWM10
1
1
9. Quel est la valeur maximale et minimale du compteur TCNT1.
TCNT1max=1023, TCNT1min=0
10. En déduire la valeur de la fréquence du signal PWM. (fréquence de l’horloge du
système STK200 à 4 MHz). Compléter le document réponse 4 (valeur de CLK).
Résolution PWM
8 bits
9 bits
10 bits
Valeur maxi compteur
$00FF (255)
$01FF (511)
$03FF (1023)
Fréquence
FTCK1/510
FTCK1/1022
FTCK1/2046
Fréquence de l’horloge du signal MLI = (4 000 000)/2046 = 1955Hz
11. On utilise la sortie OC1B du microcontrôleur (µC). Sur quel port et quel bit se trouve
cette sortie (voir schéma du STK200).
La sortie de OC1B est sur PD4
Page 3 sur 8
12. La sortie OC1B du µC est en mode PWM normale. On n’utilise pas OC1A du µC.
Indiquer l’état des bits 4 à 7 du registre TCCR1A (compléter le document réponse 2).
COM1X1
0
0
1
1
COM1X0
0
1
0
1
Type de PWM
PWM non active
PWM non active
PWM normale
PWM complémentée
On travaille sur OC1A
COM1A1 = 0
COM1A0 = 1
COM1B1 = 1
COM1B0 = 0
Adresse
$2F ($4F)
Bit 7
COM1A1
Bit 6
COM1A0
Bit 5
COM1B1
Bit 4
COM1B0
0
1
1
0
 PWM désactivée
 PWM normale sur OC1B
Bit 3
-------
Bit 2
--------
Bit 1
PWM11
Bit 0
PWM10
1
1
13. En déduire la valeur hexadécimale du registre TCCR1A (compléter le document
réponse 1).
Bit2 e 3 à 0  TCCR1A = 63h
14. On ne met pas en fonction le réducteur de bruit. On n’utilise pas l’entrée ICP. Le
timer1 est en comptage continue jusqu’à la capacité maximale. On utilise l’horloge du
système pour compter. Compléter le document réponse 3.
- ICNC1 : Ce bit lorsqu’il est positionné à 1, met en fonction le réducteur de bruit qui
permet d’éviter la prise en compte de parasites comme fronts actifs.
- ICES1 : Sélection du type de front actif. Si à 1 : front montant, Si à 0 : front descendant.
Lorsqu’un front actif se produit sur l’entrée ICP, le contenu du compteur TCNT1
est transféré dans le registre de capture ICR1.
Le bit CTC1 définit le mode de fonctionnement du compteur TCNT1 :
0 : Comptage en continu jusqu'à la capacité maximale ($0000 - $FFFF), puis le cycle recommence
CS12
0
0
0
0
1
1
1
1

CS11
0
0
1
1
0
0
1
1
CS10
0
1
0
1
0
1
0
1
Source d’horloge du compteur
Aucune : Le compteur est stoppé
Horloge système (CK)
Horloge système (CK) / 8
Horloge système (CK) / 64
Horloge système (CK) / 256
Horloge système (CK) / 1024
Broche T1, active sur front descendant
Broche T1, active sur front montant
TCCR1B :2eme registre de contrôle du timer 1.
Adresse
$2E ($4E)
Bit 7
ICNC1
Bit 6
ICES1
Bit 5
-------
Bit 4
-------
Bit 3
CTC1
Bit 2
CS12
Bit 1
CS11
Bit 0
CS10
0
0
0
0
0
0
0
1
15. En déduire la valeur hexadécimale du registre TCCR1B. (compléter le document
réponse 1).
TCCR1B = 01h
Page 4 sur 8
Si l’on considère à l’instant t=0 le compteur à « 0 » (donc N1=0) et OCR1A à 30010 (12C16).
A chaque impulsion de CLK le compteur s’incrémente.
16. Calculer le temps (t1) ou N2>N1. En déduire l’état de la sortie OC1B.

Si
Si
Si
Si
OCR1A
OCR1A
N2
N2
> TCNT1
< TCNT1
> N1
< N1




OC1B = 1
OC1B = 0
OC1B = 1
OC1B = 0
Mode PWM Normale
t1 = 300/(4 000 000)=75µs (OC1B = 1)
17. Lorsque t1 est atteint le compteur continue à s’incrémenter jusqu’à la valeur maximale
(1023) puis se décrémente jusqu’à la valeur minimale et ainsi de suite. Calculer le
temps ou N2<N1.
(1023-300)*2/(4 000 000)= 361.5 µs
18. Compléter le chronogramme du document réponse 4. En déduire T1 et T.
T1 = 2*t1 = 150µs  T = 150 + 361.5 = 511.5µs  fMLI = 1/511.5µs = 1955Hz
19. Calculer le rapport cyclique α.
α = 150/511.5 = 0.29
20. Saisir et compiler le programme du document réponse 1.
21. Flasher le µC du STK200 et visualiser sur l’oscilloscope le signal MLI.
22. En appuyant sur le bouton PD1 vérifier T1, T et le rapport cyclique α déterminé
précédemment.
23. Mesurer le rapport cyclique du signal lorsque l’on appuie sur PD0, PD2 et PD3.
αPD0 = 50/511.5 = 0.09
αPD2 = 256/511.5 = 0.5
αPD3 = 511.5/511.5 = 1
24. Préciser le rôle du code « ~PIND & 0b00001111 ».
0b00001111 est un masque pour isoler PD0, PD1, PD2 et PD3.
Page 5 sur 8
Schéma simplifié du STK 200
Page 6 sur 8
Document réponse 1
#include <avr/io.h>
//Initialisation des ports
void init_ports(void)
{
DDRC = 0xFF;
//port C en sortie
(A COMPLETER)
DDRA = 0x00;
//port A en entrée (A COMPLETER)
DDRD = 0xF0;
//PD4 à PD7 en sortie ; PD0 à PD3 en entrée (A COMPLETER)
}
void init_MLI(void)
{
TCCR1A= 0x63; // (A COMPLETER)
TCCR1B= 0x01; // (A COMPLETER)
}
//Programme principal
void main(void)
{
init_ports();
init_MLI() ;
while(1)
{
switch((~PIND & 0b00001111))
{
case 0x01: OCR1A=100;break;
case 0x02: OCR1A=300;break;
case 0x04: OCR1A=512;break;
case 0x08: OCR1A=1023;break;
default : OCR1A=0 ;
}
}
}
Document réponse 2
TCCR1A
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
0
1
1
0
0
0
1
1
Document réponse 3
TCCR1B
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
0
0
0
0
0
0
0
1
Page 7 sur 8
DOCUMENT REPONSE 4
CK (Horloge système)
Synoptique du module timer 1 en mode PWM
Sélection source
d’horloge et pré-division
Broche T1( PB1)
CLK
Compteur TCNT1
sur N bits
N1
Comparateur
N bits
N2
Bits CS10, 11,12 du
Registre TCCR1B
Registre OCR1x
A compléter
N2 > N1
=
1
OC1x
COM1x1 COM1x0
Du registre TCCR1A
REMARQUES : - x est à remplacer par A ou B selon que la sortie utilisée est OC1A ou OC1B.
- N est le nombre de bits de la MLI, il est sélectionné par les bits PWM11 et PWM10 du registre TCCR1A
N1 (TCNT1)
N1max
Chronogrammes à compléter
N2 (OCR1A)
= 300
0
N2 > N1
t1
t
T1
T
1
0
t
OC1B
1
0
t
Page 8 sur 8
Téléchargement