UTBM. Département Energie. DUREE 2 HEURES.
Médian IF40. Page 1/4
Documents non autorisés. Calculatrice autorisée.
Les programmes que vous écrirez doivent être commentés.
Exercice 1 : axe horizontal
Dans une salle de TP, on met en place un axe de déplacement horizontal pour le modéliser. Le système est piloté par un DSP contrôleur TMS320C28335 cadencé à 150 MHz.
L’axe est motorisé par un moteur à courant continu alimenté par un hacheur à partir d’une source continue (E). On donne ci-dessous le schéma de puissance :
Les transistors permettent de piloter la tension Umcc de -30V à 30V en ajustant , le rapport cyclique des signaux ePWM1A et ePWM1B. La fréquence de ces signaux est de 10 kHz. Les transistors requièrent un délai de sécurité (ou temps mort) de 1 s. La sortie ePWM1A est active au niveau bas.
1.1) Écrire en langage C la fonction initPWM réalisant l’initialisation du module ePWM1, des broches PWM utilisées, et l’initialisation des signaux PWM en mode asymétrique avec les délais de sécurité requis. Après l’initialisation, la valeur moyenne de Umcc doit être nulle.
Un capteur à effet Hall mesure l’intensité du courant Imcc. Cette sonde de courant délivre une tension proportionnelle à Imcc et variant de 0 à 3V pour un courant allant de 0 à 20A. Cette sonde est reliée à l’entrée ADCINA0 du convertisseur analogique numérique du DSP.
Un montage potentiométrique délivre une tension Ucom qui permet de piloter la vitesse du moteur à courant continu. Ucom donne la consigne de vitesse du moteur. Cette tension varie entre 0 et 2,5V. Elle est reliée à l’entrée ADCINA5 du convertisseur analogique numérique du DSP.
Pour mettre en place la régulation de vitesse, celle-ci doit être mesurée. On installe sur l’arbre moteur une dynamo tachymétrique associée à un montage à amplificateur opérationnel qui délivre une tension
E
ePWM1A
ePWM1B
ePWM1A ePWM1B
30 Volts
Final IF40. Page 2/4
continue UT. La tension continue UT qui varie entre 0 et 3V est appliquée à l’entrée ADCINA6 du convertisseur analogique numérique du DSP.
1.2) Écrire en langage C la fonction INITADC réalisant l’initialisation du module ADC en mode start/stop et séquenceur cascadé pour permettre la conversion de la voie 0, puis de la voie 5, puis de la voie 6, respectivement. La conversion sera déclenchée logiciellement.
1.3) Écrire en langage C la fonction MESURES qui réalise la conversion analogique numérique des voies 0,5 et 6 stocke les résultats dans les variables Imcc, Ucom et Ut respectivement (on considèrera ces variables déjà déclarées comme variables globales de type unsigned int).
Le moteur est mis en fonctionnement par la fermeture d’un contact de relais piloté par la broche GPIO0.
Deux capteurs de fin de course sont positionnés de chaque côté de l’axe. Le capteur de fin de course droit est relié à la broche GPIO1 et le capteur de fin de course gauche est relié à la broche GPIO2. Un bouton départ de cycle est relié à l’entrée GPIO3. On doit configurer GPIO0 en sortie, GPIO1 GPIO2 et GPIO3 en entrée.
GPIO0 au niveau logique 1 le moteur peut fonctionner.
GPIO0 au niveau logique 0 le moteur est à l’arrêt.
Fin de course gauche détectée GPIO2 = 1 sinon GPIO2= 0
Fin de course droite détectée GPIO1 = 1 sinon GPIO1 = 0
sur GPIO3 départ de cycle.
1.4) Écrire en langage C la fonction INITPORT initialisant les GPIOs sachant que le moteur doit être à l’arrêt à la fin de l’initialisation.
Le cycle de fonctionnement est le suivant :Si GPIO0 =0 si l’axe est à gauche (GPIO2=1), après un front montant sur le bouton départ de cycle ( sur GPIO3) il se déplace vers la droite à une vitesse réglée par le potentiomètre. Lorsque l’axe arrive en fin de course à droite (GPIO1=1), il se déplace vers la gauche (toujours à la même vitesse) et revient en position initiale (fin de course gauche GPIO2=1).
Pour le déplacement vers la droite, la vitesse du moteur peut varier entre 0 et 3000 tr.min-1 ce qui correspond à un rapport cyclique de la tension Umcc variant entre 0,5 et 0,9. La valeur moyenne de Umcc est positive.
Pour le déplacement vers la gauche, la valeur moyenne de Umcc doit être négative. La vitesse du moteur peut varier entre -3000 tr.min-1 et 0 tr.min-1, ce qui correspond à un rapport cyclique de la tension Umcc variant entre 0,5 et 0,1.
1.5) Donner le nom du registre permettant de faire varier le rapport cyclique . Calculer ses valeurs correspondant aux vitesses de -3000 tr.min-1, 0 tr.min-1 et +3000 tr.min-1. On tronquera les résultats si besoin.
La tension Ucom donne la consigne de vitesse en valeur absolue. Pour Ucom =0V, la valeur absolue de la vitesse demandée est de 300 tr.min-1 (vitesse minimale) et pour Ucom = 2,5V, la vitesse demandée est de 3000 tr.min-1. La fonction |𝑣𝑖𝑡𝑒𝑠𝑠𝑒| en fonction de Ucom est une fonction affine proportionnelle: vitesse = f(Ucom).
1.6) Calculer les résultats N0 et N1 de la conversion analogique numérique correspondant respectivement aux valeurs de Ucom de 0V et 2,7V. On tronquera les résultats si besoin.
Final IF40. Page 3/4
Une variable globale sens (type int) est utilisée pour calculer la valeur du rapport cyclique. Si sens=0, l’axe se déplace vers la gauche, sinon la valeur de sens=1 et l’axe se déplace vers la droite.
1.7) Écrire en langage C la fonction VITESSE qui utilise le résultat de la conversion analogique numérique correspondant à Ucom et la variable sens et qui renvoie la valeur à entrer dans le registre (question 1.6) permettant de faire varier la vitesse.
1.8) Écrire en langage C la fonction MOUVEMENT qui réalise le déplacement de l’axe de gauche vers la droite puis de droite vers la gauche décrit précédemment. Si l’une des deux conditions initiales n’est pas respectée, on sort directement de la fonction.
1.9) Écrire en langage C le programme principal qui réalise les initialisations et pilote le moteur en fonction de la vitesse. Ne pas oublier la déclaration des variables.
Exercice 2 : Interfaçage et décodage d’adresses
On donne page suivante le schéma partiel d’une carte 6809. Seuls sont représentés les mémoires et le microprocesseur ainsi que le bus d’adresse.
2.1) Pour les mémoires MEM1, MEM2, MEM3, MEM4 et MEM5, indiquer la capacité mémoire en bits et l’organisation en nombre de mots et taille des mots (N mots de M bits).
2.2) Compléter le tableau ci-dessous (DR1) en justifiant vos résultats, les tailles mémoires seront données en mots sur le document DR2.
Document réponse DR1.
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
MEM1 MEM2 MEM3 MEM4 MEM5
Document réponse DR2.
Zone occupée Zone utile (si zone occupée)
Zone de recouvrement Adresse
mini
Adresse maxi
Adresse mini
Adresse maxi
Adresse mini
Adresse maxi
Taille occupée
Taille utilisée
(si) MEM1
MEM2 MEM3 MEM4 MEM5
Final IF40. Page 4/4
Rappel : Table de vérité du 74LS138.
Entrées
Sorties
Valid Select
G1
G2A G2B C B A Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
0 X X X X X 1 1 1 1 1 1 1 1
X 1 X X X X 1 1 1 1 1 1 1 1
X X 1 X X X 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 1 1 1 1 1 1 1
1 0 0 0 0 1 1 0 1 1 1 1 1 1
1 0 0 0 1 0 1 1 0 1 1 1 1 1
1 0 0 0 1 1 1 1 1 0 1 1 1 1
1 0 0 1 0 0 1 1 1 1 0 1 1 1
1 0 0 1 0 1 1 1 1 1 1 0 1 1
1 0 0 1 1 0 1 1 1 1 1 1 0 1
1 0 0 1 1 1 1 1 1 1 1 1 1 0
39 X1
38 EX2
RESET 37 2 NMI
40 HALT 3 IRQ
4 FIRQ 36 MRDY 33 DMAB
A0 8 A1 9 A2 10 A3 11 A4 12 A5 13 A6 14 A7 15 A8 16 A9 17 A1018 A1119 A1220 A1321 A1422 A1523
D0 31 D1 30 D2 29 D3 28 D4 27 D5 26 D6 25 D7 24
E 34 Q35 BA6 BS5 RW32 7 VCC
1 VSS
CI1 6809 circuit 40 br
1 A 2 B 3 C
6 G1 4 G2A 5 G2B
Y015 Y114 Y213 Y312 Y411 Y510 Y69 Y77 VCC16 GND8
CI2 74LS138
1 A 2 B 3 C
6 G1 4 G2A 5 G2B
Y015 Y114 Y213 Y312 Y411 Y510 Y69 Y77 VCC16 GND8
CI3 74LS138
10 A0 9 A1 8 A2 7 A3 6 A4 5 A5 4 A6 3 A7 24 A8 25 A9 21 A10 23 A11 2 A12
20 CE 22 OE 27 WE
D0 11 D1 12 D2 13 D3 15 D4 16 D5 17 D6 18 D7 19
RDY1
VCC 28 GND 14
MEM2
10 A0 11 A1 12 A2 13 A3 14 A4
15 CE
O1 1 O2 2 O3 3 O4 4 O5 5 O6 6 O7 7 O8 9 VCC 16 GND 8
MEM4
10 A0 9 A1 8 A2 7 A3 6 A4 5 A5 4 A6 3 A7 24 A8 25 A9 21 A10 23 A11 2 A12
20 CE 22 OE 27 WE
D0 11 D1 12 D2 13 D3 15 D4 16 D5 17 D6 18 D7 19
RDY1
VCC28 GND14
MEM3
8 A0 7 A1 6 A2 5 A3 4 A4 3 A5 2 A6 1 A7 23 A8 22 A9 19 A10
18 CE 20 OE 21 WE
D0 9 D1 10 D2 11 D3 13 D4 14 D5 15 D6 16 D7 17
VCC 24
GND 12
MEM1
5 A0 6 A1 7 A2 4 A3 3 A4 2 A5 1 A6 17 A7 16 A8 15 A9
8 CS 10 WE
D0 14 D1 13 D2 12 D3 11
VCC 18
GND 9
MEM5
GND Vcc
Vcc
GND A15
A14 A13
A12 A11 A10
A0 A1 A2 A3 A4 A5 A6 A7 A9 A8 A10
A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A1
A0 A0
A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12
A0 A1 A2 A3 A4
A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 S2
S3
S5 S1
S4
S4
S5 S3
S2 S1
Bus d’adresse
S2 S3