Vous êtes sur la page 1sur 99

Université Hassan II

Mohammedia- Casablanca
Ecole Normale Supérieure de l'Enseignement
Supérieur Mohammedia

DEPARTEMENT GENIE ELECTRIQUE


CYCLES INGENIEUR

MANUEL DE
TD & TP

Elaboré par :
M. A. RAIHANI
ECOLE NORMALE SUPÉRIEURE DE L'ENSEIGNEMENT ‫ﺍﻟﻤﺪﺭﺳﺔ ﺍﻟﻌﻠﻴﺎ لأﺳﺎﺗﺬﺓ ﺍﻟﺘﻌﻠﻴﻢ ﺍﻟﺘﻘﻨﻲ‬
TECHNIQUE DE MOHAMMEDIA
UNIVERSITÉ HASSAN II DE CASABLANCA
ENSET ‫ﺍﻟﻤحﻤﺪيﺔ‬
‫ﺟﺎﻣﻌﺔ ﺍﻟحﺴﻦ ﺍﻟﺜﺎﻧﻲ ﺑﺎﻟﺪﺍﺭ ﺍﻟﺒﻴﻀﺎﺀ‬

Avant-propos

Ce manuel est élaboré dans le cadre de mes activités d’enseignement réalisées au sein de
l’Ecole Normale Supérieure de l’Enseignement Technique de Mohammedia. Il s’agit d’un
recueil d’exercices proposés pour l’assimilation et l’illustration des différents concepts
abordés lors des séances de cours.

En effet, les travaux dirigés (TD) représentent un plus au cours. En fait, de par leur contenu,
ils permettent d’appuyer ce dernier et servir de renforcement à l'application des notions
théoriques qui y sont vues et étudiées afin de permettre aux étudiants de se rendre compte
de la pertinence desdits TDs.

Ainsi, les différents exercices sont conçus pour (1) permettre, aux étudiants, de faire les
applications nécessaires pour mieux s’approprier les informations abordées dans un cours
magistral, (2) leur donner l’occasion d’intégrer les acquis et de promouvoir l’initiative et
l’émulation, (3) de favoriser un environnement sain pour un enseignement/apprentissage
individualisé selon les besoins spécifiques de chaque étudiant et la mise en action d’une
pédagogie différenciée, et en fin, (4) lors de ces travaux de groupes, chaque apprenant aura
l’occasion d’acquérir de nouvelles stratégies d’apprentissage et de les mettre en application
avec les stratégies communes dont il a besoin – associées à ses stratégies personnelles –
pour agir et interagir et participer, ainsi, activement à la réalisation des différentes activités
sous la direction et l’orientation du professeur.

Dans ce cadre, le présent manuel traite des exercices relatifs aux quelques éléments de
modules faisant partie de mes cours :

✓ Fonctions électroniques analogiques et chaînes d'acquisition


✓ Microcontrôleur et DSP
✓ Traitement du signal
✓ Gisement éolien et solaire

Pr. Abdelhadi RAIHANI Manuel de Travaux Dirigés niveaux et filières


UH2 Casablanca- ENSET Mohammedia Fonctions électroniques et chaînes d'acquisitions

TD1

Exercice 1:
On considère le montage ci-contre, avec E = 15 V,
RC = 1 kΩ et RE = 250 Ω.
A. Etude statique
1. Après avoir tracé la droite de charge statique et
défini la pente de la droite de charge dynamique,
déterminer l'excursion maximale de la tension de
sortie dans le cas où les coordonnées du point de
fonctionnement sont :
(a) VCE = 5 V.
(b) VCE = 10 V.
2. Déterminer maintenant le point de
fonctionnement que l'on doit choisir pour obtenir
en régime dynamique, une excursion maximale
de la tension sans écrêtage.

3. Tracer IC = f(IB) pour VCE = VCE0 puis déterminer le courant de base pour le point de repos.
4. Déterminer la valeur des résistances R1 et R2 permettant d'obtenir ce point de fonctionnement. On
donne R1 +R2 = 10 kΩ. Vérifier que le courant IB est négligeable devant le courant de pont (dans R1 et
R2). On négligera IB devant IC (VBE = 0.6 V).
5. Déterminer autour du point de fonctionnement déterminé en 3, les valeurs des paramètres hybrides du
transistor.
B. Etude dynamique
1. Dessiner un schéma équivalent au montage, valable en régime dynamique (schéma petits signaux).
On considère l'impédance des condensateurs nulle et h12 = 0.
2. Calculer le gain en tension, l'impédance d'entrée et l'impédance de sortie.
3. On considère le montage chargé par une résistance Rch de 2 kΩ. Calculer le gain en courant et le gain
en tension.
4. Refaire les applications numériques pour h22 = 0.
C. Montage charges réparties
On considère maintenant le montage sans le condensateur CE.
Reprendre l'étude précédente et comparer les résultats. On négligera le terme h22.

Exercice 2:
On considère l'amplificateur à deux étages ci dessous:

On donne R1 = 50 kΩ, R2 = 2 kΩ, R3 = 20 kΩ, R4 = 300 Ω, RC = 4 kΩ et Rch = 4 kΩ.


1. Dessiner un schéma équivalent au montage, valable en régime dynamique (schéma petits signaux)
avec h11 = 1 kΩ, h12 = 0, h21 = 100 et h22 = 0 pour les deux transistors. On considère l'impédance des
condensateurs nulle.

C.I: SEER1 & GECSI 1 A . RAIHANI Page 1


UH2 Casablanca- ENSET Mohammedia Fonctions électroniques
lectroniques et chaînes
cha d'acquisitions

2. Calculer vs/v, v/ve, puis vs/ve..


3. Calculer is/i2, i2/i1 et i1/ie, puis
p is/ie.
4. Dans quel cas utilise-t-on
on ce montage. Expliquez.

C.I: SEER1 & GECSI 1 A . RAIHANI Page 2


UH2 Casablanca- ENSET Mohammedia Fonctions électroniques
lectroniques et chaînes
cha d'acquisitions

C.I: SEER1 & GECSI 1 A . RAIHANI Page 3


UH2 Casablanca- ENSET Mohammedia Fonctions électroniques
lectroniques et chaînes
cha d'acquisitions

C.I: SEER1 & GECSI 1 A . RAIHANI Page 4


Université Hassan II de Casablanca - ENSET Mohammedia Fonctions d'électronique analogique

SERIE 2

Exercice 1:
1. Sachant que les résistances et tensions d'entrée valent respectivement Rn=n10k et U1n=nV,
calculez la tension de sortie de chacun des circuits de la figure 1.

Exercice 2:
Donner l'expression du gain du montage suivant et préciser ses valeurs limites.

Exercice 3:
1. Considérant le circuit de la figure suivante.
Déterminer, sous la condition R3 = R1 et R4 + R5 =
R2, l'expression du courant IL fourni à la charge RL.
2. Quelle est la fonction ainsi créée ?
3. Sachant que pratiquement on choisit R5 << R4,
proposez des résistances telles que le courant
IL=5mA lorsque U1=-5V.

Exercice 4:
Dans le circuit ci-contre, le transistor agit comme un
commutateur commandé par un signal carré de
fréquence f0=1kHz.
1. Calculez le gain du circuit lorsque le commutateur est
ouvert ou fermé.
2. Dessinez la tension de sortie u2(t) lorsque

𝑢1 (𝑡) = 5 𝑠𝑖𝑛(2𝜋100𝑡).

Exercice 5:
1. Calculez vs en fonction de v1 et v2 dans le cas où R = R', R1 = R'1 et R2 = R'2
2. Quelle est la fonction réalisée ?

CI. SEER 1 & GECSI1 A. RAIHANI Page 5


Université Hassan II de Casablanca - ENSET Mohammedia Fonctions d'électronique analogique

Exercice 6:
𝑣𝑠 1
Le circuit suivant a objectif de réaliser la caractéristique suivante : = 𝛼 𝑅 . Le circuit sera étudié en
𝑣𝑒 𝐶
premier lieu par morceau, en effet les montages des amplificateurs 1 et 2 correspondent au même bloc
fonctionnel et l’amplificateur 3 à un autre. Les résistances R0 sont en dehors de ces blocs, elles les relient
entre eux dans le montage final. On donne 𝑅1 = 𝑘. 𝑅2 , 𝑅4 = 𝑙. 𝑅3 et 𝑅′ = 𝑅. Les amplificateurs
opérationnels sont considérés comme idéaux.

𝑣
1. Bloc 1 (AOP1 et 2) Démontrer qu’en régime linéaire, 𝑖 = −𝑘𝑅. Exprimez la tension de sortie v1 en
fonction de v et k. Quelle est la condition pour que l’amplificateur opérationnel ne sature pas ? Que
devient la caractéristique v/i en saturation ?
2. Bloc 1 (AOP 3) Quelle est la fonction réalisée par ce circuit en régime linaire ? Quelle est la
condition sur v1pour que le régime linaire reste valide ?
3. Montage global Redessinez le montage en remplaçant les amplificateurs opérationnels par un
circuit équivalent suivant les résultats des deux questions précédentes. Exprimez alors :
a. v1 en fonction de ve et v2 en fonction de vs,
b. v2 en fonction de ve et ie,
c. v3 en fonction de v1,
d. vs en fonction de v3.
4. A partir des cinq équations obtenues, déterminer les cinq tensions inconnues en supposant ie
donnée. Calculez alors ve en fonction de ie et vérifiez que le circuit réalise la fonction voulue. Que
vaut  ?

CI. SEER 1 & GECSI1 A. RAIHANI Page 6


Université Hassan II de Casablanca - ENSET Mohammedia Fonctions d'électronique analogique

SERIE 3

Exercice 1:
On considère le montage de la figure 1.
1. Exprimer Vs en fonction de Ve, n et a.
2. Donner le gain maximal et minimal de ce montage

Exercice 2 :
1. Donner l'expression du la tension Vs en fonction des trois entrées dans le cas du montage de la
figure 2.
2. En déduire la fonction du montage.

Exercice 3 :
Soit le montage de la figure 3 :
1. Déterminer les expressions de V1 en fonction de VE1 pour chaque position de l’interrupteur
électronique K qui s’ouvre ou se ferme selon la valeur de V3.
2. Tracer la caractéristique V3 en fonction de V2 du trigger, avec Vsat = 14V et R1 = R2.
3. Tracer en correspondance de temps, V2(t) et V3(t) sur une période d’oscillation, en précisant
l’état de l’interrupteur K.
4. Calculer l’expression de la fréquence d’oscillation en fonction de VE1, Vsat, R et C et la mettre sous
la forme f = α.VE1 où α est une constante.
5. Donner une application de ce montage

Figure 1 Figure 2

Figure 3

CI. SEER 1 & GECSI1 A. RAIHANI Page 7


Université Hassan II de Casablanca - ENSET Mohammedia Fonctions d'électronique analogique

SERIE 4

Dans la suite, tous les AOP sont supposés parfaits et sont alimentés avec ±Vcc= ±15V
Exercice 1 :
I. On considère le montage de la figure 1 où l’entrée Vref(t) est un signal en dent de scie de fréquence 𝑓 =
25 𝐾𝐻𝑧 et d’amplitude maximale 10V et l’entrée Ve(t) est un signal sinusoïdal comme l’indique le
graphe de la figure 2.

Figure 1 Figure 2

1. Quel est le nom du montage de la figure 1. Justifier votre réponse.


2. Déterminer les valeurs de Vs dans les deux cas suivants :
a. Ve(t) > Vref(t)
b. Ve(t) < Vref(t)
3. Représenter l’allure de Vs(t) selon les variations de Ve(t) et de Vref(t), en précisant Ve(t) et Vref(t)
4. Interpréter l’allure de Vs(t).

II. Afin d’éviter les inconvénients du montage de la figure 1, on utilise le circuit de la figure 3 où Vref est
supposée continue et de valeur fixe.

Figure 3

1. Rappeler les inconvénients du circuit de la figure 1 et donner le nom de celui de la figure 3.


2. Donner les expressions des seuils de basculement du circuits (figure 3). On note le seuil de
basculement du Haut vers le Bas (VHB) et celui du Bas vers le Haut (VBH).
3. Tracer l'allure de la caractéristique de transfert de tel montage.
𝑅
4. On souhaite avoir : VBH=5V et VHB=1V. Calculer le rapport 𝑅2 puis la valeur de Vref?
1
5. Sachant que Ve(t) est un signal sinusoïdal d'amplitude 8V, tracer l’allure de Vs(t).

CI. SEER 1 & GECSI1 A. RAIHANI Page 8


Université Hassan II de Casablanca - ENSET Mohammedia Fonctions d'électronique analogique

Exercice 2 : Etude d'une chaine d'acquisition de donnée


Définition :
"L’association capteur-conditionneur détermine les caractéristiques du signal de sortie. La chaîne
d’acquisition doit être considérée dans son ensemble, ses caractéristiques sont déterminées de
manière à répondre à l’application visée. Les divers dispositifs constituants la chaîne d’acquisition et
sa structure doivent permettre le mesurage, le traitement et la restitution de la mesure avec les
caractéristiques nécessaires à l’application : résolution, précision, rapidité et immunité aux
parasites."

1. Définir un capteur et rappeler ses principales caractéristiques.


2. Quel est le rôle du conditionneur.
3. Définir les termes suivants, en les associant aux différents composants de la chaine d’acquisition :
résolution, précisions, rapidité, immunité aux parasites, fréquences d'échantillonnage.

On désire élaborer une chaine d'acquisition de 8 entrées et 4 sorties conformément au synoptique de la


figure 4.

Figure 4
4. Proposer un schéma synoptique de la carte d'acquisition/restitution en précisant le rôle de chaque
bloc.

CI. SEER 1 & GECSI1 A. RAIHANI Page 9


Université Hassan II de Casablanca - ENSET Mohammedia Fonctions d'électronique analogique

SERIE 2

Etude d'une chaine d'acquisition de température


I. Présentation :
Dans ce sujet, on propose d'étudier une chaine d'acquisition de la température d'un four en vue de sa
régulation. En effet, il s'agit d'un montage électronique qui a pour fonction de recueillir et transformer la
température à mesurer sous une forme adaptée à son exploitation en utilisant les étages nécessaires pour
telle fonction. Le schéma fonctionnel de tel système est donné par la structure de la figure 1.
Il est constitué :
• d'un capteur de température à base d'une diode Zener LM135 (FP1)
• d'un étage de conditionnement fournissant une tension proportionnelle à la température (FP2)
• d'un filtre passe bas (FP3)
• d'un étage de numérisation du signal (FP4)
• d'un système numérique de traitement (FP5)

Notre étude portera sur les seules parties fonctionnelles FP1, FP2 et FP4

FP1 FP2 FP3 FP4 FP5


T Capteur
Amplification Filtrage Numérisation Traitement
LM135

Figure 1

Dans la suite, tous les amplificateurs opérationnels sont supposés idéaux.


II. Etude qualitative :
Donner la fonction et le rôle de chaque bloc.

III. Etude du capteur :

Le capteur de température est une diode Zener LM135 branchée


comme l’indique la figure 2.
La sensibilité s de la tension Zener Vz en fonction de la température T Vz
𝑑𝑉
est définie par 𝑑𝑇𝑧 = 10 𝑚𝑉/°𝐶.
On donne la tension Vz à 25°C, Vz(25)=2.982V et E0=5V

Figure 2
1. Calculer la valeur de R0 pour que le courant Iz à 25°C soit de 15mA.
2. Calculer les coefficients a et b sachant que Vz(T) = a.T + b.

IV. Etude de l'étage de conditionnement :

1. Soit le montage de la figure 3 où R1=10KΩ et


R2=100KΩ.
a. Exprimer Vs en fonction de Ve, R1 et R2.
b. En réalité la tension Ve est celle délivrée par la Vs
diode Zener, Vz(T). Que devient alors la relation
établie en a. ?
Figure 3:

CI. SEER 1 & GECSI1 A. RAIHANI Page 10


Université Hassan II de Casablanca - ENSET Mohammedia Fonctions d'électronique analogique

2. On considère le montage de la figure 4 dans lequel Figure 4:


R3=R4=R5=100KΩ
a. Exprimer Vs’ en fonction de Ve’, E et des
résistances du montage. V e'
Vs'
b. Sachant que Ve’= Vs , Vs et Ve étant définies sur
la figure 3, quelle relation doit être vérifiée par
les résistances R4 et R5, afin que Vs’ soit de la
forme Vs’= β.Ve –E ?

3. Le montage électronique complet est donné par la figure 5.

Vs'

Figure 5

En s’aidant des résultats précédents,


a. Donner la condition sur E pour que Vs’= K T, où K est une constante que l’on déterminera en
fonction des données du problème.
b. Quel est alors le rôle de E?

V. Etude de l'étage de numérisation :

Cet étage est constitué d'un échantillonneur-bloqueur (EB) et d'un convertisseur analogique numérique
(CAN). La tension V's est représentée par ue.

1. Donner le rôle du EB et ses caractéristiques


2. Le CAN utilisé est un convertisseur simple rampe, dont le schéma de principe est donné par la figure
6. A la fermeture de l’interrupteur K, le contenu du compteur est égal à zéro et la tension ue(t) à
convertir est maintenue constante pendant la période TH . L’image N2 de la tension ue(t) se trouve en
sortie du compteur.
a. Donner l’expression de ur(t) en fonction I0, C et t.
b. Représenter l’allure de ur(t) et ue sur un même graphique en faisant figurer l’intersection de
ces deux courbes à l’instant t0 .
c. Donner la relation entre t0, N10 et TH .
d. Exprimer ue en fonction de I0, C, N10 et TH
e. Donner les avantages et les inconvénients de tel CAN.

CI. SEER 1 & GECSI1 A. RAIHANI Page 11


Université Hassan II de Casablanca - ENSET Mohammedia Fonctions d'électronique analogique

Figure 6

VI. Synthèse :

On désire avoir une chaîne de mesure fermée pour de restituer l'évolution de la température du four.
Donner le schéma bloc de la chaine de retour et décrire chacun de ses blocs.

CI. SEER 1 & GECSI1 A. RAIHANI Page 12


Université Hassan II de Casablanca- ENSET Mohammedia - Microcontrôleur-DSP

SERIE 1

Exercice 1 :
Ecrire le programme pour additionner deux nombre de 16 bits. Les deux nombres sont stockés
à partir de l’adresse $0100. Le résultat sera stocké à partir de l’adresse $0104.

Exercice 2 :
Stocker le plus grand des deux nombres, se trouvant respectivement aux adresses $0200 et
$0201, à l’adresse $0202.

Exercice 3 :
Recopier les éléments de la liste Lsource, commençant à l’adresse $0500, vers une liste Ldest
qui commence à l’adresse $0600.

Exercice 4 :
Inverser les éléments d’une liste afin que le premier élément prenne la place du dernier et vis
versa, le deuxième avec l’avant dernier et ainsi de suite.

Exercice 5 :
Chercher si le caractère, stocké préalablement à l’adresse $0100, figure parmi les 20 éléments
d’une liste commençant à l’adresse $0102. Si oui on stockera 1 à l’adresse $0101, sinon on y
stockera 0.

Exercice 6 :
Déterminer la fréquence d’apparition d’un caractère, stocké préalablement à l’adresse $0100,
dans une liste de 20 éléments et commençant à l’adresse $0102.

