Vous êtes sur la page 1sur 35

TP système à microcontrôleur ENSAM-MEKNES

Travaux Pratiques
Système à Microcontrôleur

Niveau : 2ième année cycle d’ingénieurs

Filière : GEM-CMI

Responsables : Sabor Jalal

Hafiane Morad

1/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

Année 2022-2023

TP N°1
Commande d’un moteur à Courant Continu avec un
signal PWM par microcontrôleur 68HC11

Objectif :
- Commander un moteur à Courant Continu par un signal PWM au lieu
d’un signal analogique.
- Apprendre à générer un signal PWM sur les broches du microcontrôleur
pour commander un pont H.
- Apprendre à modifier le rapport cyclique du signal PWM et la tension
moyenne de commande en utilisant les sorties des comparateurs et le
Timer
- Commande du moteur à travers un profil du rapport cyclique variable et
une fréquence variable

Pont H L298N

PA5

UC
68HC11
Commande Moteur
Entrée
interruption
IC3 : BP5

Adresse relais

$01

2/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

Manipulation N° 1 : Commande d’un moteur à Courant Continu avec un


signal PWM sur broche PA5 sans Timer
Travail demander :
Développer le programme en assembleur 68HC11 qui réalise les tâches suivantes :

- Le départ cycle est donné par le bouton poussoir BP4 (valeur $0a sur l’adresse
ADR_bouton)

- Allumer le voyant vert (valeur $10 sur l’adresse Adr_relais) indiquant le système est en
marche.

- Générer un signal Ton sur la broche PA5 avec une temporisation qui décrémente la valeur
$FF jusqu’au la valeur 0.

- Générer un signal Tof sur la broche PA5 avec une temporisation qui décrémente la valeur
$FF jusqu’au la valeur 0.

- Développer une boucle infinie pour exécuter ses tâches

- Calculer le temps du signal Ton et Tof en se basant sur le temps de cycle pour chaque
instruction utilisée dans la boucle de temporisation. (voir jeu d’instruction).

Structure du programme :
Adr_bouton equ $1D00
PortA equ $1000
Adr_relais equ $1A00
PACTL equ $1026
DDRA equ
org $9103
- Initialiser la bascule D (impulsion 0 puis 1 sur l’entrée CLR) en utilisant jsr
Boucle ……..
……….
jsr tempoTon
….…….
jsr tempoTof

jsr init-bascule
Bra Boucle

TempTon …

rts
tempoTof

3/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

rts
init-bascule …

rts
END

Manipulation N° 2 : Commande d’un moteur à Courant Continu avec un


signal PWM sans Timer avec des temporisations
Travail demander :
Développer le programme en assembleur 68HC11 qui réalise les tâches suivantes :

- Le départ cycle est donné par le bouton poussoir BP4 (valeur $0a sur l’adresse
ADR_bouton)

- Allumer le voyant vert (valeur $10 sur l’adresse Adr_relais) indiquant le système est en
marche.

- Générer un signal Ton du PWM sur la broche PA5 avec le temps déjà calculé dans la
manipulation 1 en utilisant le Timer et le registre de comparaison TOC1.

- Générer un signal Tof du PWM sur la broche PA5 avec le temps déjà calculé dans la
manipulation 1 en utilisant le Timer et le registre de comparaison TOC4.

- Exécuter ce cycle du signal PWM sur une base de temps de 10 secondes en incrémentant
uniquement un compteur après les deux boucles de temporisations.

- pour créer les temporisations souhaitées, on veut rappel que la fréquence d’horloge de
microcontrôleur est de 8 Mhz avec un temps de cycle de 32,768 ms.
Structure du programme :
Adr_bouton equ $1D00
PortA equ $1000
Adr_relais equ $1A00
PACTL equ $1026
TOC1 equ
TOC2 equ
TFLG1 equ
org $9103
- Initialiser la bascule D (impulsion 0 puis 1 sur l’entrée CLR) en utilisant jsr
BaseTemps ……..
……….
jsr tempoTon
….…….
jsr tempoTof

4/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

jsr init-bascule
……..

BNE BaseTemps
Bra fin
TempTon …

rts
tempoTof

rts
init-bascule …

rts
fin END

Manipulation N° 3 : Commande d’un moteur à Courant Continu avec un


signal PWM généré via le Timer par deux comparateurs OC1&OC3
Travail demander :
Développer le programme en assembleur 68HC11 qui réalise les tâches suivantes :

