134
´ ECOLE DE L’AIR D ´ EPARTEMENT DES V ´ EHICULES A ´ EROSPATIAUX TRAVAUX DE MOD ´ ELISATION ET D’EXP ´ ERIMENTATION Monsieur BATEMAN

DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

  • Upload
    buinhan

  • View
    215

  • Download
    0

Embed Size (px)

Citation preview

Page 1: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

ECOLE DE L’AIR

DEPARTEMENT DES VEHICULES AEROSPATIAUX

TRAVAUX DE MODELISATION

ET D’EXPERIMENTATION

Monsieur BATEMAN

Page 2: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce
Page 3: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Table des matieres

TABLE DES MATIERES i

Introduction 1

I SIMULATION ET PROGRAMMATION SOUS SIMULINK 3

1 RAPPELS SUR LES SIGNAUX ET LES SYSTEMES 5

1.1 Aspects temporels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.2 A propos des nombres sous SIMULINK . . . . . . . . . . . . . . . . . . . . . . . 8

2 PROGRAMMATION DE DSPICs 11

2.1 Microcontroleur DsPic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.2 Programmation du DsPic sous SIMULINK . . . . . . . . . . . . . . . . . . . . . 12

2.3 Presentation du blockset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.4 Premier exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3 PROGRAMMATION DES PERIPHERIQUES DU DSPIC 19

3.1 Ports numeriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.2 Les UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.3 Le bus SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.4 Les signaux PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

3.5 Convertisseurs Analogiques-Numeriques . . . . . . . . . . . . . . . . . . . . . . . 34

3.6 Le bus I2C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

3.7 Insertion de code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.8 Machine a etats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

II TRAVAUX PRATIQUES D’AUTOMATIQUE 47

1 CHAINE D’ACQUISITION D’UN SIGNAL NUMERIQUE 49

i

Page 4: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Table des matieres

1.1 Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

1.2 Le filtrage anti-repliement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

1.3 La conversion numerique-analogique . . . . . . . . . . . . . . . . . . . . . . . . . 50

1.4 Analyse spectrale du signal echantillonne-bloque . . . . . . . . . . . . . . . . . . 51

1.5 La conversion numerique-analogique . . . . . . . . . . . . . . . . . . . . . . . . . 52

1.6 Traitement du signal par filtre numerique . . . . . . . . . . . . . . . . . . . . . . 52

2 IDENTIFICATION PARAMETRIQUE 55

2.1 Objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

2.2 Algorithme des moindres carres . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

2.3 Algorithme de descente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

3 COMMANDE D’UN MOTEUR BRUSHLESS 65

3.1 Objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

3.2 Modelisation du moteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

3.3 Synthese d’une loi de commande . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

4 CENTRALE D’ATTITUDE 69

4.1 Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

4.2 La centrale d’attitude MTI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

4.3 L’estimation d’attitude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

4.4 Implementation temps reel de la centrale d’attitude . . . . . . . . . . . . . . . . . 74

5 FILTRE DE KALMAN 77

5.1 Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

5.2 Modelisation des signaux et du systeme . . . . . . . . . . . . . . . . . . . . . . . 77

5.3 Presentation de la maquette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

5.4 Implementation du filtre de Kalman . . . . . . . . . . . . . . . . . . . . . . . . . 81

6 CONTROLE DE L’ASSIETTE D’UN DRONE A VOILURE TOURNANTE 83

6.1 Objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

6.2 Preparation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

6.3 Manipulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

III TRAVAUX PRATIQUES D’AUTOMATIQUE 91

1 CHAINE D’ACQUISITION D’UN SIGNAL NUMERIQUE 93

1.1 Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

1.2 Le filtrage anti-repliement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

1.3 La conversion numerique-analogique . . . . . . . . . . . . . . . . . . . . . . . . . 94

1.4 Analyse spectrale du signal echantillonne-bloque . . . . . . . . . . . . . . . . . . 95

1.5 La conversion numerique-analogique . . . . . . . . . . . . . . . . . . . . . . . . . 96

1.6 Acquisition d’un signal audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

ii

Page 5: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Table des matieres

2 FILTRES NUMERIQUES 99

2.1 Filtrage numerique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

2.2 Les filtres a Reponse Impulsionnelle Finie . . . . . . . . . . . . . . . . . . . . . . 101

2.3 Filtres a Reponse Impulsionnelle Infinie . . . . . . . . . . . . . . . . . . . . . . . 105

3 BANCS DE FILTRES 109

3.1 Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

3.2 L’algorithme de Mallat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

3.3 La steganographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

3.4 Implementation de l’algorithme de steganographie . . . . . . . . . . . . . . . . . 114

4 FILTRAGE ADAPTATIF 115

4.1 Objectif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

4.2 Modele d’un signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

4.3 Les moindres carres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

4.4 Reduction de bruit active . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

A Liste des fichiers MATLAB-SIMULINK 125

iii

Page 6: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce
Page 7: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Introduction

Ce fascicule rassemble l’ensemble des travaux de modelisation et d’experimentation d’auto-

matique et de traitement de signal. Il est organise en trois parties :

1. La premiere est dediee a l’utilisation de SIMULINK, elle se decline en trois sequences :

— La simulation de systemes dynamiques a temps discret.

— La programmation de ces systemes , la cible retenue ici est un microcontroleur dsPic

de Microchip, toutefois des blocksets dedies permettent, avec la meme philosophie, la

programmation de PC, cartes Raspberry, BeagleBone Black, GumStick, etc.

— La programmation des peripheriques du dsPic30F6014.

2. La seconde partie comporte six travaux pratiques d’automatique appliques au controle des

aeronefs. Toutes les notions vues en premiere et deuxieme annee sont mises en application.

Les correcteurs, la commande par retour d’etat, les observateurs deterministes, le filtre

de Kalman et l’identification parametrique sont appliques a des systemes tels que la

commande du moteur d’un quadrirotor, une centrale d’attitude, la mesure de la hauteur

d’un drone, le controle de l’assiette d’un drone a voilure tournante.

3. La troisieme partie comporte quatre travaux pratiques de traitement du signal appliques.

Les notions sont pour partie celles vues en premiere annee : acquisition, numerisation et

restitution de signaux, filtres RIF et RII, bancs de filtres. Les applications portent sur le

traitement du son : reduction active de bruit et camouflage d’un message dans un signal

audio.

Il vous est demande, avant chaque seance, de lire et de preparer le sujet qui vous est attribue

et de consulter votre cours dans le but de les mettre pleinement a profit.

Page 8: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce
Page 9: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Premiere partie

SIMULATION ET

PROGRAMMATION SOUS

SIMULINK

3

Page 10: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce
Page 11: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

SEQUENCES 1

RAPPELS SUR LES SIGNAUX ET LES SYSTEMES

1.1 Aspects temporels

1.1.1 Definition

En premiere annee, dans le cours d’automatique, les modeles des systemes etudies etaient

supposes continus 1. Cette propriete traduit le fait que les variables fonction du temps (ou si-

gnaux) qui caracterisent l’evolution du systeme sont definis a tout instant. En outre, sur un

intervalle donne, ces variables peuvent prendre toutes les valeurs comprises dans cet intervalle.

De tels signaux sont qualifies d’analogiques. SIMULINK, un add-on de MATLAB, permet au

moyen de bibliotheques graphiques de representer les modeles de simulation de ces systemes et

de les simuler grace a differents solvers. Depuis quelques decennies, la plupart des systemes sont

controles par des calculateurs (des microcontroleurs dans le cadre de ces TME) qui permettent

l’acquisition de signaux issus des capteurs et la generation de signaux. Ces signaux sont lus et

elabores a des intervalles de temps discrets, en outre ils sont codes sur un nombre fini de bits et

par consequent, les valeurs que ces signaux peuvent prendre sont elle-memes discretes. On parle

alors de systemes et de signaux numeriques. SIMULINK permet la modelisation de tels systemes

mais aussi celle de systemes hybrides mixant des sous-systemes continus et des sous-systemes

numeriques.

1.1.2 Signaux et systemes a temps continu, discret et hybride

Depuis le bureau de votre ordinateur, executez MATLAB, executez SIMULINK et ouvrez

un nouveau modele File New Model.

Systeme continu :

— Construisez un systeme continu d’ordre un (gain statique 1, constante de temps 0,1s)

soumis a un signal sinusoıdal (Amplitude 5, Frequency 2, Sample Time 0) et observez sur

1. De plus, des hypotheses stipulaient que les modeles de ces systemes etaient lineaires et invariants.

5

Page 12: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Sequences 1. RAPPELS SUR LES SIGNAUX ET LES SYSTEMES

un meme oscilloscope les signaux d’entree et de sortie. Soit S1 ce systeme.

Systeme echantillonne-bloque : Si l’on suppose que ce systeme continu est pilote par un

calculateur, il convient de lui appliquer le signal d’entree et de mesurer le signal de sortie a

des intervalles de temps reguliers definis par la periode d’echantillonnage ou sample time Ts. Le

systeme est alors qualifie d’echantillonne-bloque.

— A partir du systeme continu, realiser un systeme echantillonne-bloque en inserant des

bloqueurs d’ordre zero (Discrete Zero Holder Block). Le Sample Time choisi est egal

a 50ms. Soit S2 ce systeme.

— Simuler ce systeme et comparer sa reponse a celle du systeme continu.

— Compte-tenu des proprietes du systeme continu, dans quelle plage de frequence [ωmin, ωmax]

peut-on raisonnablement l’utiliser ?

— Quelle est alors la periode d’echantillonnage maximale Tsmax qui peut-etre theoriquement

choisie ?

— Sur quatre essais successifs, mettre en evidence ces limites. Pour cela vous appliquerez

successivement un signal de pulsation egale a ωmax avec les periodes d’echantillonnage

Tsmax , 2Tsmax ,Tsmax

2etTsmax

10.

Systeme echantillonne-bloque decrit par sa fonction de transfert en Z :

On rappelle (voir le cours de traitement du signal de premiere annee) que la transformee en

Z d’un systeme de fonction de transfert H(s) echantillonne et muni d’un bloqueur d’ordre zero

a pour expression :

H(z) = (1− z−1)ZH(s)

s

(1.1)

La fonction tf permet de construire une fonction de transfer (consulter l’aide en ligne help

tf ). La fonction c2d de MATLAB permet de calculer la fonction de transfert en Z d’un tel

systeme a partir de sa fonction de transfert continue obtenue avec la fonction tf.

— Calculer avec MATLAB la fonction de transfert en Z du systeme a temps continu defini

supra. Le temps d’echantillonnage est egal a 50ms.

— Au moyen de SIMULINK, realiser cette fonction de transfert (Discrete Transfer Func-

tion). Vous parametrerez en particulier le champ Sample Time. Soumettez ce systeme au

meme signal sinusoıdal que celui defini precedemment. Soit S3 ce systeme.

— Simuler ce systeme decrit par sa fonction de transfert en Z et comparer sa reponse a celle

du systeme continu muni de ses echantillonneurs-bloqueurs.

Systemes hybrides : On qualifie de systeme hybride ou mixte un systeme qui comporte des

elements a temps continu et d’autres a temps discret. C’est par exemple le cas des systemes

asservis pilotes par calculateur :

— Le systeme a commander est un systeme a temps continu e.g. avion, satellite, etc.

— Le comparateur et le correcteur qui le controle sont implementes sur un calculateur et

constituent un systeme a temps discret.

6 F.BATEMAN

Page 13: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

1.1. Aspects temporels

Cet aspect est important car par la suite, au moyen de SIMULINK, vous simulerez des systemes

hybrides pour lesquels vous aurez prealablement synthetise les correcteurs. Puis, toujours au

moyen de SIMULINK, vous genererez le code source relatif au comparateur et au correcteur

seuls. Ce code sera ensuite implemente sur le calculateur en vue de piloter le systeme reel.

— Sous SIMULINK, inserez le systeme continu d’ordre 1 deja etudie et muni de ses bloqueurs

d’ordre zero dans une boucle d’asservissement avec retour unitaire. Le correcteur utilise

a pour fonction de transfert :

C(s) = 200.1s+ 1

s(1.2)

— Comment appelle-t-on ce correcteur, quelles performances garantit-il ?

— Etablissez sa fonction de transfert en Z, la periode d’echantillonnage restant egale a

50ms, et realisez la boucle d’asservissement de ce systeme hybride. Pensez a parametrer

le Sample Time du comparateur. Soit S4 ce systeme.

— Soumettez ce systeme a une consigne sinusoıdale (Amplitude 2, Frequency 2, Sample

Time 50ms) et simulez-le. Vous observerez en particulier le signal de commande en sortie

du correcteur et le signal en sortie du systeme continu.

— Notez que les blocs discrete transfer function contiennent un bloqueur d’ordre zero qui

rend caduque la presence du bloc zero-holder en sortie du correcteur.

1.1.3 Quantification du signal echantillonne-bloque

Pratiquement, les signaux echantillonnes sont numerises (au moyen de convertisseurs analo-

gique numerique ou CAN). Cette numerisation s’effectue sur un nombre de bits N fini, gene-

ralement N = 8, 10, 12, 16. La resolution minimale du signal numerise definit le quantum. Les

effets de cette numerisation sur le signal echantillonne-bloque peuvent etre mis en evidence par

un bloc Quantizer (Discontinuities Quantizer). Sur le schema S2, vous l’ intercalerez entre le

bloqueur d’ordre zero en sortie du systeme et l’oscilloscope.

— Reglez successivement le Quantization Interval q a5

28 − 1puis

5

23 − 1et mettez ainsi en

evidence les effets de la numerisation sur le signal 2.

— Cette operation est a l’origine d’un bruit dit de quantifiquation que vous visualiserez en

operant a la difference entre les signaux en amont et en aval du Quantizer.

— Realisez sous SIMULINK l’operation qui permet de calculer la valeur efficace de ce bruit,

laquelle sous l’hypothese d’ergodicite n’est autre que la variance de ce bruit dont vous

verifierez qu’elle est egale aq2

12.

— Recherchez dans les ouvrages mis a votre disposition la demonstration ayant conduit a

ce resultat. Prenez-en connaissance.

Dans ce qui suit et sauf indication contraire, on supposera que la resolution des convertisseurs

employes est suffisamment petite pour negliger les effets dus a la quantification.

2. Ces valeur seraient celles obtenues pour des CAN 8 bits et 3 bits et pour une tension pleine echelle de 5

Volts.

F.BATEMAN 7

Page 14: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Sequences 1. RAPPELS SUR LES SIGNAUX ET LES SYSTEMES

1.2 A propos des nombres sous SIMULINK

Par defaut, les nombres calcules par SIMULINK sont, sauf exception, des nombres a virgule

flottante signes et codes sur 64 bits appeles double. Ce type de nombre permet de coder les

nombres reels et convient en particulier pour la simulation de systemes continus. Toutefois,

lorsqu’on realise un filtre numerique ou une loi de commande, le calculateur peut manipuler

d’autres types de nombre et il peut etre interessant d’effectuer les simulations dans des conditions

plus proches de la realite. SIMULINK manipule entre autres les nombres de type :

— single : nombres a virgule flottante signes et codes sur 32 bits

— int32, int16, int8 : nombres entier signes et codes sur 32, 16, 8 bits

— uint32, uint16, uint8 : nombres entier non-signes et codes sur 32, 16, 8 bits

— etc.

Le codage sur un nombre de bits reduit permet d’economiser l’espace memoire et d’accroıtre la

vitesse de calcul mais peut degrader de maniere significative les resultats obtenus avec le type

double. C’est ce que l’on se propose de mettre en evidence sur le modele du systeme hybride S4.

Codage du type single : Ouvrez le fichier sequence1 2.mdl, puis parametrez le bloc Add

Signal Attribute Output Data Type comme single. Notez que par defaut le bloc discrete

transfer function herite du type du signal d’entree.

— Simulez ce systeme et comparez-les reponses a celles obtenues avec le type double.

— Reiterez ces simulations avec des nombres de type int8 et uint8.

— Expliquez pourquoi cela ne pouvait fonctionner pour ce dernier type.

1.2.1 Retour sur les signaux et les systemes a temps discret

Single sample time : Dans les travaux qui suivent, vous aurez a implementer sur calculateur

des algorithmes de filtrage, de commande, etc. La simulation mais surtout la programmation de

ces algorithmes au moyen de SIMULINK necessitent pour le solver un pas de calcul constant.

Ce dernier est defini a partir du menu Simulation Parameters Solver options :

— Type : Fixed Step

— Solver : discrete (non continuous...)

— Fixed Step Size : la valeur du pas, par exemple 50ms

Au niveau du schema, dans chaque bloc, le parametre Sample Time definit la cadence a laquelle

chacun des blocs est controle par le solver. Ce temps doit etre un multiple entier du Fixed Step

Time. Il est donc possible, sur un meme modele, de faire cohabiter des blocs avec des Sample

Time differents.

— Realiser un systeme comportant deux integrateurs a temps discret (Discrete discrete

time integrator) soumis a une constante unitaire. Les deux integrateurs ont un gain

unitaire. Pour le premier le Sample Time est egal a 100ms, pour le second a 200ms.

Visualiser les signaux en sortie des deux integrateurs. Soit S5 ce systeme.

— A propos des integrateurs a temps discret, montrer qu’a partir de l’equation de recurrence

qui decrit l’integrateur :

S(nTs) =

nTs∑

i=0

e(i) (1.3)

8 F.BATEMAN

Page 15: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

1.2. A propos des nombres sous SIMULINK

La fonction de transfert de ce dernier a bien pour expression :

S(z)

E(z)=

z

z − 1(1.4)

Il est egalement possible d’ajouter un offset T0 de sorte que l’instant d’execution d’un bloc tnsoit decale :

tn = nTs + T0 (1.5)

Pour ce faire, le champ du parametre Sample Time du bloc selectionne s’ecrit [Ts, T0]. Ou

T0 ≤ Ts et est un multiple entier du Fixed Step Solver.

— Modifier le systeme S5 de sorte que l’instant d’execution de l’integrateur initialement

controle toutes les 200ms soit decale de 50ms.

Multi sample time : Lorsqu’un signal est propage dans un systeme au travers de plusieurs

blocs, il est possible de definir pour differents ensembles de blocs des instants d’execution dis-

tincts au moyen d’un bloc Signal Attributes Rate transition. Cela presente un interet pour

des systemes comportant plusieurs boucles imbriquees. La boucle interne ayant generalement a

traiter des signaux plus rapides que la boucle externe. Pour respecter le theoreme de Shanon,

la periode d’echantillonnage de la boucle interne est generalement plus petite que celle de la

boucle externe. L’autre interet est que cela necessite moins de calculs que si toutes les boucles

fonctionnaient a la periode d’echantillonnage de la petite boucle.

— Ouvrez le fichier Sequence1 4.mdl qui represente un systeme asservi comportant deux

boucles. Analysez sa structure, vous vous attacherez en particulier aux parametres Sample

Time des differents blocs et a la valeur retenue pour le Fixed Step Time. Simulez-le et

observez les periodes d’echantillonnage des signaux des boucles interne et externe.

— En vous aidant de l’aide du bloc rate transition, mettez en evidence sur le schema, au

moyen de couleurs ou de facon explicite les differents temps d’echantillonnage de la boucle.

— Modifiez le temps d’execution des blocs qui realisent la boucle interne en introduisant un

offset de 1ms.

F.BATEMAN 9

Page 16: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Sequences 1. RAPPELS SUR LES SIGNAUX ET LES SYSTEMES

10 F.BATEMAN

Page 17: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

SEQUENCES 2

PROGRAMMATION DE DSPICs

2.1 Microcontroleur DsPic

Les microcontroleurs de la famille DsPic (Digital Signal Peripheral Interface Controller) de

Microchip sont des unites de traitement et d’execution de l’information auxquels on a ajoute des

peripheriques internes permettant de realiser des montages sans necessiter l’ajout de composants

annexes. Un microcontroleur peut donc fonctionner de facon autonome apres programmation.

Les PIC integrent une memoire de programme, une memoire de donnees, des ports d’entree-

sortie (numeriques, analogiques, MLI, UART, bus I2C, etc.) et une horloge, bien que des bases

de temps externes puissent etre employees.

Les PIC sont des processeurs dits RISC, c’est-a-dire processeur a jeu d’instructions reduit.

Plus on reduit le nombre d’instructions, plus facile et plus rapide en est le decodage, et plus

vite le composant fonctionne. Cependant, il faut plus d’instructions pour realiser une operation

complexe.

L’horloge est realisee par un quartz, par exemple avec un quartz de 8 MHz, on obtient donc

8.106 cycles d’horloge par seconde, qu’il est possible de multiplier a l’aide d’un module dit de

PLL. Nous choisissons de la multiplier par 16 (PLL x16). Or, pour executer une instruction, le

processeur a besoin de 4 cycles d’horloge. On arrive ainsi a une frequence de fonctionnement

finale de 32 millions d’instructions par seconde ou 32 MIPS. Une instruction dure alors une

trentaine de nanosecondes. A ce propos, les dsPIC33E ont une puissance calcul pouvant aller

jusqu’a 70 MIPS.

2.1.1 Caracteristiques du DsPic 30F6014A

On se reportera a la documentation du constructeur sur le site http://microchip.com. On

presente ici quelques caracteristiques de ce composant :

11

Page 18: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Sequences 2. PROGRAMMATION DE DSPICs

Parameter Name Value

Architecture 16-bit

CPU Speed (MIPS) 30

Memory Type Flash

Program Memory (KB) 144

RAM Bytes 8192

Digital Communication Peripherals 2-UART

2-SPI

1-I2C

Analog Peripherals 1-A/D 16x12-bit @ 200(ksps)

CAN 2 CAN

Capture/Compare/PWM Peripherals 8

PWM Resolution bits 16 16

Timers 5 x 16-bit 2 x 32-bit

2.2 Programmation du DsPic sous SIMULINK

Dans le cadre de ce TME, le DsPic sera programme dans l’environnement MATLAB-SIMULINK

au moyen du blockset Embedded Target For DsPic. Le descriptif de ce blockset est accessible de-

puis l’URL http://www.kerhuel.eu/wiki/Simulink_-_Embedded_Target_for_PIC. Cet outil

de prototypage rapide presente l’interet d’utiliser un meme outil, SIMULINK, pour la simulation

et la programmation, ce que montre la figure 2.1.

— La simulation est menee de facon classique comme cela a ete vu lors de la sequence 1. Il

n’est toutefois pas possible d’utiliser le blockset a des fins de simulation.

— La programmation du microcontroleur DsPic se fait en adjoignant au schema de simula-

tion les fonctions du blockset qui realisent les peripheriques du microcontroleur. Ceux-ci

lui permettent d’acquerir des signaux et de communiquer avec les differents modules

constitutifs du systeme. Lors de cette phase de programmation, il convient d’etre extre-

mement rigoureux dans l’utilisation des types de nombre manipules par les blocs et au

choix des temps du solver (Fixed Step Time) et des blocs (Sample Time).

Les differents peripheriques des microcontroleurs DsPic sont deja programmes et presentes

sous forme de blocs, qu’il ”suffit” d’agreger au modele de simulation pour realiser la fonction

desiree. Les bibliotheques du blockset sont illustree sur la figure 2.2.

2.3 Presentation du blockset

2.3.1 Configuration de base

Cette configuration sera, a quelques details pres, la meme pour l’ensemble des travaux pra-

tiques sur le microcontroleur. Il vous est conseille de conserver ce template pour ne pas perdre

de temps lors des prochaines seances.

Sous SIMULINK, parmi les blocksets installes, selectionnez l’Embedded Target for DsPic block-

set, FileNew model. Ouvrez un nouveau Model et, depuis le blockset, copier-coller les bloc

12 F.BATEMAN

Page 19: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

2.3. Presentation du blockset

Figure 2.1 – Prototypage rapide avec l’Embedded Target for DsPic blockset

Figure 2.2 – Librairie du blockset

F.BATEMAN 13

Page 20: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Sequences 2. PROGRAMMATION DE DSPICs

Master, Compiler configuration et le bloc Port Info s’il existe dans la version du blockset installee.

Parametrez-les comme suit :

Le bloc Master

Onglet General

— Time step reference : Timer 1

— PIC : 30F6014A

Onglet Real Time Quartz

— Number Instruction per second : 40e6

— Oscillator Mode : XT PLL × 16

Concernant les parametres de cet onglet, voir les explications donnees a la section 2.1.

Le bloc Compiler configuration

Par defaut, le code qui sera genere pour le DsPic utilise des nombres de type Single tandis que

par defaut les nombres utilises lors des simulations sont des Double. Les differences de resultats

observees avec ces deux types de nombre sont peu significatives (cf. sequence 1), aussi pour ne

pas surcharger la memoire du DsPic et reduire le temps de calcul, c’est ce codage qui par defaut

est retenu.

Le bloc Port info

Lors de la construction du schema de programmation sous SIMULINK, il indique le numero des

”pins” du microcontroleur qui sont utilisees.

Le bloc Simulink Configuration Compile

C’est en fait un bouton sur lequel on double-clique et qui genere le code C (appele C30 pour les

DsPic de la famille 30F) propre aux microcontroleurs DsPic ainsi que la traduction sous forme

hexadecimale (extension hex) de ce code. Pratiquement, c’est cette derniere qui sera implementee

sur le microcontroleur.

Plus generalement, les fichiers SIMULINK, au moyen de l’outil Real Time Workshop peuvent

generer du code pour differents types de materiels, lesquels peuvent etre programmes dans dif-

ferents type de langage C. Il suffit que ces langages C soient installes sur l’ordinateur et qu’ils

soient accessibles depuis SIMULINK (voir le menu Simulation Configuration Parameters

Real Time Workshop).

Le solver

Pour generer le code, il faut utiliser un solver a temps discret. Par defaut, le solver utilise

un Fixed Step Time de 1ms. Pratiquement, il faut adapter ce pas de calcul en fonction de la

dynamique du systeme a concevoir (selon qu’il est plus ou moins rapide ou lent) et au volume

de calculs a effectuer.

Ce reglage est souvent delicat et le blockset met a disposition un certain nombre d’outils pour

operer au choix de ce pas. On se reportera a la documentation en ligne du bloc Master champs

Busy Flag Port et Overload Flag Port et bloc Calculus Time Step dans la librairie Others du

blockset. La figure 2.3 montre :

14 F.BATEMAN

Page 21: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

2.4. Premier exemple

a. un systeme pour lequel le pas de calcul du solver Fixed step time et la periode a laquelle

les blocs sont controles (Sample time) sont identiques, tandis que le temps de calcul ou

Tbusy (le nombre de cycles machines) est inferieur a la periode du solver.

b. un systeme pour lequel la periode a laquelle les blocs sont controles est un sous-multiple

de celle du solver.

c. un systeme pour lequel il y a un offset au niveau de la periode a laquelle les blocs sont

controles.

d. un systeme pour lequel le le temps de calcul requis pour effectuer les calculs est superieur

a la periode du solver.

Tbusy=k cycles machine

Fixed step time (solver)

sample time (bloc)

Fixed step time (solver)

sample time (bloc)offset T0

Tbusy=k cycles machine

Fixed step time (solver)

sample time (bloc)

Tbusy=k cycles machine

Fixed step time (solver)

sample time (bloc)

a. b.

c. d.

Figure 2.3 – Le temps sous SIMULINK

2.4 Premier exemple