Exercice 7 :
Ajouter un élément à une liste. Cette élément est stocké à Majout ($0300) et dont le rang est
stocké à l’adresse Mrang ($0301).

Exercice 8 :
Supprimer un élément, préalablement stocké à l’adresse Msupp ($0100), d’une liste de 10
élément et commençant à l’adresse $0200.

Exercice 9 :
On désire écrire un programme qui :
 lit, caractère par caractère, un bloc mémoire source de 128 caractères (codés en ASCII)
débutant à l'adresse SOURCE ($E000),
 trie entre les caractères de code ASCII inférieur à $20 (ce sont les caractères de contrôle
comme ESC, ETX, etc.) et les autres caractères de code ASCII supérieur ou égal à $20
(caractères alphanumériques),
 envoie les caractères de contrôle dans un bloc débutant à l'adresse CTRL ($E180), et les
autres caractères dans un bloc débutant à l'adresse ALPHAN ($E100)

TD- µC-DSP Pr. A. RAIHANI Page 1


Université Hassan II de Casablanca- ENSET Mohammedia - Microcontrôleur-DSP

SERIE 2

Exercice 1 :

Soit le système à microprocesseur de la figure 1 :

D0…D7

A0…A15 A0…A11 A0…A10


Mem1 Mem2

Processeur A12…A15
Décodage

Figure 1

1. Donner le format des mots traités par le microprocesseur


2. Donner l’espace total adressable par le microprocesseur en bits et en octets
3. Quel est le rôle du signal R / W ?
4. Quel est le rôle des entrées CS1 et CS 2 ? Préciser l’état d’activation de ces entrées.
5. Quelle est la capacité de la mémoire Mem1 ?
6. Quelle est la capacité de la mémoire Mem2 ?
7. Préciser le type des mémoires Mem1 et Mem2.
8. Quel est le rôle du bloc du décodage ?
En effet le bloc de décodage est donné par la
figure ci-contre.
9. Donner les conditions pour la sélection des
deux mémoires
10. En déduire les différentes adresses occupées
par chacune de ces mémoires.

Exercice 2 :

Pour commander un moteur pas-à-pas, il est nécessaire de générer les signaux de commande
conformément aux chronogrammes de la figure 2-b. Les enroulements 1, 2, 3 et 4 du moteur
sont commandés par le PORTA du µC 68HC11 selon la figure 2.a.

Ainsi, en en envoyant successivement un courant dans les enroulements 1, 2, 3, 4, on assure la


progression pas à pas du moteur.

TD- µC-DSP Pr. A. RAIHANI Page 2


Université Hassan II de Casablanca- ENSET Mohammedia - Microcontrôleur-DSP

Pour pouvoir facilement choisir la combinaison des signaux à envoyer au moteur, il est
commode de placer ces codes dans un tableau TAB, qui se présentera suivant la forme ci-
contre.
Etat 1 2 3 4
TAB $88 ........ ........ ........ ........ $99

Les codes $88 et $99 serviront de "butée" pour que le programme fournisse l'état 1 après l'état
4.

PA4 1
PA5 2 MPP 1
PORT A
PA6 3
PA7 4 + 2

4
68HC11 Figure 2.a
t1 t2 t3 t4 t1
Figure 2.b

1- Compléter le tableau suivant pour les différents états :

PA7 PA6 PA5 PA4 Valeur hexa


1
2
3
4

2- Donner les directives assembleur pour placer les valeurs hexa correspondant aux différents
états en mémoire "Tab" à partir de l'adresse $0000.
3- Comment configurer le port A ? Donner la suite des instructions pour ce faire.
4- Ecrire le programme "PRG" pour faire tourner le MAP continuellement.

On donne les adresses suivantes :


PRG = $C000, PORTA=$1000, PACTL=$1003 et TAB:$0000

Exercice 2 :
Ecrire un programme pour afficher le chiffre hexadécimal (0-F) placé à la case mémoire
d'adresse $0300 (data) sur un afficheur 7 segments à anode commune (AC). Le schéma de
câblage est donné par la figure 3.

TD- µC-DSP Pr. A. RAIHANI Page 3


Université Hassan II de Casablanca- ENSET Mohammedia - Microcontrôleur-DSP

0 a a
f b
Port B g
g e c
7 AC
d
Figure 3

1. Quelle est la condition pour allumer un segment ?


2. Donner la table de correspondance entre les codes binaires et les codes hexadécimaux
de tous les chiffres qu'on désire allumer (0 à F).
3. Donner la directive pour placer ces codes hexa dans une table commençant à l'adresse
$0000.
4. Ecrire le programme complet.
5. Modifier le programme précédant pour afficher tous les chiffres de la table (penser à
utiliser une temporisation entre deux opérations d'affichage successives).

Exercice 2 :
On désire réaliser un affichage sur deux digits des valeurs décimales comprises entre 0 et 99.
Les différentes valeurs (formées par des combinaisons des chiffres 0 à 9) sont supposées
placées à la case mémoire d'adresse $0300 (data). Pour ce faire, on propose une carte
d'affichage conformément au schéma de câblage est donné par la figure 4.

Le principe retenu pour afficher un nombre sur les 2 afficheurs (cathode commune) est le
suivant :
Le microcontrôleur

 lit la valeur à afficher,


 isole le digit unité (mot binaire compris entre 0 et 9)
 l'envoie sur un port (bits A0 – A3) tout en sélectionnant le 1er circuit BCD (4511) qui
doit lire et mémoriser l’information par activation de l'entrée EL.
Il va ensuite à nouveau

 lire la valeur à afficher,


 isoler le digit dizaine (mot binaire compris entre 0 et 9)
 l'envoyer sur le port (bits A0 – A3) tout en sélectionnant le 2ème circuit BCD (4511)
qui doit lire et mémoriser l’information.
Ainsi, le mot de commande à envoyer, sur le port en question, doit être composé de la valeur
à afficher (sur A0,A1,A2,A3) et du code de sélection de l’afficheur ( sur A4, A5):

TD- µC-DSP Pr. A. RAIHANI Page 4


Université Hassan II de Casablanca- ENSET Mohammedia - Microcontrôleur-DSP

A7 A6 A5 A4 A3 A2 A1 A0

NC NC Sélection de l’afficheur Valeur à afficher

A5 A4 Afficheur Sélectionné

0 1 1

1 0 2

Figure 4

6. Proposer un port pour la gestion de cet affichage. Justifier votre choix.


7. Ecrire le sous-programme (Unit) pour isoler les unités.
8. Ecrire le sous-programme (Tens) pour isoler les dizaines.
9. Ecrire le programme complet.

TD- µC-DSP Pr. A. RAIHANI Page 5


Université Hassan II de Casablanca- ENSET Mohammedia - Microcontrôleur-DSP

SERIE 3
Exercice 1 :
A l’aide d’un DSP 16 bits virgule fixe, on aimerait additionner les deux nombres suivants :
a=2.845 et b=4.2989
1- Exprimer les nombres a et b en mode fractionnaire (aq et bq) avec, pour chaque nombre,
la meilleure résolution possible.
2- Déterminer l’erreur absolue de quantification de a et de b.
3- Effectuer la somme des grandeurs quantifiées yq=aq+bq et définir le meilleur format du
résultat.
4- Faire la somme de a et b avant quantification puis exprimer le résultat en mode
fractionnaire y’q dans un format donnant la meilleure résolution possible.
5- Comparer les deux résultats 3- et 4-

Exercice 2 :
On dispose d’un DSP 16 bits virgule fixe et ayant trois plan mémoires : MP(programme),
DM1(mémoire 1 de données) et DM2(mémoire 2 de données). A l’aide ce DSP, on désire
calculer le polynôme suivant :
y  a1 x  a2 x 2  a3 x 3 avec a1=1.751, a2=3.5625, a3=-2.625 et x   1 , 1 .
1. De quel type d’architecture s’agit-il ?
2. Donner le format le mieux adapté pour coder chacune des 3 constantes.
3. En déduire le format commun pour coder les 3 constantes
4. Exprimer l’équivalent en virgule fixe deux constantes (dans le format normalisé).
5. Déterminer la valeur maximale que peut prendre x. En déduire la valeur maximale de
y.
6. Déterminer la valeur minimale de y.
7. Donner le format de y permettant d’éviter toute saturation lors du calcul de ce
polynôme.

Exercice 3 :
N 1
On désire calculer un filtre RIF d'ordre N : yn   ai xn  i
i 0

Les coefficients ai ainsi que les échantillons d'entrée xn-i sont codés par des entiers signés Ai et Xi
sur N1=16 bits. Les échantillons de sortie yn sont également codés sur N1 bits.
Les calculs intermédiaires se font par contre à l'aide d'un accumulateur de N2=40 bits.
1. Quelle est la dynamique d'un produit entier Pi=Ai.Xn-i ?
2. Quelle est la dynamique des entiers représentables au sein de l'accumulateur ?
3. Quel est le nombre maximal Nbmax de produits Pi que l'on peut additionner dans l'accumulateur
sans risque de saturation ?
4. On considère un signal audio de qualité HiFi en entrée du filtre (Fe =44.1KHz), quel doit-être
le temps de cycle et la capacité mémoire d’une machine DSP réalisant multiplication et addition
en parallèle pour N=5.

TD- µC-DSP Pr. A. RAIHANI Page 6


ENSET Mohammedia Traitement du signal

Les nombres complexes


Les nombres complexes sont extrêmement importants en traitement du signal. Nous rappelons ici les
notions les plus importantes.
Forme algébrique d’un complexe :
 x : partie réelle de z
z  x  i. y avec 
 y : partie imaginaire de z
Forme exponentielle (trigonométrique) :
r : le module de z
z  r .e i avec 
  : l' argument de z
Description géométrique :
On comprend mieux les deux formes en examinant la représentation d’un complexe dans le plan de
Gauss : Im(z)

 Re(z)
O x
Formule de transformation
Exp. 
 Alg Alg. 
 Exp.
x  Rez   r. cos r z  x2  y2
y  Imz   r. sin x
tan  
y
Opérations avec les complexes :
- Addition-soustraction :
Pour additionner (soustraire) deux nombres complexes, la forme algébrique est indispensable.
z1  z 2   x1  i . y1    x 2  i . y 2    x1  x 2   i  y1  y 2 
z1  z 2   x1  i . y1    x 2  i . y 2    x1  x 2   i  y1  y 2 
- Multiplication-Division :
z1 .z 2  r1 .e i 
1
. r2 .e i   r1 .r2 .e i   
2 1 2

z1 r1 .e i r1

 i
 1 e i    1 2

z 2 r2 .e r2
2

- Conjugué complexe :
Pour tout nombre complexe z  x  i . y , on définit le conjugué complexe z *  x  i. y .
 Re z   Re z *  , Im z    Im z * 
 z  z* , z   z *
 z  z *  2. Re z   2.x
 z  z *  2.i . Im z   2.i . y
 z .z *  z 2  x 2  y 2
 z / z *  e i 2

Formulaires de Maths Pr . A. RAIHANI Page 1


ENSET Mohammedia Traitement du signal

Tables de trigonométrie :

Formules fondamentales :
1
cos2 x  sin2 x  1 1  tan2 x 
cos2 x
Formules d’Euler:
cos x  i. sin x n  cos nx  i. sin nx

e ix  e  ix e ix  e  ix sin x e ix  e  ix
cos x  i . sin x  e ix cos x  sin x  tg x   i ix
2 2i cos x e  e  ix

2. cos x  1  e  i 2 x .e ix  
2.i. sin x  1  e  i 2 x .e ix

Formules d’addition :

cosa  b   cos a . cos b  sin a . sin b cosa  b   cos a . cos b  sin a . sin b
sina  b   sin a .cos b  cos a . sin b sina  b   sin a . cos b  cos a . sin b
tan a  tan b tan a  tan b
tana  b   tana  b  
1  tan a . tan b 1  tan a . tan b

Formules de l’angle double :

  cos 2 a  sin 2 a
 sin 2a  2 sin a .cos a
  2. cos a  1
2

cos 2a   1- 2 . sin 2 a
2 tan a
 1  tan 2 a tan 2a 
 1  tan 2 a
 1  tan 2 a

Formule de produit en somme :


1
cos a . cos b  cosa  b   cosa  b 
2
1
sin a . sin b  cosa  b   cos a  b 
2
1
sin a . cos b  sina  b   sina  b 
2

Formule de somme en produit :


pq pq pq pq
cos p  cos q  2 cos . cos sin p  sin q  2 sin . cos
2 2 2 2
pq pq pq pq
cos p  cos q  2 sin . sin sin p  sin q  2 sin . cos
2 2 2 2

Formulaires de Maths Pr . A. RAIHANI Page 2


ENSET Mohammedia Traitement du signal

Dérivées et primitives

Primitive (à constante près) Fonction Dérivée


1 cosax  b   a sinax  b 
sinax  b 
a
1 sinax  b  a cos ax  b 
 cos ax  b 
a
1 ax  b e ax  b a .e ax  b
e
a
1 xn n. x n 1
x n 1 n  -1
n 1
ax ax a x ln a
a  0 et a  1
ln a

Intégration par partie :


Si f et g sont dérivables sur [a,b] alors
 f .g 
'
 f ' .g  f .g '
d’où :
 f  x g  x dx    f  x g  x  dx   f  x g  x dx
b b b
' ' '

a a a

C’est-à-dire :

 f  x g  x dx   f  x g x a   f  x g x dx


b b
' 'b

a a

Exemple :

Soit à calculer I   x sin xdx
0

 f  x   x et g '  x   sin x
d’où : I   x cos x 0   1.cos x .dx    sin x 0  

 
On pose :  '
 f  x   1 et g  x    cos x 0

Formulaires de Maths Pr . A. RAIHANI Page 3


Université Hassan II de Casablanca - ENSET M- TD : Traitement du signal

TRAVAUX DIRIGES
SERIE 1
Exercice 1 :
1. Calculer la valeur moyenne et la valeur efficace d’un signal carré, compris entre 0 et 5V, de rapport cyclique 1/2.
2. Même chose pour un rapport cyclique 1/3.
3. Calculer la valeur moyenne d’un signal sinusoïdal d’amplitude A, défini par :𝑠(𝑡) = 𝐴. 𝑐𝑜𝑠(𝜔𝑡 + 𝜑).
4. Calculer la valeur efficace de ce signal.

Exercice 2 :
Soit x(t) un signal carré logique TTL (état bas : 0V ; état haut : 5V) de rapport cyclique 1/2 et de période T=0,1s.
1. Calculer son énergie sur une période. En déduire son énergie totale.
2. Calculer sa puissance totale et sa puissance moyenne.
3. En déduire sa valeur efficace.

Exercice 3 :
Calculer l’énergie et la puissance totales des signaux suivants (on prendra T=1 quand nécessaire pour les applications
numériques) :
1. Echelon de Heaviside
2. Fonction porte de largeur T et de hauteur 1/T, centrée sur 0

Exercice 4 :
Développer en série de Fourier les signaux suivants :
x2(t)
x1(t) x3(t)
E
E E

-T/4 +T/4 t
Exercice 2 :
 T
0 si t 
On considère le signal x(t) défini par : x( t )   2
T
 1 si t 
 2
1- Calculer la transformée de Fourier de x(t).
2- En déduire la TF du signal défini par la figure ci-contre :

SEER1 (2017-2018) A. RAIHANI Page 1


Université Hassan II de Casablanca - ENSET M- TD : Traitement du signal

Exercice 5 :

On considère le signal x(t) représenté à la figure suivante :

1. Déterminer la décomposition en série de Fourier complexe du signal x(t).


2. Représenter son spectre d'amplitude.

Exercice 6 :
On considère un SLIT dont la réponse en fréquence est représentée sur la figure fig.2
H (w )
1

fig.2 w
5 5

2 2
Ce système est attaqué par le signal x(t) représenté à la figure fig.3.
x(t)

1 1 1
1 
4 4
fig.3
1- Déterminer la décomposition en série de Fourier du signal d’entrée x(t).
2- Représenter son spectre d'amplitude.
3- En déduire l’expression du signal de sortie y(t). Représenter son spectre d'amplitude.
4- Déterminer la puissance moyenne de x(t) et celle de y(t).

Exercice 7 :
 t 0
U 0 cos( 2f 0 t ) si t  2
Soit le signal y( t )   , Calculer la TF de y(t)
t
0 si t  0
 2

Exercice 8 :
On considère le signal de la figure suivante :
5- Représenter la dérivée de x(t) notée x'(t).
6- Calculer la transformée de Fourier de x'(t).
7- En déduire celle de x(t).

SEER1 (2017-2018) A. RAIHANI Page 2


Université Hassan II de Casablanca - ENSET M- TD : Traitement du signal

Exercice 9 :
Soit le signal 𝑥(𝑡)suivant :
𝑥(𝑡) = 4 − √7. cos(2𝜋𝑓 𝑡) + 3. sin(2𝜋𝑓 𝑡) avec 𝑓 = 1𝐾𝐻𝑧.
3. Donner les coefficients de Fourier pour 𝑥(𝑡)
4. Représenter son spectre unilatéral et bilatéral

Exercice 10 :
On attaque un système par une sinusoïde 𝑥(𝑡) d’amplitude 10V et fournit une sinusoïde 𝑦(𝑡) saturée à ±9V. La
figure ci-dessous présente 𝑥(𝑡) et 𝑦(𝑡) avec les spectres correspondants. Sachant que les composantes spectrales
unilatérales fournies par l’analyseur spectral sont les suivantes :
Déterminer :
1- La valeur moyenne de 𝑥(𝑡) et de 𝑦(𝑡).
2- L’amplitude et la fréquence du fondamental
3- La fréquence des différents harmoniques.
4- Si on rejette toute fréquence introduisant une atténuation de 50dB, quelle sera la largeur de la bande occupée
par 𝑦(𝑡).

SEER1 (2017-2018) A. RAIHANI Page 3


Numérisation du signal

T.D : Eude de l'échantillonnage

I- Echantillonnage d'un signal sinusoïdal :


Un commutateur analogique K découpe, au rythme d'un signal d’horloge h, le signal d'entrée e. Il en résulte le signal ee (Figure 1et
Figure 2).
h m

e K ee
Te 1

Te
H
t t
Te Te
Figure 1 Figure 2 Figure 3

On donne e( t )  E cos t et h( t ) représenté e par :


1.1- Représenter ee(t) lorsque f=1KHz, Fe=10KHz et =0,1.
1.2- Monter que ee(t) s'exprime de façon simple en fonction de e(t) et de m(t) définit par la (Figure 3):
1.3- Décomposer m(t) en série de Fourier. On exprimera les coefficients en fonction de .
1.4- En déduire le décomposition de ee(t). représenter son spectre pour =0,1.

II- Restitution d'un signal échantillonné :


On désire retrouver le signal e à partir du signal ee(t). On réalise pour cela un filtrage passe bas.

ee Filtre e
Passe-bas

2.1- Comment choisir Fe par rapport à f pour pouvoir retrouver e à partir de ee(t) par un filtrage passe bas idéal ?
2.2- Donner l'expression de e(t) reconstitué pour 0.

III- Echantillonnage d'un signal non sinusoïdal :


Le signal découpé par le commutateur analogique est non sinusoïdal. Il est de la forme:
e( t )  E cos t avec f=1KHz.
3.1- Quelle est la fréquence f' de e(t)?
3.2- Montrer que e(t) peut se mettre sous la forme:

e( t )  E0   an cos( n 2f ' t )
n 1
Donner les expressions de E0 et an.
3.3- A partir de quel rang n, l'amplitude des harmoniques est-elle au moins 100 fois plus faible que celle du fondamental ?
3.4- Quelle est alors la valeur max de la Fe qu'il faut choisir? Donner alors le nombre d'échantillons nécessaires et représenter
ee(t) dans ces conditions limites.

C.I- GE-SEER 1 1 Prof. A. RAIHANI


UH2C- ENSET Mohammedia TD Filtres numériques

Exercice 1 :
On considère le signal numérique xn représenté par la figure 1 :

Figure 1
On prend Te=1s
1. Donner l’expression temporelle de xn ?
2. Calculer sa transformée en z
3. Rappeler la relation entre la sortie d’un moyenneur glissant d’ordre 3 ayant pour sortie yn et pour
entrée xn.
4. Donner les valeurs de la sortie yn pour x0=1, x1=1.5, x2=2, x3=1.8, x4=1.6 et x5=1 .3 ?

Exercice 2 :
Calculer la TZ des signaux suivants et préciser leurs domaines de convergence :

 x k  1 pour 0  k  k 0
1-  où k est entier positif.
 x k  0 ailleurs
2- y n   n u n   n 1u n où α est entier positif.
3-
4-

Exercice 3 :
Calculer la TZ inverse des fonctions suivantes :
1-
2-

3-
2z
4- F1 ( z ) 
( z  1)( z  0.5)
z
5- F2 ( z )  2
z  5z  6
b  z 1
6- F3 z  
1  az 1

C.I. SEER1 1 Prof. A. RAIHANI


UH2C- ENSET Mohammedia TD Filtres numériques

Exercice 1 :

Dans cet exercice, on propose de faire l’étude d’un filtre numérique à réponse impulsionnelle finie RIF.

Figure 1 Figure 2

Soit la structure de la figure 1 :

1. Que représente l’opérateur z-1 ?


2. Exprimer la relation de récurrence donnant Yn.
3. En déduire la fonction de transfert H(z) du système.
4. Exprimer la fonction de transfert H(z) du système décrit par la figure 2.
5. Quel est l’avantage de la structure de la figure 4 par rapport à celle de la figure 1 ?
6. On applique à l’entrée du système une suite d’impulsion définie par :

[𝑋 ]=[ ] telles que :


1 𝑠𝑖 𝑛 = 0
 = ;
0 𝑠𝑖 𝑛  0
En utilisant la relation de récurrence, déterminer la réponse impulsionnelle du filtre.
Justifier la dénomination du filtre RIF (Réponse Impulsionnelle Finie).
7. On étudie le comportement du filtre en régime sinusoïdal :
𝑋 = 𝐸. 𝑐𝑜𝑠(𝑛. . 𝑇 )
7.1- Exprimer 𝑌 sous la forme :
𝑌 = 𝑆. 𝑐𝑜𝑠(𝑛. . 𝑇 + )
Préciser 𝑆 et .
7.2- Tracer 𝐻 = 𝑆/𝐸 en fonction de f/fe pour 0  𝑓  2. 𝑓
7.3- Que peut-on dire de la réponse en fréquence d’un filtre numérique ?

Exercice 2 :
On considère un système linéaire invariant régi par l’équation aux différences suivante :
1
𝑦[𝑘] = [𝑥(𝑘 + 𝑚) + 𝑥(𝑘 + 𝑚 − 1) + 𝑥(𝑘 + 𝑚 − 2)]
3
Où 𝑚 est un paramètre entier.
1- Etudier la stabilité et la causalité de ce système selon les valeurs de 𝑚.
2- Calculer la fonction de transfert en 𝑧 pour 𝑚 = 0 et 𝑚 = 1, et en déduire la réponse fréquentielle.
3- Quel est l’effet de ce système.

Exercice 3 :
Soit le filtre numérique : 𝑦(𝑛) = 𝑦(𝑛 − 1) + [𝑒(𝑛) − 𝑒(𝑛 − 𝑀)]
1- Calculer la fonction de transfert en 𝑧.
2- Montrer que 𝑦(𝑛)peut se mettre sous la forme : 𝑦(𝑛) = ∑ 𝑒(𝑛 − 𝑖)
Exercice 4 :
Soit le filtre numérique RII du premier ordre suivant :
𝑦(𝑛) = (1 − 𝑏). 𝑥(𝑛) + 𝑏. 𝑦(𝑛 − 1) avec 0 < 𝑏 < 1
1- Déterminer la fonction de transfert en z.
2- Déterminer la réponse en fréquence du filtre.
UH2C- ENSET Mohammedia TD Filtres numériques

3- Donner les valeurs de 𝐻 𝑒 en Ω = 0 et Ω = 𝜋. Quel type de filtre est réalisé ?


4- Déterminer la relation entre la pulsation de coupure normalisée, à  3dB , Ω et le coefficient 𝑏.
5- Pour une fréquence d’échantillonnage de 8𝑘𝐻𝑧, on veut que ce filtre ait une fréquence de coupure à −3𝑑𝐵 à
1𝐾𝐻𝑧. Quelle est la valeur de b ? (5 chiffres de la partie fractionnaire).

Exercice 5 :

Soit le filtre de la structure ci-contre :


1. Donner l’équation récurrente de tel filtre.
2. De quel type de filtre s’agit-il ? justifier
votre réponse.
3. Calculer sa fonction de transfert H(z)
4. Calculer les pôles et les zéros de H(z).
5. Discuter la stabilité de ce filtre.

Exercice 6 :
Les filtres Biquad sont un type de filtre RII bien particulier possédant deux fonctions quadratiques dans leur fonction de
transfert. Ils permettent, en adaptant leurs coefficients, de réaliser la plupart des opérations de filtrage possible, passe-
haut, passe-bas, passe-bande et coupe-bande. Une structure possible de ces filtres est donnée par la figure 2 :

xn a0 yn
+ +

z-1 z-1
a1 + + b1

z-1 z-1

a2 b2
Figure 2

1- Donner son équation récurrente ?


2- En déduire sa fonction de transfert.
3- Etudier la stabilité de tel filtre pour b1=-1 et b2=2.

Exercice 7 :
On considère les trois filtres du second ordre :
𝐻 (𝑧) = 𝑏 + 𝑏 𝑧 + 𝑏 𝑧 avec 𝑖 = 0,1,2
1- Donner l’expression de l’équation de récurrence de ces filtres.
2- Donner une structure de réalisation de ces filtres.
3- Soit 𝑀(𝑧) la mise en parallèle de ces filtres : 𝑀(𝑧) = 𝐻 (𝑧) + 𝐻 (𝑧) + 𝐻 (𝑧). Calculer la fonction de transfert
𝑀(𝑧).
4- Donner l’expression d’une mise en cascade de ces filtres notée 𝑁(𝑧).
5- Quelle est la complexité du filtrage de type 𝑁(𝑧) en nombre de multiplications et d’additions.
6- On considère un signal audio de qualité 𝐻𝑖𝐹𝑖 en entrée du filtre 𝑁(𝑧) (𝐹 = 44.1𝐾𝐻𝑧), quel doit-être le temps
de cycle et la capacité mémoire d’une machine DSP réalisant multiplication et addition en parallèle.
UH2MC- ENSET Mohammedia Gisement éolien

SERIE 1

Exercice 1 :

On a relevé les 5 vitesses du vents : 2, 4, 7, 8 et 9 m/s, calculer


1. La vitesse moyenne
2. La variance et l'écart-type.

Exercice 2:

Les mesures des vitesses du vents sont résumées dans le tableau suivant :
i 1 2 3 4 5 6 7
vi (m/s) 0 1 2 3 4 5 6
mi 0 0 15 42 76 51 27
1. Calculer p(vi) et F(vi) pour chaque vitesse du vent.
2. Calculer la probabilité pour que la vitesse du vent soit supérieure ou égale à 5m/s.

Exercice 3 :

On réalise des mesures de la vitesse du vent, à une hauteur de10 m, dans un site caractérisé par une
rugosité de 0.25 et un modèle de Weibull ayant c=6m/s et k=1.8.
1. Durant combien d'heures par an la vitesse du vent peut être comprise entre 6.5 et 7.5 m/s ?
2. Donner la probabilité pour que cette vitesse soit supérieure à 5 m/s ?
On installe une éolienne à une hauteur de 30m. A cette hauteur, l'éolienne est caractérisée par une vitesse
de démarrage de 6m/s et une vitesse maximale de 21m/s.
3. Déterminer la durée de fonctionnement de cet appareil pendant 24h ?
4. Donner la probabilité pour que la vitesse excède 30 m/s ?

Exercice 4:

1. Un anémomètre, installé à 10m avec =0.2, indique une vitesse du vent de 5m/s. Calculer la
puissance éolienne spécifique (W/m2) à une hauteur de 50m.
2. On installe un aérogénérateur bipale, de 30m de diamètre, sur un mât de 50m. Calculer le rapport
des puissances bout des pales en position verticales. Conclure.

Exercice 5:

Une éolienne tripale, de diamètre 40m, produit une puissance de 600 KW à une vitesse de 14m/s.

TD : GES A. RAIHANI Page 1


UH2MC- ENSET Mohammedia Gisement éolien

1. Déterminer la vitesse de rotation du rotor (tr/mn) lorsque cette éolienne fonctionne à une vitesse
spécifique de 4 ?
2. Donner la vitesse en bout des pales (m/s).
3. Déterminer le rapport de multiplicateur pour faire tourner le générateur à 1800 tr/mn.
4. En déduire le rendement total de l'éolienne.

Exercice 6 :

La puissance électrique d’une éolienne peut être modélisée par les équations suivantes :

0 (𝑣 < 𝑉 ) 𝑘 𝐹𝑎𝑐𝑡𝑒𝑢𝑟 𝑑𝑒 𝑓𝑜𝑟𝑚𝑒 𝑑𝑒 𝑊𝑒𝑖𝑏𝑢𝑙𝑙


⎧ ⎧
𝑎 + 𝑏. 𝑣 (𝑉 ≤ 𝑣 ≤ 𝑉 ) ⎪ .
𝑃𝑒 = où 𝑎 =
⎨𝑃 (𝑉 ≤ 𝑣 ≤ 𝑉 ) ⎨
⎩ 0 (𝑣 > 𝑉 ) ⎪𝑏 =

1. Montrer que la puissance électrique moyenne produite par l'éolienne 𝑃 , est de la forme :
𝑃, = 𝐶 .𝑃

On désire installer une éolienne de type MOD-2 (91m de diamètre), à une hauteur de 50m, dans un site
caractérisé par c=9m/s et k=2.3. Les MOD-2 ont une puissance de 2500KW à une vitesse nominale de
12.4m/s à la hauteur du mât.
2. Donner la valeur optimale de VR ?
3. Calculer Cf de votre éolienne optimisée ?
4. Donne la puissance moyenne et l'énergie annuelle produite par une telle éolienne.

TD : GES A. RAIHANI Page 2


UH2MC- ENSET Mohammedia Gisement éolien

SERIE 2

Exercice 1 :
On considère le schéma de la figure suivante :

1. Montrer que la puissance récupérée par l'éolienne est de la forme : 𝑃 = 𝐶 (𝜆). 𝑃 en explicitant
𝑃 et 𝐶 (𝜆) sachant que 𝜆 = .
2. En utilisant l'expression de 𝐶 (𝜆), déterminer la valeur maximale susceptible d'être prise par
𝐶 (𝜆) .
Exercice 2 :
Une station de mesure de la vitesse du vent, placée dans un site (rugosité 0.25) à une hauteur de 10m,
indique les valeurs (fréquences) suivantes :
7m/s (24), 8m/s (72), 9m/s (85), 10m/s (48) et 11m/s (9)
Dans le même site, on installe une éolienne, de diamètre 30m, sur un mât de 50m.
1. Calculer :
a. La vitesse moyenne du vent reçu par notre éolienne.
b. La variance
c. L’écart type
2. Calculer la probabilité d’observer chacune des vitesses et la fonction de distribution cumulative.

On considère les valeurs approchées des paramètres de Weibull à la hauteur du mât : k=2.6 et c=7m/s.
3. Une bonne approximation du paramètre k, pour le site en question, est donnée par :
𝜎 .
𝑘=
𝑣̅
Donner la valeur approchée du paramètre c.
4. Quelle est la probabilité pour que l’éolienne reçoive une vitesse du vent supérieure à 15m/s ?
5. Pour combien d’heures l’éolienne reçoit un vent d’une vitesse comprise entre 12m et 17 m/s ?
6. Pour combien d’heures l’éolienne reçoit un vent d’une vitesse supérieure à 25 m/s ? Conclure
7. Quelle est la vitesse du vent (Vpp) la plus probable pour ce site ?
8. Calculer l’énergie annuelle totale
9. Calculer l’énergie annuelle correspondante à Vpp
10. Conclure
TD : GES A. RAIHANI Page 3
UH2MC- ENSET Mohammedia Gisement éolien

SERIE 3

On se propose de déterminer les irradiations quotidiennes à Mohammedia (Latitude : 33˚41’N,


longitude :7˚23’ W) à la date du 3 mai 2017 à.

1. Calculer la déclinaison solaire ?


2. Calculez la durée du jour (entre le lever et le coucher). On note qu’en raison de la diffraction, de
la diffusion atmosphérique et du diamètre non nul du Soleil, la durée pendant laquelle le ciel est
lumineux est nettement plus longue.
3. Calculez l’heure du lever et celle du coucher en temps solaire vrai (TSV).
4. Calculez les heures locales correspondantes.
5. A quels azimuts se produisent le lever et le coucher ?
6. A midi TSV que valent la hauteur solaire, l’azimut ?
7. A 9h TSV, avec quel angle d’incidence le rayonnement direct éclaire-t-il le pan Est du toit qui
forme un angle de 40° avec le plan horizontal, le faîte du toit étant dans la direction N-S.
.
8. On suppose que l’éclairement satisfait l’équation 𝐺 ∗ = 𝐺 ∗ . 𝑠𝑖𝑛 +𝜑

a. Déterminer la phase à l’origine .


b. Calculer l’irradiation quotidienne reçue dans ce lieu la même journée.

On donne l’éclairement énergétique globale G∗ = 1000 W/m à midi TSV et la durée


d’insolation Δ𝑇 = 12.5ℎ.

On se propose de déterminer les irradiations quotidiennes à Rabat (latitude 34°N).

1) Déterminer les coordonnées locales du soleil pour la journée du 19 Mai 2016 à savoir la hauteur à
midi solaire, l’angle horaire au coucher, l’Azimut au coucher et la durée du jour (en h).
2) On suppose que l’éclairement satisfait l’équation
𝜋. 𝑡
𝐺∗ = 𝐺∗ . sin ( + 𝜑)
∆𝑇
a. Déterminer la phase à l’origine .
b. Calculer l’irradiation quotidienne reçue dans ce lieu la même journée.