- Le départ cycle est donné par le bouton poussoir BP4 (valeur $0a sur l’adresse
ADR_bouton)

- Allumer le voyant vert (valeur $10 sur l’adresse Adr_relais) indiquant le système est en
marche.

- Commander le moteur selon le rapport cyclique 50% du signal PWM avec une période
T du signal PWM de 2 ms (voir l’algorithme ci-dessous)

- Afficher le rapport cyclique dur les deux afficheurs 7 segments

- pour créer les temporisations souhaitées, on veut rappel que la fréquence d’horloge de
microcontrôleur est de 8 Mhz avec un temps de cycle de 32,768 ms.

Algorithme du signal PWD :

1-Activer la sortie du OC1 sur la broche PA5 en utilisant le


registre OC1M (bit OC1M5)
2- Activer la sortie de comparaison OC1 sur PA5 à l’état 1 par
le registre OC1D (bit OC1D5)
3- Activer la sortie de comparaison OC3 sur l’état 0 en
utilisant le registre TCTL1 (bits OM3=1 et OL3=1)
4- Charger en TOC1 la valeur courante du Timer
5- Charger en TOC2 la valeur courante du Timer
6- Boucle pour générer le signal PWM :
- Retomber les flags OC1F et OC3F du TFLG1 à 0

5/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

- TOC2 = TOC1 + PW; /* Set OC2 and next OC1 times. */


- TOC1 = TOC1 + period;
- Fin boucle

Structure du programme :
Adr_bouton equ $1D00
PortA equ $1000
Adr_relais equ $1A00
Adr_7seg1 equ $1900
Adr_7seg2 equ $1B00
PACTL equ $1026
TOC1 equ
TOC2 equ
TFLG1 equ
OC1M equ
OC1D equ
TCTL1 equ
org $9103
- Initialiser la bascule D (impulsion 0 puis 1 sur l’entrée CLR) en utilisant jsr
- Attente départ cycle
- Algorithme du signal PWM
- Afficher le rapport cyclique PWM sur les deux afficheurs

Init_bascul …..
RTS

- Déclarer le tableau des codes de sélection des afficheurs :


val fcb 0,1,2,3,4,5,6,7,8,9
Val_seg fcb $ee,$82,$dc,$d7,$b2
fcb $76,$7e,$c2,$fe,$f7

END

6/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

Manipulation N° 4 : Commande d’un moteur à Courant Continu avec un


profil ascendant du signal PWM généré via le Timer par deux
comparateurs OC1&OC3

Travail demander :
Développer le programme en assembleur 68HC11 qui réalise les tâches suivantes :
- Le départ cycle est donné par le bouton poussoir BP4 (valeur $0a sur l’adresse
ADR_bouton)

- Allumer le voyant vert (valeur $10 sur l’adresse Adr_relais) indiquant le système est en
marche.

- Générer le profil su signal PWM suivant : 10%, 30%,50%,90% avec


une fréquence de 10 KHz sur une base de 5 secondes pour chaque profil.
- Afficher sur les deux afficheurs à chaque fois le rapport cyclique du
profil en cours d’exécution.
Structure du programme :
Adr_bouton equ $1D00
PortA equ $1000
Adr_relais equ $1A00
Adr_7seg1 equ $1900
Adr_7seg2 equ $1B00
PACTL equ $1026
TOC1 equ
TOC2 equ
TFLG1 equ
OC1M equ
OC1D equ
TCTL1 equ
org $9103
- Initialiser la bascule D (impulsion 0 puis 1 sur l’entrée CLR) en utilisant jsr
- Attente départ cycle
- Algorithme du signal PWM 10%
- Afficher le rapport cyclique
- Algorithme du signal PWM 30%
- Afficher le rapport cyclique
- Algorithme du signal PWM 50%
7/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

- Afficher le rapport cyclique


- Algorithme du signal PWM 90%
- Afficher le rapport cyclique

Init_bascul …..
RTS

- Déclarer le tableau des codes de sélection des afficheurs :


val fcb 0,1,2,3,4,5,6,7,8,9
Val_seg fcb $ee,$82,$dc,$d7,$b2
fcb $76,$7e,$c2,$fe,$f7

END

-
- Manipulation N° 5 : Commande d’un moteur à Courant Continu avec
un profil variable du signal PWM généré via le Timer par deux
comparateurs OC1&OC3
- Le départ cycle est donné par le bouton poussoir BP4 (valeur $0a sur l’adresse
ADR_bouton)