Dans ce premier exemple, on se propose de realiser un chenillard a 4 LEDs. Pour cela, il faut

realiser un registre a decalage circulaire. Comme l’indique la figure 2.4, les donnees se propagent

d’une cellule a une autre au rythme d’une horloge. A chaque coup d’horloge, la sortie de la

cellule ayant la valeur 1 allume une des 4 LEDs. Les diodes s’eclairent les unes apres les autres

au rythme de la seconde.

. . .

1 0 0 0

10 0 0

100 0

t=0.T

t=1.T

t=2.T

1 0 0 0 t=4.T

Figure 2.4 – Registre a decalage circulaire

F.BATEMAN 15

Page 22: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Sequences 2. PROGRAMMATION DE DSPICs

2.4.1 Schema de simulation

Realiser un registre a decalage comportant 4 cellules. Ces cellules seront realisees par des

blocs DiscreteUnit delay dont vous reglerez judicieusement les champs Initial condition et

Sample time. Vous aurez egalement a regler les parametres de simulation du solver, notamment

le Fixed step time. Simulez ce systeme simple et verifiez son bon fonctionnement.

2.4.2 Schema de programmation et compilation

Apres avoir insere et parametre les blocs Master, Compiler configuration, Port info et Com-

pile, vous ajouterez le schema du registre a decalage. Comme on souhaite allumer ou eteindre

des LEDs (signaux tout ou rien), vous supprimerez les blocs permettant de visualiser les signaux

(a l’instar des blocs Scope et Display, ils ne se programment pas) et ajouterez sur chaque sortie

un bloc Commonly used blocks convert de sorte qu’ils transforment les signaux en boolean.

Vous pourrez alors inserer les blocks Digital I/O Digital output write en les parametrant

sur les sorties numeriques des lignes de port b2, . . . , b5.

Enregistrez ce schema et compilez-le. A l’issue de la compilation, les pourcentages de me-

moires requises pour le programme et utilisee par les donnees sont communiquees. Ces informa-

tions sont importantes. Un fichier avec une extension hex et ayant le meme nom que le fichier

mdl est genere, il se trouve dans le dossier ou Current folder defini par le Command window de

MATLAB.

2.4.3 Programmation du DsPic

1. Connectez un cable USB entre votre PC et la carte BigDsPic6,

2. Alimentez puis mettez cette carte sous tension,

3. Depuis le bureau Ouvrez le programme dsPICFLASH.

— choisissez le microcontroleur 30F6014A dans le champ device,

— cliquez sur le bouton Load Hex et selectionnez le fichier avec l’extension hex preala-

blement genere,

— cliquez sur bouton Write pour implementer le fichier hex sur le microcontroleur.

2.4.4 Visualisation du temps de calcul du microcontroleur

Dans cette partie, on souhaite mettre en evidence les differents temps caracteristiques du

microprocesseur. Parametrer le bloc MASTER de sorte que le Busy Flag Port et Overload Flag

Port puissent etre visualises sur les ports B0 et B1.

— Choisissez un Fixed Step Time egal a la moitie du Sample Time des blocs Unit delay,

compiler le modele et exporter le fichier .hex genere sur le microcontroleur.

— Visualiser avec l’oscilloscope le signal au niveau du quartz et le bit RB0 Busy Flag Port.

Observez egalement le bit RB1. Relever ces signaux.

— Choisissez un Fixed Step Time egal a la moitie du Sample time les blocs Unit delay,

compiler le modele et exporter le fichier .hex genere sur le microcontroleur.

— Visualiser avec l’oscilloscope le signal au niveau du quartz et le bit b0 Busy Flag Port.

Observez egalement le bit b1. Relever ces signaux.

16 F.BATEMAN

Page 23: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

2.4. Premier exemple

Il est difficile avec un montage aussi simple de depasser les capacites de calcul du microcontro-

leur. En revanche, lorsque les calculs a effectuer seront beaucoup plus importants, il conviendra

de surveiller le busy time du microcontroleur. A ce propos, le bloc Others Calculus step time

peut fournir cette information sous forme numerique.

— Sur l’un des blocs Unit delay, ajouter un offset egal a un Fixed Step Time.

— Compiler et verifier avec l’oscilloscope que la LED associee au bloc sur lequel vous avez

opere la modification s’allume avec un retard.

F.BATEMAN 17

Page 24: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Sequences 2. PROGRAMMATION DE DSPICs

18 F.BATEMAN

Page 25: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

SEQUENCES 3

PROGRAMMATION DES PERIPHERIQUES DU DSPIC

3.1 Ports numeriques

Le DsPic dispose de 5 ports references RA, RB, RC, RD, RF et RG. Chacune des lignes du

ports peut, au moyen de blocs Digital I/ODigital input et Digital output etre parametree. Il

convient de preciser que le bloc qui precede ou suit les blocs Digital output et Digital input doit

renvoyer ou pouvoir lire un nombre de type booleen.

Bascule T

La platine de developpement BigDsPic6, dont la documentation est fournie avec le kit, dispose

de boutons poussoirs (BP) connectes aux ports RA, RB, RC, RD, RF et RG. Ces boutons

poussoirs permettent d’appliquer sur ces ports (configures comme entree) un niveau logique

haut ou bas selon la position du jumper J13.

Comme cela a deja ete entrevu, des LEDs permettent de visualiser l’etat de ces ports. Des

switchs permetent d’activer ou de desactiver ces LEDS en portant leur cathode a un etat logique

bas (0 Volt) ou haut (5 Volts).

Lorsqu’on appuie sur le BP RB4, on desire que la LED associee au port RB5 s’allume et

le reste lorsqu’on relache ce BP. La LED s’eteint lorsqu’on appuie a nouveau sur le BP. Cette

fonction peut etre realisee au moyen d’une bascule D vue en cours d’electronique de premiere

annee.

— Rappelez la structure d’une bascule D possedant une entree d’horloge H et sa table de

verite.

— La bascule T (T designe l’entree de commande de la bascule reliee au BP), construite

avec une bascule D a pour equation :

Dn = Qn (3.1)

H = T (3.2)

19

Page 26: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Sequences 3. PROGRAMMATION DES PERIPHERIQUES DU DSPIC

— Realisez la bascule T et Simulez-la sous SIMULINK (bibliotheques Logic and bit opera-

tion et Simulink extras Flip-flop D Flip-flop).

— Realisez sous SIMULINK le schema permettant de programmer la bascule T sur le mi-

crocontroleur, generez le code correspondant et implementez-le sur la cible.

— Verifiez le bon fonctionnement du systeme.

20 F.BATEMAN

Page 27: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

3.2. Les UART

3.2 Les UART

Les Universal Asynchronous Receiver-Transmitter (UART) sont des peripheriques qui per-

mettent au microcontroleur de communiquer avec le monde exterieur. Cette communication

s’opere dans ce cas par une liaison serie, ce qui signifie que les bits sont transmis sequentielle-

ment sur un fil en emission et sur un fil en reception. De plus, il y a un fil de masse.

3.2.1 Le protocole de liaison serie RS232

Ce protocole est dedie a la transmission de donnees bidirectionnelle en mode full-duplex et

est illustre sur la figure 3.1. Malgre l’apparition de protocoles plus rapides et plus robustes aux

erreurs de transmission, il reste utilise, en particulier pour la communication avec des capteurs

tels que les recepteurs GPS. Ce type de liaison est asynchrone, cela signifie que les donnees sont

emises ou recues a n’importe quel moment, sans reference de temps particuliere. Cela signifie que

les ordinateurs qui communiquent doivent pouvoir interrompre les programmes en cours pour

traiter ces informations. Une trame type est representee sur la figure 3.2, elle comporte :

— 8 bits de donnees soit des nombres de type UINT8 ∈ [0, 255]. Le transfert d’un Single

requiert par exemple que celui-ci soit code sur 4 octets.

— 1 bit de start.

— 1 a 2 bits de stop.

— vitesse de transmission 300 a 115200 bauds

— Les donnees sont emises de la broche Tx (Transmit Data du peripherique 1) vers la broche

Rx (Receive Data du peripherique 2).

— L’etat 0 logique correspond a un signal de +12V alors que le 1 logique correspond a un

signal de -12V. Ces amplitudes relativement elevees visent a garantir une bonne immunite

au bruit et par la-meme a assurer l’integrite des signaux emis et recus, et ce pour des

longueurs de connection pouvant atteindre plusieurs metres. Pratiquement, sur la carte

BigDsPic6, un circuit MAx202 realise cette adaptation de tension.

— La connectique de cette liaison se presente frequemment sous la forme du connecteur

DB-9 represente sur la figure 3.3. Ces connecteurs appeles port serie et references COM1,

COM2, etc. tendent a disparaıtre au profit des ports USB. De fait, il existe des adapteurs

USB qui permettent d’emuler la liaison serie RS323. La carte BigDsPic6 comporte un tel

adaptateur.

— Le protocole presente dans ce tutoriel n’utilise que les lignes Tx, Rx et la masse GND. Il

faut toutefois savoir que d’autres protocoles de transmission utilisant les lignes de controle

RTS, CTS, etc. existent.

Quelques considerations sur la vitesse de transmission : Supposons que l’on ait a

recevoir une trame de N octets qui se repete k fois par seconde (typiquement, ce serait le cas

des donnees issues d’un GPS). Comme un octet comporte en plus, pour sa transmission, un bit

de start et un bit de stop, ce sont 10.N.k bits qu’il faut transmettre par seconde. La vitesse de

transmission B en bits/S doit verifier : B > 10.k.N

Dans le cas d’une programmation avec SIMULINK, comme les octets sont recus au rythme du

F.BATEMAN 21

Page 28: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Sequences 3. PROGRAMMATION DES PERIPHERIQUES DU DSPIC

Figure 3.1 – Une liaison serie

Figure 3.2 – La trame d’une liaison serie

Figure 3.3 – Connecteur DB9

22 F.BATEMAN

Page 29: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

3.2. Les UART

Sample Time ou ST , il faut aussi s’assurer que ST ≥ 1

k.N

3.2.2 Programmation des UARTs du DsPic

La mise en œuvre d’un protocole RS232 au niveau du DsPic necessite l’utilisation d’un des

UARTs du microcontroleur Le DsPic 30F6014a possede deux UART appeles UART1 et UART2,

respectivement accessible depuis les ports :

RF2 (UART1 RX) RF3 (UART1 TX)

RF4 (UART2 RX) RF5 (UART2 TX)

Pour un programme donne, si ces lignes sont utilisees par l’UART, elles ne peuvent plus etre

utilisees a d’autres fins.

Dans ce qui suit, en parallele a la lecture de ce document, vous etes invites a consulter l’aide

en ligne du blockset et en particulier la bibliotheque Serial Port.

Pour programmer les UARTs avec le blockset sous SIMULINK, vous devez ajouter au tem-

plate (modele sur lequel ont deja ete inseres et parametres les blocs Master, Compiler configu-

ration et Compile) les blocs :

— Serial PortUART Configuration

— Le numero de l’UART utilise, il faut donc deux blocs UART Configuration si on veut

realiser deux liaisons serie.

— La vitesse de transmission des donnees.

— Sous l’onglet Tx on gere la transmission, en particulier le niveau de priorite de l’in-

terruption. Une interruption est un arret temporaire de l’execution normale du pro-

gramme par le microcontroleur afin d’executer un programme juge prioritaire, en

l’occurrence, l’emission des donnees. Plusieurs peripheriques pouvant interrompre le

programme en cours, il existe un ordre de priorite des interruptions. On gere egalement

la taille de la memoire (Buffer) qui contient les donnees a emettre.

— Parametres analogues sous l’onglet Rx.

— Ajouter un bloc Serial PortTx Output si vous souhaitez emettre des donnees. Noter

qu’il est possible de copier autant d’instances de ce bloc qu’il y a de donnees a emettre.

Ces dernieres doivent etre du type UINT8.

— Ajouter un bloc Serial PortRx Input si vous souhaitez recevoir des donnees. Les donnees

recues doivent etre du type UINT8, elles le sont a un rythme defini par le Sample time

du bloc. Les donnees recues sont propagees dans le schema SIMULINK a ce rythme. Le

reglage de ce temps est delicat, il procede du nombre de donnees a emettre et de la vitesse

de transmission en bauds.

Si les interruptions sont autorisees, un flag avertit de la presence des donnees (double-clic

sur le bloc Rx Input, case a cocher Received Output Flag).

Transmission de donnees par port serie RS232

Vous allez realiser une liaison serie entre le module USB UART de la carte BigDsPic6 et un

PC. Un composant FDI implante sur la carte emule le port serie. Il s’agit tres simplement

F.BATEMAN 23

Page 30: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Sequences 3. PROGRAMMATION DES PERIPHERIQUES DU DSPIC

d’afficher sur l’ecran du PC au moyen du logiciel Realterm une suite de caracteres genere par le

microcontroleur et transmis via l’UART par une liaison serie.

— Rechercher dans une table de caracteres ASCII les codes decimaux correspondant aux

lettres $, A, B, C.

— Generer des constantes ayant les valeurs correspondantes et affecter-leur le type UINT8.

— Ajouter au fichier template les blocs UART Configuration

— Parametrer l’UART de votre choix, veillez simplement a sortir les signaux sur les bonnes

pins.

— Parametrer la liaison a 38400 bauds.

— Ajouter les Tx Output en sortie de chaque constante.

— Adopter pour le solver un pas de 1ms.

— Connecter la carte BigDsPic6 (sortie USB UART) au PC par le cable USB et commuter

les switchs 1 et 2 de SW2 en position USB UART.

— Mettre la carte BigDsPic6 sous tension.

— Sur le PC, identifier le numero de port serie alloue par le gestionnaire de port USB :

DemarrerPanneau de configurationPerformances et Maintenance Systeme Ma-

terielGestionnaire peripheriquesPorts.

— Depuis le bureau du PC, ouvrir le logiciel Realterm (cf. figure 3.4). Ce freeware permet

d’analyser les trames pour differents types de protocoles (RS232, I2C, etc.). Selectionner

l’onglet PORT et configurer la liaison serie (numero du port, vitesse de transmission en

baud, 8 bits de donnees, 1 bit de stop et aucun bit de parite).

— Compiler le programme et implementer-le sur le DsPic, ouvrir le port sous Realterm

(bouton OPEN) et verifier que les caracteres recus sont conformes a ce qui est attendu.

Figure 3.4 – Le menu du programme Realterm

24 F.BATEMAN

Page 31: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

3.2. Les UART

Reception-Emission de donnees 1 Realterm comporte une fenetre d’edition depuis laquelle

il est possible de saisir du texte. Ce texte traduit sous forme de codes ASCII est ensuite emis

vers le port serie. Ouvrez le fichier Test Rx Tx.mdl, ce programme, une fois compile, interagit

Realterm.

— Analysez ce programme, vous prendrez le temps de lire l’aide des blocs que vous n’avez

pas encore eu l’occasion d’utiliser.

— Expliquez ce qu’il fait.

— Compilez-le et testez-le.

Reception-Emission de donnees 2 Modifiez ce programme de sorte que seul le caractere

ASCII a soit retransmis. Vous trouverez des fonctions de test de caractere (tester un caractere

ASCII equivaut a tester un nombre) dans la bibliotheque Logic and bit operation

Reception-Emission d’un flux de donnees 3 Cette situation est typiquement celle ren-

contree lorsqu’on lit un capteur delivrant des informations au format RS232. On suppose une

trame composee de trois nombres codes en UINT8.

— le caractere d’entete de trame 255,

— deux caracteres de donnees quelconques.

Cette trame sera generee depuis Realterm, pour cela :

— onglet Port : baudrate 300, no parity, 8 bits de donnees, 1 bit de stop, numero de port.

N’ouvrez pas encore le port.

— onglet Send : dans le champ dedie a cet effet, saisissez une trame telle que definie supra.

Realisez un systeme qui receptionne les donnees, identifie l’entete de debut de trame et opere

a la somme des deux octets de donnees. Cette somme sera alors renvoyee sur l’hyperterminal.

Pour realiser ce systeme, il convient d’operer a une transformation serie-parallele de la trame

recue. Cela est realise par un registre a decalage au moyen de blocs DiscreteDelay.

F.BATEMAN 25

Page 32: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Sequences 3. PROGRAMMATION DES PERIPHERIQUES DU DSPIC

3.2.3 Visualisation des signaux

Le blockset offre des outils qui permettent de visualiser en temps reel, dans MATLAB, les si-

gnaux calcules et traites par le microcontroleur. Ces outils utilisent un UART du microcontroleur

et le port serie du PC sur lequel MATLAB est installe.

— Ouvrez le template et adoptez un Fixed Step Time de 1ms.

— Vous allez observer un signal issu d’un compteur dont la sortie varie de 0 a 15 (bloc

SourceLimited Counter). Regler le Sample time pour que la periode de ce signal soit

de 1,6 s.

— Vous allez, dans le meme temps, observer un signal sinusoidal echantillonne (mode Sam-

pled based) d’amplitude egale a 16, de bias egal a 16, choisissez le Sample Time et le

nombre de Sample per Period pour que la periode de ce signal soit egale a 1,6s. Il ne doit

pas y avoir plus de 100 points par periode.

— Ajouter un bloc UART Configuration et definir le numero de l’UART que vous voulez

utiliser. Le choix de la vitesse de transmission va dependre :

— du nombre de signaux a observer (jusqu’a 16) en mode alterne,

— de la frequence de ces signaux. Par exemple, si l’on desire observer 2 signaux dont

la frequence n’excede pas 100 Hz avec pour chacun un minimum de 10 points par

periode, il faut 20 points par periode de 10 ms soit 2000 points par seconde. Comme

chaque donnee est codee sur deux octets 1, cela represente 4000 octets, soit 40000 bits

(bits de start et de stop a inclure). On doit donc fixer une vitesse de transmission

superieure, le choix se portera sur 57600 bauds.

— Pour l’envoi de ces signaux vers le PC, il faut ajouter autant d’instances du bloc Serial port

Tx Labview Matlab qu’il y a de signaux a visualiser. Ces blocs admettent des nombre

du type UINT16 (chaque information est codee sur 2 octets), il faut donc adapter le type

des signaux qu’on veut visualiser, au besoin en inserant un bloc Data type conversion.

Il faut ensuite parametrer ces blocs en allouant a chaque bloc Tx Labview Matlab un

numero de voie compris entre 0 et 15. Une fois le schema termine, il reste a le compiler

et a implementer le programme sur le microcontroleur.

— La liaison entre le microcontroleur et le PC reste identique a celle cablee precedemment.

Sur le PC, depuis le Command Window de MATLAB, taper rs232gui. Reporter le numero

de port COM et appuyer sur le bouton Connexion puis sur Start. Les signaux apparaissent alors

dans une fenetre. Pour plus de details sur cette fonction, se reporter a l’aide en ligne Serial

portInterface Tx Matlab.

Par defaut, la fonction rs232gui affiche des nombres de type UINT16, donc strictement

positifs. Pour visualiser des nombres negatifs de type INT16, cliquez sur le bouton plot int16. A

titre d’exemple, portez le champ Bias du signal sinusoıdal a 0, recompiler le modele et observer

les signaux sur rs232gui.

Les donnees affichees sont stockees dans 2 tableaux references R et Rn pouvant respective-

ment contenir 50000 et 10000 points. Les vecteurs t R et t Rn contiennent les valeurs des temps

auxquels ont ete realisees ces simulations. Il est donc possible d’operer a un post-traitement de

1. On reviendra sur ce point un peu plus loin.

26 F.BATEMAN

Page 33: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

3.2. Les UART

ces donnees sous MATLAB.

F.BATEMAN 27

Page 34: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Sequences 3. PROGRAMMATION DES PERIPHERIQUES DU DSPIC

3.3 Le bus SPI

Le bus SPI (Serial Peripheral Interface) est un bus serie synchrone qui opere en mode full-

duplex 2 . La communication s’opere au rythme d’une horloge entre un maıtre et un esclave, ce

dernier est selectionne par le biais d’une ligne de controle CS (chip select) ou SS active a l’etat

bas. Les donnees echangees sont codees sur 8 ou 16 bits. Une ligne est dediee a l’emission, une

autre ligne a la reception. Si ce bus est rapide, il necessite en revanche des liaisons courtes entre

le maıtre et l’esclave et il faut un CS par esclave.

— SCK : l’horloge generee par le maıtre,

— MOSI : Master Output - Slave Input ou SDI sur le DsPic,

— MISO : Master Input - Slave Output ou SDO sur le DsPic,

— SS : ligne active a l’etat bas qui permet d’activer le SS ou CS de l’esclave.

La figure 3.5 illustre ce protocole et la figure 3.6 montre les signaux dans le cas d’une ecriture

du maıtre vers l’esclave.

Figure 3.5 – Communication entre un maıtre et un ou plusieurs esclaves

2. Communication bidirectionnelle.

28 F.BATEMAN

Page 35: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

3.3. Le bus SPI

3.3.1 Application : controle d’un DAC (Digital to Analog Converter)

Le DsPIC 30F6014A n’integre pas de convertisseur numerique - analogique. Il est toutefois

possible d’en controler un avec le port SPI. L’interet est de pouvoir operer a des conversions a

frequence elevee. Ce qui peut s’averer utile pour des applications audio embarquees. Pour debit

Pour cette application, on met en œuvre le convertisseur 12 bits MCP4921 dont on trouvera la

notice dans le dossier Datasheet sur le Bureau. Ce composant est implemente sur un support

realise par la societe MIkroElektronika et se plugge directement sur la carte BigDsPic6.

1. Sur la documentation du DsPic, Identifier les ports alloues au bus SPI2,

2. Sur la carte du DAC 12 bits, vous veillerez a ce que les switchs aient la configuration

suivante :

— SW 1,2, 4, 6,7 : Off

— SW 3, 5, 7 : On

— Cavalier sur 4.096V, ainsi la resolution du DAC 12 bits sera de 1mV.

3. Plugger le DAC12 bits sur le port G,

4. Sur la carte BigDsPic6, commuter les switchs de SW12 sur MOSI, MISO, SCK,

Bien que le 30F6014A possede une ligne SS associee a RG9, cette derniere ne peut etre reliee

au CS du DAC 12 bits. On utilise en lieu et place le port RG1 qu’on utilisera comme ligne de

selection du DAC 12 bits lorsqu’on voudra convertir les donnees.

On veut generer un signal sinusoıdal analogique de frequence 440Hz (soit un LA naturel). Le

signal source est echantillonne a 8kHz, soit un Fixed-Sample-Time egal a 1.25e−4 s. Toutefois,

comme le signal de CS alterne entre les valeurs 1 et 0, on prend un Fixed-Sample-Time deux

fois plus rapide, soit 6.25e−5s.

1. Modifier le template pour regler le Fixed-Sample-Time desire,

Figure 3.6 – Les signaux du protocole SPI

F.BATEMAN 29

Page 36: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Sequences 3. PROGRAMMATION DES PERIPHERIQUES DU DSPIC

2. Ajouter une source sinusoıdale : Sources Sine Wave et parametrer ce bloc de sorte qu’il

produise un signal d’amplitude crete egale a 2048, de valeur moyenne egale a 2048 (bias)

et qu’il genere par periode un nombre d’echantillons tel que le signal de sortie ait une