On donne l’éclairement énergétique globale G*max =1000 W/m2 à midi TSV et la durée d’insolation
∆T=12.5h.

TD : GES A. RAIHANI Page 4


ECOLE NORMALE SUPÉRIEURE DE L'ENSEIGNEMENT ‫ﺍﻟﻤﺪﺭﺳﺔ ﺍﻟﻌﻠﻴﺎ لأﺳﺎﺗﺬﺓ ﺍﻟﺘﻌﻠﻴﻢ ﺍﻟﺘﻘﻨﻲ‬
TECHNIQUE DE MOHAMMEDIA
UNIVERSITÉ HASSAN II DE CASABLANCA
ENSET ‫ﺍﻟﻤحﻤﺪيﺔ‬
‫ﺟﺎﻣﻌﺔ ﺍﻟحﺴﻦ ﺍﻟﺜﺎﻧﻲ ﺑﺎﻟﺪﺍﺭ ﺍﻟﺒﻴﻀﺎﺀ‬

Avant-propos

Ce manuel est élaboré dans le cadre de mes activités d’enseignement réalisées au sein de
l’Ecole Normale Supérieure de l’Enseignement Technique de Mohammedia. Il s’agit d’un
recueil de quelques manipulations réalisées dans le cadre des Travaux Pratiques (TP) pour
la vérification des savoir-faire expérimentaux.

En effet, les Travaux Pratiques (TP) constituent une partie essentielle de l'enseignement et
de l'apprentissage des concepts abordés dans le cours. En fait, de par leur contenu et
méthodologie suivie, ils permettent de donner une image du fonctionnement des dispositifs
réels et de favoriser un accord avec le processus d’assimilation/accommodation tout en
assurant un état d’équilibre entre une réalité interne et une réalité externe.

Ainsi, les différentes activité proposées sont conçues pour (1) permettre, aux étudiants, de
de rapprocher progressivement les acquis théoriques avec les réalités pratiques, (2)
stimuler la curiosité des étudiants en leur permettant d’observer et de se poser des
questions, (3) de bâtir un environnement sain favorisant le travail en groupes hétérogènes
et par conséquent de vivre le processus d’intégration au sein d’une communauté de travail,
et en fin, (4) lors de ces travaux de groupes, chaque étudiant aura l’occasion de développer
un esprit d'initiative et surtout l’esprit critique quand il s’agit d’analyser et d’interpréter les
résultats. En effet la démarche expérimentale aide d’une part à maîtriser les concepts qui
gèrent le fonctionnement d'un dispositif et d’autre part à articuler les pratiques
expérimentales pour aboutir à une appropriation de connaissances qualifiées de
théoriques.

Dans ce cadre, le présent manuel résume des exercices pratiques relatifs aux quelques
éléments de modules faisant partie de mes cours :

✓ Programmation en Assembleur
✓ Microcontrôleurs et DSPs
✓ Traitement du signal
✓ Gisement éolien et solaire

Pr. Abdelhadi RAIHANI Manuel de Travaux Dirigés niveaux et filières


UH2MC-ENSET Mohammedia Programmation en assembleur

Au travers ce TP, l'étudiant apprendra comment rédiger un programme en


assembleur, générer un programme .exe ou .com, faire les éditions de lien
puis mettre au point son programme.

.asm .obj .exe


.com

Edition Assembleur Edition de Mise au point


lien (pas à pas)

I- Construction d'une ligne de programme:


On rappelle la structure d'une ligne d'un programme assembleur:

132 caractères maximum pour une ligne

Label Opération Opérande Commentaire


(Facultatif)
(Obligatoire) (selon opération) (facultatif)
31 caractères
maximum

Afin que l’assembleur s’y retrouve dans ces champs, les premières règles qu’il vous
faut connaître sont les suivantes :

 Le label doit commencer au début de la ligne (il peut toutefois être précédé
d’espaces).

 Chaque champ est séparé par au moins un espace ; on peut placer plusieurs
pour aérer l’écriture.

 Lorsque le champ opérande comprend plusieurs informations, elles sont


séparées par une virgule, avec ou sans espace.

 Un commentaire est obligatoirement précédé par un espace du champ


précédent et par un point-virgule ; la marque de sa fin est un retour à la ligne.

On peut également commencer une ligne par un point-virgule, ce qui marque


qu’elle est entièrement réservé à un commentaire. On peut aussi, à volonté, sauter
des lignes, toujours pour améliorer la lisibilité. Enfin, on peut, au choix, écrire en
MAJUSCULES ou en minuscules.