- Allumer le voyant vert (valeur $10 sur l’adresse Adr_relais) indiquant le système est en
marche.

- Générer le profil su signal PWM suivant : 10%, 30%,50%,90% puis


75%, 50%, 30%, 10% avec une fréquence de 5 KHz sur une base de 5
secondes pour chaque profil.
- Afficher sur les deux afficheurs à chaque fois le rapport cyclique du
profil en cours d’exécution.

Structure du programme :
Adr_bouton equ $1D00
PortA equ $1000
Adr_relais equ $1A00
Adr_7seg1 equ $1900
Adr_7seg2 equ $1B00

8/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

PACTL equ $1026


TOC1 equ
TOC2 equ
TFLG1 equ
OC1M equ
OC1D equ
TCTL1 equ
org $9103
- Initialiser la bascule D (impulsion 0 puis 1 sur l’entrée CLR) en utilisant jsr
- Attente départ cycle
- Algorithme du signal PWM 10%
- Afficher le rapport cyclique
- Algorithme du signal PWM 30%
- Afficher le rapport cyclique
- Algorithme du signal PWM 50%
- Afficher le rapport cyclique
- Algorithme du signal PWM 90%
Afficher le rapport cyclique
- Algorithme du signal PWM 75%
- Afficher le rapport cyclique
- Algorithme du signal PWM 30%
- Afficher le rapport cyclique
- Algorithme du signal PWM 10%
Afficher le rapport cyclique

Init_bascul …..
RTS

- Déclarer le tableau des codes de sélection des afficheurs :


val fcb 0,1,2,3,4,5,6,7,8,9
Val_seg fcb $ee,$82,$dc,$d7,$b2
fcb $76,$7e,$c2,$fe,$f7

END

9/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

TPN°2
Gestion d’interruption par microcontrôleur
Objectif :
- Gestion du mode de sécurité et de réarmement d’un moteur à courant
Continu par mode d’interruption
- Commande d’un système de ventilation en mode d’interruption
- Apprendre à changer le profil de vitesse d’un moteur par mode
d’interruption

Manipulation N° 1 : Gestion d’arrêt d’urgence par interruption


On veut gérer le mode d’arrêt d’urgence du moteur provoqué par un bouton poussoir, par une
demande d’interruption au niveau de la ligne IC1 du portA (PA2) du microcontrôleur
68HC11.
Mode de fonctionnement :
Le fonctionnement normal du moteur est celui de la manipulation 1 du TP1. Une fois on appui
sur le bouton d’arrêt d’urgence BP5, une demande d’interruption est régénérée sur la ligne
d’entrée de comparaison IC1, le microcontrôleur quitte le programme principale pour se
brancher au sous programme d’interruption stocké dans le vecteur l’adresse mémoire $01E9.
Dans ce sous-programme on va arrêter le moteur et au même temps un clignotement
simulant une alarme via adresse LED 1 (valeur $01) jusqu’au l’appui sur le bouton de
réarmement BP10 (valeur $13 dans l’adresse Adr_bouton). L’interruption est active sur front
descendant.

- Développer le programme en assembleur 68HC11 pour réaliser ce fonctionnement.


Rajouter les commentaires.
Structure du programme
- Vecteur equ $01E9
- TCTL2 equ $1021
- TMSK1 equ $1022

- Adr_led2 equ $1F00

- Adr_led1 equ $1E00

- masque_int equ $04


- TFLG2 equ
- TSMK2 equ
- TFLG1 equ
10/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

org $9103
jsr init_regis
jsr init_bascul
cli
- Charger l’étiquette du sous programme d’interruption INTER dans le vecteur $01E9

boucle programme principal du manipulation 3 du TP1


Bra boucle

- INTER Arrêt moteur (agir sur les bits des registres OC1M et OC1D)
Clignotement led
Attente bouton de réarmement
………………
Jsr init_bascul
jsr init_regis
Activer la sortie de comparaison OC1 (bits OC1M et OC1D)
RTI
init-bascule
….

rts
init_regis ;sous routine de configuration des registres des interruptions
jsr init-bascule ;reset des bascules
lda #masque_int
sta TMSK1 ;valide les interruptions sur IC1
lda #$20
staa TCTL2 ;interruptions sur front descendant
bset TFLG1 #$04 ;mise à 0 des interruption précédentes
rts
END