frequence 440 Hz et soit echantillonne a 8000Hz (choisir l’option Sine Type Sampled

Base.

3. Ajouter un bloc SPI config pour definir la configuration du port SPI parametre comme

suit : Port 2, Master, SDO Enable, donnees sur 16 bits, frequence d’horloge regle avec

le prescaler a 416kHz.4. Ajouter un bloc SPI Input-Output, ce bloc est parametre comme suit : Port 2, Always

Enable, SPI Input 3 , SPI Output. L’entree de ce bloc sera reliee a la source sinusoıdale

par l’intermediaire d’un bloc Commonly Used Blocksconvert UINT16.

5. Pour controler le SS, ajouter un bloc Digital Output parametre sur RG1 et pilote par

un Sources Limited counter qui compte jusqu’a 1 (soit 0, soit 1) a une cadence de

6.25e−5s.

La donnee issue du bus SPI est constituee des 12 bits de poids faible, les 4 bits de poids fort

sont utilises pour le controle du DAC 12 bits, en particulier, si l’on se refere a la datasheet de ce

composant page 18, vous justifierez l’interet de regler les bits b12 et b13 a 1.

— Comment pourrait-on simplement modifier la donnee (le signal sinusoıdal code en UINT16)

pour regler les bits b12 et b13 a 1 ? La fonction bin2dec convertit un mot binaire en

nombre decimal, elle peut vous aider a comprendre coment realiser cette modification.

— Sauvegardez votre modele et generez le fichier hex correspondant. Transferez-le sur le

microcontroleur et observez avec l’oscilloscope le signal ainsi genere.

— Observez a l’oscilloscope les signaux du bus SS, SCK et MOSI en vous synchronisant sur

le front descendant de SS.

— Il est possible d’utiliser les differentes sources fournies par SIMULINK pour generer des

signaux de differentes natures. Attention toutefois a les convertir au format UINT16.

Veillez egalement a ce que l’amplitude de ces signaux aient des valeurs coherentes avec le

format UINT16 (c-a.d ∈ [0− 65535]).

3. Normalement, on n’aurait pas a activer cette option mais si la case est decochee, le DAC ne fonctionne pas.

30 F.BATEMAN

Page 37: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

3.4. Les signaux PWM

3.4 Les signaux PWM

Mise en œuvre des fonctionnalites Output Compare et Input Capture.

3.4.1 Definition d’une PWM

Le principe de fonctionnement de ces deux blocs repose sur la generation ou l’analyse d’un

signal carre a rapport cyclique variable (Duty Cycle). Sur la figure 3.7 vous pouvez observer

differentes valeurs de rapport cyclique avec la forme du signal qui en resulte. Le rapport cyclique

a pour expression a = ∆tt, avec :

— ∆t : temps du signal a l’etat haut

— T : periode du signal

— a : rapport cyclique

Lorsque a est fonction du temps, le signal a rapport cyclique variable est qualifie de PWM

(Pulse Width Modulation).

Figure 3.7 – Le menu du programme Realterm

Exemples d’utilisation :

— L’echange d’informations entre un capteur (temperature, accelerometre, etc.) et un mi-

crocontroleur ou entre microcontroleurs,

— La commande de moteurs a travers des transistors de puissance.

3.4.2 Generation d’une PWM

Pour cela vous allez dans un premier temps realiser un programme qui permet le codage

numerique d’une entree analogique (ADC Input). Cette entree sera reliee par cavalier a l’un des

F.BATEMAN 31

Page 38: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Sequences 3. PROGRAMMATION DES PERIPHERIQUES DU DSPIC

deux potentiometres (A/D converter input) presents sur votre carte de developpement. Vous

etes libre du choix de l’entree (RB8, RB9, ..., RB15).

— Parametrez le convertisseur analogique numerique (bloc ADC Input) en utilisant une

tension de reference externe. Pratiquement la tension de 4, 096V generee sur la carte

BigDsPic6 (consultez le manuel de cette carte p 13). Vous parametrerez le rythme des

conversions (Trigger Source) en mode auto convert.

— Visualisez le signal issu de la conversion analogique numerique au moyen de rs232gui et

d’un bloc Tx Labview Matlab.

— Configurer ensuite le bloc Peripheral I/OOutput Compare HW, celui-ci vous permettra

de generer un signal a rapport cyclique variable directement proportionnel a la tension

d’entree du potentiometre que vous avez choisi. Pour la configuration des parametres du

bloc consulter l’aide. On opere les choix suivants :

— Channels Input Type : nous voulons definir la PWM par sa periode et sa duree a

l’etat haut.

— La Period Max sera definie a 20ms (periode typique pour des servocommandes).

— La variable OCmax est essentielle. Pour un signal egal a OCmax a l’entree du bloc

Output Compare HW correspond un rapport cyclique a = 100%. Vous pouvez acceder

a la valeur de OCmax depuis le Workspace de MATLAB qui sera mis a jour apres

une configuration de votre programme.

— Pour fonctionner, le bloc Output Compare HW est pilote par l’entree (OCx Up) qui

prend ses valeurs dans [0, OCmax]. Attention, le seul format d’entree admis-

sible par le bloc est le type UINT16. Au moyen d’un gain, realiser la fonction

qui transforme le signal issu de l’ADC ([0, 4095]) en un signal de type UINT16 qui

varie dans l’intervalle [0, OCmax].

— Observer a l’oscilloscope le signal de sortie module en rapport cyclique a l’aide du po-

tentiometre, en parallele, relever avec rs232gui le signal issu de l’ADC. Pour connaitre

les pins utilisees dans votre programme, afficher le Port info et cliquer dessus pour la

mise a jour. Attention malgre tout a verifier sur la documentation (datasheet de votre

composant) des erreurs peuvent apparaitre.

3.4.3 Decodage d’un signal PWM

Dans ce qui suit, l’objectif est de decoder une PWM (periode, duree de l’etat haut ou bas

etc.), par exemple, celle issue du signal genere par le module Output Compare HW precedem-

ment programme. Plus generalement, la PWM peut permettre de transmettre des informations.

Ces dernieres proviennent par exemple d’une radiocommande et sont decodees par le microcon-

troleur.

— Mettre en place un bloc Input Capture dans votre programme et consulter l’aide pour la

configuration.

— De la meme facon que precedemment, la valeur de ICimax vous sera donnee dans le

Workspace de MATLAB.

— Au moyen du rs232gui, vous visualiserez la valeur du temps haut de votre signal d’entree

ainsi que sa periode (sorties ICx Up et ICx Periode).

— Avant de compiler votre programme, assurez-vous qu’aucune pins ne soit utilisee plus

32 F.BATEMAN

Page 39: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

3.4. Les signaux PWM

d’une fois.

— Pour effectuer la mesure, realisez une liaison filaire entre la sortie Output Compare HW

et l’entree Input Capture. Attention les donnees inscrites dans Port info sont erronees

pour le bloc Input Capture, se reporter au datasheet du microcontroleur.

— Faire varier le rapport cyclique du signal d’entree de Input Capture avec le potentiometre

et relever la valeur mesuree.

— Verifier la coherence de vos mesures avec la valeur de ICxmax. Par exemple, si la valeur

de ICxmax est 9999 et la valeur du rapport cyclique du signal d’entree de 0,2. Le resultat

en sortie doit etre tres proche de 2000.

— Relever les valeurs de ICi Up et ICi Periode pour les valeurs de rapport cyclique extremes.

Commenter les resultats. Comment peut-on modifier ces valeurs ?

F.BATEMAN 33

Page 40: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Sequences 3. PROGRAMMATION DES PERIPHERIQUES DU DSPIC

3.5 Convertisseurs Analogiques-Numeriques

Il s’agit de numeriser des signaux analogiques et de mettre en evidence les limites de cette

operation.

Au moyen du generateur basses-frequences (GBF), generez un signal sinusoıdal de frequence

50 Hz dont l’amplitude crete a crete varie entre 0 et 5 Volts et visualisez-le sur l’oscilloscope.

Au moyen d’un bloc ADC Analog to Digital Converter ou CAN, realisez une conversion

analogique-numerique du signal sinusoıdal delivre par le GBF. En exploitant la documentation

HTML de ce bloc, parametrez-le de sorte que le signal sinusoıdal soit echantillonne a 200 Hz.

Pour ce faire, cette conversion sera declenchee par une source exterieure mode trigger. Vous

pourrez realiser facilement la source qui declenche les conversions en utilisant un Source

Counter limited.

Pour l’observation des signaux, vous mettrez en œuvre un bloc TX Labview Matlab, la

transmission des donnees sera cadencee a 115200 bauds et le Fixed Step Time regle a 1.10−4.

Pour une telle vitesse de transmission, le dsPIC Master est cadence a 40 MIPS.

Dans la fenetre rs232gui, affecter la valeur 200 a Rn, cela limitera la duree d’observation des

signaux. N’hesitez pas a chercher dans l’aide la syntaxe de la fonction axis.

— Observez sous rs232gui le signal echantillonne, avec le curseur, relevez la periode d’echan-

tillonnage et l’amplitude crete a crete de ce signal dont on rappelle qu’il est code sur 12

bits, autrement dit 5V equivalent a 4096.

— Representez le spectre du signal echantillonne.

— Quelle est l’expression du signal obtenu en sortie du CAN.

On diminue la frequence d’echantillonnage et on la porte a 250Hz, l’objectif est de mettre

en evidence l’effet du bloqueur d’ordre zero.

— Observez sous rs232gui le signal echantillonne, avec le curseur, relevez l’amplitude crete

a crete de ce signal et comparez-la a celle relevee precedemment.

— Representez le spectre du signal echantillonne.

— Donner une explication a ce que vous observez en sortie du CAN. Pour repondre a cette

question, on vous rappelle que la fonction de transfert du BOZ est :

BOZ(jω) = Tesin

ωTe2

ωTe2

e−jωTe2 (3.3)

34 F.BATEMAN

Page 41: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

3.5. Convertisseurs Analogiques-Numeriques

F/Fe Gain/Te

0.1 0.98363

0.2 0.93549

0.3 0.85839

0.4 0.75683

0.5 0.63662

0.6 0.50455

0.7 0.36788

0.8 0.23387

0.9 0.10929

1.0 0.00000

1.1 0.08942

1.2 0.15591

1.3 0.19809

1.4 0.21624

1.5 0.21221

1.6 0.18921

1.7 0.15148

1.8 0.10394

1.9 0.05177

2.0 0.00000

2.1 0.04684

2.2 0.08504

2.3 0.11196

2.4 0.12614

2.5 0.12732

2.6 0.11643

2.7 0.09538

2.8 0.06682

2.9 0.03392

3.0 0.00000

F.BATEMAN 35

Page 42: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Sequences 3. PROGRAMMATION DES PERIPHERIQUES DU DSPIC

3.6 Le bus I2C

Le bus I2C est un bus de donnees serie, asynchrone, bidirectionnel et half-duplex (deux

sens de communication possibles mais pas simultanement). Les equipements connectes au bus

sont maıtres ou esclaves, et reciproquement. Il faut noter que les echanges ont toujours lieu a

l’initiative du maıtre vers un esclave uniquement.

Electriquement le bus necessite trois conducteurs : la masse, l’horloge (SCL, Serial Clock)

et les donnees (SDA, Serial Data). L’impedance de chaque equipement sur le bus doit etre

absolument adaptee, la charge capacitive maximale des conducteurs SDA et SCL est de 400 pF.

Les deux lignes SDA et SCL sont reliees au niveau de tension VDD a travers des resistances de

tirage (< 3.5 KOhms).

Dans ce qui suit, le microcontroleur pilote des cartes de controle de moteurs brushless via le

bus I2C.

Le protocole I2C

Le protocole peut se decomposer en deux parties, la premiere definit l’adresse de l’esclave

concerne et la seconde contient les donnees envoyees ou receptionnees par le maıtre. Le maıtre,

avant d’envoyer des informations sur le bus, s’assure que celui-ci est disponible. Alors, ensuite, il

passe la ligne SDA de l’etat haut a l’etat bas, tout en maintenant la ligne SCL a l’etat haut, c’est

la condition de depart (bit de Start). Le maıtre envoie alors l’adresse de l’esclave designe qui

est composee de huit bits dont un bit (possibilite d’un codage sur 10 bits) qui precise l’ecriture

ou la lecture des donnees (Read a 1, Write a 0). L’esclave renvoie alors un bit d’acquittement

ACK ou de non acquittement NACK pour informer de la prise en compte de l’information. Les

donnees sont codees sur un octet ou plus et envoyees du maitre vers l’esclave ou inversement,

avec acquittement du receptionnaire. Sur la Figure 3.8 on presente la structure du protocole I2C

configure en ecriture. De plus en exemple sur la Figure 3.9, on donne les signaux SDA (en haut)

et SCL (en bas) qui permettent pour l’adresse 82 l’ecriture de la valeur 10 (en decimal).

Figure 3.8 – Structure de la trame I2C

Commande d’un moteur brushless

Dans cette partie, vous mettrez en œuvre un bus I2C dans le but de controler un moteur

brushless ou moteur sans balai utilise en aeromodelisme. Ce moteur est controle par une carte

de controle des moteurs brushless (Bl-Ctrl) qui fournit la puissance electrique au moteur. Cette

carte permet egalement de mesurer le courant consomme et la vitesse du moteur. Le bus I2C peut

travailler a des cadences d’horloge elevees, typiquement 400kz. Il est ainsi possible de controler

36 F.BATEMAN

Page 43: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

3.6. Le bus I2C

plusieurs peripheriques en raffraichissant les commandes a un rythme eleve. Cela est particulie-

rement interessant pour le controle des drones a voilure tournantes tels que les quadrirotors.

Commande d’un moteur brushless sur 8 bits

Pour realiser ce montage, reportez-vous aux documentations du microcontroleur, de la Bl-Ctrl

http://www.mikrokopter.de/ucwiki/fr/BL-Ctrl_2.0 et a la figure 3.12. Toutes les cartes

sont hors tension.

— Reliez les ports SCL et SDA ainsi que la masse du microcontroleur aux points C (SCL)

et D (SDA) ainsi qu’a la masse de la Bl-Ctrl.

Figure 3.9 – Releve d’une trame I2C

Figure 3.10 – Moteur brushless

F.BATEMAN 37

Page 44: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Sequences 3. PROGRAMMATION DES PERIPHERIQUES DU DSPIC

— Commutez les switchs SWI2 SCL et SDA en position I2C.

— Reliez les trois phases du moteurs brushless notees sur les cables A, B, C aux sorties A,

B, C de la Bl-Ctrl.

L’alimentation ne doit pas encore etre reliee a la carte Bl-Ctrl.

— Mettre l’alimentation sous tension, regler la tension a 15 Volts et ne pas limiter le courant,

en effet, les demandes en courant peuvent atteindre 10A (ce qui depasse les capacites de

l’alimentation.)

— Couper l’alimentation et connecter-la a la Bl-Ctrl.

— Relier la masse de la BL-Ctrl a la masse de la carte BigDsPic6.

— Ouvrir le fichier I2C.mdl et analyser les parametres du bloc I2C Master qui permet

de piloter une carte de controle Bl-Ctrl pour un moteur brushless depuis un bus I2C.

L’adresse de la carte est 82 (decimal), la commande du moteur est codee sur un octet ([0,

255]) et la frequence du bus est de 400 kHz. Les donnees sont transmises sur le bus avec

un Sample Time egal a 2 ms. Par defaut, dans ce montage, la commande est egale a 10.

Soyez prudent a ne pas appliquer un nombre trop grand, l’helice atteindrait des vitesses

de rotation tres elevees.

— Compiler le schema et implementer-le sur le microcontroleur, le moteur doit tourner. Pour

le stopper, cliquer sur le bouton Erase du programme DsPicFlash.

Commande d’un moteur brushless sur 11 bits

Pour un controle plus fin de la vitesse des moteurs, il est possible de controler la Bl-Ctrl sur

11 bits ([0,2047]). Pratiquement, les donnees sont codees sur 2 octets sur le bus I2C, les bits

11 . . . 15 n’etant pas pris en compte par la Bl-Ctrl.

Figure 3.11 – Carte Bl-Ctrl

DsPic

moteur

BCTRL

sdascl

gnd

+12V-8A

Figure 3.12 – Plan de cablage du moteur

38 F.BATEMAN

Page 45: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

3.6. Le bus I2C

0 0 0 0 0 b10 b9 b8 b7 b6 b5 b4 b3 b2 b1 b0

Il faut realiser une fonction qui, partant d’un mot code sur 16 bits et compris dans [0, 2047]

genere ce mot sur 2 octets codes en UINT8.

L’octet de poids faible ou LSB 4 contiendra les bits

0 0 0 0 0 b2 b1 b0

L’octet de poids fort ou MSB 5 contiendra les bits

b10 b9 b8 b7 b6 b5 b4 b3

On se rappellera qu’un decalage d’un bit a droite equivaut a une division par deux.

0 0 0 0 0 0 b10 b9 b8 b7 b6 b5 b4 b3 b2 b1

On se rappellera qu’un decalage d’un bit a gauche equivaut a une multiplication par deux,

0 0 0 0 b10 b9 b8 b7 b6 b5 b4 b3 b2 b1 b0 0

Realisez sous SIMULINK un schema de simulation qui transforme un nombre de type

UINT16 dont la valeur peut varier entre 0 et 2047 en deux nombres codes sur 8 bits. Les

octets de poids faible et de poids fort doivent avoir la structure proposee ci-dessus.

Modifiez le modele I2C.mdl pour controler le moteur avec un mot de commande code sur

deux octets et dont la valeur peut varier entre 0 et 2047. Sur la Bl-Ctrl, les octets doivent etre

transmis dans l’ordre suivant :

MSB LSB

Lecture d’octets depuis un bus I2C

Pour cet essai, vous reprendrez le modele du systeme qui permet l’ecriture d’un mot de 8 bits

sur le bus I2C.

Le bus I2C permet egalement de lire des donnees issues de peripheriques externes. En par-

ticulier, la carte Bl-Ctrl est egalement accessible en lecture a l’adresse 83. Il est notamment

possible de lire :

— octet 1 : l’intensite du courant absorbe par le moteur

— octet 2 :

— octet 3 :

— octet 4 : la vitesse du moteur en tour/s

— octet 5 : la tension d’alimentation de la carte Bl-Ctrl

Pour lire ces donnees, il faut ouvrir une nouvelle instance du bloc I2C Master et l’ajouter au

modele qui comporte deja un premier bloc I2C Master pour l’ecriture sur la carte Bl-Ctrl.

4. Less Significant Byte

5. Most Significant Byte

F.BATEMAN 39

Page 46: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Sequences 3. PROGRAMMATION DES PERIPHERIQUES DU DSPIC

— En lecture, la carte Bl-Ctrl doit etre adressee a l’adresse 83.

— Parametrer le bloc I2C Master de facon a pouvoir lire les cinq premiers octets. Attention,

pour pouvoir fonctionner correctement, la sequence de lecture des cinq octets doit etre

suivie d’une operation d’ecriture (cependant aucun octet ne doit etre envoye) 6.

— Connecter un bloc Tx Labview Matlab de facon a pouvoir enregistrer la vitesse du mo-

teur.

— Appliquer a l’entree du bloc I2C un signal dont la valeur varie discretement de 0 a 100

(utiliser un Counter Limited) et relever la vitesse de rotation du moteur. La constante de

temps du moteur est de l’ordre de 100 ms, il vous faut tenir compte de cette information

pour cadencer correctement le signal applique a l’entree du bus I2C.

Releve des caracteristiques de l’ensemble Bl-Ctrl-Brushless-Helice

On conserve le meme montage que precedemment.

— Mettre en œuvre le banc moteur Brushless muni de son helice et pilote par la carte Bl-Ctrl.

Installer une balance/masselotte en vue de mesurer la poussee exercee par l’helice.

— Relever la caracteristique statique f(N) ou f designe la frequence de rotation du

moteur et N l’octet de commande applique a la Bl-Ctrl.

— relever egalement la tension d’alimentation et le courant. Calculer la puissance elec-

trique et visualiser-la.

— Relever pour chaque acquisition de f la poussee P exercee par l’helice.

— Representer la caracteristique P (f2), vous etes invites a relever les points de cette carac-

teristique dans un tableau sous MATLAB. Au moyen de la fonction polyfit, proposez une

approximation polynomiale de cette caracteristique et donnez une expression de P (f2).

— En supposant, au rendement du systeme Bl-Ctrl + moteur pres, que la puissance

electrique delivree par l’alimentation sert a compenser les pertes dues a la trainee aero-

dynamique, en deduire le coefficient de trainee de l’helice.

6. Nous n’avons pas a ce jour d’explication sur ce point.

40 F.BATEMAN

Page 47: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

3.7. Insertion de code

3.7 Insertion de code

3.7.1 Insertion de code C

Le blockset permet d’inserer dans des blocs des programmes codes en langage C OthersC

function call. Cela peut permettre de realiser des fonctions qui n’existent pas sous SIMULINK.

Dans ce qui suit, les programmes le code source figure dans le fichier essai .c, lequel appelle les

fonctions declarees dans le bloc C function call.

Premier exemple

Un exemple simple peut etre consulte en ouvrant le fichier Programme en C.mdl. Vous consul-

terez par ailleurs l’aide du bloc C function call pour comprendre le parametrage du bloc. Il faut

en particulier indiquer le nom du fichier *.C sous Simulation Real-Time Workshop Custom

Code Source files.

— Compiler et implementer ce bloc et visualiser au moyen de RS232gui le resultat de l’ope-

ration programmee.

Second exemple : cinematique de rotation d’un solide

Le controle des vehicules aerospatiaux requiert le controle de leur attitude. Il est theoriquement

possible de calculer cette derniere a partir de la mesure des vitesses angulaires realisees par les

gyrometres de roulis, de tangage et de lacet. Ces vitesses angulaires sont respectivement notees

p, q et r. Les angles d’attitude qui permettent de localiser la position du repere vehicule par

rapport a un repere de reference sont respectivement les angles de gıte ϕ, d’assiette θ et le cap

ψ. On demontre que :

ϕ = p+ q sinϕ tan θ + r cosϕ tan θ

θ = q cosϕ− r sinϕ

ψ =

(sinϕ

cos θ

)

q +(cosϕ

cos θ

)

r (3.4)

— Quelles sont les limites de cette representation de l’attitude ?

— Au moyen d’un bloc C function call implementez ces equations.

— Ajouter a ce schema les fonctions necessaires a l’obtention des angles de gıte ϕ, d’assiette

θ et le cap ψ.

— Inserer des blocs Tx Labview Matlab afin de relever les angles d’attitude.

— Pour tester cette fonction, appliquer successivement aux entrees des signaux emulant des

vitesses angulaires constantes, par exemple du roulis seul puis du tangage seul enfin du

lacet seul. Pour information le taux de roulis maximal d’un Mirage 2000 est de l’ordre de

300/s .

— En option, test de l’algorithme avec la MTI ou la Sparkfun.

Troisieme exemple : gestion des peripheriques du DsPic

Il est possible de reprogrammer ou d’ameliorer les fonctionnalites proposees par le blockset.

Ainsi, le fichier Programme en C2.mdl associe au fichier essai .c et a la fonction cna ecrit un mot

F.BATEMAN 41

Page 48: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Sequences 3. PROGRAMMATION DES PERIPHERIQUES DU DSPIC

de 8 bits sur le port D. La fonction TRISD, propre au C des microcontroleurs de cher Microchip

declare le port D en sortie tandis que la fonction LATD recopie sur ce meme port le mot de 8

bits contenu dans la variable qui lui est affectee.

3.7.2 Insertion de code MATLAB

Le bloc Embedded Matlab Function que l’on trouve dans la bibliotheque User defined func-

tions appelle une fonction ecrite sous MATLAB pour laquelle le code C correspondant est genere

en vue de pouvoir etre utilise dans des applications temps reels. Ces blocs sont particulierement

interessants car ils permettent de disposer de la diversite des fonctions proposees par MATLAB.

L’exemple qui suit vous montre sur un exemple simple comment utiliser un tel bloc.

Soit a realiser la fonction suivante :

xk+1 = xk +

(

3

1

)

εk

yk+1 = xk+1 (3.5)

Pour faire simple, εk est un signal sinusoıdal d’amplitude unitaire et de frequence egale a

1rad/s. Sous SIMULINK, on realise le schema suivant (3.13) :

Figure 3.13 – Embedded MATLAB Function

Le code programme dans l’Embedded Matlab function :

f unc t i on y = observateur ( e r r eu r )

%UNTITLED Summary o f t h i s f unc t i on goes here

% Deta i l ed exp lanat ion goes here

k= [3 ; ˜1 ]

p e r s i s t e n t x ; % l e type p e r s i s t e n t e s t memorise e t a c t u a l i s e a

% chaque Sample Time

i f isempty (x ) ; % Ce t e s t permet d ’ en t r e r dans l a bouc le i f une f o i s

% l o r s de l ’ i n i t i a l i s a t i o n

42 F.BATEMAN

Page 49: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

3.8. Machine a etats

x = [ 0 ; 0 ] ; % et d ’ a l l o u e r des va l eu r s a x

end ;

x=x+k∗ e r r eu r % L ’ e t a t pr e s ent e s t c o r r i g e par l ’ e r r eu r au t r av e r s

% des ga ins

y = x ; % L ’ equat ion de s o r t i e

end

Toutes les lignes du code sont executees a chaque Sample Time (utiliser un bloc Rate Tran-

sition, sinon la fonction est appelee au rythme du Fixed Step Time ).

Substituer au scope un demultiplexeur et deux blocs Tx Labviex Matlab pour observer cha-

cune des variables du vecteur x.

3.8 Machine a etats

Stateflow est un blockset qui permet de sequencer des taches au sein d’un systeme decrit

sous SIMULINK. Ceci est illustre sur la figure 3.14 qui montre un tel systeme construit autour

d’un bloc Stateflowchart. Ce systeme accessible depuis le fichier automate.mdl.

Figure 3.14 – Exemple de systeme sous Stateflow

Dans cet exemple, ce systeme comporte :

— deux entrees logiques a et b,

— une entree d’horloge.

— une sortie numerique sortie

— une sortie binaire out0

— une sortie analogique out1

Un double-clic sur le bloc chart montre la structure de la machine a etats, figure 3.15. Celle-

ci a ete realisee au moyen de fonctions accessibles depuis les icones figurant dans la colonne de

gauche.

Cette machine comporte deux etats respectivement appeles Etat1 et Etat2.

F.BATEMAN 43

Page 50: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Sequences 3. PROGRAMMATION DES PERIPHERIQUES DU DSPIC

Au demarrage, la transition par defaut pointe sur Etat1 et la donnee raz de type booleen

est forcee a 0.

Une fois entre dans l’Etat1, et pendant toute la duree de cet etat (During),

— la variable raz est maintenue a 1,

— la fonction model0 qui n’admet aucun argument est active.

Lorsque les conditions sur a et b sont satisfaites, le systeme passe dans Etat2 en passant la

variable raz a 0. Une fois entre dans l’Etat2, et pendant toute la duree de cet etat (During),

— la variable raz est maintenue a 0,

— la fonction SIMULINK model1 qui admet comme argument in1 renvoie out1. Cette fonc-

tion est definie et accessible sous le bloc Simulink Fcn. Il s’agit ici d’un simple integrateur.

Lorsque le systeme sort de l’Etat2 (Exit), la variable sortie est forcee a 2. Le systeme ne

revient dans Etat1 que lorsque les signaux a et b valent tous deux zero, la variable raz est quant

a elle forcee a un.

Le menu Tools Explore permet d’acceder au type des differentes variables, il suffit de cliquer

sur l’une d’elle pour prendre connaissance de sa declaration. Sur la figure 3.16 la variable a

est declaree comme une variable d’entree (sous-entendu comme une entree de SIMULINK) de

type booleen. Pour ajouter des signaux, il faut cliquer sur le menu adddata. Un cas particulier

concerne ici la variable raz qui a ete declaree avec le type Data Store Memory puisqu’elle change

d’etat lors des transitions, elle ne correspond pas a une entree physique. Elle requiert toutefois

d’utiliser au niveau du schema de la figure 3.15 un bloc de type Signal RoutingData Store

Memory.

Modifier le systeme decrit sur les figures 3.14 et 3.15 de sorte que la machine comporte

quatre etats accessibles a partir des entrees logiques a etb. Une entree c et une sortie out de

type booleen doit egalement etre declaree.

Les signaux logiques de transition pour entrer dans les differents etats et les fonctions realisees

dans chacun de ces etats sont decrites dans le tableau 3.1.

Figure 3.15 – Exemple de systeme sous Stateflow

44 F.BATEMAN

Page 51: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

3.8. Machine a etats

Figure 3.16 – Le menu Explore

a b Etat fonction

0 0 1 signal carre periode 1Hz

0 1 2 signal carre periode 2Hz

1 1 3 sortie recopie entree

1 0 4 sortie a 1

Tableau 3.1 – Tableau des etats

F.BATEMAN 45

Page 52: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Sequences 3. PROGRAMMATION DES PERIPHERIQUES DU DSPIC

De plus,

— au demarrage, on entre dans l’etat 3,

— On peut entrer dans l’etats 1 a partir des etats 2, 3, 4,— on peut entrer dans les etats 2 a partir des etats 1, 3, 4,— on peut entrer dans les etats 3 a partir des etats 1, 2, 4,— on ne peut entrer dans l’etat 4 qu’a partir de l’etat 3, en revanche depuis l’etat 4 on peut

entrer dans n’importe quel etat 1, 2, 3.

46 F.BATEMAN

Page 53: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Deuxieme partie

TRAVAUX PRATIQUES

D’AUTOMATIQUE

47

Page 54: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce
Page 55: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 1

CHAINE D’ACQUISITION D’UN SIGNAL NUMERIQUE

1.1 Objectif

Faire l’acquisition, le traitement et la restitution d’un signal analogique. Cette chaıne d’ac-

quisition et de traitement sera utilisee lors des prochaines seances de travaux pratiques afin

d’etudier un procede de camouflage d’un mesage dans un signal audio (steganographie) et un

filtre adaptatif utilise pour supprimer le bruit ambiant.

1.1.1 Liste du materiel

— Carte de developpement BigDsPic6 + 2 cables USB + Boitier d’alimentation

— Bred board

— Carte a amplificateurs operationnels Sparkfun

— Filtre a capacite commutee, condensateurs 100nF, petits fils

— Carte DAC 12 bits Mikroelektronika ou Carte DAC 8 bits Mikroelektronika R2R

— Cable + prise jack, casque audio, haut-parleur

— PC + MATLAB-SIMULINK, MPLAB

— GBF, oscilloscope, prises BNC, sonde d’oscilloscope, cable BNC.

1.2 Le filtrage anti-repliement

Le signal a traiter est un signal audio qui sera echantillonne a 8000 Hz.

1.2.1 Les caracteristiques du filtre a capacite commutee

— Quelle doit-etre la frequence de coupure fcut du filtre d’anti-aliasing ?

— En utilisant la notice du filtre a capacite commutee LCT16091 accessible depuis le bureau

sous le dossier datasheet :

— choisissez la frequence d’horloge du LCT16091,

49

Page 56: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 1. CHAINE D’ACQUISITION D’UN SIGNAL NUMERIQUE

— representez le gabarit de ce filtre.

1.2.2 Mise en œuvre du filtre

— Cablez ce circuit sur la bredboard. Vous l’alimenterez a partir des tensions 0-5V delivrees

par la carte BigDsPic6.

— Pour realiser l’horloge du filtre a capacite commutee 100fcut , on genere un signal haute

frequence en utilisant les blocs Peripheral I/OOutput Compare (HW) du microcon-

troleur. Le fonctionnement de ces blocs est detaille au §3.4 et dans l’aide en ligne du

blockset.

— Ouvrez le fichier template.mdl puis renommez-le. C’est sur ce fichier que vous allez

realiser le programme qui delivre le signal d’horloge. Reglez le Fixed Step Time a

1.25e−4 soit 8kHz.

— On utilise le canal de sortie OC1, voir sur la datasheet du DsPic le port correspondant.

— Reglez la periode max du bloc egale a la periode du signal d’horloge du filtre.

— Le parametre du signal genere qu’on regle est l’etat haut du rapport cyclique (duty

cycle), ce dernier est defini par la variable OCmax,

— Reglez la valeur du signal d’entree du blockset pour obtenir un signal OC1 de rapport

cyclique egal a 50%.

— Compilez le modele et implementez le programme.

— Avec l’oscilloscope, mesurez la periode du signal OC1.

— Appliquez a l’entree du filtre un signal sinusoıdal ∈ [1V, 3V ] dont vous ferez varier la

frequence. Vous verifierez que le signal de sortie du filtre presente, en terme d’attenuation,

les caracteristiques annoncees par le constructeur.

1.3 La conversion numerique-analogique

Vous allez realiser l’acquisition du signal prealablement filtre au moyen d’un convertisseur

analogique-numerique du DsPic.

Au moyen du generateur basses-frequences (GBF), generez un signal sinusoıdal de frequence

440 Hz dont l’amplitude crete a crete varie entre 0 et 4 Volts et visualisez-le sur l’oscilloscope.

Sur la datasheet du DsPic30F6014A, reperez les ports associes au convertisseur analogique-

numerique AN0 et l’entree de controle INT0.

Au moyen d’un bloc ADC Analog to Digital Converter, realisez la conversion analogique-

numerique (CAN) du signal sinusoıdal delivre par le GBF. En exploitant la documentation

HTML de ce bloc, parametrez-le de sorte que le signal sinusoıdal soit echantillonne a 8000 Hz.

Pour ce faire, cette conversion sera declenchee par une source exterieure mode trigger Low

to High transition on INT0 pin. Vous pourrez realiser facilement la source qui declenche les

conversions en utilisant un bloc Peripheral I/O Output Compare. Le signal de sortie doit

presenter un rapport cyclique de 50% et une frequence egale a 8000Hz.

Comme l’ADC code le signal sur 12 bits, l’information en sortie de ce dernier peut prendre

4096 valeurs. A cet effet, une reference de tension de 4.096V peut etre appliquee au DsPic de

sorte que le quantum soit egal a 1mV. Pour ce faire, vous devez commuter le switch RA10 de

SW13 → 4.096V.

50 F.BATEMAN

Page 57: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

1.4. Analyse spectrale du signal echantillonne-bloque

Pour l’observation des signaux, vous mettrez en œuvre un bloc TX Labview Matlab, la

transmission des donnees sera cadencee a 230400 bauds . Pour une telle vitesse de transmission,

le dsPIC Master est cadence a 40 MIPS.

— Dans la fenetre rs232gui, affecter la valeur 128 au champ Rn, cela limitera l’observation

des signaux a un maximum de 128 points, ce qui ne represente que quelques periodes du

signal.

— Observez sous rs232gui le signal echantillonne,

1.4 Analyse spectrale du signal echantillonne-bloque

On souhaite, en temps quasi-reel affichez la transformee de Fourier du signal echantillonne

bloque avec une precision en frequence N egale a 512. Dans le Command Window, on commence

par generer le vecteur des frequences auxquelles on va tracer le spectre du signal :

f=0 :8000/512 :8000(1-1/512) ;

Vous verifierez qu’il s’agit bien d’un vecteur de 512 lignes par 1 colonne avec la fonction size.

Dans la fenetre d’edition de rs232gui, ecrivez au moyen de la fonction fft le script qui utilise

les P=128 echantillons du signal issus de l’ADC contenus dans la variable Rn en vue de calculer

et d’afficher le module du spectre du signal pour un nombre discret de frequences 1 N=512.

Vous pouvez connecter un casque sur la face arriere du PC et ecouter les sequences sonores

correspondant au contenu de la variable Rn au moyen de la fonction sound que vous ajouterez

a la suite du calcul et de l’affichage de la FFT.

Testez ce programme pour le signal sinusoıdal de frequence 440 Hz et d’amplitude ∈ [1, 4]

Volts.

En utilisant le mode sweep du GBF, generez un chirp compris dans la bande de frequence

∈ [440, 1000] Hz.

Memes questions pour un signal carre de meme frequence et de meme amplitude. Mettez en

evidence les harmoniques et le repliement du spectre.

On etudie l’effet du nombre de points de calcul de la FFT : si N designe le nombre de points

de calcul de la TFD, la precision en frequence est egale a1

N. Pour des signaux echantillonnes a

la frequence Fe, cela onneFe

N.

Toujours pour Rn=128, testez N=16 pour un signal carre, comparez a ce que vous observiez

pour N=512

La resolution frequentielle est la capacite de discerner des frequences distinctes. Elle est

de l’ordre de grandeur deFe

Psoit l’inverse de la largeur de la fenetre temporelle utilisee pour

prelever le signal a analyser dans le domaine temporel.

Testez pour P=32 N=512 et comparez le spectre a celui obtenu pour P=128 et N=512

1. N definit les frequences k∆F auquel sont conduites les calculs k∆F = kFe

Net k ∈ [0, N − 1]. On a par

ailleurs (cf. Cours de traitement du signal) N ≥ P .

F.BATEMAN 51

Page 58: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 1. CHAINE D’ACQUISITION D’UN SIGNAL NUMERIQUE

Rappelez l’interet de multiplier la sequence temporelle de longueur P par une fenetre de

ponderation. Vous visualiserez sur MATLAB une fenetre temporelle de Hamming de longueur P.

Ponderez Rn en le multipliant par une fenetre temporelle de votre choix : hamming, hanning,

bartlett, blakman, etc. Ces fonctions ont le meme nom sous MATLAB. On rappelle que le produit

terme a terme des coefficients de deux tableaux ∈ Rn×m s’ecrit A. ∗B

1.5 La conversion numerique-analogique

Elle peut etre realisee au moyen d’un convertisseur numerique analogique (CNA)DAC pour

Digital to Analog Converter 12 bits ou 8 bits. En fonction du convertisseur disponible, procedez

comme suit :

— Convertisseur 12 bits : vous reprendrez pour cela la procedure decrite au §3.3.1. Vousconnecterez directement la sortie de l’ADC 12 bits a celle du DA C12 bits (eventuellement

inserez un bloc Rate Transition cadence a 8000Hz entre les deux fonctions).

— Convertisseur 8 bits : La gestion du DAC 8 bits est realisee par un bloc Others C function

Call. La procedure d’utilisation de ce bloc, rappelee ci-dessous, est decrite au §3.7.1.— Ouvrez le fichier cna.mdl et copier-coller le schema qu’il contient.

— Copier-coller le fichier essai.c dans le repertoire sous lequel vous travaillez.

— Specifiez le nom du fichier essai.c depuis le menu Simulation Real-TimeWorkshop Custom

Code Source files de MATLAB.

— Vous connecterez entre la sortie de l’ADC 12 bits et celle du DAC 8 bits un gain

(a determiner), la sortie s’operant en UINT8 puisque ce convertisseur admet a son

entree des nombres codes dans l’intervalle [0, 255].

— Inserez la Carte DAC 8 bits Mikroelektronika R2R sur le slot RB0-RB7.

— Sauvegarder le schema de la chaıne d’acquisition et de restitution du signal sous le nom

DigitalProcessing.mdl, il sera utilise lors des prochaines seances.

Visualisez sur l’oscilloscope le signal analogique a l’entree et le signal analogique restitue par

le DAC.

1.6 Traitement du signal par filtre numerique

http://www.esiee.fr/~courivad/Files/ST4-RF1/st4rf1_filtreshyper.pdf pages 3-5.

Dans cette partie, vous synthetiserez et implementerez un filtre numerique RII visant a

extraire l’harmonique de rang 3 d’un signal carre x(t) de frequence fondamentale egale a 50Hz

de valeur moyenne egale a 2 V et d’amplitude crete a crete egale a 2V. On rappelle qu’un tel

signal admet la decomposition en serie de Fourier suivante :

x(t) = x++∞∑

k=0

4

(2k + 1)πsin((2k + 1)πft) (1.1)

— Quel type de filtre choisir pour extraire l’harmonique 3 ?

Avec l’outil fdatool, synthetisez un filtre de Butterworth RII tel que :

52 F.BATEMAN

Page 59: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

1.6. Traitement du signal par filtre numerique

— le signal est echantillonne a 1000Hz

— le fondamental soit attenue d’un facteur 100,

— l’harmonique de rang 5 et les harmoniques de rang superieur soient attenues d’au moins

d’un facteur 100,

— l’amplitude de l’harmonique 3 conserve la meme amplitude.

Depuis le menu FileExport to Simulinl model puis cliquez sur le bouton Realize. Le bloc

correspondant au filtre figure desormais dans le schema developpe sous SIMULINK.

— Inserez le filtre ainsi synthetise entre les convertisseurs analogique-numerique et numerique-

analogique.

— Appliquez a l’entree du filtre a capacites commutes le signal carre defini precedemment

que vous aurez prealablement visualise sur l’oscilloscope.

— Visualisez le signal en sortie du filtre a capacites commutees . Commentez.

— Visualisez le signal numerique-analogique et verifiez que le filtre synthetise realise la

fonction souhaitee.

F.BATEMAN 53

Page 60: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 1. CHAINE D’ACQUISITION D’UN SIGNAL NUMERIQUE

54 F.BATEMAN

Page 61: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 2

IDENTIFICATION PARAMETRIQUE

2.1 Objectifs

Dans cette seance vous decouvrirez et implementerez des algorithmes d’identification para-

metrique dont la fonction est d’estimer, au sens d’un critere, les parametres du modele d’un

systeme ou d’un signal. Differentes methodes existent, leur mise en œuvre depend entre autres,

de la nature du modele e.g lineaire Vs. non lineaire, de la presence ou non de bruit, etc.

D’une maniere general, un systeme ou un signal peuvent etre decrits par une equation de la

forme :

y = f(η,x) (2.1)

ou y contient les sorties mesurees, η contient les parametres et x contient des variables,

supposees connues et appelees variables explicatives.

2.1.1 Exemple de modeles

Modele de la force de portance ℓ d’un avion :

ℓ =1

2ρSV 2 (cz0 + czαα+ czqq) (2.2)

y =1

2ρSV 2xη (2.3)

avec y = ℓ, la force de portance qui peut etre mesuree au moyen d’ un accelerometre,

ηT =

(

cz0 czα czq

)

, x =(

1 α q)

.

55

Page 62: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 2. IDENTIFICATION PARAMETRIQUE

Modele d’un filtre a reponse impulsionnelle infinie : La fonction de transfert d’un tel

filtre s’ecrit :

Y (z)

U(z)=

b0 + · · ·+ bmz−m

1 + a1z−1 + · · ·+ apz−p(2.4)

L’equation de recurrence associee :

y(k) = −a1y(k − 1)− · · · − apy(k − p) + b0u(k) + . . . bmu(k −m) (2.5)

soit :

y(k) = xη (2.6)

avec y = y(k), ηT =(

a1 . . . bm

)

, x =(

−y(k − 1) . . . u(k −m))

Le modele de la force de portance et celui du filtre du premier ordre sont des modeles lineaires

en les parametres.

Estimation d’attitude : Les coordonnees d’un vecteur, par exemple l’acceleration de pe-

santeur ou le champ magnetique terrestre, peuvent etre mesures dans un repere local dont on

cherche a estimer l’orientation par rapport a un repere de reference dans lequel les coordonnees

dudit vecteur sont connues. En utilisant par exemple les angles d’euler :

−→VRlocal

mes = M(φ, θ, ψ)−→VRref (2.7)

M(φ, θ, ψ) est la matrice de passage de Rref → Rlocal, sa structure est connue a priori mais

pas les angles φ, θ, ψ qui sont les parametres a estimer de ce modele. Ici y =−→VRlocal

mes , x =−→VRref

(e.g.(

0 0 9.81)T

) et ηT =(

φ θ ψ)

.

L’estimation d’attitude procede de l’exploitation d’un modele nonlineaire en les parametres.

2.1.2 Liste du materiel

— Carte BigDsPic6

— PC + MATLAB-SIMULINK, MT Manager

— Boitier d’alimentation

— Cable USB

2.2 Algorithme des moindres carres

2.2.1 Les moindres carres simples

Soit le systeme lineaire decrit par le modele (4.5) :

56 F.BATEMAN

Page 63: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

2.2. Algorithme des moindres carres

yn = Xnη + ε (2.8)

et n le nombre de mesures est superieur a m le nombre de parametres a identifier. Le systeme

est dit surdetermine.

⋆ les n mesures yn =

y(1)

. . .

y(n)

⋆ le jeu de n variables explicatives Xn =

x1(1) . . . xm(1)

. . .

x1(n) . . . xm(n)

⋆ les m parametres a estimer η =

η1. . .

ηm

ou εn ∈ Rn represente les erreurs de modelisation

On cherche une estimation ˆgamma des parametres γ qui minimise la somme des erreurs

elevees au carre :

J = minη

1

2

(ε(1)2 + . . . ε(n)2

)= min

η

1

2εTnεn = min

η

1

2(yn −Xnη)

T (yn −Xnη) (2.9)

On demontre que la solution a ce probleme a pour expression :

η = (XTnXn)

−1XTnyn (2.10)

ou η est le vecteur qui contient les estimations des parametres η du modele.

Premier exemple : modele du coefficient de portance d’une aile : On a releve a partir

d’essais en soufflerie le coefficent de portance d’une aile cℓ en fonction de l’incidence α.

α() -2 0 2 4 8

cℓ 0.114 0.298 0.491 0.69 1.105

Figure 2.1 – Coefficient de portance d’un profil NACA-W-6-64A412

On cherche a donner de ce profil une approximation polynomiale de la forme :

cℓ =

p∑

i=0

cℓiαi (2.11)

— Au moyen des moindres carres simples, proposer un modele de ce profil sous la forme

d’un polynome d’ordre 1, d’ordre 2, d’ordre 3.

— Calculer pour chacune de ces approximations la norme de l’erreur au carre.

— Retrouver ces modeles en utilisant la fonction polyfit de MATLAB.

F.BATEMAN 57

Page 64: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 2. IDENTIFICATION PARAMETRIQUE

Second exemple : identification des parametres d’un systeme du premier ordre

On considere cette fois le systeme d’ordre un (en fait un filtre RII) decrit par l’equation de

recurrence :

y(k) = −ay(k − 1) + bu(k) (2.12)

ou y(−1) = 0 et dont la fonction de transfert est :

Y (z)

U(z)=

b

1 + az−1(2.13)

Il s’agit ici d’identifier les parametres a et b d’un systeme dont la structure est connue a

priori (on suppose su le fait que le modele recherche est celui d’un systeme du premier ordre a

temps discret). L’equation de recurrence est lineaire en les parametres et l’on peut appliquer les

moindres carres simples. On notera ηT =

(

a b)

, yTn =

(

y(0), . . . , y(n))

avec n > 2 l’horizon

des mesures et Xn la matrice contenant les variables explicatives collectees sur l’horizon des

mesures.

— Donner la structure de la matrice Xn.

— Realiser le modele de ce systeme sous SIMULINK, vous adopterez une valeur de 10ms

pour le Fixed step time et le Sample time, a = 0.7 et b = 1. Le signal de commande u(n)

est un signal carre issu d’un SourcesSignal generator de frequence 1Hz et d’amplitude

egale a 1.

— En plus des oscilloscopes, il faut utiliser des blocs SinksTo workspace pour pouvoir

operer a un post-traitement des donnees obtenues par simulation sous MATLAB. Pour

pouvoir disposer des mesures et des variables explicatives sous forme de tableaux dans

MATLAB, les blocs To workspace doivent etre parametres comme Array.

— Appliquer la methode des moindres carres et verifier que les parametres estimes sont

egaux a ceux recherches.

Dans ce qui precede, les mesures etaient supposees parfaites, or en realite, celles-ci sont

entachees de bruit. De ce fait, chaque nouvelle campagne de mesure fournit une estimation des

parametres differente des precedentes. Les parametres estimes sont des variables aleatoires que

l’on caracterise par leur moyenne et leur variance 1. Sous SIMULINK, ce bruit est modelise par

un bloc SourcesBand limited white noise. Pour ce bloc :

— noise power est la variance du bruit.

— Seed definit la sequence des variables aleatoires en sortie du bloc. Pour generer des bruits

non correles, il faut modifier la valeur du seed.

— Operer a plusieurs simulations (au moins 5) avec un bruit de mesure de variance constante

et egale a 1.10−4 dont vous ferez varier le seed. Donner dans chacun des cas une estimation

des parametres.

— Dans le plan a, b porter les differentes estimations des parametres obtenues.

— Calculer la moyenne des parametres (fonction mean) et faire le constat que les para-

metres moyens estimes different des parametres vrais. L’estimation est dite biaisee.

— Calculer la variance des erreurs d’estimation (fonction var)

1. Hypothese est faite que ces parametres sont decrits par une loi normale

58 F.BATEMAN

Page 65: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

2.2. Algorithme des moindres carres

— Operer a plusieurs simulations (au moins 3) avec un bruit de mesure de variance crois-

sante, le seed restant constant. Evaluer les consequences de l’augmentation de la variance

du bruit de mesure sur le credit a apporter aux parametres estimes.

2.2.2 Algorithmes des moindres carres recursifs

L’expression de η nous oblige a tout recalculer lors de l’acquisition d’une nouvelle mesure.

D’ou l’interet d’une formulation recursive. Il est possible de donner une telle formulation de

l’algorithme MCS pour l’implementer en temps reel sur un calculateur. On note ηn l’estimation

des parametres obtenue apres n mesures. En posant yn la nieme mesure :

Pn = (XTnXn)

−1

Qn = XTnyn

En posant xn le nieme vecteur ligne des variables explicatives, On demontre que :

ηn = ηn−1 +Pn−1xn

1 + xTnPn−1xn

(y(n)− xT

nηn−1

)(2.14)

Algorithme mcr

— η0 = 0

— Pn = Idm

Pour n = 1, 2, . . .

— k(n) =Pn−1xn

1 + xTnPn−1xn

gain visant a prendre en compte l’erreur d’estimation

— e(n) = y(n)− xTnηn−1 l’erreur d’estimation pour la nieme mesure

— ηn = ηn−1 + k(n)e(n) actualisation des parametres

— Pn = Pn−1 − k(n)xTnPn−1 actualisation de la matrice Pn (a completer)

— Reprendre le schema realise sous SIMULINK utilise dans le second exemple. Il n’y a pas

de bruits de mesure.

— Copier-coller dans ce schema un bloc User defined functionsEmbedded Matlab function,

double-cliquer sur ce bloc et dans la feuille de l’editeur, implementer l’algorithme des

moindres carres recursifs et visualiser les parametres estimes sur un bloc SinksDisplay.

— Vous adopterez une valeur de 10ms pour le Fixed step time et le Sample time.

— Une fois ce modele de simulation valide, vous l’insererez dans un template en vue d’im-

plementer cet algorithme sur le DsPic 30F6014A.

— Visualiser les parametres estimes au moyen d’un bloc Tx Labview Matlab et de l’interface

rs232gui.

F.BATEMAN 59

Page 66: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 2. IDENTIFICATION PARAMETRIQUE

2.3 Algorithme de descente

Ces methodes de systemes sont utilisees pour l’identification de systemes non lineaires.

2.3.1 L’algorithme du gradient

Estimer les parametres η du modele revient a chercher un minimum a la fonction de cout

(4.6). La figure 2.2 illustre cette notion dans le cas d’un modele a deux parametres.

Figure 2.2 – La fonction de cout

La fonction a minimiser est convexe, l’algorithmes du gradient est un algorithme de descente

qui permet, a partir d’un jeu de parametres initiaux quelconques, en suivant la direction opposee

a la plus forte pente d’atteindre un voisinage du minimum.

ηk = η

k−1 − α−→∇J α ∈ R

+ (2.15)

k est le nombre d’iterations,

La figure 2.3 illustre le principe de cet algorithme.

60 F.BATEMAN

Page 67: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

2.3. Algorithme de descente

Figure 2.3 – Le principe de l’algorithme du gradient

Deux ecueils peuvent apparaıtre dans la recherche d’un minimum :

— La presence de minima locaux.

— Un mauvais choix du parametre α qui permet de regler la vitesse de convergence et qui

Application de la methode gradient a l’identification des prametres d’un filtre RII :

Pratiquement, la methode du gradient est operante sur des modeles de systemes non lineaires

en les parametres. Toutefois, et pour faire simple, cet algorithme est applique a la recherche de

parametre du systeme decrit par l’equation de recurrence :

y(k) = −ay(k − 1) + bu(k) (2.16)

et dont on cherche a estimer les parametres, soit a et b les parametres estimes. Pour cela, on

cherche η qui minimise la fonction de cout :

J =1

2

n∑

i=1

(

y(i) + ay(i− 1)− bu(i))2

(2.17)

— Calculer le gradient de la fonction de cout (2.17) relativement aux parametres estimes a

et b.

— Exprimer le gradient sous forme recursive, i.e.−→∇J pour la nieme mesure en fonction du

gradient du gradient calcule a la n-1ieme

— Reprendre le modele realise sous SIMULINK au §2.2.1 du filtre RII et generer dans

le Workspace de MATLAB le vecteur des mesures yn et la matrice Xn constituee des

vecteurs de variables explicatives xi avec i = 1 . . . n. Adopter une duree de simulation

de 10 s.

— Sous MATLAB, implementer l’algorithme du gradient :

Les performances de l’algorithme dependent du nombre de mesures collectees n, du nombre

d’iterations Kmax et du pas α. Ce dernier peut etre modifie au fil de la descente vers le minimum

F.BATEMAN 61

Page 68: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 2. IDENTIFICATION PARAMETRIQUE

Algorithm 1 Algorithme du gradient

Initialisation du vecteur des parametres a identifier η0 = 0

Initialisation du gradient−→∇J0

0 =−→0

for k=1 :K do

for i=1 :n do

Calcul du gradient−→∇Jk

i = f(−→∇Jk

i−1, y(i),xi) (formulation recursive)

end for

Calculer les parametres estimes : ηk = ηk−1 − α

−→∇Jkn ou α = 1e−3

Reinitialiser−→∇Jk

0 =−→0

end for

mais son choix reste delicat.

La methode de Gauss-Newton adapte la valeur du pas en fonction de la convexite de la fonction

de cout.

2.3.2 Methode de Gauss-Newton

La fonction a minimiser (2.17) est convexe , l’algorithmes de Gauss-Newton est un algorithme

de descente qui permet, a partir d’un jeu de parametres initiaux quelconques (pratiquement

choisis proches du minimum), en suivant la direction opposee a la plus forte pente d’atteindre

un voisinage du minimum. Le pas de descente est fonction de la convexite de la fonction de cout.

Cette convexite est mesuree par la matrice des derivees partielles secondes de J appelee hessien

et notee H.

ηk = η

k−1 −H−1−→∇J (2.18)

Pratiquement, cet algorithme est adapte a l’identification de parametres de modeles de sys-

temes nonlineaires. Toutefois, on continue, pour des raisons de simplicite, a l’appliquer au filtre

RII (2.16). Pour ce systeme :

— Reprendre l’expression du gradient de la fonction de cout (2.17) relativement aux para-

metres estimes a et b.

— Reprendre l’expression du gradient sous forme recursive, i.e.−→∇Ji pour la iieme mesure en

fonction du gradient du gradient calcule a la i-1ieme

— Calculer le hessien de la fonction de cout (2.17) relativement aux parametres estimes a

et b.

— Exprimer le hessien sous forme recursive, i.e. Hi pour la iieme mesure en fonction du

hessien calcule a la i-1ieme.

— Reprendre le modele realise sous SIMULINK au §2.2.1 du filtre RII et generer dans

le Workspace de MATLAB le vecteur des mesures yn et la matrice Xn constituee des

vecteurs de variables explicatives xi avec i = 1 . . . n. Adopter une duree de simulation

de 10 s.

— Modifier l’algorithme du gradient ecrit precedemment pour en faire un algorithme de

Gauss-Newton.

62 F.BATEMAN

Page 69: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

2.3. Algorithme de descente

— Comparer les vitesses de convergence des deux algorithmes 2

2. Pratiquement, le calcul du hessien et son inversion sont ”gourmandes” en ressources de calcul et on prefere

utiliser une approximation du hessien. C’est la methode de Newton-Raphson.

F.BATEMAN 63

Page 70: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 2. IDENTIFICATION PARAMETRIQUE

64 F.BATEMAN

Page 71: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 3

COMMANDE D’UN MOTEUR BRUSHLESS

3.1 Objectifs

Ce TP est fortement inspire du TDAO 2 traite en premiere annee et consultable sur le site

http://francois-bateman.e-monsite.com/pages/ressources.html dans lequel vous aviez a

synthetiser un correcteur en vue d’asservir la vitesse d’un moteur a une consigne. Dans cet

seance, vous aurez a realiser cet asservissement.

Le moteur brushless etudie equipe les drones a voilure tournante de la marque Mikrokopter.

Il a fait l’objet d’une premiere etude a la section 3.6. En particulier, vous avez interface ce moteur

avec le microcontroleur et releve sa caracteristique statique f(N) ou f designe la frequence de

rotation du moteur et N la commande codee sur 8 bits appliquee a la carte de controle BCTRL

via le bus I2C.

3.1.1 Liste du materiel

— Banc moteur + moteur brushless Roxxy BL 2827+ carte de controle moteur BCTRL

— Alimentation stabilisee 30V-2A

— Balance electronique ou dynamometre

— Carte BigDsPic6

— PC + MATLAB-SIMULINK, MT Manager

— Boitier d’alimentation

— Cable USB

3.2 Modelisation du moteur

3.2.1 Exploitation de la caracteristique statique

La masse d’un hexacoptere est de 1, 5kg et l’equilibre correspond a un vol stationnaire.

65

Page 72: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 3. COMMANDE D’UN MOTEUR BRUSHLESS

— En utilisant la caracteristique P (f2) tracee lors d’une seance precedente et ou P designe

la poussee, porter le point d’equilibre sur la caracteristique statique du moteur f(N)

relevee a la section 3.6.

— Pour ce point d’equilibre Ne, fe, donner une valeur approchee du gain statique.

3.2.2 Caracteristique dynamique

Dans cette partie, vous etablirez, a partir d’essais en regime dynamique, un modele sous

forme de fonction de transfert du moteur. Pour cela,

Releve experimental de la reponse indicielle

— Ouvrez le fichier I2C3.mdl. Realisez l’interfacage via le bus I2C de la carte de develop-

pement BigDsPic6 et du microcontroleur 30F6014 avec la carte de controle Bl-Ctrl et

le moteur brushless comme cela a deje ete realise sur la figure 3.12. Vous penserez a

visualiser au moyen d’un bloc UART associe a un bloc Tx Labview Matlab et grace a

l’interface rs232gui la commande N et la vitesse de rotation f du moteur.

— Appliquez a la Bl-Ctrl une commande N(t) = Ne + n ou n est un signal carre d’am-

plitude << Ne et de frequence judicieusement choisie pour pouvoir observer les regimes

transitoires. Vous procederez par iteration pour le choix de cette frequence.

— Relevez les chronogrammes de N(t) et de f(t) sur une meme figure. Lors du post-

traitement, il ne faut pas hesiter a afficher au moyen de la fonction plot les variables

t R et R ou t Rn et Rn accessibles depuis le Workspace.

Identification du systeme

— Par la methode de Broıda, proposez un modele du systeme Bl-Ctrl, moteur brushless,

helice.— Au moyen de l’approximation de Pade, proposez une fonction de transfert du systeme

Bl-Ctrl, moteur brushless, helice.— Sous SIMULINK, representez le schema fonctionnel de simulation de la boucle d’as-

servissement visant a controler ce moteur. Vous insererez dans un premier temps pour

le correcteur un gain. Attention, comme le modele du systeme Bl-Ctrl, moteur est

continu, il faut utiliser un solver a pas variable. De plus, comme on souhaite qu’a t = 0

le moteur tourne a sa vitesse d’equilibre, le Start time de la simulation pourra etre choisi

a -1.

3.3 Synthese d’une loi de commande

Synthese du correcteur proportionnel

Le correcteur est un gain pur k = 3. Representer sur une feuille le schema fonctionnel de la

boucle d’asservissement en regime permanent (s→ 0) et en utilisant la caracteristique statique

etablir :

66 F.BATEMAN

Page 73: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

3.3. Synthese d’une loi de commande

— la valeur de la commande Ne pour laquelle le moteur tourne a sa vitesse d’equilibre fe.

— la valeur du signal d’erreur.

— en deduire la valeur de la consigne.

Test du correcteur proportionnel

— Concernant l’implementation de cette loi sur le microcontroleur, sachant que la vitesse

mesuree sur la carte Bl-Ctrl via le bus I2C est un nombre au format UINT8 et que la

Bl-Ctrl admet une commande numerique N ∈ [0−255], dites pourquoi le montage risque

de ne pas fonctionner.

— Realiser la loi de commande pour k = 3 puis k = 5, dans chacun des cas relever, le temps

de reponse a 5%, le signal de commande N et le signal d’erreur.

— Conclure.

Synthese d’un correcteur proportionnel-integral

Pour cette partie, il ne faut pas hesiter a reprendre les sujets et les corriges des TDAO1 et

TDAO2 vus en premiere annee.

— Saisir la fonction de transfert du moteur brushless sous MATLAB, au moyen de sisotool

synthetisez un correcteur qui confere a ce moteur les performances suivantes :

• pas d’erreur de position,

• depassement ≤ 5%,

• on ne cherche pas necessairement a ameliorer la rapidite, en effet, le controleur qui

pilote le moteur n’est pas reversible en courant et il n’est pas possible d’accroıtre la

rapidite lors des phases de decceleration

— Tester ce correcteur sur le modele de simulation.

Simulation du correcteur proportionnel-integral

Pratiquement, le DsPic ne peut traiter que des signaux echantillonnes, pour cette raison, il

faut disposer d’un modele du correcteur decrit par une fonction de transfert en z. La fonction

c2d realise, pour un systeme muni d’un bloqueur d’ordre zero, la transformation d’une fonction

de transfert laplacienne (s) en une fonction de transfert en z.

— Etablir l’expression de la fonction de transfert en z du correcteur trouve dans la partie

3.3.

— Tester ce correcteur sur le schema de simulation, attention a l’interfacage des blocs a

temps continu et a temps discret, penser a utiliser des blocs Rate transition.

3.3.1 Implementation sur le DsPic d’une loi de commande

Implementation du correcteur proportionnel-integral

— Completer le modele ayant permis le releve des caracteristiques statiques pour realiser le

schema de l’asservissement de vitesse qui sera implemente sur le DsPic.

— Compiler ce schema et implementer-le sur le microcontroleur.

F.BATEMAN 67

Page 74: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 3. COMMANDE D’UN MOTEUR BRUSHLESS

— Appliquer une vitesse de consigne fc(t) constante correspondant a la vitesse d’equilibre

et relever la vitesse.

— Appliquer une vitesse de consigne fc(t) = fce + f ou f << fc et relever la vitesse de

consigne, la vitesse et le signal de commande.

— Verifier que les performances definies dans le cahier des charges sont atteintes.

68 F.BATEMAN

Page 75: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 4

CENTRALE D’ATTITUDE

4.1 Objectif

Au cours de cette seance, vous allez realiser une centrale d’attitude au moyen d’un observa-

teur. On rappelle qu’un observateur est un systeme dynamique qui permet d’estimer les etats

que l’on ne mesure pas. Dans le cas d’un systeme lineaire decrit par l’equation d’etat dont on

cherche a estimer les etats x :

x = Ax+Bu (4.1)

y = Cx (4.2)

Un observateur est un systeme dynamique d’equation :

˙x = Ax+Bu︸ ︷︷ ︸

prediction

+L(y − y)︸ ︷︷ ︸

recalage

(4.3)

y = Cx (4.4)

L’estimation est correcte si les erreurs d’estimation limt→+∞

ε = limt→+∞

x− x → 0. Cette condi-

tion est realisee si et seulement si la matrice A−LC a toutes ses valeurs propres a partie reelle

negative. Les erreurs d’estimation convergent d’autant plus vite vers zero que les parties reelles

de ces valeurs propres sont petites.

4.1.1 Liste du materiel

— Centrale d’attitude MTI de XSENS + cable de connection au PC + connecteur ODU-DB9

— Carte BigDsPic6

— PC + MATLAB-SIMULINK, MT Manager

— Boitier d’alimentation

— Cable USB

69

Page 76: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 4. CENTRALE D’ATTITUDE

4.2 La centrale d’attitude MTI

Dans ce TP, le systeme etudie est une centrale d’attitude MTI de la marque XSENS http:

//www.xsens.com/. Cette centrale comporte :

— trois accelerometres qui mesurent les trois composantes de l’acceleration projetees dans

le repere du capteur notees accx = γx, accy = γy, accz = γz ;

— trois gyrometres qui mesurent les trois composantes de la vitesse angulaire absolue pro-

jetees dans le repere du capteur notees gyrx = p, gyry = q, gyrz = r ;

— trois magnetometres qui mesurent les trois composantes du champ magnetique terrestre

projetees dans le repere du capteur notees magx = Bx, magy = By, magz = Bz.

Le repere capteur est defini comme suit (cf. figure 4.1) :

Figure 4.1 – Le repere capteur

Connecter la MTI au port USB du PC au moyen du cable USB-RS232 converter.

Figure 4.2 – Le cable USB-RS232

Depuis le bureau, ouvrir le logiciel MT Manager, la fenetre suivante apparaıt :

70 F.BATEMAN

Page 77: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

4.2. La centrale d’attitude MTI

Figure 4.3 – Le logiciel MT Manager

Il faut ensuite cliquer sur Ok puis sur Annuler.

Figure 4.4 –

Le capteur est deja programme, les donnees sont transmises via le port USB au format RS232

(100 mesures /seconde, 115200 bauds, 8 bits), il s’agit de accx, accy, accz, gyrx, gyry, gyrz,magx,

magy, magz, φ, θ, ψ. Ces donnees sont de type single, soit des reels a virgule flottante codes sur

F.BATEMAN 71

Page 78: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 4. CENTRALE D’ATTITUDE

32 bits (4 octets forment un single).

— Pour visualiser les angles d’attitude roll φ, pitch θ, yaw ψ, cliquer sur le bouton Orienta-

tion Data View.

— Pour visualiser les mesures accx, accy, accz, gyrx, gyry, gyrz, magx, magy, magz, cliquer

sur le bouton Calibrated Data View.

— Realiser un enregistrement des donnees en cliquant sur le bouton Record/Stop Record.

Operer a des petits mouvements du capteur autour des axes de roulis et de tangage.

— Cliquer sur FileOpen MT-XXXX (type MT manager log file) Export ; le fichier est

exporte au format *.txt et peut etre lu sous MATLAB,

— DepuisMATLAB, cliquer sur FileImport Data, ouvrir le fichier texte MT-XXXX, pour-

suivre la procedure de transfert des donnees (Next, Finish). Les donnees sont accessibles

depuis la variable data qui a la structure suivante :

data counter accx accy accz gyrx gyry gyrz magx magy magz φ θ ψ

1 xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

N xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx

Figure 4.5 – La structure de la variable data

Comme les mesures sont effectuees a 100Hz, la duree de l’essai est egale a N100s et N peut

etre connu avec la fonction size(data) qui renvoie la dimension du tableau correspondant, soit

N lignes, 13 colonnes. Pour afficher les donnees, il faut recreer un vecteur temps :

— time = [0 : 1100

: N−1100

]’ genere un vecteur de longueur N par pas de 1100

— Pour acceder aux mesures de l’angle de gıte, taper data( :,11) affiche toutes les lignes de

la 11eme colonne,

— Pour acceder aux mesures des angles de gıte, d’assiette et de cap, taper data( :,11 :13)

affiche toutes les lignes de la 11eme a la 13emecolonne.

Ces donnees serviront ulterieurement a alimenter le modele de simulation de la centrale

d’attitude que vous allez realiser. Avant de debrancher la MTI, cliquer sur le bouton Disconnect.

4.3 L’estimation d’attitude

Ce modele repose pour partie sur l’utilisation des relations cinematiques :

φ = p+ tanθ(q sinφ+ r cosφ) (4.5)

θ = q cosφ− r sinφ

ψ = qsinφ

cos θ+ r

cosφ

cos θ

72 F.BATEMAN

Page 79: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

4.3. L’estimation d’attitude

4.3.1 Le modele de prediction seul

Les equations (4.5) sont non lineaires et ne satisfont pas aux hypotheses faites sur les obser-

vateurs.

— Etablir le modele linearise des equations (4.5) pour de petites variations φ, θ, ψ, p, q, r

autour du point de fonctionnement note e et defini par φe = θe = ψe = pe = qe = re = 0

— On ne s’interesse qu’aux mouvements autour des axes de roulis et de tangage. En posant

x =(

φ θ)T

et u =(

p q)T

qui sont en fait les vitesses angulaires mesurees par la

MTI, etablir les expressions des matrices A et B.

— Implementer les equations cinematiques linearisees sous SIMULINK. Comme ce modele

est destine a etre implemente en temps reel, vous en realiserez une version a temps discret

et utiliserez unDiscreteDiscrete integrator. Le Fixed step size est choisi egal a la periode

des mesures, soit 1100s.

— Vous alimenterez ce modele au moyen de blocs SourcesSimin qui permettent d’utiliser

sous SIMULINK des donnees du Workspace de MATLAB. A ce propos, il est necessaire

dans le bloc Simin d’utiliser le vecteur time cree precedemment.

— Sur un meme oscilloscope, visualiser les angles φ et θ mesures sous MT Manager et ceux

estimes, accessibles en sortie de l’integrateur.

— Qu’observe-t-on ?

4.3.2 Recalage des estimations par les mesures accelerometriques

Les mesures des accelerations sur les axes de roulis −→x et de tangage −→y sont utilisees pour

recaler les estimations des angles de gıte et d’assiette. Un accelerometre ne peut mesurer que

l’acceleration non gravitationnelle (appelee egalement force specifique)−→f =

−→Γ − g ou Γ resulte

des forces autres que celles de gravitation (portance, poussee, etc.). Par consequent, la MTI,

immobile sur un plan horizontal, l’axe de mesure −→z dirigee vers le haut comme l’illustre la

figure 4.1 renverra, aux bruits de mesure pres, accz = 9.81.

Deux reperes sont utilises dans ce probleme :

1. Le repere capteur O,−→x b,−→y b,

−→z b, l’origine O st le point d’intersection des axes des trois

capteurs.

2. Le repere terrestre RE (O,−→xE ,−→yE ,−→zE) est un repere orthonorme direct suppose galileen.

L’axe (O−→xE) est dirige vers le nord geographique et l’axe (O−→yE) vers l’ouest. L’axe (O−→zE)complete le triedre. L’origine de ce repere coıncide avec celle du repere capteur. Le repere

capteur est donc en rotation autour du repere terrestre.

La matrice de passage du repere capteur Rb au repere terrestre suppose inertiel RE notee

TEb s’ecrit :

TEb =

cos θ cosψ sinφ sin θ cosψ − cosφ sinψ cosφ sin θ cosψ + sinφ sinψ

cos θ sinψ sinφ sin θ sinψ + cosφ cosψ cosφ sin θ sinψ − sinφ cosψ

− sin θ sinφ cos θ cosφ cos θ

(4.6)

— Au moyen de la matrice de passage TEb, etablissez l’expression des composantes de

l’acceleration mesurees sur accx et accy dans le repere capteur.

F.BATEMAN 73

Page 80: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 4. CENTRALE D’ATTITUDE

— L’angle ce cap ψ etant egal a 0, lineariser les equations precedentes pour de petites

variations des angles φ et θ autour de O.— Ecrire l’equation de sortie (4.2), le vecteur des mesures y =

(

accx accy

)T

, le vecteur

d’etat est constitue par x =(

φ θ)T

.

— En deduire l’expression de la matrice de sortie C et la saisir sous MATLAB.

— Calculer le gain L de l’observateur de sorte que les poles de l’observateur spe(A−LC) =

−10−10i, −10+10i. Vous utiliserez la fonction place de MATLAB pour laquelle vous

consulterez l’aide en ligne. Attention a penser a transposer les matrices !

— Sous SIMULINK, completer le modele de prediction pour realiser l’observateur complet.

— Simuler la centrale d’attitude et observer les angles de gıte φ et d’assiette estimes θ.

— Calculer le gain L de l’observateur de sorte que les poles de l’observateur spe(A−LC) =

−1− 1i, −1 + 1i et simuler a nouveau la centrale d’attitude.

— Donner une explication au phenomene observe.

4.4 Implementation temps reel de la centrale d’attitude

4.4.1 Cablage de la MTI

La centrale d’attitude est connectee a la carte BigDsPic6 via un connecteur ODU, attention

a bien realiser la connection, les points rouges sur les connecteurs males et femelles doivent

coıncider. Il ne faut surtout pas forcer la connection et ne pas hesiter a demander

conseil si vous avez des doutes sur le branchement .

— fil rouge relie a une broche +VCC,

— fil noir relie a une broche GND,

— fil de donnees vert, relie a la broche 3 du connecteur CN13.

— Le switch RF4 de SW14 doit etre sur la position ON, tous les autres switchs sont en

possition OFF. Pour comprendre ces choix, il faut se reporter a la page 15 du User

manual de la carte BigdsPIC6.

— Les signaux seront visualises sur l’interface rs232gui au moyen d’un bloc Serial Port

Tx Labview Matlab sur le Tx de l’UART 1, soit la pin RF3.

4.4.2 Programme de lecture de la MTI

Le fichier Lecture MTI.mdl permet, apres compilation de lire les donnees issues de la centrale

MTI sur le microncontroleur.

— Verifier le bon fonctionnement de ce schema en observant l’angle de gıte sous rs232gui.

Vous noterez que le bloc UINT16 est precede d’un amplificateur de gain 100. En effet,

comme l’angle mesure peut varier entre −π2(-1,57) et π

2(1,57), le codage sous forme

d’un nombre entier est problematique, aussi les donnees sont elles multipliees par un gain

important pour pouvoir etre lues sur l’interface rs232gui. A ce propos, il faut cliquer sur

le bouton int16 de cet interface pour visualiser les nombres negatifs.

74 F.BATEMAN

Page 81: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

4.4. Implementation temps reel de la centrale d’attitude

4.4.3 Implementation de l’algorithme d’estimation d’attitude

Dans cette derniere partie vous avez a implementer la centrale sur le microcontroleur et a la

tester.

— Implementer le schema de l’observateur a temps discret sous SIMULINK.

— Ajouter des blocs Tx Labview Matlab afin d’observer les angles de gıte et d’assiette

estimes par l’observateur.

— Compiler ce modele et simuler la centrale d’attitude pour de petits mouvements de la

centrale MTI autour des axes de roulis et de tangage.

— Comparer ces reponses en gıte et en assiette a celles delivrees par la centrale MTI.

— Augmenter l’amplitude des mouvements, qu’observe-t-on ? Expliquer.

— Ouvrir dans le schema le terme de recalage L(y − y) de sorte que l’attitude soit recons-

truite seulement a partir des mesures gyrometriques. Qu’observe-t-on ?

F.BATEMAN 75

Page 82: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 4. CENTRALE D’ATTITUDE

76 F.BATEMAN

Page 83: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 5

FILTRE DE KALMAN

5.1 Objectif

Au cours de cette seance vous realiserez un capteur de hauteur et de vitesse ascensionnelle

pour un drone en hybridant les mesures issues d’un accelerometres et celles d’un capteur a

ultrasons. En particulier, on ne dispose pas de capteur de vitesse ascensionnelle, aussi cette

variable doit etre estimee. En outre, la mesure de position realisee par le capteur a ultrason n’est

pas rafraıchie suffisamment rapidement pour permettre le controle de l’altitude. Enfin, comme

toutes ces mesures sont bruitees, ces estimations sont devolues a un filtre de Kalman. Dans ce

TP Vous aurez a :

1. etablir les equations du modele du systeme et du filtre de Kalman,

2. caracteriser les bruits de mesure de l’accelerometre et du capteur a ultrason qui joueront

respectivement les roles de bruit d’etat et de bruit de mesure du filtre,

3. simuler le filtre en vue d’estimer la hauteur et la vitesse ascensionnelle,

4. implementer ce filtre sur le microcontroleur et a evaluer la qualite des estimations.

5.1.1 Liste du materiel

— Boitier contenant un accelerometre et un telemetre a ultrason

— Boitier de programmation ICD3 + 2 cables USB + cable de programmation

— Boitier d’alimentation

— PC + MATLAB-SIMULINK, MPLAB

5.2 Modelisation des signaux et du systeme

5.2.1 Modele

— Dans le cas d’un mouvement de translation, la vitesse ascensionnelle v et la hauteur

h sont obtenues successivement en integrant l’acceleration γ puis v. En pratique, on

77

Page 84: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 5. FILTRE DE KALMAN

dispose de la mesure bruitee de l’acceleration, soit γm = γ + wγ cette mesure. En vous

inspirant du cours (Chapitre 7 - Observateurs deterministes), etablir dans le cas discret

l’equation d’etat de h et de v tandis que l’acceleration mesuree γm joue le role d’entree de

commande de ce systeme. Ici wγ est le bruit de genere lors de la mesure de l’acceleration.

Cette derniere est mesuree selon l’axe sensible toutes les 10ms.

— Etablir l’equation d’observation de ce systeme sachant que la hauteur mesuree par le

capteur a ultrasons hm = h+ vh l’est toutes les 20ms. Ici vh est le bruit de mesure de la

hauteur.

A propos du bruit d’etat

Dans le cas ou l’equation d’etat est de la forme :

Xk+1 = FXk +GUk +HWk (5.1)

Wk est suppose centre et de covariance Qw, la covariance du bruit d’etat a pour expres-

sion :E[(HWk)(HWk)T ] = HQwH

T Vous tiendrez compte de cette description de la covariance

du bruit d’etat lorsque vous ecrirez les equations du filtre.

5.2.2 Equations du filtre de Kalman

Rappeler les cinq equations du filtre de Kalman. Vous pouvez reprendre les notations utilisees

dans le cours.

— Estimation a priori ou prediction, toutes les 10ms :

1. Deduire de ce qui precede l’equation de l’estimation a priori de l’etat xk+1|k

2. Donner l’equation de la covariance de l’erreur d’estimation a priori Pk+1|k

— Estimation a posteriori ou recalage, toutes les 20ms :

1. Equation de la covariance de l’erreur d’estimation a posteriori Pk+1|k+1

2. Equation du gain de Kalman Lk+1

3. Equation d’estimation a posteriori de l’etat xk+1|k+1

— Pour chacun des vecteurs et des matrices, preciser sa dimension.

5.3 Presentation de la maquette

— Le boitier contient un microcontroleur 30F6014, un capteur a ultrason qui delivre une

information de position toutes les 20ms et un accelerometre qui renvoie l’acceleration

mesuree selon l’axe sensible toutes les 10ms.

— Une prise jack a raccorder a un boıtier d’alimentation (du meme type que ceux utilises

pour alimenter les cartes BigDsPic6)

— Un connecteur ICD pour programmer le microcontroleur dont le programme edite sous

SIMULINK est compile depuis MATLAB 1. Le programme compile *.hex est implemente

sur le microcontroleur au moyen du logiciel MPLAB IDE.

— Les mesures peuvent etre recueillies sur MATLAB via un cable FDTI/liaison Bluetooth

au moyen de la fonction rs232gui.

1. En fait MATLAB appelle un compilateur dedie a ce microcontroleur C30 de Microchip.

78 F.BATEMAN

Page 85: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

5.3. Presentation de la maquette

Figure 5.1 – Le boitier ICD3

5.3.1 Collecte de mesures

Vous realiserez une premiere fois les essais qui suivent en regime statique (capteurs immobiles)

de maniere a calibrer les capteurs et a modeliser les bruits de mesure. Dans un second temps,

vous procederez a un essai en regime dynamique. Pensez lors de chacun des essais a sauvegarder

les variables dans un fichier *.mat de maniere a en garder une trace.

1. Ouvrez le fichier CollectData.mdl, analyser sa structure (sequences 3.4.3, 3.5 et 3.7) et le

compiler.

2. Reliez le PC au boitier ICD3 via le cable USB puis le boitier ICD3 a la maquette via le

cable ICD3 comme illustre sur la figure 5.1.

3. Depuis le bureau, ouvrir le programme MPLAB IDE

— Programmer ICD3

— File Import importer le fichier CollectData.hex

— Cliquer sur l’icole Program afin d’implementer ce fichier sur le microcontroleur.

4. Ouvrez MATLAB et executer rs232gui, cliquer sur le bouton plot int16 pour observer

des nombres signes puis visualisez les signaux issus de l’accelerometre et du telemetre a

ultrason. Vous prendrez soin auparavant d’identifier le port serie utilise.

5.3.2 Caracterisation des bruits

Les mesures d’acceleration et de hauteur sont stockes dans les variable R et Rn, les instants

auxquels sont associees ces mesures sont stockees dans le tableau t R et t Rn. Comme les

mesures d’acceleration sont prelevees a une frequence double de celles de hauteur, le tableau R

a la structure suivante Tab.4.1) :