TP1 : Premier programme expérimental 1 A. RAIHANI


UH2MC-ENSET Mohammedia Programmation en assembleur

 Exemples directives d’assemblage :

 EQU : Déclaration d’une constante

La directive EQU associe une valeur à un symbole qui pourra être ensuite utilisée
dans le programme à la place de la constante qu’elle définit.

Syntaxe : Nom EQU Expression

Exemples :

CINQ EQU 5 ; assigne la valeur 5 au nom CINQ


ET1 EQU CINQ * 7 + 1 ; assigne une expression calculer a CINQ

 Déclaration des variables :

L’espace mémoire est utilisée pour stocker des constantes (chaînes de caractères,
valeurs numériques, ...) ou des variables. Avant d’employer une variable, il faut
préalablement la déclarer (comme dans tout langage).

Déclarer une variable revient toujours à réserver un emplacement en mémoire


pour y stocker la valeur de cette variable.

 DB/DW/DD:

Ces directives sont utilisées pour déclarer les variables : L'assembleur attribue à
chaque variable une adresse. Les noms des variables sont composés d'une suite
de 31 caractères au maximum, commençant obligatoirement par une lettre. Le
nom peut comporter des majuscules, des minuscules, des chiffres, plus les
caractères @, et _. Lors de la déclaration d'une variable, on peut lui affecter une
valeur initiale.

 DB (Define byte): elle réserve un espace mémoire d'un octet : donc les
valeurs qu'on peut stocker pour cette directive sont comprises entre 0 et
255 ( pour les nombres non signés ) et de -128 jusqu'à 127 pour les
nombres signés .

Syntaxe : Nom DB Expression

Exemple :

Vil DB 12H ; Définit une variable (un octet) de valeur Initiale 12H.
Tab DB 18H, 15H, 13H ; définit un tableau de 3 cases
;(3 octet) Qui démarre à partir de l'adresse TAB.
Mess DB 'ISET' ; définit aussi un tableau mais les valeurs de chaque case
;n'est autre que le code ascii de chaque lettre.
Name DB ? ; définit une variable 8 bits de valeur initiale quelconque.

TP1 : Premier programme expérimental 2 A. RAIHANI


UH2MC-ENSET Mohammedia Programmation en assembleur

 DW (Define Word) : définit une variable de 16 bits : c a d elle réserve un


espace mémoire d'un mot : donc les valeurs qu'on peut stocker pour cette
directive sont comprises entre 0 et 65535 ( pour les nombres non signés )
et de -32768 jusqu'à 32767 pour les nombres signés .

Syntaxe : Nom DW Expression

Exemple :

TT1 DW 500H ; réserve deux cases mémoire (un mot) a partir de ;l'adresse
TT1.
TAB1 DW 10H,11H,14H ; réserve u tableau de 6 cases chaque valeur
sera ;mise sur deux cases
YY DW ? ; réserve un mot dans la mémoire de valeur
initial ;quelconque.

 DD (Define Double) : réserve un espace mémoire de 32 bits ( 4 octets ) :

Syntaxe : nom DD expression

Exemple : ff DD 15500000H

TP1 : Premier programme expérimental 3 A. RAIHANI


UH2MC-ENSET Mohammedia Programmation en assembleur

 Directive dup :

Lorsque l'on veut déclarer un tableau de n cases, toutes initialisées à la même


valeur, on utilise la directive dup:

tab DB 100 dup (15) ; 100 octets valant 15


y DW 10 dup (?) ; 10 mots de 16 bits non initialises

 Direcitive Word PTR et Byte PTR :

Dans certains cas, l'adressage indirect est ambigu. Par exemple, si l'on écrit :

MOV [BX], 0 ; range 0 a l'adresse spécifiée par BX

L'assembleur ne sait pas si l'instruction concerne 1, 2 ou 4 octets consécutifs. Afin


de lever l'ambiguïté, on doit utiliser une directive spécifiant la taille de la donnée
à transférer :

MOV byte ptr [BX], val ; concerne 1 octet


MOV word ptr [BX], val ; concerne 1 mot de 2 octets

II- Premier programme : addition de 5 et 3


Passons alors aux instructions, qui vont nous permettre d’additionner 5+3. Dans
cet exemple, nous allons travailler avec le registre de 8 bits noté DL : c’est l’octet
de faible poids du registre DX. On l’a choisi pour des commodités d’affichage que
nous vous expliquerons par la suite.

Un premier programme peut être :


1 : CODE SEGMENT
2 : ADDITION PROC FAR
3 : Addition
4 : MOV DL,5
5 : ADD DL,3
6 : Conversion en
7 : ADD DL,48 ASCII
8 :
9 : MOV AH,2
10: INT 21H
11: Affichage
12: MOV AH,4CH
13: INT 21H Retour au DOS
14:
15: ADDITION ENDP
16: CODE ENDS
17: END ADDITION

 La ligne 1 indique qu’on démarre le segment de code. On a utilisé le nom de