Manipulation N° 2 : Commande d’un ventilateur moteur par interruption


On veut gérer le mode surchauffe du moteur simulé via un bouton poussoir, ainsi une
demande d’interruption sera générer au niveau de la ligne IC1 du portA (PA2) du
microcontrôleur 68HC11.
Mode de fonctionnement :
Le fonctionnement normal du moteur est celui de la manipulation 1 du TP1. Une fois on appui
sur le bouton d’arrêt d’urgence BP5, une demande d’interruption est régénérée sur la ligne
d’entrée de comparaison IC1, le microcontrôleur quitte le programme principale pour se
brancher au sous programme d’interruption stocké dans le vecteur l’adresse mémoire $01E9.
Dans ce sous-programme on va arrêter le moteur et commander un ventilateur à travers la
sortie Adr_relais (valeur $01)
11/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

Changer le profil du signal PWM à 20% jusqu’au l’appui sur le bouton de réarmement
BP10 (valeur $13 dans l’adresse Adr_bouton) pour reprendre le fonctionnement normal .
L’interruption est active sur front descendant.

- Développer le programme en assembleur 68HC11 pour réaliser ce fonctionnement.


Rajouter les commentaires.
Structure du programme
- Vecteur equ $01E9
- TCTL2 equ $1021
- TMSK1 equ $1022
- masque_int equ $04
- TFLG2 equ
- TSMK2 equ
- TFLG1 equ

org $9103
jsr init_regis
jsr init_bascul
cli
- Charger l’étiquette du sous programme d’interruption INTER dans le vecteur $01E9

boucle programme principal du manipulation 3 du TP1


Bra boucle

- INTER Arrêter le moteur (agir sur les bits des registres OC1M et OC1D)
Commander le ventilateur
Changer le rapport cyclique à 20% du PWM
Afficher le rapport en cours sur les deux afficheurs
Attente bouton de réarmement BP10
Arrêter la commande ventilateur
………………
Jsr init_bascul
jsr init_regis
Activer la sortie de comparaison OC1 (bits OC1M et OC1D)
RTI
init-bascule
….

rts
init_regis ;sous routine de configuration des registres des interruptions
jsr init-bascule ;reset des bascules

12/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

lda #masque_int
sta TMSK1 ;valide les interruptions sur IC1
lda #$20
staa TCTL2 ;interruptions sur front descendant
bset TFLG1 #$04 ;mise à 0 des interruption précédentes
rts
END

Manipulation N° 3 : Changement de profil PWM par interruption


On veut gérer le changement de profil du signal PWM du moteur via un bouton poussoir,
ainsi une demande d’interruption sera générer au niveau de la ligne IC1 du portA du
microcontrôleur 68HC11.
Mode de fonctionnement :
Le fonctionnement normal du moteur est celui de la manipulation 1 du TP1. Une fois on appui
sur le bouton d’arrêt d’urgence BP5, une demande d’interruption est régénérée sur la ligne
d’entrée de comparaison IC1, le microcontrôleur quitte le programme principale pour se
brancher au sous programme d’interruption stocké dans le vecteur l’adresse mémoire $01E9.
Dans ce sous-programme on va arrêter le moteur et commander un ventilateur à travers la
sortie Adr_relais (valeur $01)
Changer le profil du signal PWM à 70% puis à 90% sur une base de 5 secondes pour
chaque rapport cyclcique et afficher a chaque fois le rapport en cours puis reprendre le
fonctionnement normal . L’interruption est active sur front descendant.

- Développer le programme en assembleur 68HC11 pour réaliser ce fonctionnement.


Rajouter les commentaires.
Structure du programme
- Vecteur equ $01E9
- TCTL2 equ $1021
- TMSK1 equ $1022
- masque_int equ $04
- TFLG2 equ
- TSMK2 equ
- TFLG1 equ

org $9103
jsr init_regis
jsr init_bascul
cli

13/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

- Charger l’étiquette du sous programme d’interruption INTER dans le vecteur $01E9

boucle programme principal du manipulation 3 du TP1


Bra boucle

- INTER Arrêt moteur (agir sur les bits des registres OC1M et OC1D)
Commander le ventilateur
Changer le rapport cyclique à 70% du PWM
Changer le rapport cyclique à 90% du PWM
Afficher le rapport en cours sur les deux afficheurs

Arrêter la commande ventilateur