F.BATEMAN 79

Page 86: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 5. FILTRE DE KALMAN

NaN y

x NaN

x NaN

Nan y

x NaN

x NaN

NaN y

. . . . . .

Figure 5.2 – Structure de R

Ou NaN est l’acronyme de Not a Number. Il faut donc dans un premier temps reconstruire

un tableau dans lequel les NaN n’apparaissent pas.

— Ecrivez un script sous MATLAB qui permette de stocker dans deux vecteurs gamma et

height les donnees numeriques contenues dans R. Vous pouvez utiliser avec profit les

fonctions suivantes :

— R( :,1), R( :,2) permettent respectivement d’acceder a la premiere et a la seconde

colonne de R.

— isnan

— find

— Representez l’histogramme des valeurs contenues dans gamma et height hist.

— Calculez la moyenne et l’ecart-type des bruits de mesure accelerometre et capteur a

ultrason mean, std

— Definissez les valeurs des coefficients par lesquels il faut multiplier les grandeurs issues de

ces capteurs pour obtenir des mesures en m.s−2 et en m. Vous vous reporterez au §4.3.2pour prendre connaissance de ce que mesure effectivement un accelerometre.

— Proposez un modele (au sens des probabilites) pour les bruits de mesure de l’accelerometre

et du capteur a ultrason.

