La -attention- photopléthysmographie est une technique simple et non invasive permettant, entre autre, de pouvoir visualiser l'afflux sanguin des vaisseaux capillaires. Notre détecteur est composé d'une LED infrarouge ainsi que d'une photodiode sensible aux mêmes fréquences lumineuses.
La lumière émise par notre LED est plus ou moins réfléchie en fonction de la circulation du sang (dans un doigt). Ainsi, il est possible non seulement de récupérer l'information sur le rythme cardiaque mais également un cardiogramme relativement précis.
Sommaire
- Le Hardware
- LED et photoDiode IR
- Convertisseur courant à tension
- Filtre passe-haut et offset
- Suiveur de tension
- Amplificateur de tension et filtre passe-bas
- Le Software
- Le mot de la fin
- Downloads
Le Hardware
LED et photoDiode IR
Lorsque notre photoDiode réceptionne la lumière IR émise par notre LED, un courant électrique s'établira. La majeure partie de cette lumière est constante dans le temps dû à la réflexion de celle-ci vers la photoDiode par les différentes matières organiques de notre doigt (peau, os...). Une autre partie de cette lumière réceptionnée est variable dans le temps et elle est due à la réflexion de celle-ci par l'afflux sanguin. C'est ce signal variable (très faible) qu'il s'agira d'amplifier ainsi que de filtrer afin de pouvoir tracer notre cardiogramme.
Convertisseur courant à tension
La première étape est de convertir le courant établit par notre photoDiode en une tension interprétable par notre microControlleur. Notez que la tension de sortie est liée aux deux parties de notre signal (constante et variable). Il nous faudra donc filtrer la partie constante avec un filtre passe-haut par la suite.
La fonction reliant le courant d'entrée $I_e$ et la tension de sortie $V_s$ est donnée par:
$V_s = -I_e R_2$
En situation, notre photoDiode établi un courant de quelques micro Ampère (1 à 4). Ainsi, le choix d'une résistance d'un Mega Ohm était imposée pour obtenir une tension de sortie dans la plage utilisée par notre microControlleur (0-5v).
Filtre passe-haut et offset
Comme énoncé précédemment, il nous faut filtrer la composante continue du signal qui ne contient pas d'information utile pour notre cardiogramme. L'ajout d'un offset nous permet de fixer la tension de repos. Cette tension a été choisie en fonction de la forme générale d'un cardiogramme. Les amplitudes positives d'un cardiogramme sont bien plus grandes que les amplitudes négatives. Ainsi, en fixant cette tension aux alentour de 1.25V, il nous sera possible d'utiliser le full-scale du microControlleur (0-5v).
La fonction reliant la tension d'entrée $V_e$ et la tension de sortie $V_s$ est donnée par:
La fréquence de coupure a été choisie extrêmement basse afin de perdre le moins possible d'informations quand au signal d'origine. En effet, la fréquence moyenne d'un coeur humain se situe à environ 1Hz (60Bpm).
Suiveur de tension
Un montage suiveur de tension est utilisé pour la séparation entre l'étage du filtre passe-haut et offset ainsi que l'étage d'amplification du signal. En effet, l'impédance d'entrée du suiveur (borne 1) est très élevée alors que son impédance de sortie (borne 3) est très faible. Ceci nous permet de créer une source de tension en borne 3 qui suit la tension présente en borne 1.
Amplificateur de tension et filtre passe-bas
A ce point de notre circuit, la tension d'entrée du montage est composée de l'offset (1.25v) ainsi que d'une tension variable (très faible) décrite par l'afflux sanguin dans notre doigt. C'est cette tension variable qu'il nous s'agira d'amplifier. C'est pourquoi la tension d'entrée est comparée à une tension fixe de 1.25v. On remarquera que notre tension fixe a été réalisée avec des composant discret et qu'ainsi elle n'est pas forcément égale à exactement 1.25v. Les tolérances des composants utilisés (résistances) sont de 1%. Ainsi, dans le pire des cas, la différence entre la tension d'offset et la tension de référence est de:
Ce qui correspond à une tension de sortie (après amplification) de 4V (-1.5V dans le cas inverse) au repos (sans afflux sanguin). Ceci montre bien les problèmes de design que l'on peut rencontrer en circuit discret. Bien heureusement, nos résistances ne sont pas autant éloignées de leurs valeurs annoncées. Ainsi la tension de repos en sortie varie de seulement quelque mV autour de notre offset (1.25V).
La relation entre la tension d'entrée et de sortie est donnée par:
G est le gain de notre amplificateur. On le choisit en fonction de la variation de la tension en sortie du suiveur en situation (quelques dizaines mV) afin d'obtenir le full-scale en entrée du microControlleur (0-5v). Il faut également prêter attention à la valeur du condensateur qui définira la coupure des hautes fréquences parasites. Dans notre configuration, la fréquence de coupure est d'environ 30Hz et a été choisie en fonction de la fréquence maximal contenue dans notre signal (link).
Le Software
Arduino
Le microControlleur est utilisé pour l'interprétation du signal via une entrée analogique puis transmet l'information par USB à une machine plus puissante pour l'affichage de ce signal. Une routine d'interruption réglée à 200Hz s'occupe de prendre la mesure continuelle du signal.
Python
Le langage de programmation python est utilisé pour l'affichage de l'User Interface. Python nous permet d'établir la liaison USB avec notre microControlleur en une simple ligne de commande:
arduino = serial.Serial('COM3',250000,timeout=.1)
data = arduino.read(2)
Le mot de la fin
Le but principal de ce dispositif était de réaliser le traitement du signal en composants discrets. On remarque que le signal traité par cette méthode n'est pas exempté de bruit. Il nous est possible de filtrer ce bruit résiduel d'une façon numérique, en python par exemple.
Notre détecteur est très sensible au mouvement du corps lors de la mesure. Ainsi, une position immobile de la personne test est mandatoire pour l'obtention d'un ECG viable.
Des améliorations peuvent être apportées à notre design, particulièrement concernant la tension d'offset ainsi que la tension de référence. Une solution serait d'utiliser la tension stable de 3.3v qui est disponible sur le microControlleur.