………………
Jsr init_bascul
jsr init_regis
Activer la sortie de comparaison OC1 (bits OC1M et OC1D)
RTI
init-bascule
….

rts
init_regis ;sous routine de configuration des registres des interruptions
jsr init-bascule ;reset des bascules
lda #masque_int
sta TMSK1 ;valide les interruptions sur IC1
lda #$20
staa TCTL2 ;interruptions sur front descendant
bset TFLG1 #$04 ;mise à 0 des interruption précédentes
rts
END

Manipulation N° 4 : Changement de profil PWM par interruption et


attente de bouton de réarmement
On veut gérer le changement de profil du signal PWM du moteur via un bouton poussoir,
ainsi une demande d’interruption sera générer au niveau de la ligne IC1 du portA (PA2) du
microcontrôleur 68HC11.
Mode de fonctionnement :
Le fonctionnement normal du moteur est celui de la manipulation 1 du TP1. Une fois on appui
sur le bouton d’arrêt d’urgence BP5, une demande d’interruption est régénérée sur la ligne
d’entrée de comparaison IC1, le microcontrôleur quitte le programme principale pour se
brancher au sous programme d’interruption stocké dans le vecteur l’adresse mémoire $01E9.
14/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

Dans ce sous-programme on va arrêter le moteur et commander un ventilateur à travers la


sortie Adr_relais (valeur $01)
Changer le profil du signal PWM à 70% puis à 50% puis 20% puis 10% sur une base de 5
secondes pour chaque rapport cyclique et afficher a chaque fois le rapport en cours puis
attente le bouton de réarmement BP10 pour reprendre le fonctionnement normal .
L’interruption est active sur front descendant.

- Développer le programme en assembleur 68HC11 pour réaliser ce fonctionnement.


Rajouter les commentaires.
Structure du programme
- Vecteur equ $01E9
- TCTL2 equ $1021
- TMSK1 equ $1022
- masque_int equ $04
- TFLG2 equ
- TSMK2 equ
- TFLG1 equ

org $9103
jsr init_regis
jsr init_bascul
cli
- Charger l’étiquette du sous-programme d’interruption INTER dans le vecteur $01E9

boucle programme principal du manipulation 3 du TP1 avec un rapport cyclique de


100% PWM
Bra boucle

- INTER Arrêter le moteur (agir sur les bits des registres OC1M et OC1D)
Commander le ventilateur
Changer le rapport cyclique à 70% du PWM
Changer le rapport cyclique à 50% du PWM
Changer le rapport cyclique à 20% du PWM
Changer le rapport cyclique à 10% du PWM

Afficher le rapport en cours sur les deux afficheurs


Arrêter le moteur
Attente de bouton de réarmement
Arrêter la commande ventilateur
………………
Jsr init_bascul
15/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

jsr init_regis
Activer la sortie de comparaison OC1 (bits OC1M et OC1D)
RTI
init-bascule
….

rts
init_regis ;sous routine de configuration des registres des interruptions
jsr init-bascule ;reset des bascules
lda #masque_int
sta TMSK1 ;valide les interruptions sur IC1
lda #$20
staa TCTL2 ;interruptions sur front descendant
bset TFLG1 #$04 ;mise à 0 des interruption précédentes
rts
END

16/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

Fiche technique de la maquette du 68HC11

SDB-11 est une carte d’extension au microsysteme LC 11.

La connexion s’effectue par le connecteur DIN 96 broches (voir page 5)

Retirer la carte fille LC11-EB et enficher SDB-11

La carte LC 11 est équipée de :

▪ 1 microcontrôleur 68HC711-E9 intégrant :

- 12 Koctets de EPROM

- 512 octets de EEPROM

- 512 octets de Ram

▪ 1 mémoire vive SRAM de 32 Koctets

▪ 1 horloge temps réel avec batterie de sauvegarde

▪ 1 driver de bus I2C

▪ 1 ligne série RS232 de communication avec le logiciel sur PC

▪ 1 connecteur d'extension de 96 points

▪ 1 écran LCD

Schéma de la

carte :

17/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

18/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

19/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

20/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

21/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

22/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

23/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

24/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

25/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

26/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

27/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

28/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

29/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

30/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

31/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

32/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

33/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

34/35
Sabor /Hafiane
TP système à microcontrôleur ENSAM-MEKNES

35/35
Sabor /Hafiane

Vous aimerez peut-être aussi