5.3.3 Simulation du filtre de Kalman

Avant d’implementer l’algorithme du filtre de Kalman sur le microcontroleur, on le met

au point sur SIMULINK. Pour cela, on a besoin des mesures precedentes obtenues en regimes

dynamiques calibrees. Ces mesures sont normalement contenues dans les vecteurs gamma et

height respectivement de taille 2N et N (N depend evidemment de la duree de votre experience,

vous pouvez y acceder avec la fonction size). C’est a partir de ces mesures que vous allez estimer

la hauteur h et la vitesse ascensionnelle v. Vous avez donc a creer pour chacune des variables un

vecteur qui contient les instants associes a chaque mesure. Vous pouvez proceder comme suit :

— t gamma = [0 :0.01 : 0.01*(2N-1) ]’ genere un vecteur de longueur 2N par pas de 0.01.

— de la meme maniere, creer un vecteur temps t height pour les mesures du capteur a

ultrason.

— Ouvrez un nouveau Model et le parametrer de sorte que le Fixed-step size soit egal a

10ms avec un discrete Solver.

80 F.BATEMAN

Page 87: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

5.4. Implementation du filtre de Kalman

— Inserez deux blocs SourcesSimin et les parametrer avec les vecteurs gamma, t gamma,

height et t height. Verifier au moyen de Scopes la bonne restitution de ces mesures.

— Copiez-collez un bloc User Defined Functions Embedded Matlab Function, (deja utilise

au §3.7.2). Vous noterez en particulier l’utilisation du type persistent qui permet de

sauvegarder en memoire les variables calculees entre deux appels de la fonction. Cela sera

particulierement utile pour propager l’etat estime et la covariance de l’erreur d’estimation.

— En vous inspirant du programme propose au §3.7.2, implementer les equations du filtre

de Kalman en prenant soin de traiter l’acceleration mesuree toutes les 10ms et la mesure

du capteur a ultrasons toues les 20ms. Pratiquement le bloc Embedded Matlab Function

est appele toutes les 10 ms et il faut mettre en œuvre un test qui ne prenne en compte la

mesure des ultrasons qu’une fois sur deux.

— Simulez et restituez les resultats. Vous evaluerez notamment les effets de la meconnais-

sance des conditions initiales sur le comportement du filtre.

5.4 Implementation du filtre de Kalman

— Copiez-collez l’Embedded Matlab Function simulee precedemment dans le fichier Collect-

Data.mdl. Comme les donnees pour etre visualisees doivent etre mises au format uint16

(donnees∈ [0, 1, 2, . . . , 216 − 1]), il n’est pas possible de restituer les mesures de hauteur

avec precision (l’affichage de 0.25m renverrait 0). Il vous faut donc amplifier, d’un facteur

100 ou 1000 les sorties calculees par l’Embedded Matlab Function pour les lire directement

en cm ou en mm.

— Inserez les blocks TX Labview Matlab de maniere a visualiser la hauteur estimee et la

hauteur mesuree, la vitesse ascensionnelle estimee. Compiler et implementer le fichier

*.hex sur la cible.

— Visualisez et relevez la hauteur et la position estimee par le filtre. Comparer la hauteur

estimee a celle mesuree.

5.4.1 Filtrage complementaire

Dans cette derniere partie, on met en œuvre un filtre de Kalman stationnaire c.-a-d un filtre

dont les gains dependent des seuls bruits d’etat et de mesure et pas des conditions initiales.

L’interet de cette structure reside dans sa simplicite d’implementation. Pratiquement, lorsque

