Académique Documents
Professionnel Documents
Culture Documents
MODULE D’INGÉNIERIE
GÉNIE ÉLECTRIQUE
PROJET DE CONCEPTION EN INGÉNIERIE (6GIN333)
Rapport final
Projet # : 109
Conception d’un électromyogramme
Préparé par
Jean-Daniel Coudé
Pour
(PROMOTEUR)
Hung Tien Bui
UQAC
30 Avril 2010
Nom du conseiller
Date
Signature
Page 2
Conception d’un électromyogramme – Rapport final 6GIN333
Remerciements
Je tiens à remercier quelques personnes sans qui ce projet n’aurait jamais été une
aussi grande réussite dans les délais demandés. Les personnes que je souhaite remercier
sont : M. Dany Ouellet, M. Richard Martin et M. Hung Tien Bui.
Monsieur Ouellet était mon conseiller de projet, il m’a bien orienté devant les
quelques difficultés que j’ai rencontrées et il a bien répondu à mes questions.
Monsieur Bui, le promoteur du projet m’a toujours éclairé sur quelques points du
projet et il était toujours disponible pour répondre aux questions.
Page 3
Conception d’un électromyogramme – Rapport final 6GIN333
Résumé
Page 4
Conception d’un électromyogramme – Rapport final 6GIN333
Remerciement ............................................................................................................................... 3
Résumé .......................................................................................................................................... 4
1. Introduction .............................................................................................................................. 9
Page 5
Conception d’un électromyogramme – Rapport final 6GIN333
Page 6
Conception d’un électromyogramme – Rapport final 6GIN333
Figure 2 : Sonde (triode) pour capter les signaux des muscles .............................................. 10
Figure 8 : Préamplificateur pour les signaux obtenus par les muscles ................................. 20
Page 7
Conception d’un électromyogramme – Rapport final 6GIN333
Page 8
Conception d’un électromyogramme – Rapport final 6GIN333
1. Introduction
Page 9
Conception d’un électromyogramme – Rapport final 6GIN333
Page 10
Conception d’un électromyogramme – Rapport final 6GIN333
Page 11
Conception d’un électromyogramme – Rapport final 6GIN333
Page 12
Conception d’un électromyogramme – Rapport final 6GIN333
Le second type est l’électrode aiguille, ce type est utilisé pour le diagnostic
médical d’où l’importance d’avoir un diplôme pour pouvoir l’utiliser. Les mesures prises
sont toutefois beaucoup plus précises et permettent d’établir des diagnostics sur la
présence d’un muscle atrophié ou encore le dysfonctionnement des nerfs. Donc dans le
projet, pour vérifier le fonctionnement de l’électromyogramme, la force qui sera
développée par le muscle devrait être proportionnelle à l’amplitude du signal. Dans
chacune des catégories, il existe un nombre impressionnant de types d’électrode
différents.
Page 13
Conception d’un électromyogramme – Rapport final 6GIN333
Fréquence Fréquence
Type Tension
basse(Hz) haute (Hz)
Du tableau, on voit que chacun des signaux possède ces propres caractéristiques
ce qui permet de déterminer qu’elles sont les critères que l’on doit avoir pour bien filtrer
notre signal. Si l’on observe le signal EMG, son amplitude varie d’une valeur allant de
10 µV à 3 mV. Une aussi grande plage de valeur s’explique par le fait que plusieurs
paramètres sont à prendre en considération soit : le positionnement de l’électrode, la
préparation préalable de la peau et aussi la grosseur du muscle étudié.
Du côté de la fréquence, on peut voir que la bande de fréquence qui est présente
dans le signal obtenu par les muscles et les nerfs est très large (environ 3KHz). Il est très
difficile d’obtenir une valeur exacte concernant la fréquence haute du signal.
Page 14
Conception d’un électromyogramme – Rapport final 6GIN333
Dans certains volumes, ils affirment que la fréquence haute peut atteindre des fréquences
de 3KHz alors que dans d’autres, ils prétendent que la fréquence haute est de 1KHz
maximum. Une explication que l’on peut donner est que cela change beaucoup en
fonction du muscle que l’on veut étudier, un muscle petit ne possèdera pas
nécessairement le même spectre de fréquences qu’un muscle de plus grandes dimensions.
Une recherche plus arrondie a permis de découvrir que l’ensemble des muscles respecte
le spectre en fréquence suivant (figure 5).
Page 15
Conception d’un électromyogramme – Rapport final 6GIN333
Le filtre présenté si dessus est idéal, donc pour le projet il ne sera pas
nécessairement identique à celui-ci. Les contraintes de coût ainsi que les contraintes pour
le traitement numérique (erreur de quantification) vont occasionner des modifications sur
la réponse en fréquence du filtre utilisé. Les justifications, des choix réalisés ainsi que la
réponse en fréquence sera présentée dans les sections ultérieures.
Page 16
Conception d’un électromyogramme – Rapport final 6GIN333
Dans cette section, il sera présenté les recherches qui ont été effectuées pour
déterminer de quelle manière doit être traité le signal de l’électromyogramme. À la fin,
un schéma présentera les éléments qui doivent être en place pour rendre le signal obtenu
par la sonde (triode) proportionnelle à la force développée par le muscle ciblé. Par la
suite, chacune des parties sera reprise avec beaucoup plus de détail qui justifiera la
sélection et le choix des différentes composantes.
Page 17
Conception d’un électromyogramme – Rapport final 6GIN333
Page 18
Conception d’un électromyogramme – Rapport final 6GIN333
Les éléments de conception qui ont été réalisés dans le projet seront présentés en
détail. Les éléments sont :
¾ Préamplificateur
¾ Décalage de la tension
¾ Filtre pour échantillonnage
¾ Convertisseur A/N
¾ Traitement numérique
¾ Convertisseur N/A
¾ Filtre pour l’affichage
3.1 Préamplificateur
Page 19
Conception d’un électromyogramme – Rapport final 6GIN333
Afin d’éviter les erreurs de mesure, le préamplificateur doit être très précis et
posséder un bon taux de réjection du mode commun. Le taux de réjection du mode
commun assure que l’étage différentiel est de haute qualité. Étant donné que le signal est
faible, le gain est aussi un critère pour la sélection du préamplificateur, il est important
qu’il possède un bon gain. Enfin, la bande passante du préamplificateur doit être adéquate
au projet. Connaissant les critères pour la sélection du préamplificateur, une recherche a
permis de trouver un amplificateur d’instrumentation spécialisé pour les signaux
d’électrocardiogramme (ECG), d’électroencéphalogramme (EEG), d’électromyogramme
(EMG). L’amplificateur d’instrumentation est le INA121. Il possède toutes les
caractéristiques énumérées précédemment pour avoir un bon amplificateur de faibles
signaux. Les caractéristiques de cet amplificateur sont :
Page 20
Conception d’un électromyogramme – Rapport final 6GIN333
L’amplificateur INA121 permet d’avoir un gain qui peut atteindre des valeurs
allant jusqu’à maximum 10 000. Afin de vérifier qu’elle était la tension qu’il était
possible d’avoir avec la flexion du biceps, des tests ont été effectués avec un gain de 100.
Suite à plusieurs flexions, un tel gain a permis d’avoir un signal à la sortie allant de -150
à 150 mV lors de flexions maximales du biceps. Le signal du muscle est donc d’environs
3mV au maximum (crête crête). Pour le convertisseur analogique numérique la tension
devait être amené à environ -1.5 à 1.5 V, l’amplificateur fut donc testé avec un gain de
1000. Le gain de 1000 a permis d’avoir le signal exactement dans l’intervalle désiré.
Page 21
Conception d’un électromyogramme – Rapport final 6GIN333
Il fut très difficile de bien voir le signal obtenu vu qu’un bref mouvement de la
sonde engendre beaucoup de données faussées. Il a été réalisé plusieurs flexions
maximales pour voir que les données étaient sensiblement les mêmes lorsque la sonde ne
bougeait pas et lorsqu’elle était à la même position sur le muscle. Un autre problème qui
a été observé durant cette section est que le niveau de tension continu de la sonde est très
instable et change beaucoup ce qui va rendre très difficile l’acquisition par le
convertisseur analogique numérique.
Page 22
Conception d’un électromyogramme – Rapport final 6GIN333
Cet élément est utilisé pour modifier le signal pour qu’il soit possible de faire la
conversion analogique numérique par le convertisseur MCP3001. La raison pour cette
modification sera présentée dans la section 4.4 convertisseur A/N. Pour le moment
l’objectif est d’amener le signal du préamplificateur qui va de -1.5 à 1.5V vers un signal
dont la plage des valeurs va de 0 à 3V. L’élément utilisé pour cette fonction est un
amplificateur opérationnel qui ajoutera un décalage offset de la tension.
Fonction de transfert :
Page 23
Conception d’un électromyogramme – Rapport final 6GIN333
Bien qu’il soit possible d’ajouter un gain à ce type de montage, il n’est pas utile
de le faire pour le projet. Pour le projet, il suffit d’additionner une tension continue, de
1.5V+offset INA121 au signal du préamplificateur. Les résistances qui seront
sélectionnées auront la même valeur pour avoir un gain unitaire (R0=R1=R2=100kΩ). Il
faudrait aussi ajouter un potentiomètre afin de permettre que l’ajout d’offset soit variable,
cela permet facilement de faire varier la tension pour corriger le décalage occasionné par
le INA121.
Page 24
Conception d’un électromyogramme – Rapport final 6GIN333
Afin de suivre les transformations que subit le signal, voici un signal aléatoire qui
pourrait être enregistré par l’électromyogramme. La figure présente une idée générale de
la forme du signal à la sortie d’un chacun des blocs vus précédemment.
Page 25
Conception d’un électromyogramme – Rapport final 6GIN333
Page 26
Conception d’un électromyogramme – Rapport final 6GIN333
Le convertisseur envoie les bits selon une interface en série (SPI serial interface)
donc, pour procéder à la conversion des données analogiques, il est nécessaire de
respecter une certaine procédure qui est présentée dans la fiche technique du MCP3001.
Une programmation en VHDL sur le programme Quartus fut créée pour assurer que la
synchronisation est parfaite et que la fréquence d’échantillonnage est respectée. Tout
d'abord, voici le graphique fourni avec la fiche technique du MCP3001 montrant la façon
dont les bits sont envoyés par le convertisseur.
Page 27
Conception d’un électromyogramme – Rapport final 6GIN333
Suite à la création des deux horloges, une séquence d’acquisition des données au
bon moment fut créée en VHDL. En affichant la valeur obtenue sur des D.E.L., il fut
possible de voir que la synchronisation était parfaite et que le convertisseur analogique
numérique fonctionnait parfaitement. La seule chose qui reste à ajuster est d’avoir la
bonne fréquence d’échantillonnage. Le test fait avec une horloge CLK_ADC de 100KHz,
donne une fréquence d’échantillonnage de 6.66KHz. Pour avoir la fréquence
d’échantillonnage désiré (10KHz), il suffit d’ajuster la CLK_ADC en faisant une simple
règle de trois.
Page 28
Conception d’un électromyogramme – Rapport final 6GIN333
Page 29
Conception d’un électromyogramme – Rapport final 6GIN333
Page 30
Conception d’un électromyogramme – Rapport final 6GIN333
60 coefficients
Magnitude Response (dB)
4
0
Magnitude (dB)
-2
-4
-6
-8
0 0.1 0.2 0.3 0.4 0.5 0.6
Frequency (kHz)
70 coefficients
Magnitude Response (dB)
4
0
Magnitude (dB)
-2
-4
-6
-8
0 0.1 0.2 0.3 0.4 0.5 0.6
Frequency (kHz)
80 coefficients
Magnitude Response (dB)
4
0
Magnitude (dB)
-2
-4
-6
-8
0 0.1 0.2 0.3 0.4 0.5 0.6
Frequency (kHz)
Page 31
Conception d’un électromyogramme – Rapport final 6GIN333
90 coefficients
Magnitude Response (dB)
4
Magnitude (dB)
-2
-4
-6
-8
0 0.1 0.2 0.3 0.4 0.5 0.6
Frequency (kHz)
Si l’on observe les quatre graphiques précédents, celui qui possède la meilleure
réponse avec le plus petit nombre de coefficients est celui avec 80 coefficients. Les deux
premiers (60 et 70) ne coupent pas assez en basse fréquence. Le filtre choisi pour le projet
possède donc 80 coefficients. Bien que ce nombre paraît être beaucoup, une fois quantifié
(réduction de la précision), le nombre est réduit à 49. Voici une synthèse présentant les
principales caractéristiques du filtre numérique sélectionné pour le projet sans la
quantification. L’erreur de quantification occasionnée par la réduction des coefficients
sera présentée par la suite.
Réponse impulsionnelle
Impulse Response
0.08
0.06
Amplitude
0.04
0.02
-0.02
0 1 2 3 4 5 6 7 8
Time (mseconds)
Page 32
Conception d’un électromyogramme – Rapport final 6GIN333
Pôles et Zéros
Pole/Zero Plot
0.8
0.6
0.4
-0.2
-0.4
-0.6
-0.8
-1
-10
-20
Magnitude (dB)
-30
-40
-50
-60
-70
-80
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5
Frequency (kHz)
Phase Response
-2
-4
-6
Phase (radians)
-8
-10
-12
-14
-16
-18
Page 33
Conception d’un électromyogramme – Rapport final 6GIN333
Erreur du filtre
Afin de réduire le nombre de coefficients, il est possible de réduire la précision de
ceux-ci. En réduisant la précision, certains coefficients tombent égaux à zéro, ce qui
réduit l’espace nécessaire. Le prix à payer pour la réduction de la précision des
coefficients est l’apparition d’erreurs sur la réponse en fréquence. En faisant l’acquisition
numérique sur 10 bits fait aussi apparaître une erreur de quantification. L’outil FDAtool
permet de visualiser l’erreur obtenue selon la précision des coefficients qui est
sélectionnée. Si l’on observe le graphique suivant, on peut voir que l’erreur occasionnée
n’affecte pas le projet étant donné que l’erreur se retrouve principalement dans la bande
coupée.
Magnitude Response Estimate
-30
-40
-50
-60
-70
Page 34
Conception d’un électromyogramme – Rapport final 6GIN333
3.5.2 Redressement
Page 35
Conception d’un électromyogramme – Rapport final 6GIN333
La manière qui a été sélectionnée pour faire la conversion des valeurs numériques
en valeurs analogiques est l’utilisation du AD5611. Bien que plusieurs façons ont été
étudiées pour faire le même travail comme une convertisseuse R2R, l’avantage du
AD5611 est qu’il n’est pas trop dispendieux et qu’il fonctionne avec un seul fils. Un autre
avantage du AD5611 est que son fonctionnement est sensiblement le même que le
MCP3001. La résolution du AD5611 est aussi de 10bits et il fonctionne selon une
interface série (SPI serial interface) comme pour le MCP3001. Il était avantageux
d’utiliser ce type de convertisseur puisque le MCP3001 fonctionne bien, il était facile de
faire quelques modifications pour réussir à faire la conversion avec le AD5611. Voici la
synchronisation qu’il faut respecter sur l’envoi de chacun des bits.
Page 36
Conception d’un électromyogramme – Rapport final 6GIN333
Page 37
Conception d’un électromyogramme – Rapport final 6GIN333
Le filtre pour l’affichage est un filtre passe-bas RC de premier ordre comme pour
le filtre de l’échantillonnage. La fonction de ce filtre est de rendre la courbe affichée à
l’oscilloscope plus linéaire, il est utilisé pour enlever les valeurs discrètes et lisser la
courbe lors de l’affichage. La précision n’est pas nécessaire pour ce filtre, un simple filtre
RC fait parfaitement le travail et son coût est négligeable, soit une résistance et un
condensateur. La fréquence de coupure du filtre a été choisie en faisant des tests visuels.
Une fréquence de coupure de 5 Hz donnait un résultat parfait. Pour trouver les valeurs
des composantes nécessaires, on utilise la même relation que tantôt soit :
Page 38
Conception d’un électromyogramme – Rapport final 6GIN333
Bien que le FPGA utilisé pour créer le prototype est celui-ci de la plaque Altera
(Cyclone II EP2C35F672C6), une évaluation de l’espace nécessaire pour le traitement
numérique a été réalisée pour déterminer lequel des FPGA sur le marché peut accomplir
le travail. Le FPGA choisi est cyclone EP1C3T100C8N. Le tableau montre que le projet
possède un coût total de 52.69 $. Ce montant est inférieur au prix de l’électromyogramme
présent sur le marché. Les prix peuvent atteindre des valeurs allant de 300 $ à 400 $ ce
qui prouve que le prototype créé est beaucoup plus avantageux. Une recherche encore
plus approfondie permettrait sans aucun doute d’améliorer les performances ainsi que le
coût de l’électromyogramme.
Page 39
Conception d’un électromyogramme – Rapport final 6GIN333
5. Analyses et discussions
La programmation VHDL a été réalisée par blocs [figure 30]. Lorsqu’une partie
était terminée, elle était immédiatement testée. En utilisant cette démarche, il fut possible
de s’assurer que tous fonctionnaient bien avant de passer à l’étape suivante. Une fois que
les convertisseurs fonctionnaient bien, le filtrage numérique a été étudié. L’outil utilisé
est le module FDAtool dans le logiciel MATLAB. Cet outil permet de concevoir
rapidement des filtres numériques et de voir ce que produit la variation de différents
paramètres. Le choix du filtre s’est fait avec FDAtool, car il permet de faire la
programmation VHDL et de donner l’erreur de quantification du filtre. Le filtre a été testé
avec un sinus pour déterminer si les fréquences de coupures correspondaient.
Page 40
Conception d’un électromyogramme – Rapport final 6GIN333
Pour une raison qu’on ignore, la fréquence de coupure haute du filtre ne correspondait
pas exactement à la valeur attendue. Les fréquences de coupures mesurées sont : 86 et
845 Hz au lieu de (67-450 Hz). Sans être certain, la variation est peut-être due à une
erreur sur la fréquence d’échantillonnage du convertisseur analogique numérique.
Le point faible du projet est la sonde (triode) pour capter les signaux, elle possède
un niveau de tension continue peu stable et très sensible. Ce problème rend difficile la
lecture des signaux. Avoir eu plus de temps, il aurait été intéressant d’utiliser une autre
sonde ou encore l’utilisation d’un gel spécialisé. Le point fort du projet est tout le
traitement numérique fait dans le FPGA, celui-ci est complet et facile à modifier pour
faire des ajustements ou encore être utilisé pour obtenir d’autres filtres numériques. Il
pourrait aussi être utilisé dans d’autre projet ou le traitement numérique est nécessaire.
Un autre point qui a bien fonctionné est la communication avec les convertisseurs. Ceux-
ci offrent une excellente stabilité dans leur conversion ainsi qu’une impressionnante
précision.
Page 41
Conception d’un électromyogramme – Rapport final 6GIN333
6. Conclusion et recommandations
Page 42
Conception d’un électromyogramme – Rapport final 6GIN333
Bibliographie
Page 43
Conception d’un électromyogramme – Rapport final 6GIN333
ANNEXE – A INA121
Le INA121 est composé de deux étages distincts soit le premier étage (A1 et A2)
servant à la réjection du mode commun et le second étage A3 qui s’agit d’un
amplificateur de différence. L’étage d’entrée est monté de manière à ce qu’il ne génère
pas d’erreur de mode commun de par sa symétrie. Dans le cas ou l’amplificateur est idéal,
si VIN+ = VIN- = V, on retrouve V en entrée de l’amplificateur de différence. En faisant
une étude du circuit, par superposition, on obtient :
Page 44
Conception d’un électromyogramme – Rapport final 6GIN333
Page 45
Conception d’un électromyogramme – Rapport final 6GIN333
+ -
Sortie du signal
R6=1M INA 121
+
R2=100K -
-
R
+
R5=1M
-
Page 46
Conception d’un électromyogramme – Rapport final 6GIN333
Ce diagramme présente les parties de la programmation VHDL qui a été réalisée pour le
projet.
Entrées et sorties
CLK : in std_logic;
ADC_din : in std_logic;
Bouton : in std_logic;
CLK_CS_ADC : buffer std_logic;
CLK_CS_DAC : buffer std_logic;
CLK_ADC : buffer std_logic;
CLK_DAC : buffer std_logic;
DAC_out : out std_logic;
Page 47
Conception d’un électromyogramme – Rapport final 6GIN333
Code du projet
----------------------------------------------------------------------
-- Processus pour diviser la fréquence CLK_ADC (150KHz)
-----------------------------------------------------------------------
Div1: process (CLK)
begin
if rising_edge(CLK) then
if CNT1 < 167 then
CNT1 := CNT1 + 1;
else
CLK_ADC <= not(CLK_ADC);
CNT1 := 0;
end if;
end if;
end process Div1;
Cette section utilise l’horloge (CLK) de 50 MHz du bord Altera pour créer une horloge
(CLK_ADC) de 150 KHz pour contrôler le convertisseur MCP3001.
----------------------------------------------------------------------
-- Processus pour diviser la fréquence (ADC_CS)(fe = 5KHz)
-----------------------------------------------------------------------
Div2: process (CLK_ADC)
begin
if falling_edge(CLK_ADC) then
CNT2 := CNT2 + 1;
if CNT2 < 14 then
CLK_CS_ADC <= '0';
elsif CNT2 = 14 then
CLK_CS_ADC <= '1';
elsif CNT2 = 15 then
CNT2 := 0;
end if;
end if;
end process Div2;
Cette section utilise l’horloge (CLK_ADC) pour créer le CS_ADC qui active la
conversion (Fréquence d’échantillonnage de 10 KHz).
Page 48
Conception d’un électromyogramme – Rapport final 6GIN333
-----------------------------------------------------------------------
-- Processus pour transferer la valeur de l'ADC
-----------------------------------------------------------------------
ADC: process (CLK_ADC, CLK_CS_ADC)
begin
Le code présenté précédemment sert à capter les données envoyées par le MCP3001 au
bon moment.
Page 49
Conception d’un électromyogramme – Rapport final 6GIN333
------------------------------------------------------------------------
-- Processus pour signer le signal (SIGN)
------------------------------------------------------------------------
begin
if data_ADC >= "1000000000" then
filtre_in <= data_ADC - "1000000000";
else
filtre_in <= data_ADC + "1000000000";
end if;
end process SIGN;
Avant d’entrer dans le filtre, les valeurs doivent être signées en complément deux. Le
complément deux est utilisé parce qu’il permet de réduire les calculs dans le domaine
numérique. Le code du filtre n’est pas présnté, car celui-ci est très long (environ 1000
lignes de codes) et répétitif pour les calculs et la création de chacun de coefficient.
------------------------------------------------------------------------
-- Processus pour enlever le signe du signal (UNSIGN)
------------------------------------------------------------------------
begin
if filtre_out >= "1000000000" then
data_UNSIG <= filtre_out - "1000000000";
else
data_UNSIG <= filtre_out + "1000000000";
end if;
end process UNSIG;
Cette section réalise l’opération inverse que tantôt soit enlevée la représentation signée de
complément deux ce qui permet de retrouver le signal.
Page 50
Conception d’un électromyogramme – Rapport final 6GIN333
------------------------------------------------------------------------
-- Processus pour redresser le signal
------------------------------------------------------------------------
begin
if filtre_out(9) = '1' then
data_RED1 <= filtre_out;
else
data_RED1 <= "1111111111" - filtre_out;
end if;
end process RED;
data_RED <= not(data_RED1);
Comme expliquer a la section 5.4.2, le signal est redressé avec ce code de programmation
VHDL.
------------------------------------------------------------------------
-- Processus pour sélectionner le redressement
------------------------------------------------------------------------
begin
Pour la programmation du AD5611, celle-ci est semblable à celle du MCP3001, elle n’est
donc pas présentée.
Page 51
Conception d’un électromyogramme – Rapport final 6GIN333
Page 52
Conception d’un électromyogramme – Rapport final 6GIN333
Page 53
Conception d’un électromyogramme – Rapport final 6GIN333
Page 54