Acquisition de donnรฉes
Afin de pouvoir acquรฉrir le signal respiratoire et transmettre les donnรฉes numรฉrisรฉes vers un PC2, nous avons optรฉs pour une carte multifonctions de type Arduino3Uno rรฉvision 3 (R3). Ce choix a รฉtรฉ fait suite ร lโavancรฉe majeure apportรฉe par cette plateforme dans lโaccessibilitรฉ de cette technologie au plus grand nombre par sa vulgarisation, sa puissance incroyable, son รฉtendu dโutilisation gigantesque ainsi que son coรปt abordable.
Prรฉsentation dโArduino
Arduino [7-9] est une plate-forme logicielle et matรฉrielle constituรฉe dโune simple carte รฉlectronique ร microcontrรดleur (voir annexe 4) et dโun environnement de dรฉveloppement multiplateformes. Elle permet dโallier les performances de la programmation ร celle de lโรฉlectronique.
Cette carte peut รชtre programmรฉe pour diverses tรขches, principalement pour la crรฉation des systรจmes รฉlectroniques et le prototypage de diffรฉrents circuits utilisรฉs pour des multiples fonctionnalitรฉs tels que la domotique, le pilotage des robots, lโacquisition de donnรฉesโฆetc.
Le projet Arduino est en source ouverte dont les circuits de diffรฉrentes variรฉtรฉs de cartes Arduino sont publiรฉs sous licence libre GNU4 et la conception est distribuรฉe sous licence CC5. Le code source de lโenvironnement de dรฉveloppement est รฉgalement disponible sous licence LGPL6. Cependant, le microcontrรดleur nโest pas rรฉgi par cette licence libre
Hardware
La partie hardware consiste ร la carte Arduino Uno, cโest le modรจle de rรฉfรฉrence des plateformes Arduino et cโest la version la plus rรฉcente des cartes Arduino USB7.
Comme illustrรฉ sur la Fig.III-1, Arduino Uno est construite autour dโun circuit ร microcontrรดleur du type ATmega 328 de la famille AVR du constructeur Atmel. Elle est dotรฉe en plus de ;
๏พ 14 entrรฉes/sorties dont 6 peuvent รชtre utilisรฉ en PWM8
๏พ 6 entrรฉes analogiques
๏พ un oscillateur ร 16 MHz
๏พ un port USB
๏พ Une prise dโalimentation
๏พ Un connecteur ICSP9
๏พ Un boutton reset .
Le microcontrรดleur ATmega 328 [9] que dispose la carte Arduino Uno dispose 32 k octets de mรฉmoire flash pour le stockage du code dรฉveloppรฉ dont 0,5 k octet est utilisรฉ pour le bootloader, 2 k octets pour la SRAM10 et 1 k octet por lโEEPROM11 (voir annexe 4).
Le signal ร discrรฉtisรฉ est envoyรฉ ร lโordinateur en trame, chaque trame UART12 est constituรฉe des bits suivants ;
๏พ Un bit start toujours mis ร 0
๏พ Les donnรฉes lues sur 10 bits
๏พ Un bit de paritรฉ assurant un codage correcte des donnรฉes
๏พ Un bit stop, toujours mis ร 1 .
La vitesse de transmission exprimรฉe en baud13 de la carte Arduino est variable et permet de cadencer lโenvoie des donnรฉes vers lโordinateur. La numรฉrisation des donnรฉes se fait par le biais du convertisseur analogique numรฉrique qui est incorporรฉ dans ce microcontrรดleur et qui converti une tension dโentrรฉe analogique en une valeur numรฉrique de 10 bits par approximation successive ce qui permet dโattribuer des valeurs numรฉriques entre 0 et 210=1023 qui correspond ร 5V comme valeur ร lโentrรฉe de chacune des entrรฉes analogiques de la carte Arduino.
Une protection ร appliquer au signal ร acquรฉrir via la carte multifonctions Arduino Uno consiste ร brancher un potentiomรจtre dโune valeur รฉlevรฉe entre les pins GND et 5V, le signal รฉtant branchรฉ au curseur du potentiomรจtre permettra de cadrer le signal entre 0 et 5V. Dans notre systรจme dโacquisition, nous avons optรฉ pour un potentiomรจtre de 470 k๏.
Software
La partie software consiste en deux programmes. Un premier programme, implรฉmentรฉ dans lโenvironnement de dรฉveloppement intรฉgrรฉ dโArduino, permet de charger les commandes que doit exรฉcuter la carte Arduino. Le second programme, implรฉmentรฉ sous un environnement au choix de lโutilisateur, permet de recevoir les donnรฉes des signaux numรฉrisรฉs. Dans ce prรฉsent projet, MATLAB a รฉtรฉ le langage choisi et ce pour pouvoir, suite ร lโรฉtape dโacquisition de donnรฉes, accomplir un traitement numรฉrique du signal respiratoire.
Firmware
La programmation de toutes les cartes de la famille Arduino, dont le modรจle Uno utilisรฉ dans le cadre de ce projet, se fait dans un langage simplifiรฉ adaptรฉ du C++.
Les cartes Arduino traitent les informations reรงues par ses entrรฉes pour agir sur les sorties suivant un programme qui est dรฉfinit par lโutilisateur et ce via lโIDE14 dโArduino dont lโinterface graphique est illustrรฉe sur la figure suivante (Fig.III-2).
La fenรชtre de lโapplication Arduino comporte les รฉlรฉments suivants :
1. Un menu contenant les options de configuration du logiciel qui permettent de crรฉer de nouveaux programmes (appelรฉs aussi sketchs), de les sauvegarder, de gรฉrer les prรฉfรฉrences du logiciel et les paramรจtres de communication avec la carte Arduino.
2. Une barre dโaction contenant des diffรฉrents boutons servant, de gauche ร droite, de vรฉrifier le programme sโil ne contient pas dโerreurs, compiler et envoyer le programme vers la carte, crรฉer un nouveau fichier, charger un programme existant et enregistrer le programme en cours.
3. Une zone de programmation contenant le programme que nous allons crรฉer.
4. Une console qui affiche des informations sur les erreurs de compilation et de tรฉlรฉversement du programme.
Une fois que la carte Arduino est branchรฉe ร lโordinateur, une รฉtape de configuration est requise avant tout tรฉlรฉversement de firmware dans le microcontrรดleur dโArduino. Le premier truc ร effectuer est de spรฉcifier le type de la carte ร utiliser. Pour ce faire, il faut aller, comme illustrรฉ sur la Fig.III-3, sous Outils>Types de carte et choisir Arduino Uno.
Il est รฉgalement nรฉcessaire de spรฉcifier le port USB actif qui sera utilisรฉ afin de connecter la carte avec lโordinateur pour tรฉlรฉverser le programme. Pour ce faire, il faut aller sous Outils>Port sรฉrie et choisir le port appropriรฉ. On note que lโordinateur assure directement lโalimentation de la carte Arduino via cette liaison USB.
Ensuite, lโutilisateur dรฉveloppe dans la zone de programmation le programme ร tรฉlรฉverser dans le microcontrรดleur de la carte Arduino. Le programme est compilรฉ et tรฉlรฉversรฉ sโil ne prรฉsente aucune erreur de compilation. Lโexรฉcution de ce programme sโeffectue de maniรจre sรฉquentielle.
La structure dโun programme รฉcrit en Arduino est illustrรฉe sur la Fig.III-4. Un code permettant de faire clignoter une LED15 branchรฉe sur la broche 13 de la carte Arduino est utilisรฉ ร titre dโexemple.
Le programme dรฉveloppรฉ comporte trois parties consรฉcutives, ร savoir :
โ Partie dรฉclaration des constantes et des variables.
โ Partie configuration des entrรฉes et des sorties de lโArduino en utilisant lโinstruction void setup ().
โ Partie programmation des interactions dans laquelle on dรฉfinit les opรฉrations qui sโexรฉcutent en boucle en utilisant lโinstruction void loop ().
Des commentaires peuvent รชtre รฉcrits sur le programme pour se souvenir du patch.
Lecture des donnรฉes numรฉrisรฉes
Plusieurs environnements permettent la lecture des donnรฉes via le port USB. Dans le cadre de notre projet, le choix acadรฉmique en matiรจre logicielle de traitement numรฉrique du signal respiratoire acquis se porte sur Matlab. Ce choix a รฉtรฉ fait suite aux diverses fonctions utilitaires qui sont prรฉprogrammรฉes et mises ร disposition des utilisateurs sous forme dโune boite ร outils DAT16 dans le site Mathworks17 de Matlab.
La lecture et le traitement des donnรฉes numรฉrisรฉes se fait donc directement par le biais de la bibliothรจque Arduino de Matlab. Cet outil permet de gรฉnรฉrer, visualiser en temps rรฉel et enregistrer sous Windows le signal utile grรขce ร la juxtaposition des รฉchantillons successifs en respectant la pรฉriode dโรฉchantillonnage rรฉglable dans le firmware tรฉlรฉversรฉ prรฉalablement dans le microcontrรดleur de la carte Arduino.
Conclusion
Dans ce chapitre, nous avons prรฉsentรฉ le systรจme dโacquisition de donnรฉes que nous avons conรงu autour de la carte multifonctions Arduino Uno. La partie hardware consiste au module Arduino Uno. La partie software consiste en deux parties รฉlรฉmentaires. En premier lieux, la programmation du firmware dรฉveloppรฉ dans lโenvironnement de dรฉveloppement intรฉgrรฉ dโArduino. En second lieux, la programmation du script de rรฉception et de traitement de donnรฉes dรฉveloppรฉ dans un environnement Matlab, et ce grรขce au toolbox de fonctions prรฉprogrammรฉes dโArduino.
Mesures et enregistrements
Grรขce ร la carte de mise en forme et dโacquisition du spirogramme des dรฉbits pulmonaires que nous avons dรฉveloppรฉe, nous avons accompli un certain nombre de mesures sur des sujets normaux. Une premiรจre รฉtape consiste ร recueillir les signaux par le biais dโun oscilloscope numรฉrique. Ensuite, lโacquisition de signaux respiratoires moyennant le systรจme dโacquisition que nous avons conรงu autour de la carte Arduino Uno nous a permis de les enregistrer sous forme dโun fichier de donnรฉes. Nous avons optรฉ ร accomplir lโacquisition de donnรฉes dans un environnement MATLAB vu ses fonctionnalitรฉs avancรฉes de traitement numรฉrique du signal disponible sous forme de toolbox de fonctions. Cet environnement nous permettra de traiter le signal du dรฉbit respiratoire afin dโamรฉliorer sa qualitรฉ puis pour reproduire par la suite le volume, la pรฉriode respiratoire correspondante.
La nature des signaux respiratoires mesurรฉs depuis diffรฉrents points de tests de la carte de mise en forme que nous avons rรฉalisรฉe permet dโapporter les ajustements nรฉcessaires pour avoir en sortie le signal ayant la morphologie adรฉquate pour lโรฉtape dโacquisition de donnรฉes. En effet, la carte multifonction Arduino Uno requiert en entrรฉe analogique un signal cadrรฉ entre 0 et 5V. Il est alors judicieux dโajuster la composante continue du signal du dรฉbit respiratoire ร 1V. Le signal respiratoire doit couvrir en absolu la marge de 0,5 ร 4,5V.
Mesures analogiques
La Fig.IV-1 illustre lโenregistrement du signal du dรฉbit respiratoire recueilli ร la sortie de lโรฉtage dโamplification dรฉveloppรฉ autour de lโampli TL074. Lโaffichage sur lโoscilloscope numรฉrique est fait en couplage DC pour montrer la composante continue du signal. Lโamplification ร รฉtรฉajuster pour aboutir ร un signal respiratoire en sortie couvrant les 8 divisions du cadran de lโoscilloscope numรฉrique ร un calibre de 500 mV, ce qui correspond ร 4 V comme marge de tension en absolu
|
Table des matiรจres
Liste des figures
Introduction gรฉnรฉrale
Chapitre I Systรจme respiratoire
I.1. Anatomie de lโappareil respiratoire
I.1.1. Les voies aรฉriennes
I.1.2. Les poumons
I.1.3. Les muscles respiratoires
I.2. Physiologie de lโappareil respiratoire
I.2.1. Mรฉcanique ventilatoire et production du dรฉbit aรฉrien
I.2.2. Lโespace mort
I.2.3. Les mรฉcanismes dโรฉchanges gazeux
I.3. Les explorations fonctionnelles respiratoires
I.3.1. Mesure des volumes non mobilisables
I.3.2. Mesure des volumes mobilisables
I.4. Conclusion
Chapitre II Carte de mise en forme du signal respiratoire
II.1. Etude des capteurs de pression
II.1.1. Dรฉfinition de la pression
II.1.2. Lesdiffรฉrentes unitรฉs de pression
II.1.3. Les diffรฉrents types de pression
II.1.4. Les capteurs de pression
II.2. Description du systรจme de mesure
II.2.1. Structure de la chaine de mesure
II.2.2. Pneumotachographe de Lilly
II.2.3. Capteur de pression
II.2.4. Circuit dโalimentation
II.2.5. Amplification
II.2.6. Filtrage
II.2.7. Circuit dโoffset
II.3. Conclusion
Chapitre III Acquisition de donnรฉes
III.1. Prรฉsentation dโArduino
III.2. Hardware
III.3. Software
III.3.1. Firmware
III.3.2. Lecture des donnรฉes numรฉrisรฉes
III.4. Conclusion
Chapitre IV Mesures et enregistrementsย
IV.1. Mesures analogiques
IV.2. Etalonnage du systรจme de mesure
IV.3. Acquisition du signal du dรฉbit respiratoire
IV.4. Traitement numรฉrique
IV.4.1. Filtrage
IV.4.2. Extraction du rythme et de la pรฉriode respiratoire
IV.4.3. Gรฉnรฉration des volumes respiratoires
IV.5. Conclusion
Conclusion gรฉnรฉraleย
Rรฉfรฉrences bibliographiques
Annexe 1 โ Consรฉquence spiromรฉtrique des pathologies : analyse des courbes dรฉbit/volume
Annexe 2โ Liste des composants รฉlectroniques
Annexe 3โ Quelques circuits rรฉalisรฉs avec PCB
Annexe 4 โ Fiches techniques
Tรฉlรฉcharger le rapport complet