k → +∞ la matrice de covariance de l’erreur d’estimation Pk|k → P = cte et par suite le gain

de Kalman Lk → L = cte.

F.BATEMAN 81

Page 88: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 5. FILTRE DE KALMAN

Xk+1|k+1 = Xk+1|k + L(hk+1 − Yk+1|k) (5.2)

Xk+1|k+1 = Xk+1|k + L(hk+1 − CXk+1|k) (5.3)

. . . = . . . (5.4)

Xk+1|k+1 = (I− LC)(FXk|k +Gγk) + Lhk+1 (5.5)

Xk+1|k+1 = (I− LC)FXk|k + (I− LC)Gγk + Lhk+1 (5.6)

Xk+1|k+1 = (I− LC)FXk|k +(

(I− LC)G L)(

γkhk+1

)

(5.7)

En appliquant le theoreme de l’avance §2.2.1 a (4.41), il vient :

(zI− (I− LC)F ) X(z) = (I− LC)Gγ(z) + Lzh(z) (5.8)

X(z) = (zI− (I− LC)F )−1 (I− LC)G︸ ︷︷ ︸

dim 2×1

γ(z) + (zI− (I− LC)F )−1 Lz︸ ︷︷ ︸

dim 2×1

h(z)

(5.9)

Que l’on met sous la forme :

(

h(z)

v(z)

)

=

(

P11(z)

P21(z)

)

γ(z) +

(

P21(z)

P22(z)

)

h(z) (5.10)

Le calcul du gain de Kalman et des fonctions de transfert P11(z), P21(z), P12(z) et P22(z)

peuvent etre conduits en suivant la demarche suivante :

— Ouvrez un script

— Saisissez les matrices F, G, C, D et construire avec la fonction ss le systeme discret

(Ts=0.01s) afferent sys,

— Saisissez la matrice de covariance du bruit d’etat Q et la variance du bruit de mesure R,

— Ouvrez l’aide de la fonction kalman et pour le systeme sys et les matrices Q et R calculer

au moyen de cette fonction le gain de Kalman stationnaire L.

— Construisez la representation d’etat discrete (4.42) avec la fonction ss et calculer les

fonctions de transfert correspondantes avec la fonction tf.

— Vous pouvez acceder aux expressions des numerateurs et des denominateurs des fonctions

de transfert au moyen de la fonction tfdata. Les Cette derniere renvoie des objets de type

Cell dont on accede aux contenus comme suit :

— Num est un objet de type Cell, on accede y accede en executant Num1, Num2,etc.

— Realisez les filtres sous SIMULINK dans le modele de simulation et le tester.

— Copiez le schema du filtre complementaire dans une copie de Collect Data.mdl, inserez

les blocs Tx Labview, compilez-le et visualisez la hauteur et la vitesse estimees par le

filtre.

82 F.BATEMAN

Page 89: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 6

CONTROLE DE L’ASSIETTE D’UN DRONE A VOILURE TOURNANTE

6.1 Objectifs

Mettre en œuvre differentes lois de commande dans le but de controler l’assiette d’un hexa-

coptere. Vous devez imperativement preparer avant la seance les lois de commande

proportionnelle-derivee et par retour d’etat.

6.1.1 Liste du materiel

— Hexacoptere Mikrokopter,

— support a 3 d.d.l,

— boitier de programmation ICD3, cable de programmation, cable USB,

— cable FTDI pour le transfert des donnees entre l’hexacoptere et le PC,

— radiocommande SPEKTRUM 6 voies, 2.4GHz,

— PC + MATLAB-SIMULINK, MPLAB

— Lunettes, blouse et gants de protection a porter imperativement lors des essais.

6.1.2 Presentation du materiel

L’hexacoptere a controler est represente sur la figure 6.2. Le bras rouge materialise l’axe de

roulis et porte l’helice 1. L’axe de tangage est dirige vers la droite de l’axe de roulis et l’axe de

lacet complete le triedre. Les helices sont comptees de 1 a 6 dans le sens horaire.

La radiocommande representee sur cette meme figure permet avec le joystick droit de contro-

ler les gaz (deplacement vertical) et l’assiette avec le joystick gauche (deplacement vertical). Deux

switchs Gear et Flap servent a commuter entre les differents modes de fonctionnement du drone.

83

Page 90: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 6. CONTROLE DE L’ASSIETTE D’UN DRONE A VOILURE

TOURNANTE

Figure 6.1 – L’hexacoptere et la radiocommande

6.2 Preparation

Le controle des angles de gıte et de cap est deja realise. La poussee est controlee en boucle

ouverte via la commande des gaz, vous avez seulement a controler l’assiette. Pour cela vous

disposez :

— de la consigne d’assiette elaboree a partir de la radiocommande θref (pitch angleath ref ),

— des mesures d’assiette θ (pitch angle) et de vitesse de tangage q (pitch) realisees toutes

les 10 ms.

Donnees sur le drone : ℓ, b, m, IyCoefficient de poussee de l’helice b 1.6832e−5N(s/rad)2

Longueur du bras de levier ℓ 27cm

masse de l’appareil m 1.6kg

Moment d’inertie autour de l’axe de tangage Iy 0.018kg.m2

Pour cette etude simplifiee, le modele du drone est :

Iy q = bℓ(Ω21 − Ω2

4) (6.1)

θ = q (6.2)

6.2.1 Equilibre

— En vol stationnaire, que valent l’assiette θ et la vitesse de tangage q ?

— Que dire de la vitesse de rotation des helices a l’equilibre Ω1e, Ω4e ?

— Calculer la vitesse de rotation des helices tandis que l’hexacoptere vole en stationnaire.

6.2.2 Modele linearise

— Autour de l’equilibre et pour de petites variations de vitesse des helices ω1, ω4 autour de

Ωe = Ω1e = Ω4e, etablir les equations d’etat de θ et q.

— On pose My = 2bℓΩe(ω1 − ω4),

84 F.BATEMAN

Page 91: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

6.2. Preparation

— Etablir les fonctions de transfertq(s)

My(s)et

θ(s)

My(s)— au moyen d’integrateurs, representer le schema fonctionnel de la commande d’axe de

tangage de l’hexacoptere.

— Autour de l’axe de tangage, l’hexacoptere est-il asymptotiquement stable ?

6.2.3 Correction Proportionnelle-Derivee

On met en œuvre une premiere loi de commande de type Proportionnelle-Derivee :

My = kd

kp(θref − θ)︸ ︷︷ ︸

qref

−q

(6.3)

— Completer le schema fonctionnel de l’hexacoptere en lui adjoignant celui de la loi de

commande (6.3).

— Calculer kp et kd de sorte que ce systeme se comporte comme un ordre deux dont le

facteur d’amortissement est egal a

√2

2et le temps de reponse a 0.5s

— Verifier le bon fonctionnement de ce correcteur sous MATLAB sisotool.

— My est ici une commande virtuelle, pratiquement on agit sur ω1 et ω4. Sachant que

l’on choisit de controler les vitesses de rotation des helices de telle sorte que ω1 = −ω4,

exprimer les vitesses de rotation effectives de ces helices en fonction du moment de tangage

My calcule precedemment.

6.2.4 Commande par retour d’etat

Le systeme est decrit par l’equation d’etat linearisee etablie au §6.2.2. Les variables θ et q

sont toutes deux mesurees.

— Etablir les expressions des matrices d’etat A, de commande B, de sortie C et de transfert

direct D.

La commande realisee est de la forme

My(t) = hθref (t)− k1θ(t)− k2q(t) (6.4)

— Calculer avec les gains k1 et k2 pour que les poles du systeme corrige soient egaux a

−5± 5i.

— Calculer h de sorte qu’en regime permanent et en reponse a un echelon de consigne

d’amplitude θ(∞) = θref . On aura evidemment q(∞) = 0.

6.2.5 Commande Proportionnelle-Integrale-Derivee

On met en œuvre une loi de commande de la forme de type Proportionnelle-Integrale-

Derivee :

F.BATEMAN 85

Page 92: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 6. CONTROLE DE L’ASSIETTE D’UN DRONE A VOILURE

TOURNANTE

My = kd

kp(θref − θ) + ki

∫ t

0

(θref − θ)dτ

︸ ︷︷ ︸

qref

−q

(6.5)

— Completer le schema fonctionnel de l’hexacoptere en lui adjoignant celui de la loi de

commande (6.5).

— Pour la boucle interne, calculer kd de sorte que la boucle interne de ce systeme se comporte

comme un ordre un dont le temps de reponse est egal a 150ms (il ne peut etre plus rapide

que celui des moteurs etudies lors du TP 3.1.)

— Quel type de correcteur realise le correcteur de la boucle externe ? Montrer qu’il peut

s’ecrireTis+ 1

Tis— En vous inspirant de la methode dite de l’optimum symetrique http://eavr.u-strasbg.

fr/~laroche/student/MasterIT-ComMach/ComMach1/node58.html, calculer kp et ki.

Vous adopterez pour ce reglage a = 4.

— Verifier le bon fonctionnement de ce correcteur sous MATLAB sisotool.

6.2.6 Commande par retour d’etat augmente

La commande a pour expression :

My(t) = h

∫ t

0

(θref (τ)− θ(τ))dτ − k1θ(t)− k2q(t) (6.6)

L’ajout d’un effet integral vise a rendre le systeme davantage robuste aux perturbations. On

va operer a une strategie de placement de pole sur le systeme augmente, pour cela, on definit

une nouvelle variable d’etat z =∫ t

0(θref (τ)− θ(τ))dτ et par consequent z = θref − θ.

— Ecrire l’equation d’etat associee au systeme dont le vecteur d’etat est X =(

θ q z)T

et d’entree θref .

— Montrer que la matrice d’etat augmentee corrigee se met sous la forme :

Aaug −BaugKaug =

0 1 0

0 0 0

−1 0 0

0

1

0

(

k1 k2 −h)

— Calculer avec la fonction place de MATLAB les gains k1, k2 et h pour que les poles du

systeme corrige soient egaux a −5,−5± 5i. Attention a modifier le signe de h calcule par

MATLAB.

6.3 Manipulations

Lors de toutes les phases d’experimentation vous devrez imperativement porter

lunettes de protection, blouse et gants.

86 F.BATEMAN

Page 93: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

6.3. Manipulations

Implementation des lois de commande

— Ouvrir le fichier TP TME sujet.mdl 1. Sauvegarder ce fichier sous un autre nom dans

votre espace de travail. Vous noterez que la maquette utilise un microcontroleur DsPic

30F4013 cadence a 32 MIPS.

— Double-cliquer sur le bloc Chart, cette fonction integre un automate ou machine a etat

illustre sur la figure 6.3. Pratiquement, on accede aux etats en commutant les switchs Flap

et Gear (tous deux a 0 en position basse, a 1 en position haute) de la radiocommande.

1. Initial : moteurs arretes

2. Open Loop : commande de la poussee seule. Celle-ci est bornee par mesure de securite.

3. Closed Loop P : Une loi de commande est deja implementee, elle permet de valider le

bon fonctionnement du drone lors des essais. Vous ne devez absolument pas la

modifier.

4. Closed Loop PI : Vous y implementerez les lois de commande proportionnelle-derivee

(6.3) et par retour d’etat (6.4). Si vous en avez le temps, vous y implementerez ega-

lement les lois de commande qui mettent en œuvre un terme integral, soit (6.5) et

(6.6).

— Depuis l’automate (StateFlow Chart), cliquer sur le bloc Loi4 represente figure et comple-

ter la commande de l’axe de tangage avec la structure de la commande Proportionnelle-

Derivee. Les blocs que vous inserez doivent etre parametrer avec un Sample Time egal a

-1 afin d’heriter de celui de l’automate.

— Inserer la fonction qui permet de transformer le moment de tangage My en vitesses de

rotation des helices 1 et 4. Pratiquement, il s’agit d’un bloc gain qui realise le produit

d’une matrice par un vecteur. Ici :

ω1

ω2ω3

ω4

ω5

ω6

=

g1g2g3g4g5g6

My (6.7)

ou g1, . . . , g6 sont des gains qui transforment My en vitesse de rotation des helices, en

particulier celles des helices 1 et 4.

— Inserer des blocs TX Matlab Labview, ces blocs sont associes a l’UART 2 Vous releverez

en particulier la consigne θref , l’assiette θ, la vitesse de tangage q et les vitesses de

rotation des moteurs 1 et 4. Les positions et les vitesses angulaires sont en radians et

radians par seconde, il convient de les multiplier par un facteur180

πet de convertir le

resultat en UINT16 pour lire ces signaux avec rs232gui en degres. Pour davantage de

precision, utiliser un facteur1800

π.

— Montrer votre schema de programmation au responsable du TME puis le compiler.

1. L’etude detaillee de la structure du programme represente figure 6.2 de l’autopilot sera vue dans la derniere

partie du TME. Ce programme gere la radiocommande SPEKTRUM, la centrale d’attitude (IMU) NAVEOL ainsi

que les six moteurs brushless et les cartes de controle (Bl-Ctrl).

F.BATEMAN 87

Page 94: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 6. CONTROLE DE L’ASSIETTE D’UN DRONE A VOILURE

TOURNANTE

Figure 6.2 – Le programme SIMULINK de l’autopilot

6.3.1 Programmation de l’autopilot

1. Relier le PC au boitier ICD3 via le cable USB puis le boitier ICD3 a la maquette via le

cable ICD3 comme illustre sur la figure 5.1.

2. Mettre la commande des gaz de la radiocommande (situee a droite) en position basse

(gaz a zero) et verifier que les switchs Flap et Gear sont en position basse (ou repousses)

3. Mettre la radiocommande sous tension.

4. Relier les connecteur d’alimentations de la batterie et de l’hexacoptere. La mise sous

tension des moteurs est signalee par un signal sonore.

5. Depuis le bureau, ouvrir le programme MPLAB IDE

— Selectionner un microcontroleur 30F4013,

— Programmer ICD3,

— File Import importer le fichier TP TME.hex ,

— Cliquer sur l’icole Program afin d’implementer ce fichier sur le microcontroleur.

6. Test des la lois de commande :

(a) Commuter le switch Flap en position haute (vers vous) et augmenter les gaz. Verifier

que les toutes helices tournent puis ramener les gaz a zero. Le switch Flap reste en

position haute.

88 F.BATEMAN

Page 95: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

6.3. Manipulations

Figure 6.3 – La machine a etat controlee par les switchs de la radiocommande

Figure 6.4 – La loi de commande a completer

F.BATEMAN 89

Page 96: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 6. CONTROLE DE L’ASSIETTE D’UN DRONE A VOILURE

TOURNANTE

(b) Commuter le switch Gear en position haute, augmenter les gaz pour amener l’appareil

a se sustenter et controler avec le joystick gauche le mouvement de l’appareil autour

de l’axe de tangage.

(c) Relever les chronogrammes.

— Ajouter a la consigne un signal carre de periode egal a 5 s, de rapport cyclique egal a 0.5

et d’amplitude egale a 15 . Utiliser pour cela un bloc Source Pulse Generator que vous

ferez suivre d’un bloc Commonly Used Blocks Convert. Vous transformerez ce signal

en type Single avec un Sample Time de 10 ms.

— Reiterer la procedure precedente.

6.3.2 Autres lois de commande

Commande par retour d’etat

— Dans Loi4 remplacer la loi de commande Proportionnelle-Derivee (6.5) par la commande

par retour d’etat 6.4.

— Reprendre la meme procedure que celle conduite precedemment pour tester cette loi de

commande.

Commande Proportionnelle-Integrale-Derivee

— Dans Loi4 inserer la loi de commande Proportionnelle-Integrale-Derivee (6.5) pour le

controle de l’assiette. En vous inspirants de ce qui a ete fait pour le controle des axes de

roulis et de lacet, vous utiliserez des integrateurs discrets (DiscretDiscrete Integrator)

cadences avec un Sample Time egal a -1 (herite du Chart). Vous noterez que lorsque l’on

entre dans Loi4, le signal raz=0, les integrateurs sont actives. Lorsque l’on quitte Loi4,

raz=1 et ces memes integrateurs voient leur sortie forcees a zero.

— Reprendre la meme procedure que celle conduite precedemment pour tester cette loi de

commande.

Commande par retour d’etat augmente

— Dans Loi4 inserer la loi de commande par retour d’etat augmente (6.6) pour le controle

de l’assiette. vous traiterez l’integrateur a temps discret comme au paragraphe precedent.

— Tester cette loi de commande.

90 F.BATEMAN

Page 97: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Troisieme partie

TRAVAUX PRATIQUES

D’AUTOMATIQUE

91

Page 98: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce
Page 99: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 1

CHAINE D’ACQUISITION D’UN SIGNAL NUMERIQUE

1.1 Objectif

Faire l’acquisition, le traitement et la restitution d’un signal analogique. Cette chaıne d’ac-

quisition et de traitement sera utilisee lors des prochaines seances de travaux pratiques afin

d’etudier un procede de camouflage d’un mesage dans un signal audio (steganographie) et un

filtre adaptatif utilise pour supprimer le bruit ambiant.

1.1.1 Liste du materiel

— Carte de developpement BigDsPic6 + 2 cables USB + Boitier d’alimentation

— Bred board

— Carte a amplificateurs operationnelsSparkfun

— Filtre a capacite commutee, condensateurs 100nF, petits fils

— Carte DAC 12 bits Mikroelektronika ou Carte DAC 8 bits Mikroelektronika R2R

— Cable + prise jack, casque audio

— PC + MATLAB-SIMULINK, MPLAB

— GBF, oscilloscope, prises BNC, sonde d’oscilloscope, cable BNC.

1.2 Le filtrage anti-repliement

Le signal a traiter est un signal audio qui sera echantillonne a 8000 Hz.

1.2.1 Les caracteristiques du filtre a capacite commutee

— Quelle doit-etre la frequence de coupure fcut du filtre d’anti-aliasing ?

— En utilisant la notice du filtre a capacite commutee LCT16091 accessible depuis le bureau

sous le dossier datasheet :

— choisissez la frequence d’horloge du LCT16091,

93

Page 100: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 1. CHAINE D’ACQUISITION D’UN SIGNAL NUMERIQUE

— representez le gabarit de ce filtre.

1.2.2 Mise en œuvre du filtre

— Cablez ce circuit sur la bredboard. Vous l’alimenterez a partir des tensions 0-5V delivrees

par la carte BigDsPic6.

— Pour realiser l’horloge du filtre a capacite commutee 100fcut , on genere un signal haute

frequence en utilisant les blocs Peripheral I/OOutput Compare (HW) du microcon-

troleur. Le fonctionnement de ces blocs est detaille au §3.4 et dans l’aide en ligne du

blockset.

— Ouvrez le fichier template.mdl puis renommez-le. C’est sur ce fichier que vous allez

realiser le programme qui delivre le signal d’horloge. Reglez le Fixed Step Time a

1.25e−4 soit 8kHz.

— On utilise le canal de sortie OC1, voir sur la datasheet du DsPic le port correspondant.

— Reglez la periode max du bloc egale a la periode du signal d’horloge du filtre.

— Le parametre du signal genere qu’on regle est l’etat haut du rapport cyclique (duty

cycle), ce dernier est defini par la variable OCmax,

— Reglez la valeur du signal d’entree du blockset pour obtenir un signal OC1 de rapport

cyclique egal a 50%.

— Compilez le modele et implementez le programme.

— Avec l’oscilloscope, mesurez la periode du signal OC1.

— Appliquez a l’entree du filtre un signal sinusoıdal ∈ [1V, 3V ] dont vous ferez varier la

frequence. Vous verifierez que le signal de sortie du filtre presente, en terme d’attenuation,

les caracteristiques annoncees par le constructeur.

1.3 La conversion numerique-analogique

Vous allez realiser l’acquisition du signal prealablement filtre au moyen d’un convertisseur

analogique-numerique du DsPic.

Au moyen du generateur basses-frequences (GBF), generez un signal sinusoıdal de frequence

440 Hz dont l’amplitude crete a crete varie entre 0 et 4 Volts et visualisez-le sur l’oscilloscope.

Sur la datasheet du DsPic30F6014A, reperez les ports associes au convertisseur analogique-

numerique AN0 et l’entree de controle INT0.

Au moyen d’un bloc ADC Analog to Digital Converter, realisez la conversion analogique-

numerique (CAN) du signal sinusoıdal delivre par le GBF. En exploitant la documentation

HTML de ce bloc, parametrez-le de sorte que le signal sinusoıdal soit echantillonne a 8000 Hz.

Pour ce faire, cette conversion sera declenchee par une source exterieure mode trigger Low

to High transition on INT0 pin. Vous pourrez realiser facilement la source qui declenche les

conversions en utilisant un bloc Peripheral I/O Output Compare. Le signal de sortie doit

presenter un rapport cyclique de 50% et une frequence egale a 8000Hz.

Comme l’ADC code le signal sur 12 bits, l’information en sortie de ce dernier peut prendre

4096 valeurs. A cet effet, une reference de tension de 4.096V peut etre appliquee au DsPic de

sorte que le quantum soit egal a 1mV. Pour ce faire, vous devez commuter le switch RA10 de

SW13 → 4.096V.

94 F.BATEMAN

Page 101: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

1.4. Analyse spectrale du signal echantillonne-bloque

Pour l’observation des signaux, vous mettrez en œuvre un bloc TX Labview Matlab, la

transmission des donnees sera cadencee a 230400 bauds . Pour une telle vitesse de transmission,

le dsPIC Master est cadence a 40 MIPS.

— Dans la fenetre rs232gui, affecter la valeur 128 au champ Rn, cela limitera l’observation

des signaux a un maximum de 128 points, ce qui ne represente que quelques periodes du

signal.

— Observez sous rs232gui le signal echantillonne,

1.4 Analyse spectrale du signal echantillonne-bloque

On souhaite, en temps quasi-reel affichez la transformee de Fourier du signal echantillonne

bloque avec une precision en frequence N egale a 512. Dans le Command Window, on commence

par generer le vecteur des frequences auxquelles on va tracer le spectre du signal :

f=0 :8000/512 :8000(1-1/512) ;

Vous verifierez qu’il s’agit bien d’un vecteur de 512 lignes par 1 colonne avec la fonction size.

Dans la fenetre d’edition de rs232gui, ecrivez au moyen de la fonction fft le script qui utilise

les P=128 echantillons du signal issus de l’ADC contenus dans la variable Rn en vue de calculer

et d’afficher le module du spectre du signal pour un nombre discret de frequences 1 N=512.

Vous pouvez connecter un casque sur la face arriere du PC et ecouter les sequences sonores

correspondant au contenu de la variable Rn au moyen de la fonction sound que vous ajouterez

a la suite du calcul et de l’affichage de la FFT.

Testez ce programme pour le signal sinusoıdal de frequence 440 Hz et d’amplitude ∈ [1, 4]

Volts.

En utilisant le mode sweep du GBF, generez un chirp compris dans la bande de frequence

∈ [440, 1000] Hz.

Memes questions pour un signal carre de meme frequence et de meme amplitude. Mettez en

evidence les harmoniques et le repliement du spectre.

On etudie l’effet du nombre de points de calcul de la FFT : si N designe le nombre de points

de calcul de la TFD, la precision en frequence est egale a1

N. Pour des signaux echantillonnes a

la frequence Fe, cela onneFe

N.

Toujours pour Rn=128, t

Testez N=16 pour un signal carre, comparez a ce que vous observiez pour N=512

La resolution frequentielle est la capacite de discerner des frequences distinctes. Elle est

de l’ordre de grandeur deFe

Psoit l’inverse de la largeur de la fenetre temporelle utilisee pour

prelever le signal a analyser dans le domaine temporel.

Testez pour P=32 N=512 et comparez le spectre a celui obtenu pour P=128 et N=512

1. N definit les frequences k∆F auquel sont conduites les calculs k∆F = kFe

Net k ∈ [0, N − 1]. On a par

ailleurs (cf. Cours de traitement du signal) N ≥ P .

F.BATEMAN 95

Page 102: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 1. CHAINE D’ACQUISITION D’UN SIGNAL NUMERIQUE

Rappelez l’interet de multiplier la sequence temporelle de longueur P par une fenetre de

ponderation. Vous visualiserez sur MATLAB une fenetre temporelle de Hamming de longueur P.

Ponderez Rn en le multipliant par une fenetre temporelle de votre choix : hamming, hanning,

bartlett, blakman, etc. Ces fonctions ont le meme nom sous MATLAB. On rappelle que le produit

terme a terme des coefficients de deux tableaux ∈ Rn×m s’ecrit A. ∗B

1.5 La conversion numerique-analogique

Elle peut etre realisee au moyen d’un convertisseur numerique analogique (CNA)DAC pour

Digital to Analog Converter 12 bits ou 8 bits. En fonction du convertisseur disponible, procedez

comme suit :

— Convertisseur 12 bits : vous reprendrez pour cela la procedure decrite au §3.3.1. Vousconnecterez directement la sortie de l’ADC 12 bits a celle du DA C12 bits (eventuellement

inserez un bloc Rate Transition cadence a 8000Hz entre les deux fonctions).

— Convertisseur 8 bits : La gestion du DAC 8 bits est realisee par un bloc Others C function

Call. La procedure d’utilisation de ce bloc, rappelee ci-dessous, est decrite au §3.7.1.— Ouvrez le fichier cna.mdl et copier-coller le schema qu’il contient.

— Copier-coller le fichier essai.c dans le repertoire sous lequel vous travaillez.

— Specifiez le nom du fichier essai.c depuis le menu Simulation Real-TimeWorkshop Custom

Code Source files de MATLAB.

— Vous connecterez entre la sortie de l’ADC 12 bits et celle du DAC 8 bits un gain

(a determiner), la sortie s’operant en UINT8 puisque ce convertisseur admet a son

entree des nombres codes dans l’intervalle [0, 255].

— Inserez la Carte DAC 8 bits Mikroelektronika R2R sur le slot RB0-RB7

— Sauvegarder le schema de la chaıne d’acquisition et de restitution du signal sous le nom

DigitalProcessing.mdl, il sera utilise lors des prochaines seances.

Visualisez sur l’oscilloscope le signal analogique a l’entree et le signal analogique restitue par

le DAC

1.6 Acquisition d’un signal audio

Le DsPic n’admet sur ses entrees d’acquisition que des signaux ≥ 0. Or, les signaux audio

issus de la carte son du PC via la prise jack ou le microphone sont des signaux a valeurs moyennes

nulles pouvant prendre des valeurs positives et negatives. On opere a une amplification et a une

translation de ce signal au moyen de la carte a amplificateurs operationnels Sparkfun alimentee

en 0, 5V a partir des slots de la carte de developpement.

— Cablez la carte a amplificateurs operationnelsSparkfun.

— Pour une entree nulle (connectee a la masse), visualisez le signal en sortie de cet amplifi-

cateur et relevez sa valeur.

— Avec l’oscilloscope, reglez un signal sinusoıdal a valeur moyenne nulle, d’amplitude 1 V

et de frequence 1000Hz.A quelle nombre correspond cette tension en sortie du CAN?

— Visualisez le signal en sortie de cet amplificateur et reglez le potentiometre pour que

l’amplitude de la sortie soit de 1V. Verifiez que la valeur moyenne du signal est inchangee.

96 F.BATEMAN

Page 103: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

1.6. Acquisition d’un signal audio

— La sortie de l’amplificateur a decalage peut maintenant etre reliee au filtre a capacite