CODE (non obligatoire ; un autre nom aurait convenu, par exemple
PROGRAMME ; l’essentiel consiste à bien toujours faire référence à ce nom.

TP1 : Premier programme expérimental 4 A. RAIHANI


UH2MC-ENSET Mohammedia Programmation en assembleur

 La ligne 2 indique qu’ici commence ADDTION (choisissez également votre


nom !), une procédure ( PROC ) notée FAR.

 En 4 et 5, on trouve notre addition : placer 5 dans DL et ajouter 3.


Cette addition se fait en binaire et le résultat, 0000 1000, qui reste dans DL, doit
d’abord être converti en code ASCII avant d’être affiché. Cette conversion est très
simple : sachant que les codes ASCII des valeurs numériques commencent à 48
(en décimal : il est donc inutile de le préciser), le 0 ASCII se trouvent précisément
en 48, il suffit d’ajouter à nouveau 48 au résultat précédent.

 La ligne 7, donc, exécute cette conversion binaire - ASCII

Dès lors, on peut afficher le contenu du registre DL. On va faire appel au DOS dont
c’est l’une des spécialités. Pour cela, il faut déclencher ce qu’on appelle une
interruption, et plus exactement l’interruption numéro 21 H.

L’interruption 21 H « Ouvre une boutique de services


du DOS. Mais, il faut encore spécifier quel service
on désire : on le fera en rangeant un autre code dans
AH, un 2 pour l’affichage à l’écran.

Attention : ne confondez pas le H qui, ici, signifie « hexadécimal » avec le H qu’on


va utiliser plus loin, avec AH, afin de désigner ce registre !

 La ligne9 place donc 2 dans AH, pour afficher un caractère.

 La ligne 10 déclenche l’interruption 21 H

Le processus (interne) est alors le suivant : le programme en cours est interrompu


et il est fait appel au programme d’affichage du DOS.

Ce programme lit le caractère se trouvant dans DL et


l’affiche.

C’est pourquoi nous avons travaillé avec DL. L’affichage terminé, le dos renvoie
au programme, à l’instruction suivante, celle de la ligne 12.

Affichage d’un caractère en résumé :

 On place le code ASCII du caractère dans DL.

 On range un 2 dans le registre AH.

 On déclenche l’interruption 21H.

TP1 : Premier programme expérimental 5 A. RAIHANI


UH2MC-ENSET Mohammedia Programmation en assembleur

Dès lors, il faut terminer cette séquence car ce beau 8 a dû s’afficher à l’écran
(5+3). Pour cela, on fait à nouveau appel à l’interruption 21H mais en logeant,
cette fois, 4CH dans AH, ce qui envoie à une séquence rendant la main au DOS.

 La ligne 12 place 4CH dans AH, pour rendre la main au DOS.

 La ligne 13 appelle l’interruption 21H et le DOS reprend la main.

Les opérations étant terminées, on indique à l’assembleur :

 La ligne 15 : fin de la procédure d’addition.

 Ligne 16 : fin du segment CODE

 Ligne 17 : Fin de la fin, avec une information très importante.

C’est sur cette ligne END qu’il faut indiquer à partir


d’ou le programme devra être exécuté. Ici, à partir
de ligne étiquetée ADDITION, donc la ligne 2.

Rédaction et chaîne d'assemblage

Avant d'entamer les premiers programmes de TP, on va mettre au point les étapes
à suivre pour créer un programme exécutable.

Les différentes étapes sont:

- éditer un code source


- compiler
- lier
- exécuter

Edition:
On utilise de texte pour taper le code source en langage assembleur. Ensuite on
enregistre le fichier sous l'extension ".asm".

Exemple: edit premier.asm (si on utilise edit.exe du dos)

Notez bien que l’extension du programme source doit


être .ASM

Compilation:
La compilation du programme traduit le code source en binaire et génère un fichier
"objet". C'est un programme qui n'est pas directement exécutable.

TP1 : Premier programme expérimental 6 A. RAIHANI


UH2MC-ENSET Mohammedia Programmation en assembleur

Les deux principaux assembleurs (compilateurs) sur PC sont le MASM (Microsoft


Assembler) et le TASM (Turbo Assembler de Borland).

Les programmes des TP sont prévus pour être assemblés avec TASM.

C:\Tasm>tasm/l premier.asm
Turbo Assembler Version 4.1 Copyright (c) 1988, 1996
Borland International

Assembling file: prog1.asm


Error messages: None
Warning messages: None
Passes: 1
Remaining memory: 411k

L’assemblage s’est effectué en deux passes (deux lectures consécutives). Au cours


de la première, l’assembleur détecte des erreurs de syntaxe, s’il y en a, et les
affiche; c’est aussi de cette passe qu’il repère les étiquettes. Les erreurs sont de
deux sortes :

 Warning Errors, soit erreurs d’avertissement : l’assembleur a rencontré des


difficultés de compréhension, mais cela ne l’a pas empêché d’assembler le
programme.

 Error messages: faut-il traduire ? là, c’est l’échec complet car les erreurs ne
permettent pas l’assemblage.

Dès lors, et sous DOS, demandez le répertoire de vos fichiers. Vous devez en
trouver deux nouveaux qui sont :

 Prog1.obj, le programme objet qu’on va soumette à LINK afin d’en faire un


programme.EXE.
 Prog1.lst, le document qu’on va lister immédiatement.

Listage du programme assemblé :


Editez le fichier texte prog1.lst en exécutant la commande :
C:\TASM> type premier.lst
Vous devez avoir un listing analogue au suivant :

TP1 : Premier programme expérimental 7 A. RAIHANI


UH2MC-ENSET Mohammedia Programmation en assembleur

Turbo Assembler Version 4.1 01/11/98 03:34:58 Page 1


premier.asm

1 0000 CODE SEGMENT


2 0000 ADDITION PROC FAR
3
4 0000 B2 05 MOV DL,5
5 0002 80 C2 03 ADD DL,3
6
7 0005 80 C2 30 ADD DL,48
8
9 0008 B4 02 MOV AH,2
10 000A CD 21 INT 21H
11
12 000C B4 4C MOV AH,4CH
13 000E CD 21 INT 21H
14
15 0010 ADDITION ENDP
16 0010 CODE ENDS
17 END ADDITION

Le listage du programme assemblé va s’afficher sur l’écran et s’imprime, en deux


sections :
 Le programme assemblé proprement dit.
 Un état récapitulatif résumé.

Détaillons le listage du programme assemblé. On constate tout d’abord la présence


de deux grandes divisions horizontales :

 Un rappel du programme source, à droite.


 Les codes numériques correspondants, à gauche.

Il s’y ajoute d’ailleurs des numéros de ligne, au début de chacune d’elles. Il s’agit
des propres numéros de l’assembleur, semblables à ceux d’EDLIN ici, mais qui
seront généralement différents. Les codes numériques sont tous en hexadécimal ;
ils sont répartis dans 3 champs :
- Le champ adresse, sur 4 digits. Les adresses démarrent à 0000 et sont
données en valeurs relatives par rapport à 0
- Le champ opération sur 2 ou 4 digits : c’est le code de l’opération à
exécuter. Ainsi MOV DL a été traduit par B2 et ADD DL par 80C2 …

Chaque opération dispose de son code propre, imposé


par le fabricant du microprocesseur.

- Le champ opérande : il contient les données ou parfois des adresses ;


ainsi 5 est devenu 05 ; de même 3 est devenu 03 sur un octet, mais 48
décimal a été converti en 30 hexadécimal.

TP1 : Premier programme expérimental 8 A. RAIHANI


UH2MC-ENSET Mohammedia Programmation en assembleur

Edition de lien (lier):


L'éditeur de lien, plus couramment appelé Linker, sert à créer un fichier exécutable
à partir d'un ou plusieurs fichiers objets.
Le linker fourni avec le TASM s'appelle TLINK et sa syntaxe est la suivante:

Exécuter le programme Tlink en précisant comme paramètre le programme objet


à traiter. L’écran affiché est le suivant :

C:\Tasm>tlink premier.obj
Turbo Link Version 7.1.30.1. Copyright (c) 1987, 1996 Borland International

Warning: No stack

C:\Tasm>

Tlink signale une erreur : on n’a pas créé de segment de pile ( Stack ), mais cette
erreur reste sans conséquence.
Après cette opération, Tlink a généré le fichier exécutable souhaité premier.exe.
De plus in généré un fichier listable premier.map dont on va examiner l’intérêt par
la suite.

Exécution:
taper premier.exe (ou premier.com) pour lancer le programme.

C:\Tasm>prog1
8
C:\Tasm>

Turbo Debugger:

Turbo Debug (TD.EXE) est un utilitaire (fourni avec TASM) permettant d'exécuter,
pas à pas, un programme.

Il est ainsi possible de voir l'influence de chaque instruction sur la mémoire et sur
les registres.

L'utilisation de ce programme est indispensable pour faire la chasse aux


bugs (bogues pour les puristes).

III- Déclaration des segments:

TP1 : Premier programme expérimental 9 A. RAIHANI


UH2MC-ENSET Mohammedia Programmation en assembleur

On rappelle la structure générale d'un programme assembleur :

data SEGMENT ; voici le segment de données dont


;l'étiquette est data

; Placez ici les déclarations de données

Data ENDS ; ici se termine le segment de données

ASSUME DS:data, CS: code

code SEGMENT ; voici le segment d'instructions dont


; l'étiquette est code

debut : ; première instruction avec l'étiqutte debut


;Placez ici vos instructions

code ENDS ; fin du segment d'instructions

END debut ; fin du programme suivie de l'étiquette


; de la première instruction

Dans le premier programme, nous avons vu que Tlink nous a reproché d’avoir
oublié le segment de pile ; On va en créer un. De la même façon, on va créer un
segment de données mais pour le justifier, on va modifier notre programme
d’addition : les opérandes et la somme vont être rangées en mémoire, dans un
segment de données. Voici comment étaient rédigées nos deux lignes d’addition
précédente :
MOV DL,5
ADD DL,3

Lorsque l’opérande figure dans l’instruction, on dit qu’on travaille


en « opérande immédiat » ou encore en « en adressage
immédiat ».

Pour des besoins de la cause, on va appeler les opérandes NOMBRE pour le 5,


PLUS pour le 3 et SOMME pour le résultat. Chacun d’eux se suffit d’un octet qu’on
va réserver en mémoire à l’aide de la pseudo-instruction appelée DB « Define
Byte »

On va ainsi écrire :
NOMBRE DB 5
PLUS DB 3
Par contre on est censé ne pas connaître la SOMME, aussi va-t-on le remplacer
par un point d’interrogation ( ?) que l’assembleur comprendra, en écrivant :
SOMME DB ?

TP1 : Premier programme expérimental 10 A. RAIHANI


UH2MC-ENSET Mohammedia Programmation en assembleur

Dès lors, le programme consiste à :

- Appeler NOMBRE et le ranger dans l’un des registres disponibles, pour changer,
on va travailler avec l’accumulateur AL
- Appeler PLUS et l’ajouter à AL
- Le résultat étant dans AL, on le range alors en mémoire, à SOMME :
MOV AL,NOMBRE
ADD AL,PLUS
MOV SOMME, AL
Ici, on ne fournit donc plus l’opérande dans l’instruction : on écrit à sa place son
symbole, lequel représente réellement l’adresse mémoire à laquelle se trouve.

Programme complet :

On considère le programme, donné en annexe, qui réalise une addition simple en


mettant en œuvre la notion de variables et la déclaration des différents segments:

- Ligne 1 : l’étiquette (le label) du segment pile est « PILE ». On retrouve


l’indication SEGMENT suivie de PARA pour « paragraphe » c’est à dire que le
segment démarre sur une articulation, une adresse divisible par 16. Puis vient
le mot STACK , le nom officiel de la pile pour l’assembleur. Enfin, on a inscrit
un nom entre apostrophes : il sert à désigner une « classe » ; cela permettra
à Link de réunir tous les segments de même classe.
- Ligne 2 : DB ( Define Byte ) signifie qu’on réserve des octets, et même pour un
total de 256 ( en décimal ). On va les remplir de zéros en dupliquant ( DUP)
ces (0).
- Ligne 3 : Remarquez la répétition du Label PILE, puis la marque de fin de
segment ENDS ( End Segment ).
- Ligne 5 : Ici on débute le segment de données. On commence par le définir de
la même façon (sur des paragraphes, adresses mémoires divisibles par 16)
mais un autre argument intervient : PUBLIC. Il signifie que ce segment pourra
être concaténé à d’autre par TLINK afin qu’ils se partagent ses données. A
nouveau, on a indiqué une classe DONNEES, pour ne pas abuser de noms
différents ; Elle sera utile à TLINK s’il est nécessaire de réunir des segments de
même classe.
- Ligne 6 à 8 : On réserve 3 Octets en mémoire pour nos opérandes, NOMBRE,
PLUS et SOMME.
- Ligne 9 : Fin du segment de données.
- Ligne 11 : le segment Code débute ici et il est défini tout comme le segment
de données. Seul le nom de la classe change.
- Ligne 12 : déjà étudiée au chapitre précédent.
- Ligne 13,14,15 : On affecte les segments aux registres de segments.

ASSUME signifie « Assumer » ou encore « Affecter ».


Cela veut dire, par exemple pour la ligne 13, que le
registre de segment CS assume la charge de contenir
l’adresse de départ du segment de code.

On affecte dons CODE, DONNEES et PILE aux registres CS, DS et SS. Notez
que ce sont les noms que nous avons placés en Label sur les lignes 1, puis 5,
et 11.

TP1 : Premier programme expérimental 11 A. RAIHANI


UH2MC-ENSET Mohammedia Programmation en assembleur

Lorsque le DOS charge un programme un programme en mémoire, Il charge


d’office dans DS (Registre sélecteur de segment de données) et dans ES (Extra-
registre, non utilisé ici), l’adresse de départ du PSP (Préfixe de segment de
programme). Par conséquent, le registre DS ne reçoit pas l’adresse de départ
du segment de données : il faut la lui fournir. Telle est la fonction des deux
lignes 17 et 18.
- Ligne 17 : On utilise l’étiquette DONNEES, qui symbolise l’adresse de départ
de ce segment. Cette adresse est chargée dans le registre 16 bits (car l’adresse
est sur 16 bits) AX (c’est l’accumulateur complet).
- Ligne 18 : on copie (AX) dans DS. Cette double opération est nécessaire car on
ne peut charger un registre sélecteur de segment que par un autre registre.
- Lignes 24, 25 : Conversion binaire-ASCII
- Lignes 27, 28 : Affichage par appel de l'interruption 21h du dos
- Lignes 30, 31 : retour au dos
- Ligne 33 : fin de la procédure addition
- Ligne 34: fin du segment code
- Ligne 35: fin de la fin, avec une information importante.

C’est sur cette ligne END qu’il faut indiquer à partir


d’ou le programme devra être exécuté. Ici, à partir
de ligne étiquetée ADDITION ? donc la ligne 12.

IV- Manipulation:

Le but est d'assurer un premier contact avec l'environnement de travail: Edit, Tasm, Tlink
et Turbo Debugger.

Démarche à suivre:

Allez sous DOS, dans le répertoire où vous avez installez TASM (exemple: C:\TASM\ )
ensuite tapez:

edit prog2.asm puis recopiez le code source dedans et sauvegardez.


ensuite
tasm prog2 /L/C/ZI (Pour compiler le code source que vous venez de créer)

- L'option /L permet d'obtenir un listing du code source.


- L'option /C permet d'obtenir une table des références croisées (utilisé par TD).
- L'option /ZI crée une table des symboles qui sera utilisée par TD.

tlink premier /v

- L'option /v demande au programme d'utiliser la table des symboles générée par tasm
lors du débugage du programme.
td premier
Examiner les différentes fenêtres de l'interface.

TP1 : Premier programme expérimental 12 A. RAIHANI


UH2MC-ENSET Mohammedia Programmation en assembleur

Annexe : programme addition

1 : PILE SEGMENT PARA STACK 'PILE'


2 : DB 256 DUP(0)
3 : PILE ENDS
4 :
5 : DONNEES SEGMENT PARA PUBLIC 'DONNEES'
6 : NOMBRE DB 5
7 : PLUS DB 3
8 : SOMME DB ?
9 : DONNEES ENDS
10 :
11 : CODE SEGMENT PARA PUBLIC 'CODE'
12 : ADDITION PROC FAR
13 : ASSUME CS:CODE
14 : ASSUME DS:DONNEES
15 : ASSUME SS:PILE
16 :
17 : MOV AX,DONNEES
18 : MOV DS,AX
19 :
20 : MOV AL,NOMBRE
21 : ADD AL,PLUS
22 : MOV SOMME,AL
23 :
24 : MOV DL,SOMME
25 : ADD DL,48
26 :
27 : MOV AH,2
28 : INT 21H
29 :
30 : MOV AH,4CH
31 : INT 21H
32 :
33 : ADDITION ENDP
34 : CODE ENDS
35 : END ADDITION

TP1 : Premier programme expérimental 13 A. RAIHANI


UH2MC-ENSET Mohammedia Programmation en assembleur

Objectifs :
 Notion de procédure et pile
 Manipulation des structures de contrôle.

Structure de contrôle :
Les structures tels que if-else, for, while, switch, etc. permettent l’exécution conditionnelle d’un bout de code dépendant
de la valeur d’une variable. Ces structures de contrôle sont implantées au moyen des instructions de branchements
conditionnels et inconditionnels. En effet, lors d’une comparaison, par exemple CMP a,b, le processeur effectue la
soustraction a-b et positionne les indicateurs selon le résultat de telle opération. Ces indicateurs peuvent être :
o ZF : qui =1 si le résultat est nul, sinon, ZF=0,
o CF : =1 s’il y a une retenue, sinon CF=0,
o SF : =1 si le résultat est négatif, sinon, SF=0,
o OF : =1 en cas de débordement de capacité, sinon OF=0.
Ainsi, le branchement qui se réalise relativement à ces flags est un branchement conditionnel qui peut être signé ou non
signé. Un tel branchement peut être réalisé par rapport au compteur CX : JCX (jump if CX=0), JECX (jump if ECX=0).
Les branchements inconditionnels sont réalisés tout le temps, sans aucun test, tel que les instructions CALL ou JMP
(Jump).

Procédure et pile :
Une procédure ou sous-programme est un ensemble d’instructions auquel on fait appel pour réaliser des taches
spécifiques. L'architecture Intel dispose d'instructions pour l'appel de sous-programmes (CALL) et pour le retour de
sous-programmes (RET).
L'instruction CALL pousse l’adresse de l’instruction suivante sur la pile et saute à l’adresse spécifiée par l’opérande.
Sa syntaxe est la suivante :
call etiquette
call eax
call dword ptr [ebx]
L'instruction RET dépile l’adresse de retour au sommet de la pile, la place dans EIP. L'exécution se poursuit donc à
cette adresse.
En effet, une procédure peut être de type :
FAR : dans ce cas, la procédure n’est située dans le même segment que le code. Dans ce cas, le RET porte sur
2 adresses : celle du début de segment où est située la procédure (adresse qui ira dans le CS) et l’adresse
du du déplacement dans ce segment qui ira dans IP.
NEAR : située dans le même segment que le code. Dans ce cas, le RET porte juste sur le IP (CS restant
inchangé).
Remarque : Le SP, pointeur de pile, désigne toujours la prochaine cellule libre.
Passage des paramètres aux sous-programmes
Un sous-programme nécessite des données sur lesquelles il doit opérer. Ces données sont fournis par la programme
appelant (principal) et le sous-programme doit produire des résultats qu’il devra transmettre au programme appelant.
Ainsi, ces données peuvent être passées au SP de deux manières différentes : valeur ou adresse
 Passage par valeur
La valeur numérique du paramètre est passée au sous-programme. Ainsi, le sous-programme ne peut pas modifier le
paramètre en mémoire, car il ne connaît pas son adresse.
 Passage par référence, par adresse ou par pointeur
C’est l’adresse du paramètre qui est passée au sous-programme. C’est le cas pour les structures, les tableaux, les chaînes.
Dans ce cas, le sous-programme connaît l’adresse mémoire du paramètre et peut en principe le modifier.
o Passage par registres
On dispose des six registres eax, ebx, ecx, edx, edi et esi pour le passage des paramètres. Cette méthode est la plus rapide
puisqu’elle minimise les accès à la mémoire.
Exemple :
Calcul de la somme de deux nombres de 16 bits et qui sont passés par AX et BX :

TP2 1 A. RAIHANI
UH2MC-ENSET Mohammedia Programmation en assembleur

Somme Proc Near


ADD AX,BX
RET
Somme ENDP

Et son appel, par exemple pour ajouter data1 à data2 sera :


MOV AX, data1
MOV BX, data2
CALL Somme
MOV Result, AX ; Rr2sultat retourné, par la procédure appelée, dans AX
C’est la méthode ma plus simple, avec les processeurs classiques, étant donné le petit nombre de registres disponibles,
cette technique n’est utilisable que si on n’a qu’un ou deux paramètres.
o Passage par la pile
Lors d'un passage par la pile, le programme appelant empile d'abord les paramètres. Il exécute ensuite l'instruction call,
qui empile l'adresse de retour.
Cette technique met en œuvre le registre BP (EBP) qui permet de lire des valeurs sur la pile sans les dépiler et par
conséquent ne modifiant pas le SP.

Lecture du sommet de la pile :


. MOV BP, SP ; BP pointe sur le sommet de la pile
MOV AX, [BP] ; Lire sans dépiler
Exemple :
Somme2 Proc Near ; réalise Arg1 + Arg2 et retourne le résultat dans AX
MOV BP, SP
MOV AX, [BP+2] ; Charger Arg1 sur 16 bits
ADD AX, [BP+4] ; Charger Arg2 sur 16 bits
RET
Somme2 EndP ; la procédure retourne le résultat dans AX

L’appel de la procédure Somme2 avec passage par pile :


PUSH Arg1
PUSH Arg2
CALL Somme2

Remarque : une procédure ne doit pas modifier les registres :


Somme2 Proc Near
PUSH BP
MOV BP, SP
MOV AX, [BP+4]
ADD AX, [BP+6]
POP BP
RET
Somme2 EndP

Exercice 1 :
Refaire l’exercice pour additionner deux nombres en utilisant les trois procédures suivantes ;
Main : qui réalise l’addition
Convert : qui réalise la conversion en code ASCII
Disply : réalise l’affichage à l’écran

Dans ce cas, le segment de code sera :

TP2 2 A. RAIHANI
UH2MC-ENSET Mohammedia Programmation en assembleur

CODE SEGMENT PARA PUBLIC 'CODE'


Main PROC FAR
ASSUME CS:CODE
ASSUME DS:DONNEES
ASSUME SS:PILE
MOV AX,DONNEES
MOV DS,AX
MOV AL,NOMBRE
ADD AL,PLUS
MOV SOMME,AL
CALL Convert
MOV DL,SOMME
CALL Disply
MOV AH,4CH
INT 21H
Main ENDP
Convert PROC NEAR
ADD DL,48
RET
Convert ENDP
Disply PROC NEAR
MOV AH,2
INT 21H
RET
Disply ENDP
CODE ENDS
END Main

Exercice 2 : Recherche du maximum des éléments d’une table


Il s’agit d’écrire le programme pour rechercher le maximum des éléments d’une table de N éléments. Pour commencer,
les éléments de la table doivent être définis au moment de la déclaration de cette table dans le segment de données.
Voici un extrait du programme à compléter :
PILE SEGMENT PARA STACK ‘PILE’
DB 256 DUP ( ?)
PILE ENDS
DONNEES SEGMENT PARA PUBLIC ‘DONNEES’
Table DB 1, 8, 0, 2, 6, 7, 9, 3,4 ; Définition des éléments de la table
DONNEES ENDS
CODE SEGMENT PARA PUBLIC ‘CODE’
Maximum Proc Far
Assume CS : CODE
Assume DS : DONNEES
Assume SS : PILE
Mov AX, DONNEES
Mov DS,AX
LEA BX, Table ; BX pointe sur les éléments de la Table
Mov CL,9 ; Compteur de boucle
Boucle ………
………
………
Maximum ENDP
CODE ENDS
END Maximum
Exercice 3 : Trier par ordre croissant les éléments de cette table.
Exercice 4 : Somme des éléments de 2 matrices 3*3

TP2 3 A. RAIHANI
UH2MC-ENSET Mohammedia Programmation en assembleur

Extrait du jeu d’instruction :

Instruction Signification Le branchement a


Anglais Français lieu Si :
JA Jump if Above Saut si supérieur CF=0 et ZF=0
JAE Jump if Above or Equal Saut si supérieur ou égal CF=0
JB Jump if Below Saut si inférieur CF=1
JBE Jump if Below or Equal Saut si inférieur ou égal CF=1 ou ZF=1
JC Jump if Carry Saut si retenue CF=1
JCXZ Jump if Cx is Zero Saut si cx=0 (CX)=0
JE Jump if Equal Saut si Egal ZF=1
*JG Jump if Greater Saut si plus grand ZF=0 et SF=OF
*JGE Jump if Greater or Equal Saut si plus grand ou égal SF=OF
*JL Jump if Less Saut si moins grand SF différent OF
*JLE Jump if Less or Equal Saut si moins grand ou égal ZF=1 ou SF<>OF
JNA Jump if not Above Saut si pas Supérieur CF=1 ou ZF=1
JNAE Jump if not Above nor Equal Saut si pas supérieur ni égal CF=1
JNB Jump if not Below Saut si pas inférieur CF=0
JNBE Jump if not Below nor Equal Saut si pas inférieur ni égal CF=0 et ZF=0
JNC Jump if not Carry Saut si pas de retenue CF=0
JNE Jump if not Equal Saut si pas égal ZF=0
*JNG Jump if not Greater Jump si pas plus grand ZF=1 ou SF<>OF
*JNGE Jump if not Greater nor Equal Saut si pas plus grand ni égal SF<>OF
*JNL Jump if not Less Saut si pas moins grand SF=OF
*JNLE Jump if not Less nor Equal Saut si pas moins grand ni égal ZF=0 et SF=OF
*JNO Jump if not OverFlow Saut si pas de dépassement OF=0
JNP Jump if not Parity (Odd) Saut si pas de parité (Impair) PF=0
*JNS Jump if not Sign Saut si pas signe SF<>OF
JNZ Jump if not Zero Saut si pas zéro SF=OF
*JO Jump On Overflow Saut sur dépassement OF=1
JP Jump on Parity (Even) Saut sur parité (Pair) PF=1
JPE Jump if Parity Even Saut si parité pair PF=1
JPO Jump if Parity Odd Saut si parité impaire PF=0
*JS Jump on Sign Saut sur signe SF=1
JZ Jump if Zero Saut si zéro ZF=1

TP2 4 A. RAIHANI
UNIVH2C – ENSET M - M.RAIHANI

Chaque image sur l’écran, trouve son reflet en mémoire ; plus précisément à
chaque point de l’image correspond une zone en mémoire.

Les adresses des zones mémoires réservées sont :


- B000 :0000 pour les cartes monochromes.
- B800 :0000 pour la carte graphique couleur

1- Mode caractères.

Chaque caractère est codé sur deux octets, l’un pour le code ASCII et l’autre
pour des particularités d’affichage dénommées Attributs :

La position d’un caractère, son offset par rapport à l’adresse du segment :


Offset = ( Ligne*80+colonne )*2

Les attributs répondent au code suivant, aussi bien en monochrome qu’en


couleur :

Intensité :
Mode monochrome : 0 = Simple 1 = Double

Normal 0 0 0 0 1 1 1
Double intensité 0 0 0 1 1 1 1
Souligné 0 0 0 0 0 0 1
Souligné double intensité 0 0 0 1 0 0 1
Vidéo inversé 1 1 1 0 0 0 0

7 6 5 4 3 2 1 0

0 = Fixe
1 = Clignotant Arrière plan Avant plan

COURS D’ASSEMBLEUR
UNIVH2C – ENSET M - M.RAIHANI

Mode Couleur :

Noir 0 0 0 0 0 0 0
Bleu 0 0 1 0 0 0 1
Vert 0 1 0 0 0 1 0
Cyan 0 1 1 0 0 1 1
Rouge 1 0 0 0 1 0 0
Magenta 1 0 1 0 1 0 1
Marron 1 1 0 0 1 1 0
Blan 1 1 1 0 1 1 1
Gris 1 0 0 0
Bleu clair 1 0 0 1
Vert Clair 1 0 1 0
Cyan Clair 1 0 1 1
Rouge Clair 1 1 0 0
Magenta Clair 1 1 0 1
Jaune 1 1 1 0
Blanc Vif 1 1 1 1

2- Effacement Direct de l’écran.

STOS transfère un octet de AL, ou un mot de AX à la


cellule pointée par ES :DI. Le registre DI est
incrémenté à chaque opération. On appelle :
- STOSB, le transfert par octets.
- STOSW, le transfert par mot de 16 bits.

COURS D’ASSEMBLEUR
UNIVH2C – ENSET M - M.RAIHANI

; Ce programme efface l'écran et écrit un message

ECRAN EQU 0B800H


ATTRIBUT EQU 7
CAPACITE EQU 80 * 25

PILE SEGMENT PARA STACK


DB 256 DUP(0)
PILE ENDS

DONNEES SEGMENT PARA PUBLIC


MESSAGE DB "L'effacement de l’ecarn réussi $"
DONNEES ENDS

EXTRA SEGMENT
EXTRA ENDS

CODE SEGMENT PARA PUBLIC


ASSUME CS:CODE,DS:DONNEES,ES:EXTRA

; Procédure principale : elle appelle les deux autres et renvoie au dos

PRINCIPALE PROC FAR


….

MOV AX,ECRAN
MOV ES,AX

CALL EFFACE
CALL AFFICHE

PRINCIPALE ENDP

EFFACE PROC NEAR


MOV DI,0
MOV AX,' '
MOV AH,ATTRIBUT
MOV CX,CAPACITE
CLD
REP STOSW
RET
EFFACE ENDP

AFFICHE PROC NEAR ; affiche message



AFFICHE ENDP

CODE ENDS
END PRINCIPALE

COURS D’ASSEMBLEUR
UNIVH2C – ENSET M - M.RAIHANI

3- Affichage via le Bios :


Une autre méthode d’écriture à l’écran consiste à passer par le bios, grâce à
l’interruption 10H. Dans ce Cas, il n’est plus besoin de calcul car on signifie au
bios l’emplacement du caractère à afficher, sous la forme rangée-ligne.

PILE SEGMENT STACK


DB 64 DUP ('PILE')
PILE ENDS

CODE SEGMENT
ASSUME CS:CODE,SS:PILE
ETOILE PROC FAR
MOV AH,15 ; la page active apparaîtra dans BH
INT 10H ; le premier des appels
MOV AH,0 ; pour définir le mode
INT 10H
MOV CX,1 ; compte de caractères à écrire
MOV DL,0 ; curseur sur la colonne 0
MOV DH,5 ; curseur sur rang‚e 5
CURSEUR: MOV AH,2 ; positionnement du curseur
INT 10H
MOV AL,2AH ; choix du caractère "*"
MOV AH,10 ; pour l'afficher
INT 10H
INC DL ; colonne suivante
CMP DL,50 ; a t - on les 50 "*"?
JNE CURSEUR
MOV AH,4CH
INT 21H
ETOILE ENDP
CODE ENDS
END ETOILE

Application : Animation
Animer consiste à :
- Afficher quelques choses
- Maintenir cet affichage durant un délai
- L’effacer rapidement, puis
- Le réafficher à côté, de façon à simuler un processus de déplacement
- Recommencer…
Ecrire la suite des instructions permettant le déplacement de l’astérisque
sur une ligne.

COURS D’ASSEMBLEUR
UH2MC-ENSET Mohammedia Projet : Programmation en assembleur

I- Objectifs :
L’objectif de ce projet est de faire établir une liaison entre deux ordinateurs en utilisant un câble
null-modem.
On rappelle qu’on peut accéder au port série par la voie de la programmation système de trois
façons:
 Par le DOS;
 Par le BIOS;
 Directement en contrôlant le matériel.

Dans notre cas, on s’intéressera à la dernière méthode. Ainsi, on étudiera les protocoles mis en
oeuvre dans ce cas :
La trame asynchrone, observation et tests ;
Le protocole matériel RTS/CTS
Le protocole logiciel Xon/Xoff

II- Réalisation du TP :
Vous devez réaliser la connexion et écrire les programmes de communication. Le projet se
décompose de plusieurs parties non entièrement indépendantes. Pour ce faire, on procèdera
comme suit :
- Pour la partie A, on devra réaliser et tester ses programmes sur un seul PC (liaison
monoposte).
- Pour les parties B et C, deux PC sont nécessaires.
- La programmation doit être réalisée en assembleur. Les indications fournies sont en langage
C.

Voilà quelques indications pour la réalisation :


o Les différents programmes que vous allez écrire sont similaires; il est plus économique
de programmer des procédures puis de les appeler dans les différents programmes.
o Pour vous assurer de la comptabilité de vos procédures, celles-ci devront sauvegarder
et restituer les principaux registres tout en respectant les règles de passage de paramètre
et de valeur de retour utilisées par l'assembleur.
o Vous pouvez aussi utiliser les directives EQU ou define pour définir des constantes. Par
exemple COM1 EQU 03F8h.
o N’oubliez pas de bien aérer et commenter vos programmes.
o Pour l'accès au port série, nous pouvons utiliser les instruction IN et OUT .
o Voici quelques initialisations types (à titre indicatif):
# include <stdio.h>
# include <conio.h>
# define COM1 0x3F8
# define COM2 0x2F8
# define COM3 0x3E8
# define COM4 0x2F8
# define COMx COM2
# define TxD COMx
# define RxD COMx

GL-SID1 1/ 4 A. RAIHANI
UH2MC-ENSET Mohammedia Projet : Programmation en assembleur

# define DLLB COMx


# define IER (COMx+1)
# define DLHB (COMx+1)
# define IIR (COMx+2)
# define FCR (COMx+2)
# define LCR (COMx+3)
# define MCR (COMx+4)
# define LSR (COMx+5)
# define MSR (COMx+6)

III- Préparation :
1. Faites une recherche bibliographique sur la RS232
2. Donnez la structure d’une trame asynchrone (RS232) (telle qu’on l’observerait sur un
oscilloscope) pour les caractéristiques suivantes :
Caractère émis : «A» de code ASCII 65 sur 8 bits.
Parité impaire (odd parity)
1 bit stop.

Donnez le chronogramme (dont on précisera l’échelle temporelle) de l’émission successive de


«Aa» avec une horloge émission à 1200 bits/s.

3. Donnez les schémas, protocole matériel, pour obtenir une liaison :


o Simplex
o Hlaf duplex
o Full duplex.

IV- Manipulation :
A- Test de ligne
On désire transmettre une information d’un ordinateur à l’autre, mais il est préférable de tester au
préalable la ligne par une sorte de commande "ping" (demande de réponse).

Pour éviter de monopoliser deux machines, et pour tester les programmes en évitant les problèmes
dues à la ligne elle même, on peut aussi tester liaison en local en câblant un "bouchon" c'est à dire en
rebouclant la sortie de l'interface série sur son entrée.

1. Donner le schéma de configuration de la boucle.


2. Ecrire une procédure pour configurer correctement le port (init_port).
3. Ecrire une procédure R_car qui lit un caractère sur l'interface série et le retourne.
4. Ecrire une procédure W_car qui écrit sur l'interface série un caractère.
5. Ecrire un programme de test "ping_loc" pour tester vos procédures en boucle locale.
6. Examiner la trame à l’aide de l’oscilloscope pour plusieurs configurations.
7. Ecrire le programme pour l’envoi et la réception d’une chaîne de caractères.

B- Poste à poste : Protocole matériel


Le protocole matériel utilise, outre les 3 lignes de base RxT, TxD et Ground, les deux lignes de contrôle:
RTS et CTS ; d’autres lignes que RTS et CTS peuvent être utilisées pour réaliser les mêmes fonctions
matérielles : DTR et DSR ou DTR et CTS.

GL-SID1 2/ 4 A. RAIHANI
UH2MC-ENSET Mohammedia Projet : Programmation en assembleur

L’équipement en réception, lorsque son buffer est presque plein, informe l’émetteur en désactivant le
signal RTS ; lorsque le buffer est à nouveau prêt à recevoir des données, il réactive cette ligne;
l’émetteur reçoit cette information sur sa ligne CTS. Cette liaison fonctionne en halfduplex (émission
et réception simultanée) et peut être gérée matériellement par scrutation (polling) ou interruption.

1. Ecrire le programme émetteur.


2. Ecrire le programme récepteur.
3. Tester l’application et relever les signaux nécessaires à l’oscilloscope.

C- Poste à poste : Protocole logiciel


Dans ce modèle on définit un buffer, une zone mémoire de taille fixe. On définira un tableau de
caractères de taille 128 par exemple. À la réception, on bloquera l’émission par l’envoi d’un
caractère Xoff quand le buffer sera plein, et on redemandera l’émission avec un caractère Xon
lorsqu’il sera vidé. Le vidage du buffer sera réalisé par son édition sur la console par paquet de
128 caractères.

Le récepteur stoppe
l’émetteur (envoi) qui doit XOFF = $13
attendre le code de Xon
1011101
XOFF= Buffer plein 0101010
XON = Buffer vide 1010100
1000000
BUFFER
1000011
1111111
0111010
1010101
Le récepteur déclenche 0101010
l’émetteur (envoi) qui 1010101
recommence l’envoi des 101010
données tout en testant si le XON =$11
code de XOFF n’arrive pas

Les organigrammes suivants vous aideront à réaliser le programme.

GL-SID1 3/ 4 A. RAIHANI
UH2MC-ENSET Mohammedia Projet : Programmation en assembleur

Émission Réception

Emit Xon
Réception Xon
non
oui
Réception car i
Emit car i non
oui

oui
Dernier car ? non Car de fin
oui
non
i=128 Vidange buffer jusqu’à i
i+1 non
oui

Emit Xoff
Réception Xoff
non
oui Vidage buffer (i=1)
Fin Fin

GL-SID1 4/ 4 A. RAIHANI
HOW-TO Setup THRSim11 to Simulate the M68HC11 EVB
Jason Bales, 28 Aug 2006
ECE 447, Fall 2006
George Mason University

This document will guide you through setting up THRSim11 to properly simulate the
Motorola 68HC11 Evaluation Board (EVB) that comes in the lab kit for ECE 447 offered
at George Mason University in Fall of 2006. It assumes you have already correctly
installed THRSim11 and you have access to the buffalo.h header file.

1. Start Programs THRSim11 68HC11 Simulator THRSim11

You should get a screen similar to [Figure 1] with the MASON splash in the background.

Figure 1, THRSim11 Startup Screen

Now we need to setup the memory map in THRSim11. Because we are simulating the
Evaluation Board (EVB), the simulation setup will actually need to write data in what is
normally ROM on the EVB. THRSim11 will stop us from writing to memory that is
designated as ROM, so for simplicity, we will set everything to RAM.

2. View Memory Memory configuration

Verify you are selecting the correct menu item by referring to [Figure 2].
Figure 2, Memory Configuration menu item

THRSim11 will tell you that it needs to close.

3. Click YES

THRSim11 will nicely ask you if you are sure you want to exit

4. Click EXIT

The THRSim11 Memory Configuration Tool will now open. Follow this procedure to set
the address space to RAM. Afterwards verify that your configuration matches [Figure 3].

5. Select User defined from the drop down box in the top left of the window
6. Uncheck all ROMx enabled sections in the second row
7. Set the Ram sections according to this table:

RAM0 RAM1 enabled RAM2 enabled RAM3 enabled


RAM Start $0000 $2000 $0000 $0000
RAM End $01FF $FFFF $0000 $0000

RAM0 is by default always enabled. We are using the RAM1 section to make the rest of
memory RAM. Note that this covers all of memory space except for a small section
$01FF-$1FFF. This is fine. Some of that area is for memory mapped I/O. Ensure that
the remaining RAM and ROM sections are unchecked. It is also OK to leave the LCD
enabled checked if you like, but do not change any of the addresses in the third row (IO
and LCD).
Figure 3, Memory Configuration Tool

8. Click OK in the top right of the window

THRSim11 will reload and is now ready to simulate your code. If all you are doing is
setting THRSim11 up to simulate, you are done. If you are ready to simulate actual
program code then follow the remaining steps.

We need to include a single header file in our application for our code to simulate
properly.

9. Copy buffalo.h to your source code folder


10. Include it in your main.c file
11. Call buffalo_thrsim_setup() right after you have declared any variables in your
main() function in main.c

Now you are almost ready to simulate the EVB with Buffalo running on it. Compile your
code as normal in the SciTE editor and run it.

12. Tools Build


13. Tools Go

THRSim11 will open if it isn t already running and bring your code up. You are now
ready to start the simulation.
UH2C - ENSETM TP microcontrôleur

Exercice 1:
Ecrire un programme pour afficher le chiffre hexadécimal (0-F) placé à la case mémoire d'adresse $0300
(data) sur un afficheur 7 segments à anode commune. Le schéma de câblage est donné par la figure ci-contre.

0 a a
f b
Port B g
g e c
7 AC
d

1. Quelle est la condition pour allumer un segment?


2. Donner la table de correspondance entre les codes binaires et les codes hexadécimaux de tous les
chiffres qu'on désire allumer (0 à F).
3. Donner la directive pour placer ces codes hexa dans une table commençant à l'adresse $0000.
4. Ecrire le programme complet.
5. Modifier la programme précédant pour afficher tous les chiffres de la table (penser à utiliser une
temporisation entre deux opérations d'affichage successives).
6. Application:
Réaliser un afficheur deux digits ($00 à $FF).

Exercice 2: Centrale de surveillance


1. Description du modèle :

Le modèle d’un système d’alarme dans un bâtiment comprend :


• un interrupteur principal pour activer le système d’alarme,
• un interrupteur de porte et deux interrupteurs de fenêtre,
• un capteur de surveillance de l’environnement,
• respectivement une LED pour l’état de l’installation et pour l'amorçage de l’alarme, et
• un vibreur comme sirène d’alarme.

Commande d’un système d’alarme A. RAIHANI 1


UH2C - ENSETM TP microcontrôleur

Avec l’interrupteur principal (Q1), on active le système d’alarme et tous les capteurs et contacts sont alors
surveillés. Une LED de contrôle verte (I3) indique la « disponibilité ».
Lorsqu'un (ou plusieurs) des contacts à la porte (Q2) et aux fenêtres (Q3 et Q4) sont activés, la LED rouge (I1)
doit clignoter et l’alarme (I2) doit retentir. Le système d’alarme reste activé jusqu’à ce que vous ayez acquitté
le signal, c’est-à-dire jusqu’à ce que le système d’alarme soit désactivé avec l’interrupteur principal. L’alarme
acoustique se désactive cependant au bout de 10 secondes.
Dès que le capteur d’environnement (Q5) est activé, la diode LED rouge d’alarme doit clignoter.
Une alarme d’environnement se termine quand vous la désactivez avec l’interrupteur principal ou quand
l’intrus s’éloigne.

2. Montage :
Proposer une configuration pour la connexion des différents actionneurs et capteurs.

3. Analyse
Après une analyse du problème, on peut dresser l’ébauche conceptuelle sur la page 4.

4. Programme et sous-programmes :
Le programme de gestion de l’alarme sera constitué de trois parties :
- SP clignote : Allume la LED alarme pendant 0.5s et l’éteint pendant 0.5s. Ce sous-
programme sera appelé par Clignote.
- SP alarme : réalise une temporisation de 0.5s sera appelé par Tempo.
- Programme principal : main

Solution :
– Donner le programme et les sous-programmes répondant aux exigences du cahier des chrages et
respectant l'ébauche conceptuelle précitée.

 Informations complémentaires :
o Microcontrôleur 68HC11 avec fréquence de 8 MHz
o 0,5 µs par cycle de machine

Commande d’un système d’alarme A. RAIHANI 2


UH2C - ENSETM TP microcontrôleur

Système d’alarme
SP alarme

Initialisation Définir compt1


sur valeur initiale

In. Pr. non Désactiver LED non Définir compt2


ON ? Ready
sur valeur initiale

Décrémenter
Activer LED Ready compt2

Contacts non
Compt2=0 ? non
actifs ?

Charger état
Décrémenter
Démarrer compteur capteur
compt1
10s et tonalité environnement
d’alarme vibreur
EN
non non Compt2=0 ?
Capteur
actif ?
LED alarme
clignote
Return
LED alarme
clignote
In. Pr.
Actif ?
SP Clignote

10s Activer LED


écoulées ?
alarme

Vibreur alarme SP alarme


désactivé

Désactiver LED
alarme
In. Pr. non
Actif ?
SP alarme

LED alarme
clignote Return

Commande d’un système d’alarme A. RAIHANI 3


UH2C – ENSET MOHAMMEDIA MICROCONTROLEUR-DSP

1. Objectifs :

Dans cette manipulation, on va découvrir la manipulation du port série du 68HC11. Pour ce faire, on se servira
toujours le simulateur THRSim11, qui met à la disposition de l’utilisateur un certain nombre de périphériques
pour le test et l’évaluation de son programme tel que l’interface de communication série (SCI) pour la réception
et l’émission d’un caractère
2. Interface de communication série (SCI) :
3.1. Exercice 1 : Transmission d’un caractère
Le principe de notre programme est le suivant :
Après l’initialisation du SCI, le caractère à transmettre (T par exemple) est chargé dans accB. Ensuite, l’état du
drapeau TDRE (registre de données de transmission vide) est testé dans une boucle. Lorsque TDRE est vrai, le
contenu de accB est stocké dans le SCDR (registre de données de communication série). Cette opération
réinitialise automatiquement TDRE.
Une première ébauche du programme «Transmit.asm » peut être :
START LDX #REGBAS
LDAA #%00110000
STAA BAUD,X
LDAA #%00000000
STAA SCCR1,X
LDAA #%00001100
STAA SCCR2,X
LABEL2 LDAB #'T'
* Emettre le caractère au terminal
LABEL3 LDAA SCSR,X
ANDA #%10000000
BEQ LABEL3
* ici le reg. de transmission est vide
STAB SCDR,X
BRA LABEL2
SWI
Démarche :
o Ouvrez THRSim11 et Fermez la fenêtre Commandes.
o Afficher les registres série : View, Registers, Serial ;
o Afficher le récepteur série : Viw, Serial Receiver ;
o Assemblez « Ttransmit.asm » ;
o Définir des points d'arrêt sur STAB SCDR, et sur SWI.
o Réinitialiser les registres : bouton RESET
o Définir des étiquettes standard : Label / Set Standard Labels.
o Définir l'affichage de A, BAUD, SCCR1, SCCR2 et SCSR en binaire.
o On obtient un écran ressemblant à ceci: (Capture de la figure 1).

Figure 1
Que signifie la valeur de réinitialisation de SCSR ?

CI-GMEC2 & GIND2 1


UH2C – ENSET MOHAMMEDIA MICROCONTROLEUR-DSP

Exécution :
o Appuyer sur le bouton RUN.
o Indiquer la condition pour que le programme sort de la boucle
o Le programme accède à la ligne : STAB SCDR, X
o Cette ligne est un point d'arrêt. En ce moment, l'écran ressemble à ceci: (Capture de la figure 2)

Figure 2
o Passez manuellement à la ligne suivante pour enregistre B dans SCDR.
o L'écran ressemble à ceci: (Capture de la figure 3)

Figure 3
o Interpréter et conclure
o Appuyer sur RUN une autre fois
o Que constatez-vous ?
o Appuyer sur RUN 2 fois
o Conclusion

3.2. Exercice 2 : Réception d’un caractère


Voici une variante de programme pour la réception d’un caractère :
START LDX #REGBAS
LDAA #%00110000
STAA BAUD,X
LDAA #%00000000
STAA SCCR1,X
LDAA #%00001100
STAA SCCR2,X
LABEL0 NOP

CI-GMEC2 & GIND2 2


UH2C – ENSET MOHAMMEDIA MICROCONTROLEUR-DSP

LABEL1 LDAA SCSR,X


ANDA #%00100000
BEQ LABEL1
LDAB SCDR,X
STAB PORTB,X
BRA LABEL0
SWI

Démarche :
o Ouvrir THRSim11 et Fermez la fenêtre Commandes.
o Afficher les registres de ports et les registres série.
o Afficher émetteur série
o Assemblez « Recept.asm »
o Définir les points d'arrêt sur LDAB SCDR, X et SWI.
o Réinitialiser les registres.
o Définir des étiquettes standard.
o Définir l'affichage de BAUD, SCCR1, SCCR2, SCSR et l’accA sur binaire.
o Votre écran devrait ressembler à ceci : (Capture de la figure 4)

Figure 4

o Exécuter le programme
o Justifier le déroulement en boucle du programme
o Tapez le caractère T dans la fenêtre de l'émetteur série et appuyez sur Send
o Interpréter le résultat
o Avancer manuellement et relever le changement des différents contenus
o Exécuter le programme pour plusieurs caractères

CI-GMEC2 & GIND2 3


UH2C - ENSETM TP microcontrôleur

Dans ce TP, il s’agit de commander un moteur pas à pas avec le MC 68HC11.

1. Présentation de la maquette :

Un moteur pas à pas entraîne un dispositif de positionnement. Pour la commande avec le microcontrôleur 68HC11, le
module de moteur pas à pas offre trois entrées :

• "CLOCK" : À chaque fois qu’un signal est réinitialisé ( "1-0- transition" ) à l’entrée “Clock1“, le
moteur se déplace d’un ‘pas’.
 "SENS DE ROTATION" : À cette entrée “ R /L “, le sens de rotation souhaité peut être spécifié :
o "1" pour la droite,
o "0" pour la gauche.
• "PORTEE" : cette entrée “H / F “ définit la portée à réaliser :
o "1" pour un demi-pas,
o "0" pour un pas complet.

L’affectation pour les sorties à commander au port 1 est :


• bit 7 pour la portée,
• bit 6 pour le sens de rotation et
• bit 5 pour l'horloge.

Le mot "111xxxxx" indique par exemple le mode de fonctionnement "Demi-pas / rotation à droite"
(x signifie ici “0“ ou “1“ au choix).

Un déplacement répété de façon uniforme peut être décrit avec 3 octets.


• Mode : Demi-pas droite/gauche
Pas complet droite/gauche
• Nombre de pas : 1...250 pas
• Fréquence : 1...250 Hz

Important :
Il faut prévoir une temporisation de 100µs entre chaque pas du moteur.

2. Montage expérimental :
Matériel requis :
Qté Désignation Identifiant
1 Plate-forme avec module d’alimentation en courant +5V SO4000-1E
1 Alimentation enfichable CA 90...230V, 45..65Hz, CC 9V, SO4000-1F
630mA
1 Module PSD2-FLASH à contrôleur 68HC11 I SO4000-1I
1 Adaptateur de 8 bits SO4000-1K
1 Moteur pas à pas avec disque de codage SO4000-2B
1 Unité de pilote de bus SO4000-1V
1 Unité de commutation SO4000-1R

Commande d’un MPAP A. RAIHANI 1


UH2C - ENSETM TP microcontrôleur

Montage :

Travail demandé :
Un compte rendu du projet est à rendre au terme de la réalisation. Ce compte rendu, rédigé par groupe de
travail, doit traiter les points suivants :

1- Faire une recherche bibliographique sur le fonctionnement des moteurs pas-à-pas.


2- Ecrire la suite des instructions permettant de déplacer le moteur d’un pas à droite puis d’un pas à gauche.
3- Ecrire le sous- programme ‘delay’ pour réalisant une temporisation de 100 µs.
4- Ecrire le programme pour effectuer 10 pas à gauche.

Commande d’un MPAP A. RAIHANI 2


UH2C - ENSETM TP microcontrôleur

5- On a enregistré dans un tableau une séquence de mouvements complète comprenant plusieurs pas, avec mode
de fonctionnement et fréquence différents. Le début et la fin du tableau reçoivent $FD respectivement $FE
comme caractéristique.

ADRESSE CONTENU
10 $FD (Début de la table)
11 $C0 (Phase 1)
12 $5
13 100
14 $80 (Phase 2)
15 10
16 100
17 $40 (Phase 3)
18 15
19 100
1A 0 (Phase 4)
1B 20
1C 100
1D $FE (Fin de la table)

 Expliquer le contenu de tel tableau.


 Ecrire le programme pour réaliser ces différentes phases.

6- Programmez un tableau qui accélère le moteur pas à pas avec un régime s’élevant jusqu’à une fréquence
maximale de 250 Hz et qui réduit ensuite la fréquence jusqu’à l’arrêt, créant ainsi une « rampe de démarrage et
de freinage ».

fréquence
300

200

100

0
Pas

Commande d’un MPAP A. RAIHANI 3


UH2C - ENSETM TP microcontrôleur

Commande d’un système d’aération de tunnel

1. Cahier des charges :

Dans un tunnel routier, 4 capteurs de substances toxiques I1...I4 mesurent la pollution de l’air. Selon les besoins, la
commande doit activer et désactiver 3 turbines d’aération. Un système de feux de circulation régule la circulation dans
le tunnel quand les 4 turbines d’aération sont activées.
Notamment en cas de bouchon dans le tunnel, le système de feux de circulation en interdit l’entrée. Un embouteillage
est saisi par une boucle de détecteur de proximité I5 qui surveille le trafic.

Les phases des feux sont définies comme suit :

Phase 1 2 3 4
Durée (s) 1 10 1 10
LED rouge (Port1 7)  
LED orange (Port1 6)  
LED verte (Port1 5) 

2. Montage expérimental :

Matériel requis :

Qté Désignation Identifiant


1 Plate-forme avec module d’alimentation en courant +5V SO4000-1E
1 Alimentation enfichable CA 90...230V, 45..65Hz, CC 9V, SO4000-1F
630mA
1 Module PSD2-FLASH à contrôleur 68HC11 I SO4000-1I
1 Adaptateur de 8 bits SO4000-1K
1 Unité de pilote de bus SO4000-1V
1 Aération de tunnel SO4000-2P
1 Support pour modules d’application SO4000-2X

Commande d’une aération de tunnel A. RAIHANI 1


UH2C - ENSETM TP microcontrôleur

Montage :

Travail demandé :
Un compte rendu du projet est à rendre au terme de la réalisation. Ce compte rendu, rédigé par groupe de
travail, doit traiter les points suivants :
I- Réalisez une analyse des problèmes pour la commande des feux de circulation et répondez aux questions
suivantes :
Q1 :
Quelles sont les valeurs de sortie des différentes phases de feux en séquence binaire, en représentation
hexadécimale ou comme chiffre décimal ? Remplissez le tableau de valeurs suivant :
Phase Durée (s) b7 b6 b5 b4 b3 b2 b1 b0 Hex Déc
1
2
3
4
Fin
Q2 :
Donnez la suite des instructions pour écrire la valeur de sortie et la durée comme tableau dans la
mémoire RAM (à partir de l’adresse 30h).
Q3 :
Comment choisir la fin du tableau ?

Commande d’une aération de tunnel A. RAIHANI 2


UH2C - ENSETM TP microcontrôleur

II- Pour préparer la commande des feux de circulation, créez à partir de l’adresse $F800 un sous-programme
DELAY qui retarde avec une base temps de 1 seconde et attend plusieurs secondes selon le paramètre
<DelayTime> transmis. Ce paramètre est à recharger à partir de la table de séquences déjà remplie (à partir
de l’adresse 30h).
Exemple : DelayTime=10, on refait DELAY 10 fois, donc une temporisation de 10s.

Sachant que :
Fréquence d’horloge : 8Mhz
Cycle de machine : 0.5µs
Déterminez le contenu des compteurs de boucles pour assurer cette temporisation de 1s.
Donner l’organigramme correspondant.

SP DELAY

III- Développez un sous-programme qui passe en revue une fois les 4 phases des feux.
SP LIGHTS

IV- Programme principal :


Le programme de gestion du tunnel doit réaliser les tâches suivantes :
 activer les ventilateurs comme suit :
• Le ventilateur M1 démarre quand 1 capteur réagit,
• les ventilateurs M1 et M2 démarrent quand 2 capteurs sont activés,
• quand plus de 2 capteurs sont activés, tous les ventilateurs démarrent.
 Gérer les feux tricolores :
• parcourt les phases de commutation de feux quand les 4 capteurs sont actifs,
• reste commuté sur « vert » quand moins de 4 capteurs de substances nocives actifs sont activés
 Surveiller le trafic :
• En cas d’embouteillage/accident, la boucle de détecteur de proximité I5 réagit. Tous les
ventilateurs doivent immédiatement démarrer et les feux passer au « rouge » pendant 10
secondes.
• En cas d’embouteillage/accident prolongé, le feu reste en permanence « rouge ».
(Insérez cette interrogation au début de la boucle du programme principal)

SYSTEME TUNNEL

Structure du programme :
On vous fournit ci-joint une ossature du programme en précisant un certain nombre de constantes utilisées
dans le programme.

;*******************************************************************
;* Projet: "Commande d’une aération de tunnel" *
*
;* configuration matérielle *
;* P0.1 Ventilateur M1 *
;* P0.2 Ventilateur M2 *
;* P0.3 Ventilateur M3 *
;* *
;* P0.5 Feu "Vert" *
;* P0.6 Feu "Orange" *

Commande d’une aération de tunnel A. RAIHANI 3


UH2C - ENSETM TP microcontrôleur

;* P0.7 Feu "Rouge" *


;* P1.0 reliée au capteur de gaz d’échappement I1 *
;* P1.1 reliée au capteur de gaz d’échappement I2 *
;* P1.2 reliée au capteur de gaz d’échappement I3 *
;* P1.3 reliée au capteur de gaz d’échappement I4 *
;* P1.7 reliée au capteur d'embouteillages I5 *
;*******************************************************************

cpu 6811 ; Sélectionner processeur -> 68HC11


include stdef11F.inc ; Intégrer registre de fonctions spéciales
padding off ; Orientation octet -> accès mémoire 8 bits

;****** Définir variables spécifiques au programme ****************

segment code
ORG 0

Adres0 equ $30 ; Adresse de début du tableau


SumSen ds.b 1 ; Nombre de capteurs actifs
Count ds.b 1 ; Compteur pour contrôle de capteurs
DelayTime ds.b 1 ; Compteur pour durée phases du feu
Vnew ds.b 1 ; Mémoire temp. consigne ventilateur

; Entrées et sorties:
Green equ %00100000 ; P0.5 Feu "Vert"
Red equ %10000000 ; P0.7 Feu "Rouge"
Crash equ %10000000 ; P1.7 (touche) accident/embouteillage dans le tunnel

;///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

segment code
ORG $F800

;****** Sous-programmes ( SP ) ***************************************


;=====================================================================
; SP: DELAY(DelayTime)
; Objet: < DelayTime > * retardé d’une seconde
; Appel: par MAIN
;=====================================================================
; ce SP réalise une base de temps de 1s et reçoit comme paramètre le compteur pour durée de phases
; du feu 10 ou 1 selon le cas.

DELAY :

rts ; Retour au PP MAIN

;=====================================================================
; SP: INIT
; Objet: Initialiser les ports E/S P0 et écrire tableau 4 phases de feux dans mémoire RAM
; Appel: par MAIN
;=====================================================================
INIT:

rts ; Retour au PP MAIN

;=====================================================================
; SP: SENSOR>[SumSen]
; Objet: Compter le nombre de capteurs actifs en incrémentant SumSen
; Appel: par MAIN
; Entrées: Port1.0-3 (=capteurs)
;=====================================================================
SENSOR:

rts ; Retour au PP MAIN

Commande d’une aération de tunnel A. RAIHANI 4


UH2C - ENSETM TP microcontrôleur

;=====================================================================
; SP: VENTI(SumSen)
; Objet: Activer ou désactiver les ventilateurs selon le nombre des capteurs actifs
; Appel: par MAIN
; Sorties: Port0.1-3 (=ventilateurs)
;=====================================================================
VENTI:

rts ; Retour au PP MAIN

;=====================================================================
; SP: LIGHTS
; Objet: Parcourir les 4 phases des feux à partir du tableau et appelle le SP DELAY
; Appel: par MAIN
; Sorties: Port0.5-7 (=feux)
;=====================================================================
LIGHTS:

rts ; Retour au PP MAIN

;=====================================================================
; SP: STOP
; Objet: En cas d’accident/embouteillage dans le tunnel, feu sur « rouge » et activer tous
; les ventilateurs, appelle le SP DELAY
; Appel: par MAIN
; Sorties: P0.1-3,5-7 (=feux et ventilateurs)
;=====================================================================
STOP:

rts ; Retour au PP MAIN

;=====================================================================
; SP: FREE
; Objet: Commuter le feu au « vert » après un embouteillage et appelle le SP DELAY
; Appel: par MAIN
; Sorties: P0.5-7 (=feux)
;=====================================================================
FREE:

rts ; Retour au PP MAIN

;/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

;****** Programme principal ( MAIN ) *********************************


;=====================================================================
; MAIN: Programme principal "SYTEME TUNNEL "
; Objet: Commande du système d’aération de tunnel
; Sous-programmes: DELAY, INIT, FREE, LIGHTS, STOP, SENSOR,VENTI
; Entrées: Port1.0-3,7 (=capteur, détecteur de proximité d’embouteillage)
; Sorties: Port0.1-3,5-7 (=feux, ventilateurs)
;=====================================================================

MAIN:

;****** Vecteur de réinitialisation ********************************


ORG $FFFE
dc.w MAIN ; Saut au programme principal

;****** Fin du programme *******************************************


END

Commande d’une aération de tunnel A. RAIHANI 5


Université Hassan II de Casablanca- ENSET Mohammedia Traitement du signal : TP

Objectifs :

A la fin de la séance de travaux pratiques l'étudiant doit être capable de :


 Générer des signaux continus ;
 Réaliser l’analyse spectrale des signaux analogiques;
 Maîtriser l’effet de l’échantillonnage sur les signaux analogiques.

Travail demandé :
Un compte-rendu est à remettre à la fin des séances de TP. Dans ce compte-rendu, vous devez :
 développer succinctement votre réflexion.
 commenter votre code MatLab.
 interpréter les résultats obtenus.
 traiter les exercices non réalisés au laboratoire.

1. Représentation de quelques signaux par MATLAB :


a. Impulsion de Dirac :
Soit le script Matlab suivant :

%Génération d'une impulsion unité


%Génération d'un vecteur de -10 0
20
t=-10:20;
%Génération de l'impulsion unité
u=[zeros(1,10) 1 zeros(1,20)];
%Tracer le signal généré
stem(t,u);
xlabel('Temps indexé en n');
ylabel('Amplitude');
title('impulsion unité');
axis([-10 20 0 1.2]);

Exécuter le programme et découvrir le rôle de chaque ligne de commandes.

b. Génération d’une impulsion rectangulaire


t = -1:0.00001:1 ;
x1 = rectpuls(t,0.05) ;
plot(t,x1) ; axis([-0.1 0.1 -0.2
1.2]);
grid ;
xlabel('Temps(sec)');
ylabel('Amplitude');
title('impulsion rectangulaire ') ;

1. Exécuter ce programme et déterminer les caractéristiques.


2. Modifier Ce programme pour construire une impulsion rectangulaire de durée
T=0.08 s et d’amplitude A=2V.

CI-SEER 1 1 A.RAIHANI
Université Hassan II de Casablanca- ENSET Mohammedia Traitement du signal : TP

c. Génération du sinus cardinal : sinc(x)


%Tracage de la fonction sinus
cardinal
%Domaine des valeurs de la variable
x
x=-4*pi:pi/100:4*pi;
%valeurs de la fonction
y=(x==0)+sin(x)./(x+(x==0));
%Tracage de la fonction sinus
cardinal
plot(x,y)
grid
title('sinus cardinal y=sin(x)/x')

Quel est le rôle de l’expression logique(x==0) ?

d. Génération de quelques signaux :


Exécuter les programmes suivants, déterminer le nom, le type de chaque signal ainsi que sa
forme générale et terminer ce qui manque dans les programmes (commentaires, titre ...)

Prg1 : Prg2 :
fs = 10000 ; t = -1:0.00001:1 ;
t = 0:1/fs:1.5 ; x2 = tripuls(t,0.04) ;
y = square(2*pi*50*t) ; plot(t,x2),
plot(t,y), axis([-0.1 0.1 -0.2
axis([0 0.1 -1.2 1.2]) 1.2])
grid grid ;

Prg3 : Prg4 :
fs = 10000 ; x=0:0.001:4*pi ;
t = 0:1/fs:1.5 ; y=sin(x) ;
y1 = sawtooth(2*pi*50*t) ; plot(x, y) ;
plot(t,y1); axis([0 4*pi -1.2 1.2])
axis([0 0.1 -1.2 1.2]); ;
grid; grid ;

Donc pour générer un signal, il faut:


 Définir le vecteur temps en [s] : t=K.Te
 Te= période d’échantillonnage en [s] : Te=1/Fe
 Fe étant la fréquence d’échantillonnage en [Hz] qui doit respecter la condition de Shannon
Fe2.Fmax.
 Fmax = fréquence maximale du signal à représenter. Si le signal est périodique de période
Fmax=1/T.

2. Analyse spectral d’un signal sinus:


Un signal sinusoïdal est représenté par l’expression suivante :
x (t )  sin(2ft )

CI-SEER 1 2 A.RAIHANI
Université Hassan II de Casablanca- ENSET Mohammedia Traitement du signal : TP

Dans Matlab, ce signal sera représenté par :


clear all
close all
Fe=44100; % fréquence d'échantillonnage 44.1 kHz (standard audio)
Te=1/Fe; % période d’échantillonnage en [s]
f=440; % fréquence du signal de 440 Hz (en musique, la note la)
t=0:Te:5; % intervalle de temps de 0 à 5 secondes échantillonné à Te
x=sin(2*pi*f*t); % signal sinusoidal x(t)
sound(x,Fe); % jouer le son (l'affichage avec plot n'est pas conseillé
% car il y a ~200'000 échantillons)

La transformée de Fourier de ce signal est réalisée sur un certain nombre d’échantillons Nf.
Le résultat de la TF est un signal 1D de Nf coefficients. Chaque coefficient représente l'amplitude
d'un signal sinusoïdal d'une fréquence correspondant à la position de ce coefficient. La précision de
la TF (plus petite différence notable entre deux fréquences) est la largeur d'une bande de fréquence
qui représentée par un coefficient. En effet, lorsque deux signaux ont une fréquence qui est trop
proche l'une de l'autre, ils sont représentés sur la TF par le même coefficient. La précision de la TF,
Fe
qui correspond à la est donnée par : f  Hz 
Nf
Le Nf ne doit pas être choisit trop grand pour deux raisons. La première, c'est que la TF est
relativement coûteuse en temps de calcul (O(nlog n)), ce qui fait que, pour un signal échantillonné à
44.1 kHz, il faut 65536 échantillons pour identifier une fréquence avec une précision inférieure à 1
Hz. La seconde, c'est que la TF n'a de sens que si le signal est périodique sur un grand nombre
d'échantillons, ce qui n'est pas toujours le cas (p.ex. 65536 échantillons = 1.5 seconde de signal).
La TF étant symétrique, elle possède une partie positive et une partie négative. Un fftshift est
donc nécessaire pour obtenir un graphique ressemblant à celui ci-contre :

La fréquence de chaque pic d de la TF est donc donnée par : freq  d .f Hz 
Etant donné la symétrie de la norme de la TF, seuls Nf/2 coefficients sont significatifs. La fréquence
maximale (correspondant bien au théorème de Shanon) est donc donnée par :
Nf Fe
Fmax  (  1) * f 
2 2
Avec Matlab, cela donne :
i=1; % position de départ de l’analyse fréquentielle
Nf=8192; % 8192 échantillons
df=Fe/Nf ; % largeur de bande de freq d'un coef.
fmax=(Nf/2-1)*df; % fréquence maximale en Hz
ft=abs(fft(x(i:i+Nf-1))); % norme de la TF
plot(1:Nf, fftshift(ft)); % peut être affiché en Hz avec 0:df:fmax
[dummy d]=max(ft(1:Nf/2)); % recherche du coef maximum (=signal dominant)
d=d(1)-1; % -1 car les tableaux matlab débutent à 1
freq=d*df ; % freq dominante trouvée par la TF en Hz

CI-SEER 1 3 A.RAIHANI
Université Hassan II de Casablanca- ENSET Mohammedia Traitement du signal : TP

En augmentant le nombre Nf, on peut obtenir la fréquence de départ (440 Hz) avec la précision désirée
Application :
Soit le script Matlab suivant :
close all
clear all
[W1, Fs, nbits] = wavread('diapason.wav');
wavplay(W1,Fs); % permet de jouer un signal sur la carte son
plot(W1); % zoomez et remarquez l’aspect ‘‘sinusoidal’’
fW1=fft(W1);
figure
plot(abs(fW1));
figure
plot(abs(fftshift(fW1))); % zoomez sur la partie centrale
figure
plot(log(abs(fftshift(fW1))));
figure
semilogy(abs(fftshift(fW1)));
grid on
[X,indice]=max(abs(fW1));
l=length(W1);

 Exécuter ce code ;
 Zoomer pour remarquer l’aspect sinusoïdal
 Vérifiez la validité de la formule de Parseval.
 À quelle fréquence correspond le plus grand pic dans le spectre ? Pouvez-vous retrouver
quelle est la note jouée ?

3. Vérification expérimentale du phénomène d’aliasing

Etude préliminaire :
On considère le signal analogique (continu) suivant :
y (t )  sin(2t )  0.3 sin(20t )
Quelle est la plus haute fréquence présente dans ce signal ? Quel est la fréquence d’échantillonnage
minimale pour satisfaire la condition de Nyquist ?
Soit les commandes Matlab suivantes :
.
close all
clear all
fe=100;
T=[0:1/fe:5];
Y=sin(2*pi*T)+0.3*sin(20*pi*T);
plot(T,Y), grid on

Ce code a pour effet de dessiner la représentation du signal échantillonné à la fréquence fe, sur 5
périodes.
 Diminuez la valeur de la fréquence d’échantillonnage, mais en la gardant plus grande que
la fréquence de Nyquist. Observez que vous pouvez vérifier la fréquence de la composante
du signal y en comptant le nombre de maxima locaux sur une période.
 Que se passe-t-il lorsque la fréquence d’échantillonnage est égale à la fréquence de Nyquist
?
 Et lorsque la fréquence d’échantillonnage est inférieure à la fréquence de Nyquist ?
Comptez les maxima
 locaux : que pensez-vous du résultat ?

CI-SEER 1 4 A.RAIHANI
Université Hassan II de Casablanca- ENSET Mohammedia GE-SEER2 : Traitement du signal

Introduction :
Un filtre numérique est un système linéaire permanent, fonctionnant en temps discret, dont l’objet est de
modifier d’une façon précise le contenu fréquentiel (spectral) d’une séquence appliquée à l’entrée de ce
système. En effet, un filtre doit laisser passer certaines fréquences, alors qu’il doit en atténuer (voire
éliminer) d’autres. Ainsi, on distingue quatre filtres de base :
 les filtres passe-bas laissent passer les fréquences inférieures à une fréquence de coupure fc et
bloquent celles qui lui sont supérieures,
 les filtres passe-haut bloquent les fréquences inférieures à une fréquence de coupure fc et laissent
passer celles qui lui sont supérieures,
 les filtres passe-bande laissent passer les fréquences autour d’une fréquence centrale f0 (ou
comprises entre f1 et f2) et bloquent les autres,
 les filtres réjecteur-de-bande bloquent les fréquences autour d’une fréquence centrale f0 (ou
comprises entre f1 et f2) et laissent passer les autres.
Cette partie du TP utilise le logiciel de simulation Matlab pour faire:
 la synthèse des filtres : conception numériques des filtres à partir d’un gabarit analogique prédéfini.
 l’analyse des filtres : caractérisation de ses filtres par les réponses en fréquences, indicielle,
impulsionnelle.
Travail demandé :
Un compte-rendu est à remettre à la fin des séances de TP. Dans ce compte-rendu, vous devez :
 développer succinctement votre réflexion.
 commenter votre code MatLab.
 interpréter les résultats obtenus.
 traiter les exercices non réalisés au laboratoire.
Partie 1 : Analyse des filtres numériques
Exercice 1 : Etude d’un filtre numérique passe-bas premier ordre :
Pour réaliser un filtre passe-bas FIR simple (qui atténue les fréquences élevées du signal), il suffit
d'effectuer la moyenne des valeurs entre l'échantillon présent et l'échantillon précédent, tel qu'il est exprimé
par l'équation : y n  0.5 x n  0.5 x n 1
Intuitivement, on peut comprendre l'effet passe-bas de cette opération puisqu'en effectuant la moyenne, on
atténue des variations brusques du signal, ce qui résulte en un lissage du signal d'entrée.
1. Tracer la réponse en fréquence de ce filtre en considérant 512 points et une fréquence
d’échantillonnage de 2000 Hz, 8000 Hz puis 16 000 Hz (freqz, plot)
2. Déterminer la fréquence de coupure à -3dB pour chaque cas. Conclure
3. Etudier le comportement d’un filtre passe-bas d’ordre 1 pour deux signaux sinusoïdaux de
fréquences respectives : 1000 Hz et 200 Hz. (butter, filter)

4. Déterminer la réponse impulsionnelle du filtre (filter, impz)


5. Déterminer la réponse indicielle de tel filtre
6. Etudier l’ordre du filtre sur sa réponse en fréquence
Exercice 2 :
On considère le filtre défini par la commande suivante : [b,a]=butter(1,1/8,'high');
1. Représenter graphe de la réponse fréquentielle du filtre
2. Représenter graphe du déphasage apporté par le filtre
3. Donner le type du filtre ainsi que sa fréquence de coupure à -3dB.
4. Etudier Réponse du filtre à une sinusoïde échantillonné de fréquence F=250 Hz pour 100
échantillons.
5. Etudier la réponse indicielle de ce filtre
TP : Simulation Matlab A. RAIHANI Page 1
Université Hassan II de Casablanca- ENSET Mohammedia GE-SEER2 : Traitement du signal

Exercice 3 :
On désire étudier le filtre décrit par la fonction de transfert suivante :
1
H z   avec a1=-1.0690 et a2=0.5831
1  a1 z  a 2 z  2
1

1. Calculer et représenter la réponse impulsionnelle de ce filtre.


2. Calculer et représenter la réponse en fréquence (module et phase).
3. Déterminer la fréquence de résonnance.
4. Calculer et tracer des pôles et des zéros.
Partie 2 : Synthèse des filtres numériques
La synthèse d’un filtre est un ensemble de processus qui débute par la définition des caractéristiques
du filtre, jusqu’à sa réalisation informatique et/ou électronique, en passant par la détermination de ses
coefficients pour que sa réponse en fréquence coïncide avec une fonction de transfert donnée.
Cahier des charges :
On désire réaliser des filtres à partir du gabarit en fréquence analogique de la figure 1:
Pour ce filtre, on note les caractéristiques suivantes :
- Filtre passe-bas ;
- Bande passante (-3dB) jusqu’à 4KHz ;
- Bande atténuée à -40dB à partir de 5KHz.
On fixe une fréquence d’échantillonnage de 20 KHz.
Gain(dB)

-0dB
-3dB

-40dB

f (Hz)
4KHz 5KHz
Figure 1
A- Synthèse de filtres IIR numériques :
1- Filtre de Butterworth :
- Déterminez l'ordre minimal du filtre satisfaisant ce gabarit (buttord).
- A partir de là, récupérez la fonction de transfert en Z associée (butter).
- Observez le module de la réponse en fréquence (freqz)
- Fixez la fréquence d'échantillonnage à 10 kHz et refaites les points précédents. Que se passe t-il ?
Commentez.
2- Filtre de Tchebychev de type I
- Déterminez l'ordre minimal du filtre satisfaisant ce gabarit (cheb1ord).
- A partir de là, récupérez la fonction de transfert en Z associée (cheby1).
- Observez le module de la réponse en fréquence (freqz)
3- Filtre de Tchebychev de type II
- Déterminez l'ordre minimal du filtre satisfaisant ce gabarit (cheb2ord).
- A partir de là, récupérez la fonction de transfert en Z associée (cheby2).
TP : Simulation Matlab A. RAIHANI Page 2
Université Hassan II de Casablanca- ENSET Mohammedia GE-SEER2 : Traitement du signal

- Observez le module de la réponse en fréquence (freqz)


4- Tracez sur le même graphique les modules des réponses en fréquence de ces trois filtres (freqz).
Vérifiez qu'elles vérifient les contraintes du gabarit et analysez (zoom).
B- Synthèse de filtres FIR
1- Algorithme itératif de Remez
- Estimez l'ordre du filtre (Remezord).
- A partir de là, calculez la réponse impulsionnelle. Affichez cette réponse impulsionnelle. De
quel type de filtre s'agit-il ? Affichez les pôles et les zéros (zplane). Commentez.
- Affichez le module de la réponse en fréquence de ce filtre. Si elle ne vérifie pas le gabarit,
ajustez l'ordre du filtre. On notera L, la longueur du filtre vérifiant le gabarit.
2- Méthode des fenêtres
- Générez une réponse impulsionnelle de type sinus cardinal sur L=25 points. On choisira la
pulsation de telle sorte que le filtre rectangle associé coupe à 4kHz. Observez le module de la
réponse en fréquence, les pôles et les zéros. Commentaires.
- Multipliez la réponse impulsionnelle par une fenêtre au choix (hanning, hamming,...). Observez
l'influence sur la réponse en fréquence.

C- Comparaison IIR / FIR


Comparez (ordre, zéros, pôles, phase, module ...) les filtres générés au A-3 et au B-1.

TP : Simulation Matlab A. RAIHANI Page 3


UH2 Casablanca- ENSET Mohammedia Energies renouvelables
1

PLAN TYPIQUE POUR LA REDACTION DU COMPTE-RENDU

Le compte-rendu est un rapport de synthèse du travail réalisé au cours d'une séance de TP. Il s'agit avant tout
d'un document de travail pour votre usage personnel résumant les différentes tâches réalisées au laboratoire
ou sur PC et permet d'autre part, à l’enseignant de vérifier que le travail a été effectué correctement et que les
étudiants ont bien compris les concepts et les notions associés aux thèmes étudiés. La présentation et
l'interprétation des résultats, la proposition de solutions pour obtenir de meilleurs résultats constituent les
points forts d'un compte rendu de TP. Un CR doit obligatoirement contenir une introduction et une
conclusion.

Important :
Un CR est personnel et toute ressemblance, en totalité ou en partie,
entre des rapports conduira à une note 0/20

Le plan typique de votre compte rendu doit respecter et contenir les points suivants :

1. Introduction générale :
L’introduction présente brièvement l’objectif du TP sujet d’étude. Cette partie est très importante car
une introduction bien rédigée, et qui présente clairement l’intérêt de la manipulation, donne au lecteur
une impression favorable pour la suite. Il s'agit de décrire le problème posé et définir les objectifs de
l’activité à atteindre

2. Cœur du rapport :
L’énoncé de TP est organisé selon une progression logique. Il peut généralement contenir plusieurs
exercices qui doivent vous amener à comprendre un point particulier du thème abordé. Par
conséquent, vous devez traiter chaque exercice à part et en tirer les enseignements nécessaires. Ainsi,
pour chaque exercice, il faut traiter les points suivants :
 Démarche suivie :
Il s'agit de faire un rappel théorique des notions abordées dans l'exercice en question et de
décrire la démarche suivie pour la résolution et la présentation des résultats attendus. Une telle
étude doit intégrer, outre une description détaillée des différentes données utilisées et leur
structure, les outils à utiliser éventuellement pour la conduite du TP.
 Pratique et présentation des résultats :
Il s'agit de traiter l’ensemble des questions et de présenter clairement les résultats relatifs à
chaque travail demandé. Les résultats doivent être présentés sous forme de tableaux et
graphiques avec des légendes claires et lisibles.
 Interprétation et discussions des résultats
Il s'agit dans cette partie de discuter la corrélation entre la théorie et la pratique. Le cas échéant,
il faut apporter des améliorations de la solution proposée pour aboutir aux résultats attendus.

 Conclure et faire la critique de l’exercice :


Indiquer si les objectifs de départ sont validés ou non. Proposer une réponse au problème posé.
3. Conclusion générale :
Le compte-rendu se termine par une conclusion qui doit tirer une leçon du travail réalisé par rapport
à l’objectif fixé. On peut aussi apporter une appréciation personnelle sur les travaux (comparaison des
valeurs obtenues avec des références, amélioration à apporter à la manipulation, discussion des
résultats, ...).
C.I: GE-SEER 2 A . RAIHANI Page 1
UH2 Casablanca- ENSET Mohammedia Energies renouvelables 1

TP1 :
Gisement éolien
(Etude statistique, modélisation de la vitesse du vent et potentiel éolique)

Ce TP consiste à illustrer et mettre en œuvre les concepts vus en cours. Il s'agit d'organiser, traiter et d'analyser
les mesures éoliques en vue de déterminer le potentiel énergétique du site sujet d'étude. Les différentes étapes
de cette étude s’appuient sur les mesures éoliques fournies par notre station de mesure en exploitant les outils
statistiques et un logiciel dédié. Pour ce faire, on suivra les phases suivantes :
 Faire les prétraitements nécessaires pour les mesures brutes
 Caractériser la vitesse du vent du site étudier
 Chercher le modèle de cette vitesse en utilisant les études statistiques et les modélisations dédiées.
 Estimer le potentiel énergétique de tel site.
N.B:
 Les mesures, sujettes d'étude, vous seront fournies au laboratoire et concernent des mesures annuelles.
 L'étude peut s'étendre au-delà des lignes directives proposées.
 Un rapport individuel est à rendre à la fin du TP. Dans ce rapport, vous devez vous rendre-compte par
rapport au travail demandé. Ainsi, il est nécessaire de faire une étude montrant la touche de l'élève-
ingénieur.
 On annexe, on vous fournit un document pouvant servir de support d'étude.

I. Présentation des mesures :


Les différentes mesures, servant pour support de notre TP, sont fournies par une station de mesure installée à
l’Ecole et sont effectuées à une hauteur de 10m. Le système de mesure est constitué des équipements suivants :
 Girouette (direction du vent)
 Anémomètre (vitesse du vent)
 Thermomètre (Température)
 Unité de stockage de données et de
traitement
Les différentes grandeurs mesurées sont rangées dans un fichier conformément à la structure suivante :
Outside Wind Hi Low Wind Wind Inside Archive
Date Time Hi
Temperature Chill Temperature Temperature Speed Direction Temperature Period
01/05/2005 00:00 15.4 15.4 15.4 15.3 0,4 1.3 S 19.7 5
01/05/2005 00:05 15.4 15.4 15.4 15.3 0,4 0.9 S 19.7 5

La plateforme éolienne comprend aussi :


 Aérogénérateur triphasé
(3KW– 48 VAC) ;
 Régulateur de charge
(48 VAC ; 24 VDC)
 Accumulateurs (24 V ; 210 Ah)
 Onduleur (24 VDC ; 230 VAC)
 Charge (éclairage et pompage)
 Mât : 21m

II. Prétraitement :
Avant de commencer l'analyse et la caractérisation du régime du vent, il s'avère nécessaire de réaliser quelques
traitements préliminaires dans le but réduire le temps de traitement. En effet, en fonction de la période
d'échantillonnage (Archive Period), le nombre d'échantillon peut être trop important et peut entraîner une
saturation de la mémoire de la machine de traitement surtout lorsqu'on passe sur une analyse annuelle
(8760h!!!).

C.I: GE-SEER 2 A . RAIHANI Page 1


UH2 Casablanca- ENSET Mohammedia Energies renouvelables 1

Le but est, donc, de réduire le nombre d'échantillons sans trop perdre d'informations (on pense à l'estimation
énergétique).
Approche :
Pour la nouvelle période d'échantillonnage, conserver la même structure de données en retenant les
informations suivantes :
 La vitesse moyenne du vent
 La direction la plus dominante sur cette période
 La moyenne et le max des vitesses maximales
 La moyenne et le max des différentes températures

III. Travail à faire :


1. Caractéristiques du vent :
a. Faire une représentation classique des vitesses moyennes du vent pour :
 Une journée
 Une semaine
 Un mois
 Une année
Calculer l'écart type dans chacun des cas. Conclure
b. Déterminer la vitesse moyenne durant le jour et celle durant la nuit pour les différents mois de
l'année.
c. Interpréter et discuter les courbes obtenus
2. Etude statistique :
Afin de visualiser facilement l'intensité du vent mesurée chacune durant une période de l'année, on
utilise souvent la représentation en histogramme de fréquences d'occurrence des classes de vent
dont la largeur habituelle est de 1m/s.

a. Remplir le tableau suivant :


i Vitesse (m/s) Fréquence F(v)
1 0-1 ..... .....
2 1-2
 Représenter la probabilité de distribution de la vitesse du vent mensuelle
 Représenter la distribution cumulative de la vitesse du vent mensuelle
 Discuter ces résultats
 Calculer la probabilité pour que la vitesse du vent soit supérieure ou égale à 8m/s.
b. Déterminer les paramètres de la distribution de Weibull du vent.
c. En déduire les différentes valeurs de F(v)
d. Représenter f(v) et F(v) dans le même graphique de la question a. Discuter les résultats.
e. Déterminer la vitesse moyenne et la vitesse cubique moyenne
f. Déterminer l'écart type et la variance des vents en fonction de la distribution (Weibull, Weibull
hybride et Rayleigh).
g. Déterminer la vitesse du vent la plus probable.
h. Déterminer les roses du vent (Frequency rose et Velocity rose).
o Mensuelle
o Saisonnière
o Annuelle
o Conclure
Discuter les résultats obtenus.
3. Energie éolienne :
 Déterminer l'énergie éolienne à une hauteur de 21m (=0.3)
 Déterminer la contribution des différentes catégories du vent dans la production annuelle de
l'énergie.
 Déterminer le facteur de capacité (CF) de notre éolienne

C.I: GE-SEER 2 A . RAIHANI Page 2


UH2 Casablanca- ENSET Mohammedia Energies renouvelables 1

TP3 :
Gisement solaire

La connaissance de ce gisement est d’un intérêt majeur pour concevoir et dimensionner les systèmes
énergétiques solaires. Ainsi, un bon dimensionnement n’est possible que si les mesures sont disponibles
d’une manière continue dans l’espace et dans le temps. La meilleure manière pour cela est de disposer
d’une série de mesures continues du rayonnement solaire arrivant au sol. En effet, avant d’arriver au
sol, ce rayonnement subit des variations physiques en traversant l’atmosphère en interagissant avec les
constituants gazeux et solides de la couche atmosphérique : ozone, vapeur d’eau et autres gaz,
molécules d’air, aérosols et les nuages. Notons, par ailleurs, que l’atmosphère joue un rôle essentiel pour
la vie sur Terre car il permet de garder un équilibre de température à la surface de la terre, absorbe une
grande partie du rayonnement ultraviolet du soleil, dangereux pour les yeux et la peau et provoque la
combustion d’un grand nombre de météorites sauf les très grosses.
Dans ce TP nous allons découvrir d’une part, (i) l’effet de l’atmosphère sur le rayonnement solaire et
d’autre part, (ii) l’étude et la simulation des paramètres astronomiques nécessaires pour une meilleure
interception de l’énergie au niveau du sol. En effet, la connaissance de la position du soleil dans le ciel à
tout instant et en tout lieu, les heures de lever et de coucher ainsi que la trajectoire du soleil dans le ciel
au cours d’une journée permettent d’évaluer le gisement solaire pour un site donné.

I. Influence des constituants atmosphériques sur le rayonnement solaire :


Dans cette partie nous allons discuter la redistribution spatiale du rayonnement solaire par les
molécules atmosphériques ainsi que le type de diffusion en fonction la taille des particules diffusantes
et par rapport à la longueur d’onde du rayonnement incident.
Les différentes mesures sont rangées dans le fichier Excel « Dtat.xls » dont les données sont organisées
comme suit :
AM 1 0 1.5 2 3
Ray Aer Eau Dif W Dif-1.5 Dif-2 Dif-3
Couleur (m) (W/m²/m) (W/m²/m) (W/m²/m) (W/m²/m) (W/m²/m) (W/m²/m) (W/m²/m) (W/m²/m)
--- --- --- --- --- --- --- --- --- ---
 AM : Nombre d’air-masse ;
 : Longueur d’onde ;

C.I: GE-SEER 2 A . RAIHANI Page 1


UH2 Casablanca- ENSET Mohammedia Energies renouvelables 1

 Ray : Diffusion Rayleigh par les molécules,


 Aer : diffusion par les poussières et particules fines (aérosols) ;
 Eau : diffusion par les molécules d'eau
 Dif : Diffusion globale (scattering)
 W : Rayonnement hors atmosphère (rayonnement initial) ;
 Dif-1.5, Dif-2 et Dif-3 représentent les diffusions pour AM1.5, 2 et 3 respectivement.

1. Graphiques :
1.1. Représenter, dans le même graphique, 𝑊 et 𝑅𝑎𝑦 en fonction de 
1.2. Représenter, dans le même graphique, 𝑊 et 𝐴𝑒𝑟 en fonction de 
1.3. Représenter, dans le même graphique, 𝑊 et 𝐸𝑎𝑢 en fonction de 
1.4. Représenter, dans le même graphique, 𝑊 et 𝐷𝑖𝑓 en fonction de 
1.5. Représenter, dans le même graphique, W, Dif-1.5, Dif-2 et Dif-3 en fonction de 
2. Indiquer le pourcentage occupé par chaque couleur, et calculer l’atténuation produite dans 1.1, 1.2,
1.3 et 1.4. Interpréter les résultats.
3. Comparer la diffusion globale par rapport produit des 3 autres diffusions (Ray, Aeo et Eau). Conclure
4. Interpréter le graphe de la figure de 1.5
Remarque :
- Pour le format de l’axe des abscisses, il faut choisir les options suivantes :
- Limites : minimum =0.1 et maximum=10 ;
- Unités : Principale=10 et secondaire=10 ;
- L’axe vertical coupe : valeur de l’axe=0.1 ;
- Echelle logarithmique, base =10

II. Script Matlab :


1. Ecrire des scripts de fonctions Matlab pour représenter et interpréter les formules de :
1.1. La déclinaison
1.2. L’angle de la hauteur solaire
1.3. L’azimut
1.4. Equation du temps en minutes
2. Ecrire une application Matlab pour la détermination et le calcul des différents temps. Il est sans à
vous rappeler qu’il faut préciser les inputs de votre application et inviter l’utilisateur à saisir les
informations nécessaires aux calculs.

C.I: GE-SEER 2 A . RAIHANI Page 2

Vous aimerez peut-être aussi