commutee et son entree a la sortie audio du PC.

F.BATEMAN 97

Page 104: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 1. CHAINE D’ACQUISITION D’UN SIGNAL NUMERIQUE

98 F.BATEMAN

Page 105: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 2

FILTRES NUMERIQUES

2.1 Filtrage numerique

De nombreux capteurs (accelerometres, gyrometres, magnetometres, etc.) delivrent une in-

formation sous la forme d’une tension analogique image de la grandeur physique mesuree. Ces

signaux doivent le plus souvent faire l’objet d’un traitement, par exemple le calcul de leur

moyenne ou de leur valeur efficace. Un tel traitement est avantageusement realise par un filtre

numerique.

La numerisation d’un signal analogique est illustree sur la figure 2.1. Pratiquement, le signal ana-

logique doit etre prealablement filtre par un filtre passe-bas, d’ordre generalement eleve, appele

filtre d’antirepliement ou anti-aliasing. Ce signal est alors echantillonne, bloque et numerise. A

ce stade, il peut faire l’objet d’un traitement par le filtre numerique.

Le microcontroleur DsPic 30F6014A associe au blockset Embedded Target For DsPic et aux

outils proposes par la toolbox Signal Processing de MATLAB permet d’implementer rapidement

de tels filtres.

2.1.1 Liste du materiel

— Carte de developpement BigDsPic6 + 2 cables USB + Boitier d’alimentation

— Bred board

— Carte a amplificateurs operationnelsSparkfun

— Filtre a capacite commutee, condensateurs 100nF, petits fils

e(t)filtreantialiasing

CANBOZ

signaux analogiques signaux numeriques

Traitementnumerique

frequence d’echantillonnage

e(n)

Figure 2.1 – Numerisation d’un signal analogique

99

Page 106: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 2. FILTRES NUMERIQUES

— Carte DAC 12 bits Mikroelektronika ou Carte DAC 8 bits Mikroelektronika R2R

— Cable + prise jack, casque audio

— PC + MATLAB-SIMULINK, MPLAB

— GBF, oscilloscope, prises BNC, sonde d’oscilloscope, cable BNC.

2.1.2 Premiers filtres numeriques

Le signal numerique e(nTe) est constitue d’une suite de nombres cadences au rythme de la

periode d’echantillonnage Te, par la suite on ecrira e(n).

Filtre a moyenne glissante :

On propose un premier filtre qui realise en sortie la moyenne des k dernieres valeurs prises

par l’entree :

s(n) =e(n) + e(n− 1) + · · ·+ e(n− k + 1)

kavec k ∈ N

∗ (2.1)

Ce filtre est d’ordre k. Dans le cas ou le signal a filtrer est bruite par un bruit centre, ce filtre

peut simplement reduire ce bruit.

— Sous SIMULINK, generez un signal sinusoıdal a temps discret d’amplitude unitaire et de

valeur moyenne nulle. La periode de ce signal est constituee de 100 echantillons et la

periode d’echantillonnage est egale a 1ms.

— Ce signal est bruite par un bruit blanc (Sources Band-limited white noise) de variance

egale a 0,001.

— Realisez le filtre numerique (2.1) pour k = 5, vous utiliserez les blocs DiscreteUnit

delay.

— Mettez en evidence les effets de ce filtre sur le signal.

Filtre a moyenne glissante ponderee :

Pour privilegier les derniers echantillons, on peut introduire un facteur d’oubli, les equation

du filtre deviennent :

s(n) =a0e(n) + a1e(n− 1) + · · ·+ ak−1e(n− k + 1)

∑ai

avec a0 > a1 · · · > ak−1 (2.2)

— Sous SIMULINK, modifiez le schema du systeme representant (2.1) et implementer (2.2),

vous choisirez les coefficients ai de sorte qu’ils realisent une suite geometrique decroissante

de raison a0. Tester le comportement pour differentes valeurs de la raison 1 ≥ a0 ≥ 0 de

cette suite.

Rejection du bruit a 50Hz : Il est frequent d’observer sur une mesure une composante

residuelle de frequence 50Hz ayant pour source le reseau EDF. Un filtre a moyenne glissante

judicieusement choisi peut permettre d’eliminer ce bruit.

— Ajoutez a un signal sinusoıdal d’amplitude unitaire, de valeur moyenne nulle dont la

periode est constituee de 125 echantillons et la periode d’echantillonnage est egale a

2ms (soit une periode de 250ms), un bruit 50 Hz modelise par un signal signal sinu-

soıdal d’amplitude 0,1 et de valeur moyenne nulle dont la periode est constituee de 10

echantillons et la periode d’echantillonnage est egale a 2ms (soit une periode de 20ms).

100 F.BATEMAN

Page 107: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

2.2. Les filtres a Reponse Impulsionnelle Finie

z−1z−1z−1z−1

a0 a1 a2 ak−1

+ + +s(n)

e(n)

Figure 2.2 – Structure d’un filtre RIF

— Proposez une structure de filtre a moyenne glissante qui supprime ce bruit.

2.2 Les filtres a Reponse Impulsionnelle Finie

Comme precedemment, la sortie du filtre a pour expression :

s(n) =

k−1∑

i=0

aie(n− i) (2.3)

La structure d’un tel filtre est representee sur la figure 2.2.

— Calculez la reponse de ce filtre a une impulsion de dirac δ(j) de poids unitaire. Soit s(0),

s(1), . . . , s(k − 1), s(k), etc. Que constate-t-on ?

— Precisez le terme reponse impulsionnelle finie.

2.2.1 Rappels sur la transformee en ZLa transformee en Z de la suite d’echantillons x(n) a pour expression :

Z[x(n)] = X(z) =+∞∑

i=0

x(i)z−i (2.4)

Un retard de k1 echantillons (cf. figure 2.3) s’ecrit :

Z[x(n− k1)] = X(z)z−k1 + z−k1

i=−1∑

i=−k1

x(i)z−i

︸ ︷︷ ︸

echantillons ajoutes a la sequence

(2.5)

On suppose les conditions initiales toutes nulles, soit x(n) = 0 pour n < 0.

— Calculer la fonction de transfert en Z du filtre RIF (2.3).

En regime harmonique z = ej2πfTe et la fonction de transfert harmonique a pour expression :

H(jf) =

k−1∑

i=0

aie−j2πfTe (2.6)

F.BATEMAN 101

Page 108: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 2. FILTRES NUMERIQUES

x(n)

x(n− 2)

n

n

Figure 2.3 – Retard temporel et transformee en Z

H(jf)

f

Fe

1

fc−fc

Fe

2

Fe

2

Figure 2.4 – Filtre cardinal

On demontre, lorsque les coefficients ai = ak−1−i, soit a0 = ak−1, a1 = ak−2, etc. que

l’argument de H(jf), autrement dit le dephasage introduit par le filtre vaut −2πfk − 1

2Te et le

filtre est dit a phase lineaire. L’interet est que le temps de propagation du signal a travers le

filtre est constant et egal ak − 1

2Te.

— Sous SIMULINK, reprendre la structure du filtre a moyenne glissante ponderee et choi-

sissez pour ce filtre des coefficients tels qu’il presente une phase lineaire.

— Tester ce filtre en reponse a des signaux sinusoıdaux a temps discret de periode egale a

50ms, 100ms et 200ms. Dans chacun des cas mettre en evidence le retard produit par le

filtre et verifier qu’il est conforme a la theorie.

— Quel interet offre selon vous un filtre lineaire dans le traitement d’un signal audio ?

2.2.2 Synthese de filtre RIF

Le but est, pour un gabarit frequentiel donne, de determiner les coefficients ai du filtre qui

realisent ce gabarit.

L’expression analytique de H(jf), la fonction de transfert harmonique du filtre a synthetiser

est obtenue a partir du gabarit frequentiel. La transformee de Fourier inverse de H(jf) notee

F−1[H(jf)] = h(t) est la reponse impulsionnelle du filtre. Apres echantillonnage de h(t) a

la frequence Te = 1Fe, les echantillons h(n) sont, a la periode d’echantillonnage Te pres, les

coefficients an du filtre.

On se propose de synthetiser un filtre cardinal dont le diagramme frequentiel est represente

sur la figure 2.4. On prendra Fe = 400Hz.

Rappel 1 : La transformee de Fourier du peigne de Dirac

δTe =+∞∑

n=−∞

δ(t− nTe)

102 F.BATEMAN

Page 109: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

2.2. Les filtres a Reponse Impulsionnelle Finie

est egalement un peigne de Dirac :

δ 1

Te

=1

Te

k=+∞∑

k=−∞

δ(f − k

Te)

Rappel 2 : F [x(t).y(t)] = F [x(t)] ∗ F [y(t)] ou ∗ est le produit de convolution.

— Calculez la transformee de Fourier inverse de ce filtre, soit h(t), qui n’est autre que sa

reponse impulsionnelle et representez son chronogramme.

— Ce filtre est-il causal ? realisable ? La reponse est a justifier.

— Representez le chronogramme de h(nTe), la reponse impulsionnelle echantillonnee, obte-

nue par multiplication de h(t) par le peigne de dirac δTe .

A l’echantillonnage dans le domaine temporel correspond une periodisation du motif du

spectre du module de H(jf) et une multiplication de l’amplitude des motifs du spectre par1

Te.

— Representez le module du spectre du signal echantillonne H∗(jf) = |F [h(nTe)]|.

Pour que dans la bande [−Fe

2, Fe

2] le spectre du signal echantillonne ait la meme amplitude

que H(jf), les echantillons de la reponse impulsionnelle h(nTe) doivent etre multiplies par Te,

soit h(nTe) cette reponse dont les echantillons ne sont autres que les coefficients du filtre.

— Donnez les valeurs des coefficients ai du filtre.

— Ecrivez un script sous MATLAB pour visualiser les coefficients du filtre. A ce propos, il

est conseille d’utiliser la fonction sinc.

Ce filtre presente une reponse impulsionnelle infinie et il est non causal, pour le realiser, on

opere a une troncature suivie d’un decalage a droite des echantillons restants.

— Multipliez la reponse impulsionnelle par une fenetre temporelle w(nTe) telle que :

w(nTe) = 1 pour 5 ≥ n ≥ −5

w(nTe) = 0 sinon

— Modifiez le script pour visualiser la reponse tronquee. A ce propos, la fonction find per-

met d’acceder aux indices des variables satisfaisant une ou plusieurs conditions dans un

tableau.

c l e a r a l l ; c l c ;

x =0 : 0 . 1 : 1 . 5 ; % d e f i n i t un tab leau de t a i l l e 16 qui c on t i en t des

% va l eu r s compr i ses ent r e [ 0 , 1 . 5 ] par pas de 0 .1

y=x . ˆ 2 ; % c a l c u l e y (x ) , y e s t un tab leau de meme t a i l l e que x

n=f i nd (x>0.2 & x<0 .6 ) ; % n e s t un tab leau contenant l e s i n d i c e s 4 5 6 de x

% dont l e s va l eu r s sont contenues dans [ 0 . 3 , 0 . 5 ]

x (n) % con t i en t 0 . 3 , 0 . 4 , 0 . 5

y (n) % renvo i e l e s y (x ) pour x dans [ 0 . 3 , 0 . 5 , 5 ]

F.BATEMAN 103

Page 110: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 2. FILTRES NUMERIQUES

— Au moyen de la fonction freqz, calculez le module (fonction abs) et l’argument (fonction

angle) de cette fonction de transfert.

— Tracez le module et l’argument en fonction de la frequence et observez que ce ce dernier

qui represente la phase varie lineairement en fonction de la frequence.

Sur le trace du diagramme du module fonction de la frequence reduite apparaissent, dans en

dehors de la bande passante, des oscillations. C’est le phenomene de Gibbs. Ces oscillations ont

pour origine la troncature.

— Expliquez pourquoi la multiplication dans le domaine temporel de h(nTe) par w(nTe) est

a l’origine du phenomene de Gibbs.

Une troncature operee par une fenetre de Hamming permet d’eliminer ce phenomene.

— Modifiez le programme MATLAB de maniere a tronquer h(nTe) par une fenetre de Ham-

ming comportant 11 echantillons (fonction hamming).

— Au moyen de la fonction freqz, calculer et tracer le module et l’argument de cette fonction

de transfert en fonction de la frequence. Il peut etre interessant, de pouvoir comparer les

reponses obtenues pour les differentes fenetres en les tracant sur une meme figure.

— Verifier que le phenomene de Gibbs a disparu.

La fonction fdatool est un outil de synthese de filtres numeriques propose sous MATLAB.

Figure 2.5 – Une liaison serie

— Parametrez les differents champs de cette fonction pour synthetiser un filtre RIF d’ordre

10, le signal est echantillonne a 400 Hz, la frequence de coupure est choisie egale a 100

104 F.BATEMAN

Page 111: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

2.3. Filtres a Reponse Impulsionnelle Infinie

Hz et la troncature est realisee par une fenetre de Hamming. Synthetiser le filtre.

— Sous le menu Analysis,

— verifiez que les coefficients du filtres sont identiques a ceux obtenus par le calcul,

— observez le module et la phase ainsi que le retard introduit par ce filtre.

— Generez le bloc SIMULINK correspondant a ce filtre File Export to SIMULINK model.

Ce bloc peut ensuite etre colle dans le template en vue d’une implementation du filtre

sur le DsPic.

Realisation et test du filtre

— Cablez la chaıne d’acquisition et de restitution d’un signal realisee lors du TP .

— Ouvrez le fichier DigitalProcessing.mdl et inserez le filtre RIF synthetise supra Vous

parametrerez la frequence d’acquisition des donnees a 400 Hz . Ajoutez des blocs UART

et Tx Output Multiplexed For Matlab-Labview pour visualisez le signal filtre.

— Au moyen du GBF, appliquer un signal sinusoıdal dont l’amplitude varie entre 1V et 3V

et dont la frequence varie entre 0 et 200Hz. Relever les diagrammes du module et de la

phase sur la meme figure que celle sur laquelle vous avez trace ces diagrammes theoriques.

2.3 Filtres a Reponse Impulsionnelle Infinie

Ces filtres sont decrits par une equation de recurrence de la forme :

s(n) =n∑

j=0

bje(n− j) +m∑

i=0

ais(n− i) (2.7)

et leur fonction de transfert en Z a pour expression :

S(z)

E(z)=

∑mj=0 bjz

−j

∑ni=0 aiz

−i(2.8)

Stabilite des filtres RII

Soit le filtre du premier ordre decrit par l’equation de recurrence :

s(n) = b0e(n)− a1s(n− 1) (2.9)

— A partir de l’equation de recurrence, etablir l’expression du terme general de la reponse

impulsionnelle du filtre (e(n) = δ(n)) avec s(−1) = 0. En deduire a quelle condition sur

a1 ce filtre est stable.

— Realisez ce filtre sur Simulink au moyen de blocs Unit delay. L’impulsion de dirac peut

etre modelisee avec le bloc SourcesPulse generator. Choisissez une periode egale a 100

s et une largeur d’impulsion egale a 1% de la periode.

— Testez ce filtre et relever la reponse pour b0 = 1, a1 = 0.5, b0 = 1, a1 = −0.5,b0 = 1, a1 = 1, b0 = 1, a1 = −1, b0 = 1, a1 = 2, b0 = 1, a1 = −2.

F.BATEMAN 105

Page 112: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 2. FILTRES NUMERIQUES

Dans le cas general, on demontrer qu’un tel filtre est stable si et seulement si tous ses poles ziavec i ∈ 1, . . . , n verifient |zi| < 1. Ce resultat est a rapprocher de celui qui definit la stabilite

des systemes lineaires continus, a savoir qu’un tel systeme est stable si et seulement si tous ses

poles pi verifient Re(pi) < 0. En effet, pour un systeme echantillonne z = epTe.

2.3.1 Synthese des filtres RII

On ne presente ici qu’une seule methode.

Synthese par invariance impulsionnelle :

Cette methode consiste a synthetiser la version discrete de la reponse impulsionnelle 1 d’un

filtre lineaire a temps continu. On se propose de la decouvrir sur un exemple simple.

Soit le filtre passe-bas du premier ordre de fonction de transfert :

H(p) =k

p

ωc+ 1

(2.10)

— Calculez sa reponse impulsionnelle h(t).

— Donnez l’expression de h(nTe).

— Calculez H(z) la transformee en Z de h(nTe) et verifier le resultat en utilisant la fonction

c2d de MATLAB avec l’option impulse, vous adopterez k = 1 et ωc = 200πrad/s et

Te = 1.10−3.

— Tracez avec la fonction Bode le diagramme de Bode de ce filtre.

— Implementez ce filtre sur le DsPic.

Synthese a partir d’un gabarit :

http://www.esiee.fr/~courivad/Files/ST4-RF1/st4rf1_filtreshyper.pdf pages 3-5.

Dans cette partie, vous synthetiserez et implementerez un filtre numerique RII visant a

extraire l’harmonique de rang 3 d’un signal carre x(t) de frequence fondamentale egale a 50Hz.

On rappelle qu’un tel signal admet la decomposition en serie de Fourier suivante :

x(t) = x+

+∞∑

k=0

4

(2k + 1)πsin((2k + 1)πft) (2.11)

Ce signal est represente sur la figure 2.6.

1. Il serait egalement possible de synthetiser un filtre RIF a partir de l’expression de la reponse indicielle du

filtre continu (c2d option zoh).

106 F.BATEMAN

Page 113: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

2.3. Filtres a Reponse Impulsionnelle Infinie

t

x(t)

2V

3V

20msFigure 2.6 – Le signal a filtrer

— Quel type de filtre choisir pour extraire l’harmonique 3 ?

Avec l’outil fdatool, synthetisez un filtre de Butterworth RII tel que :

1. le signal est echantillone a 1000Hz

2. le fondamental soit attenue d’un facteur 100,

3. l’harmonique de rang 5 et les harmoniques de rang superieur soient attenues d’au moins

d’un facteur 100

4. l’amplitude de l’harmonique 3 conserve la meme amplitude

F.BATEMAN 107

Page 114: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 2. FILTRES NUMERIQUES

108 F.BATEMAN

Page 115: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 3

BANCS DE FILTRES

3.1 Objectif

Traiter un signal audio echantillonne et numerise par l’algorithme de Mallat. L’application

etudiee consiste a cacher un message dans un signal audio. Pour cela, vous reprendrez le montage

realisant l’acquisition d’un signal audio par un CAN et sa restitution par un CNA.

Dans un premier temps, l’algorithme de Mallat sera developpe et teste avec SIMULINK. Dans

un second temps, il sera implemente sur le microcontroleur 30F6014 pour etre teste en temps

reel.

3.1.1 Liste du materiel

— Carte de developpement BigDsPic6 + 2 cables USB + Boitier d’alimentation

— Bred board

— Carte a amplificateurs operationnelsSparkfun

— Filtre a capacite commutee, condensateurs 100nF, petits fils

— Carte DAC 12 bits Mikroelektronika ou Carte DAC 8 bits Mikroelektronika

— Cable + prise jack, haut-parleur,

— PC + MATLAB-SIMULINK, MPLAB

— GBF, oscilloscope, prises BNC, sonde d’oscilloscope, cable BNC.

109

Page 116: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 3. BANCS DE FILTRES

3.2 L’algorithme de Mallat

3.2.1 L’analyse

Le signal a analyser est echantillonne a Fe = 8kHz. Pour respecter la condition de Shannon,

son spectre est dans la bande [0 − Fe

2] 1. L’analyse de ce signal consiste en une succession

d’operations de filtrage passe-bas et passe-haut de maniere a explorer les differentes bandes du

spectre du signal etudie. Les coefficients des fonctions de transfert de ces filtres sont obtenues

au moyen de la toolbox Wavelett de MATLAB. Les filtres utilises pour la decomposition (d) sont

d’ordre trois a reponse impulsionnelle finie (RIF). Ils ont pour fonction de transfert :

Lod = −0.1294 + 0.2241z−1 + 0.8365z−2 + 0.4830z−3 Lo pour Low pass (3.1)

Hid = −0.4830 + 0.8365z−1 − 0.2241z−2 − 0.1294z−3 Hi pour High pass (3.2)

Premier etage : La frequence de coupure des filtres est localisee aFe

4. Chaque filtre de

decomposition est suivi d’un decimateur, ce dernier supprime un echantillon sur deux 2, de sorte

que le signal en sortie du decimateur apparaıt comme echantillonne aFe

2. Cette operation de

filtrage est representee sur la figure 3.1.

Le signal issu du filtre passe-haut echantillonne a Fe couvre la bande de frequence [Fe

4− Fe

2]. Il

est ensuite decime (echantillonne aFe

2). Ce signal est appele Detail 1 et note D1.

2

2

Lod

Hid

x(kT )

A1(k2T )

D1(2kT )

2

2

Lod

Hid

A2(22kT )

D2(22kT )

Figure 3.1 – Algorithme de Mallat

— Saisissez les fonctions de transfert de ces filtres sousMATLAB avec la fonction filt et tracez

sur une meme figure leur diagramme de Bode. Vous mettrez en evidence le caractere

complementaire de ces filtres.

Second etage : L’algorithme de Mallat est recursif. Le signal issu du premier filtre passe-bas

et decime est a nouveau traite par deux filtres passe-haut et passe-bas de fonction de transfert

1. Un filtre d’anti-repliement precede l’acquisition.

2. Ce qui est un abus de langage, la decimation, pratique utilisee dans l’armee romaine, consistait a sacrifier

un legionnaire sur dix lorsque une legion s’etait mal comportee au combat.

110 F.BATEMAN

Page 117: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

3.2. L’algorithme de Mallat

etage 1 2 . . . n

D1 D2 . . . Dn A

frequence d’echantillonnageFe

2

Fe

22. . .

Fe

2nFe

2n

bande analysee

[Fe

4,Fe

2

] [Fe

8,Fe

4

]

. . .

[Fe

2,Fe

2n

] [

0,Fe

2n

]

Tableau 3.1 – Frequences d’echantillonnage et bandes de frequences analysees en fonction du nombre

d’etages

(3.3) dont les frequences de coupure sont localisees aFe

8. Ces deux filtres sont eux-memes suivis

de decimateurs. Le signal issu du second filtre passe-haut et echantillonne aFe

2couvre la bande

de frequence [Fe

8− Fe

4]. Ce signal est ensuite decime (echantillonne a

Fe

4). Il est appele Detail

2 et note D2.

— Sur la meme figure que precedemment, tracez les diagrammes de Bode des filtres du

second etage. Pour le trace, utilisez differentes couleurs.

neme etage : Si le filtre comporte n etages, le signal issu du neme filtre passe-bas couvre la

bande du spectre comprise dans [0,Fe

2.2n]. Il est decime (echantillonne a

Fe

2n) et est appele ap-

proximation et note A.

Le signal issu du filtre passe-haut couvre la bande de frequence [Fe

2.2n,Fe

2n]. Il est decime (echan-

tillonne aFe

2n) et est appele Detail n et note Dn.

Le tableau 3.1 resume ce qui precede :

Simulation

Sous SIMULINK realisez un filtre d’analyse a n=4 etages.

— Le Fixed Sample Time est fixe a 18000

s,

— Pour les filtres : blocs Discrete Discrete FIR Filter,

• vous parametrerez les Sample time en vous referant aux explications qui precedent.

— Pour la decimation : blocs DSP System toolbox Signal operation Downsample. Le

parametrage est le suivant :

• Element as channel (sample based)

• Allow multirate processing

— Encapsulez votre modele dans un Subsystem

— Vous mettrez en evidence la capacite de ce banc de filtres a operer a l’analyse temps/-

frequence d’un signal en appliquant a son entree un chirp 3. Pour cela vous utiliserez un

3. Signal dont la frequence est modulee lineairement en fonction du temps sur une plage [fmin, fmax].

F.BATEMAN 111

Page 118: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 3. BANCS DE FILTRES

bloc Source Chirp suivi d’un bloc Rate Transition. Il vous est demande de parametrer

ces blocs.

— Observez l’approximation A et les details D1 a D4. Attention, ces signaux ne sont pas

echantillonnes a la meme frequence et doivent etre observes sur des Scope distincts.

3.2.2 La reconstruction

Un second banc permet la reconstruction (r) du signal a partir des details Di et de l’approxi-

mation A. Les filtres passe-bas et passe-haut utilises ont pour fonction de transfert :

Lor = 0.4830 + 0.8365z−1 + 0.2241z−2 − 0.1294z−3 Lo pour Low pass (3.3)

Hir = −0.1294 +−0.2241z−1 + 0.8365z−2 − 0.4830z−3 Hi pour High pass (3.4)

Ces filtres sont precedes d’interpolateurs 2 ↑, ces derniers doublent la frequence d’echan-

tillonnage du signal applique a leur entree en inserant des zeros entre les echantillons.

2

2

Lod

Hid

x(kT )

D1(2kT )

An(2nkT )

Dn(2nkT )

2

2 2

2

Lod

Hid

LoR

HiR

+

+

2

2

Figure 3.2 – Algorithme de Mallat

Simulation

Sous SIMULINK realisez un filtre de reconstruction a n=4 etages.

— Pour les filtres : blocs Discrete Discrete FIR Filter,

• vous parametrerez les Sample time en vous referant aux explications qui precedent.

— Pour l’interpolation decimation : blocs DSP System toolbox Signal operation Up-

sample. Le parametrage est le suivant :

• Upsample factor egal a 2,

• Sample offset a 1, on insere des zeros sur les echantillons impairs.

— Encapsulez votre modele dans un Subsystem

— Connectez les deux sous-systemes, le bloc analyse et le bloc reconstruction.

Vous allez tester le systeme ainsi realise en le soumettant a un signal audio.

— Depuis le Command Window tapez et executez load handel puis ecoutez le signal audio

contenu dans la variable y en tapant et executant sound(y, 8000).

— Appliquez a l’entree du bloc analyse un bloc.

112 F.BATEMAN

Page 119: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

3.3. La steganographie

— Sous SIMULINK, ajoutez un bloc SourceSimin qui generera y. Pour que ce bloc fonc-

tionne, vous devrez aussi generer un vecteur temps de meme dimension que y.

— Inserez un bloc Scope et parametrez-le de maniere a ce que le signal observe soit accessible

depuis le Workspace dans une variable appelee out 4.

— Ecoutez le signal audio contenu dans la variable out.

3.3 La steganographie

Le principe de la steganographie est illustre sur la figure 3.3 dans le cas n = 2. Dans le cas

presente, on substitue au detail D2, un message echantillonne a la meme frequence et de duree

inferieure au signal x(kT ) qui lui sert de support. Le camouflage du message est opere dans les

domaines temporels et frequentiels.

2

2

Lod

Hid

x(kT )

D1(2kT )

A2(4kT )

D2(4kT )

2

2 2

2

Lod

Hid

LoR

HiR

+

+

2

2

+

+

x(kT )

message(2kT )

Figure 3.3 – Principe de la steganographie

3.3.1 Generation du message a cacher

Le message a cacher est le code morse EA code ”. .-”, pour le generer, vous modulerez un

signal sinusoıdal par un signal binaire. Ce dernier peut etre realise avec le bloc SourceRepeating

sequence stair. Le message a cacher doit se substituer a D1 dans le bloc de reconstruction.

— Quelle doit etre la periode d’echantillonnage pour le message a cacher ?

— On adopte un signal sinusoıdal de frequence egale a 2500Hz. Justifiez ce choix.

4.

1. double-cliquez sur le scope qui affiche le signal que vous voulez traiter,

2. cliquez sur l’icone Parameters onglet History

3. decochez la case Limit data point to last

4. cochez la case Save data to workspace

5. donnez un nom explicite a la variable, par exemple out et choisissez le format Array, validez

6. relancez la simulation

7. out est un tableau accessible depuis le Command Window dont la premiere colonne est le temps, les colonnes

suivantes sont les valeurs prises par les signaux appliques au Scope. La commande plot(out( :,1),out( :,2))

permet d’afficher le premier signal.

F.BATEMAN 113

Page 120: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 3. BANCS DE FILTRES

— Realisez le message code, simulez-le, observez-le. Pour qu’il soit audible, regler l’amplitude

de la sinuosıde a 0.5. Ecoutez le message code.

— Inserez le message code dans le bloc reconstruction (amplitude du sinus cette fois reglee

a .0.05 ), lancez la simulation, visualisez et ecoutez le signal audio en sortie du bloc de

reconstruction (il sonne un peu metal). Le message en morse y est cache,

— Faites une copie due bloc analyse et inserez-le en sortie du bloc reconstruction. Observez

et ecoutez le detail D1, (au besoin amplifiez-le) .

3.4 Implementation de l’algorithme de steganographie

— Vous reprendrez le fichier DigitalProcessing.mdl realise lors de la seance de TP 2.2.2.

— Cablez et validez la chaıne d’acquisition et de restitution d’un signal analogique. Cette

chaıne comprend : l’amplificateur a decalage, le filtre a capacite commutee LTC1609, un

des convertisseurs analogique numerique 12 bits du microcontroleur DsPic30F6014 et un

convertisseur numerique analogique 12 ou 8 bits.

— Verifiez le bon fonctionnement de cette chaıne, vous pourrez en particulier appliquer a

l’entree du montage un signal issu de la sortie audio du PC et restituer la sortie du DAC

sur un haut parleur.

— Inserez le schema de simulation de l’algorithme de Mallat entre le bloc ADC du micro-

controleur et le bloc DAC.

— On ne dispose que d’un DAC et on ne peut donc connecter qu’un seul haut-parleur.

— Pour que le message cache audio soit audible, il faut ajouter un offset de 1 sur la sortie

D1 du bloc qui permet l’analyse du signal audio contenant le message et amplifier ce

message avec un gain de l’ordre de 50.

— Compilez et testez ce programme.

114 F.BATEMAN

Page 121: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 4

FILTRAGE ADAPTATIF

4.1 Objectif

Dans cette seance vous decouvrirez et implementerez des algorithmes d’identification para-

metrique dont la fonction est d’estimer, au sens d’un critere, les parametres du modele d’un

signal. Le but etant de realiser un filtre adaptatif. L’application proposee consiste a eliminer

le bruit qui couvre un message audio. Typiquement, les casques a reduction de bruit active ou

le controle actif de structures integrent ce type de technologie. Les methodes d’identification

etudiees sont tres largement utilisees dans des domaines tout aussi differents que le traitement

du signal, l’economie, l’automatique, etc.

4.1.1 Liste du materiel

— Carte de developpement BigDsPic6 + 2 cables USB + Boitier d’alimentation

— Bred board

— Carte a amplificateurs operationnelsSparkfun

— Filtre a capacite commutee, condensateurs 100nF, petits fils

— Carte DAC 12 bits Mikroelektronika ou Carte DAC 8 bits Mikroelektronika R2R

— Cable + prise jack, casque audio

— PC + MATLAB-SIMULINK, MPLAB

— GBF, oscilloscope, prises BNC, sonde d’oscilloscope, cable BNC.

4.1.2 Principes

Le signal qu’on cherche a caracteriser peut etre vu comme la reponse d’un filtre auquel

on a applique un signal ayant un spectre frequentiel suffisamment riche et dont on connaıt

les proprietes 1. Caracteriser le signal inconnu equivaut alors a connaıtre la structure et les

1. Pratiquement, on peut utiliser un bruit blanc ou une sequence binaire pseudo aleatoire ; a contrario un

signal harmonique fige en frequence presente un contenu frequentiel extremement pauvre.

115

Page 122: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 4. FILTRAGE ADAPTATIF

parametres du filtre.

4.2 Modele d’un signal

D’une maniere general, le signal en sortie du filtre peut etre decrit par une equation de la

forme :

y = f(η,x) (4.1)

ou y contient les sorties mesurees, η contient les parametres recherches et x contient des

variables supposees connues et appelees variables explicatives, ce seront par exemple la sequence

d’entrees appliquees au filtre et/ou les sorties mesurees passees. Pour illustrer ceci, on donne la

fonction de transfert d’un filtre a reponse impulsionnelle infinie :

Y (z)

U(z)=

b0 + · · ·+ bmz−m

1 + a1z−1 + · · ·+ apz−p(4.2)

L’equation de recurrence de ce processus qualifie d’ARMA (Auto Regressive Moving Average)

s’ecrit :

y(k) = −a1y(k − 1)− · · · − apy(k − p)︸ ︷︷ ︸

auto regressive AR

+ b0u(k) + . . . bmu(k −m)︸ ︷︷ ︸

moving average MA

(4.3)

soit :

y(k) = xη (4.4)

avec y = y(k), ηT =(

a1 . . . bm

)

, x =(

−y(k − 1) . . . u(k −m))

Le modele de ce filtre est lineaire en les parametres, ces derniers peuvent etre estimes au

moyen de la methode dite des moindres carres.

4.3 Les moindres carres

4.3.1 Les moindres carres simples

Soit le filtre lineaire decrit par le modele (4.5) :

yn = Xnη + ε (4.5)

ou n le nombre de mesures est superieur am le nombre de parametres a identifier. Le systeme

est dit surdetermine.

116 F.BATEMAN

Page 123: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

4.3. Les moindres carres

⋆ les n mesures yn =

y(1)

. . .

y(n)

⋆ le jeu de n variables explicatives Xn =

x1(1) . . . xm(1)

. . .

x1(n) . . . xm(n)

⋆ les m parametres a estimer η =

η1. . .

ηm

⋆ εn ∈ Rn represente les erreurs de modelisation.

On cherche une estimation η des parametres η qui minimise la somme des erreurs elevees au

carre :

J = minη

1

2

(ε(1)2 + . . . ε(n)2

)= min

η

1

2εTnεn = min

η

1

2(yn −Xnη)

T (yn −Xnη) (4.6)

On demontre que la solution de ce probleme a pour expression :

η = (XTnXn)

−1XTnyn (4.7)

ou η est le vecteur qui contient les estimations des parametres η du modele.

Dans ce qui suit, les signaux sont echantillonnes a 8kHz. Pour mieux percevoir les effets, il

n’est pas inutile de visualiser et d’ecouter les signaux generes. Pour ce faire, les signaux peuvent

etre enregistres dans un bloc Sinks simout To workspace puis ecoutes avec la fonction sound,

en precisant la frequence d’echantillonnage.

Identification des parametres d’un processus MA

On considere le processus a moyenne mobile (Moving Average) d’ordre un decrit par l’equa-

tion de recurrence :

y(k) = b0u(k) + b1u(k − 1) (4.8)

u ∼ N (0, 1) et y(0) = 0.

— Quel systeme simple pourrait, selon vous, etre decrit par ce type de processus (on peut

l’etendre a un ordre beaucoup plus eleve).

La fonction de transfert associee est celle d’un filtre RIF :

Y (z)

U(z)= b0 + b1z

−1 (4.9)

F.BATEMAN 117

Page 124: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 4. FILTRAGE ADAPTATIF

Il s’agit ici d’identifier les parametres b0 et b1 de ce filtre dont la structure est connue a

priori. L’equation de recurrence est lineaire en les parametres et l’on peut appliquer la methodes

des moindres carres simples.

On note ηT =

(

b0 b1

)

, yTn =

(

y(0), . . . , y(n))

avec n > 2 l’horizon des mesures et Xn la

matrice contenant les variables explicatives collectees sur l’horizon des mesures.

— Etablissez la structure de la matrice Xn.

Dans un premier temps, vous caracteriserez quelques proprietes du signal etudie :

— Ouvrez et simulez-le le fichier ProcessMA.mdl.

— Calculez et representez sur une meme figure la transformee de fourier fft du bruit. En

deduire la nature du filtre recherche. Vous pouvez aussi ecouter les sons correspondant

aux variables en entree et en sortie du filtre.

— Calculez avec les fonctions xcov et xcorr les fonctions d’autocovariance et d’autocorrela-

tion du bruit blanc d’entee u et de la reponse y. Interpretez la fonction d’autocorrelation.

Dans un second temps, vous identifierez les parametres du filtre qui permet de generer le

signal etudie :

— Completez ce schema de maniere a pouvoir enregistrer les tableaux contenant les variables

explicatives Xn et les mesures yn. Pour cela, il faut utiliser des blocs Sinkssimout.

Ceux-ci permettent de disposer des signaux simules dans l’espace de travail afin de pou-

voir operer a un post-traitement sous MATLAB. Pour que les mesures et les variables

explicatives apparaissent sous forme de tableaux dans MATLAB, les blocs To Workspace

doivent etre parametres comme Array. Ils peuvent etre precedes d’un bloc Mux a n

entrees si l’on souhaite enregistrer un tableau a n colonnes.

— Appliquer la methode des moindres carres et verifier que les parametres estimes sont

bien a ceux recherches. Pour cela, construisez sous SIMULINK et sur le meme schema, le

processus (??) ou le filtre correspondant (4.9).

— Soumettez-le au bruit a l’origine du signal recherche, tracez le spectre frequentiel du signal

obtenu et comparez-le a celui du spectre du signal recherche.

Identification des parametres d’un processus AR

On considere le processus auto-regressif (AR) d’ordre un decrit par l’equation de recurrence :

y(k) = −ay(k − 1) + bu(k) (4.10)

u ∼ N (0, 1) et y(0) = 0.

— Quel systeme simple pourrait, selon vous, etre decrit par ce type de processus (on peut

l’etendre a un ordre beaucoup plus eleve).

La fonction de transfert associee est celle d’un filtre RII :

Y (z)

U(z)=

b

1 + az−1(4.11)

118 F.BATEMAN

Page 125: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

4.3. Les moindres carres

Il s’agit ici d’identifier les parametres a et b de ce filtre dont la structure est connue a

priori (on suppose su le fait que le modele recherche est celui d’un systeme du premier ordre a

temps discret). L’equation de recurrence est lineaire en les parametres et l’on peut appliquer la

methodes des moindres carres simples.

— Ouvrez et simulez-le le fichier ProcessAR.mdl. Memes questions que pour le processus

MA.

Dans ce qui precede, les reponse y etaient supposees parfaites, or en realite, celles-ci sont

entachees de bruit. De ce fait, chaque nouvelle campagne de mesure fournit une estimation des

parametres differente des precedentes. Les parametres estimes sont des variables aleatoires que

l’on caracterise par leur moyenne et leur variance 2. Sous SIMULINK, ce bruit s’ajoute a la

reponse y et est modelise par un bloc SourcesBand limited white noise. Pour ce bloc :

— Noise power est la variance du bruit.

— Seed definit la sequence des variables aleatoires en sortie du bloc. Pour generer des bruits

non correles, il faut attribuer a chaque bloc un seed quelconque mais different des autres.

— Operez a plusieurs simulations (au moins 5) avec un noise power constant et egale a0.1

8000dont vous ferez varier le seed. Donnez dans chacun des cas une estimation des parametres.

— Dans le plan a, b portez les differentes estimations des parametres.

— Calculez la moyenne des parametres (fonction mean) et faire le constat que les para-

metres moyens estimes different des parametres vrais. L’estimation est dite biaisee.

— Calculez la variance des erreurs d’estimation (fonction var)

— Operez a plusieurs simulations (au moins 3) avec un bruit de mesure de variance crois-

sante, le seed restant constant. Evaluez les consequences de l’augmentation du noise power

du bruit de mesure sur le credit a apporter aux parametres estimes.

Autres processus

Il existe d’autres modeles de processus, notamment le modele ARMA (Auto Regressive Mo-

ving Average), ARX (Auto Regressive Exogen), ARMAX, etc. Toute la difficulte consiste lors

d’une phase d’identification a cerner le modele de processus ad’hoc

— Quel modele choisir ?

— Quel ordre pour le modele retenu ?

4.3.2 Algorithmes des moindres carres recursifs

L’expression de η nous oblige a tout recalculer lors de l’acquisition d’une nouvelle mesure.

Une formulation recursive de l’algorithme MCS est proposee afin d’identifier les parametres en

temps reel. On note ηn l’estimation des parametres obtenue apres n mesures. En posant yn la

nieme mesure :

Pn = (XTnXn)

−1

Qn = XTnyn

2. Hypothese est faite que ces parametres sont decrits par une loi normale

F.BATEMAN 119

Page 126: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 4. FILTRAGE ADAPTATIF

En posant xn le nieme vecteur ligne des variables explicatives, On demontre que :

ηn = ηn−1 +Pn−1xn

1 + xTnPn−1xn

(y(n)− xT

nηn−1

)(4.12)

Algorithme MCR

— η0 = 0

— Pn = Idm

Pour n = 1, 2, . . .

— k(n) =Pn−1xn

1 + xTnPn−1xn

gain visant a prendre en compte l’erreur d’estimation

— e(n) = y(n)− xTnηn−1 l’erreur d’estimation pour la nieme mesure

— ηn = ηn−1 + k(n)e(n) actualisation des parametres

— Pn = Pn−1 − k(n)xTnPn−1 actualisation de la matrice Pn

Vous allez maintenant implementer cet algorithme.

— Reprenez le schema realise sous SIMULINK utilise pour l’etude des processus MA.

— Copiez-collez dans ce schema un bloc User defined functionsEmbedded Matlab func-

tion, double-cliquez sur ce bloc et dans la feuille de l’editeur, implementez l’algorithme des

moindres carres recursifs et visualisez les parametres estimes sur un bloc SinksDisplay.

Pour plus de details sur ce bloc, reportez-vous au §3.7.2.— Avec les parametres estimes par l’algorithmeMCR et des blocsMaths OperationProduct

et DiscreteDelay, construisez le processus MA (4.8). Pour des filtres d’ordre plus eleve

vous utiliserez le bloc DiscreteDiscrete FIR filter en le parametrant de sorte que ses

coefficients soient definis en entree du bloc.

Implementation temps reel

— Une fois ce modele de simulation valide, vous l’insererez dans un template en vue d’im-

plementer cet algorithme sur le DsPic 30F6014A.

— Visualisez les parametres estimes au moyen d’un bloc Tx Labview Matlab et de l’interface

rs232gui.

— Visualisez le bruit blanc filtre et son estimation. Pour ce faire, il convient de traiter les

donnees collectees en appliquant la demarche suivante.

Les mesures d’acceleration et de hauteur sont stockes dans les variable R et Rn, les instants

auxquels sont associees ces mesures sont stockees dans le tableau t R et t Rn. Comme les

mesures d’acceleration sont prelevees a une frequence double de celles de hauteur, le tableau R

a la structure suivante Tab.4.1) :

120 F.BATEMAN

Page 127: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

4.4. Reduction de bruit active

NaN y

x NaN

x NaN

Nan y

x NaN

x NaN

NaN y

. . . . . .

Figure 4.1 – Structure de R

Ou NaN est l’acronyme de Not a Number. Il faut donc dans un premier temps reconstruire

un tableau dans lequel les NaN n’apparaissent pas.

— Ecrivez un script sous MATLAB qui permette de stocker dans deux vecteurs les donnees

numeriques contenues dans Rn. Vous pouvez utiliser avec profit les fonctions suivantes :

— Rn( :,1), Rn( :,2) permettent respectivement d’acceder a la premiere et a la seconde

colonne de Rn.

— isnan

— find

4.4 Reduction de bruit active

4.4.1 Principe

Une source de bruit externe b (par exemple le bruit ambiant dans la cabine d’un avion) per-

turbe un message audio m (message recu au moyen d’un casque audio par le pilote). Cependant,

le bruit interne b entendu dans le casque n’est pas tout a fait le bruit externe. Il est, du fait des

ecouteurs, attenue et dephase. Toutefois b et b sont correles et b peut etre vu comme la reponse

de b a un filtre inconnu F. Le signal entendu s’ecrit :

mb = m+ b (4.13)

Pratiquement, un premier microphone est utilise pour mesurer le bruit ambiant b tandis

qu’un second microphone implante dans les ecouteurs est utilise pour mesurer le message bruite

mb. La methode des MCR permet d’identifier en ligne les parametres du filtre F et par suite, de

produire avec ce filtre, a partir de b une estimationˆb de b. Cette estimation est alors soustraite

de mb en vue de restituer une estimation m de m.

4.4.2 Simulation

Ouvrez le fichier NoiseCancel.mdl et completez-le en procedant comme suit :

— Comme on ne dispose pas de tous ces equipements, le bruit b est genere par un SourcesBand

Limited White Noise echantillonne a 18000

s et de puissance 18000

. Il est accessible depuis

le out micro1.

F.BATEMAN 121

Page 128: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 4. FILTRAGE ADAPTATIF

— Le bruit interne b est la reponse du filtre F a reponse impulsionnelle finie d’ordre 10 dont

les coefficients sont a priori inconnus. Il modelise les effets des ecouteurs qui tendent a

etouffer le bruit externe sans pour autant le supprimer.

— Le message m est le fichier handel, on y accede en tapant load handel, par defaut le son

est contenu dans la variable y. On l’ecoute avec la fonction sound. Vous pouvez toutefois

produire vos propres messages avec la fonction audiorecorder. Generez le message m avec

un bloc Sourcesimin et ajoutez-le a b pour produire mb.

— Reprenez le schema sur lequel vous avez implemente l’algorithme MCR et modifiez-le

pour identifier les parametres d’un filtre d’ordre 10 et generer le filtre correspondant.

Le vecteur de dimension 11 contenant les sequences b(k), b(k − 1), b(k − 2), . . . , b(k − 10)

pourrait etre realisees avec 10 blocs Discretedelay. Il est cependant plus simple d’utiliser

le bloc DiscreteTaped delay parametre comme il se doit.

— A partir du bruit interne estimeˆb et du message bruite mb (visualisez-les sur un meme

Scope), reconstruisez le message m et ecoutez-le.

Remarque : On peut effectuer la procedure d’identification a une frequence qui soit un sous-

multipe de 18000

en inserant des bloc Rate Transition en amont et en aval de l’Embedded Matlab

Function.

4.4.3 Implementation sur le microcontroleur

Programme en C, le DsPic est, compte-tenu du volume de calculs, trop lent pour appliquer

la methode des moindres carres recursifs a un systeme d’ordre 10 echantillonne a 8000Hz avec

des nombres de type single. On va donc, pour realiser un demonstrateur, considerer un filtre

RIF d’ordre 4 et un signal echantillonne a 1000Hz. Il n’est donc pas possible avec l’outil de

programmation dont nous disposons d’implementer en temps reel 3 l’algorithme simule dans la

section precedente. Nous allons donc travailler sur ce meme algorithme avec des signaux audio

de plus basse frequence et avec des cadences d’echantillonnages plus petites.

Le signal audio

— Mettez en œuvre la chaıne d’acquisition/restitution d’un signal l’amplificateur audio com-

prenant l’amplificateur a decalage, (le filtre a capacites commutees est facultatif), le CAN

et le CNA (8 ou 12 bits).

— Ouvrez le fichier DigitalProcessing.mdl constuit lors du TP 2.2.2 qui realise une chaıne

d’acquisition d’un signal analogique, de numerisation, de traitement et de restitution d’un

signal analogique.

— Modifiez le Fixed Step Time et le Sample Time pour que les signaux soient echan-

tillonnes a 1000Hz.

— Modifiez ce fichier de sorte que le signal sinusoıdal apres numerisation par le CAN

soit centre sur zero.

— Apres traitement et avant la restitution sur le CNA, il faut egalement ajouter un

offset au signal que l’on veut par exemple ecouter (+127 sur CNA 8 bits suivie d’une

3. Il existe une bibliotheque fournie par Microchip qui realise cette fonction, elle est programmee en Assembler

et utilise des fonctionnalites specifiques au processeur de traitement de signal du 30F6014.

122 F.BATEMAN

Page 129: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

4.4. Reduction de bruit active

attenuation d’un facteur 16, +2048 sur CNA 12 bits sans attenuation), de sorte que

le signal en sortie du CNA ∈ [0, 5V ].

— Appliquez a l’entree du CAN (ou du filtre a capacites commutees s’il est cable) le signal

audio en provenance d’une source externe (sortie GBF - signal sinusoıdal 180Hz - valeur

moyenne 2.048 V - amplitude crete 1V).

— Verifiez le bon fonctionnement en restituant directement sur haut-parleur le message

analogique traite par le CAN-CNA. Le son n’est malheureusement pas tres bon, ce type

de haut-parleur n’est pas concu pour restituer les basses.

La reduction de bruit active

Inserez le schema de la reduction de bruit active realise sous SIMULINK au §4.4.2. Pour qu’ilpuisse fonctionner, les modifications suivantes s’imposent :

— Modifiez les Sample Time des differents blocs pour que ceux-ci operent a 1000Hz.

— Modifiez leNoise Power du bruit blanc de sorte que celui-ci bruite effectivement le message

audio issu du CAN (∈ [−2048, 2047]). Pour ce bloc, le noise power represente l’amplitude

du bruit soit ±3

1

Tset

1

Tset la variance du bruit, inversement proportionnelle au

Sample Time. Il faut donc que les amplitudes du bruit et du signal audio aient des

amplitudes du meme ordre de grandeur.

— Dimensionner avec l’outil fdatool un filtre RIF d’ordre 4 (en lieu et place de l’ordre 10

teste precedemment). Les caracteristiques de ce filtre sont :

— Ordre 4 echantillonne a 1000Hz,

— attenuation de 1 dB dans la bande [0,200Hz],

— attenuation 40dB dans la bande [400, 500Hz],

— Pensez a modifier le nombre de retard dans le bloc Tapped Delay et les dimensions

des matrices et vecteurs dans l’algorithme des moindres carres.

Verifiez le bon fonctionnement en :

— Restituant directement sur haut-parleur via le CNA le signal audio bruite.

— Restituant sur haut-parleur le signal issu du module de controle actif du bruit.

F.BATEMAN 123

Page 130: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP 4. FILTRAGE ADAPTATIF

124 F.BATEMAN

Page 131: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

ANNEXE A

Liste des fichiers MATLAB-SIMULINK

Fichier § Titre fourni (f)/a produire(p)

Sequence 1 1.1.2

Sequence1 1.mdl Systemes continus p

Systemes echantillonnes-bloques

Systemes echantillonnes-bloques

1.1.3 Quantification

Sequence1 2.mdl 1.2 A propos des nombres f

Sequence1 3.mdl 1.2.1 Deux integrateurs p

Sequence1 4.mdl Multiple sample time f

Sequence 2

Chenillard.mdl 2.4 Chenillard p

Sequence 3

Bascule T.mdl 3.1 Bascule T p

Test Tx.mdl 3.2 transmission donnees RS232 p

Test Rx Tx.mdl reception-emission de donnees 1 f

Test Rx Tx1.mdl reception-emission de donnees 2 p

Test Rx Tx3.mdl reception-emission d’un flux de donnees 2 p

Visualisation.mdl 3.2.3 visualisation des signaux p

SPI CNA12bits 3.3 CAN12 bits controle par bus SPI p

PWM1.mdl 3.4.2 Generation d’une PWM p

PWM2.mdl 3.4.3 Decodage d’une PWM p

CAN.mdl + essai.c 3.5 Convertisseur Analogique Numerique f

125

Page 132: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

Annexe A. Liste des fichiers MATLAB-SIMULINK

I2C1.mdl 3.6 Commande brushless 8 bits p

I2C2.mdl 3.6 Commande brushless 11 bits p

I2C3.mdl 3.6 Lecture d’un octet depuis un bus I2C f

Program en C.mdl 3.7.1 Premier exemple f

Program en C1.mdl 3.7.1 Second exemple p

Embedded.mdl 3.7.2 Insertion de code MATLAB f

Automate.mdl 3.8 Machine a etats - Stateflow f

TP1 AUTO

DigitalProcessingCNA12bits.mdl Echantillonnage-CAN12bits-CNA12bits p

DigitalProcessingCNA8bits.mdl Echantillonnage-CAN12bits-CNA8bits p

essai.c Code C gestion du port B ou D pour CNA 8 bits f

TP2 AUTO

ProfildAile.m Modele de la force de portance p

mcs.mdl Generations de donnees pour algorithmes d’identification p

mcr.m Fichier .m pour l’algorithme mcd embedded p

algo gradient.m Algorithme du gradient p

algo gauss newton1.m Algorithme de Gauss-Newton p

TP3 AUTO

I2C3 f

TPMoteur p

TP4 AUTO

Attitude observer.mdl p

Lecture MTI.mdl f

IMU With MTI.mdl p

MT xxxx xxxx.txt p

TP5 AUTO

Collect Data.mdl f

Caractbruit.m p

InitKF.m p

KF.mdl p

FiltreKalman.mdl p

FiltComp.m p

FiltreComplementaire.mdl p

126 F.BATEMAN

Page 133: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce

TP6 AUTO

Commande Hexa Template.mdl f

Commande Hexa PD.mdl p

Commande Hexa RE.mdl p

TP1 TS

DigitalProcessingCNA12bits.mdl Echantillonnage-CAN12bits-CNA12bits p

DigitalProcessingCNA8bits.mdl Echantillonnage-CAN12bits-CNA8bits p

essai.c Code C gestion du port B ou D pour CNA 8 bits f

TP2 TS

PremiersFiltres Premiers filtres numeriques p

Rejection 50Hz

Filtres RIF a phase lineaire

filtre RIF1.m Synthese de filtres RIF p

RIF1.mdl Realisation et test du filtre RIF p

RII2.mdl Realisation et test du filtre RII p

DigitalProcessingCNA12bits.mdl Echantillonnage-CAN12bits-CNA12bits f

DigitalProcessingCNA8bits.mdl Echantillonnage-CAN12bits-CNA8bits f

essai.c Code C gestion du port B ou D pour CNA 8 bits f

TP3 TS

BancFiltres p

BancFiltresR2R p

DigitalProcessingCNA8bits.mdl Echantillonnage-CAN12bits-CNA8bits f

essai.c Code C gestion du port B ou D pour CNA 8 bits f

TP4 TS

ProcessMA.mdl f

ProcessAR.mdl f

MCR MA.mdl p

MCR AR.mdl p

MCR RealTime.mdl p

FiltreAdaptatifOrdre.mdl p

DigitalProcessingCNA12bits.mdl Echantillonnage-CAN12bits-CNA12bits f

DigitalProcessingCNA8bits.mdl Echantillonnage-CAN12bits-CNA8bits f

essai.c Code C gestion du port B ou D pour CNA 8 bits f

NoiseCancelCNAR2R.mdl p

F.BATEMAN 127

Page 134: DEPARTEMENT DES V´ EHICULES A´ EROSPATIAUX´francois-bateman.e-monsite.com/medias/files/booktmeautomatic-2.pdf · A Liste des fichiers MATLAB-SIMULINK 125 iii. Introduction Ce