Dernière mise à jour :
08/02/2015
Présentation
Cet indicateur a été conçu pour répondre aux besoins suivants :
- afficher sous forme de flash lumineux chaque battement de
coeur;
- afficher la valeur moyenne du rythme cardiaque (sur une
minute);
- afficher le taux de régularité du rythme cardiaque
(indication accélération et décélération).
Peu
de personnes le savent et moi-même ne l'ai appris qu'en 2011,
un
rythme cardiaque aux variations régulières est très bon signe, alors qu'un rythme
cardiaque
parfaitement
régulier est un signe inquiétant ! Je ne fais pas allusion aux
variations brutales de rythme (arythmie) qui elles aussi ne sont pas
vraiment bon signe... L'appareil
décrit ici permet de façon totalement autonome de visualiser
les
variations de rythme. Il dispose en outre d'une sortie RS232 qui permet
d'envoyer des données aptes à dessiner une courbe en temps réel sur un
ordinateur, par exemple avec le logiciel (freeware)
IndicBattCoeur
que j'ai développé pour l'occasion.
Avertissement
Cet appareil ne peut pas être utilisé en milieu médical !
Schéma
Le
schéma met en oeuvre un PIC, c'est une solution élégante que j'ai
trouvée pour concentrer les fonctions demandées (calculs mathématiques)
en peu de place.
L'étage d'entrée demande quant à lui un peu plus de composants car il
faut traiter une information qui est loin
d'être un
simple signal logique TTL. Ceci dit l'ensemble n'est tout de même pas
si impressionnant que ça.
Pincipe général de fonctionnement
La
captation de l'information du rythme cardiaque s'effectue avec un
émetteur de lumière et un capteur de lumière. Entre les deux, un doigt.
Un étage d'entrée adapté au récepteur de lumière met en forme des
variations de tension liées à des
variations de lumière qui corresponde à chaque battement du coeur. Une
fois les informations lumineuses traduites en informations logiques
propres, ces dernières sont envoyées à un PIC qui assurent les
fonctions suivante :
- mesure de l'intervalle de temps entre chaque battement du
coeur;
- indication du taux d'écart de rythme par rapport à la
mesure
précédente, sur une échelle de LED;
- envoi de cette information sur un port série RS232 pour
affichage
courbe sur ordinateur.
Etage d'entrée (amplification)
Pour ce qui est de l'émission de lumière, on ne va s'embetter, une
simple LED émettant assez de lumière conviendra très
bien - c'est pourquoi j'ai opté pour une LED haute luminosité (LED-HL).
On aurait aussi pu s'orienter vers une captation d'impulsions
électriques
avec des électrodes posées aux bons endroits du corps, mais c'est un
peu plus complexe à réaliser d'un point de vue électronique (un
filtrage sérieux est requis pour ne pas être embêté par les parasites
environnants), et les
électrodes qui donnent de bons résultats (qui sont faites pour cet
usage) ne se
trouvent pas si facilement. Le récepteur de lumière (ici une LDR mais
on aurait pu aussi utiliser une photo-diode ou un photo-transistor)
reçoit un
flux lumineux dont l'intensité varie à chaque pulsation cardiaque, car
la lumière émise par la LED passe au travers du doigt et des veines,
lesquelles deviennent plus "foncées" lors d'un afflux sanguin provoqué
par chaque coup de pompe. Les
variations de flux lumineux captées par le récepteur de lumière sont
très faibles (quelques mV), et il faut prendre quelques précautions
pour les
amplifier sans trop les perturber en même temps. Mais ça reste assez
facilement réalisable, sinon on n'en parlerait pas ici de cette façon.
D'ailleurs, le montage auquel on a recourt ici est un simple
amplificateur de tension alternative, dont le gain est suffisement
élevé pour porter les quelques mV de variation électrique captée au
niveau de la LDR, à un signal électrique de quelques volts pour
s'adapter aux niveaux logiques des portes qui suivent. L'amplification
totale est assurée par deux amplificateurs, un dont le gain est fixé à
+40 dB (40 dB = rapport de 100 en tension), l'autre dont le gain est
ajustable entre 0 dB et +40 dB. On peut ainsi disposer d'un gain total
ajustable entre +40 dB et +80 dB (80 dB = rapport de 10000 en tension).
En réalité un gain global de 80 dB se révèle trop élevé, mais
on a
de la sorte une bonne marge de manoeuvre. Les variations de signal
observées aux bornes de la LDR une fois amplifiées aboutissent au point
A, que l'on raccorde à l'entrée du monostable de mise en forme qui fait
suite.
Monostable et mise en forme
Les
signaux amplifiés obtenus en sortie de l'amplificateur d'entrée sont
encore sous leur forme "analogique" et il n'est pas conseillé de les
laisser en l'état car à ce stade ils sont quelque peu "dérangés" et ne
se ressemblent pas forcement d'un coup de coeur à l'autre. Il convient
donc de les nettoyer et de leur donner une forme respectable, travail
qui ne pose aucun problème au monostable U2:A de type CD4538. Ce
dernier est déclanchable sur un front descendant ou montant, j'ai
choisi ici de façon arbitraire de le faire déclancher sur des fronts
montants. Les variations de tension issues de la LDR
(battement de
coeur) se traduisent par des variations de tension de plusieurs
centaines de mV ou de plusieurs volts au point A, un coup au dessus de
la tension de repos de +2,5 V, un autre coup en dessous de cette
valeur. C'est la hausse de tension qui ici est intéressante car c'est
elle qui déclanche le monostable, lequel fournit sur sa sortie
Q
(broche 6 de U2:A) une "impulsion" positive propre et calibrée
en
temps. Ce temps dépend de la valeur donnée à C3 et R12, il est ici
voisin de 180 ms (vous pouvez adopter pour C3 toute valeur comprise
entre 100 nF et 220 nF). Voilà un signal enfin digne d'être avalé par
un microcontrôleur, transit via point B sur le schéma.
Affichage autonome (précision grossière)
Un
barreau de 9 LED permet de suivre les variations de rythme cardiaque en
temps réel, la mise à jour est effectuée à chaque nouveau battement de
coeur.
Au repos, la LED centrale est allumée, et au fil du temps ce
sont les LED de gauche ou de droite qui s'allument plus ou moins,
signalant respectivement une décélération ou une accélération du
rythme. Mais comment définir le niveau milieu, sachant que le rythme
moyen n'est pas connu quand on commence l'analyse ? Simplement en
attendant un peu. Au bout d'un dizaine de battements (nombre arbitraire
mais pas
totalement irréfléchi), on dispose d'une moyenne
suffisement pertinente qui sert de valeur de référence. A partir de
cette valeur de référence, les autres LED indiquent des écarts relatifs
de -40 à +40 avec un pas de 10, ou des écarts relatifs
de -20 à +20 avec un pas de 5%.
- Broche RA5 du PIC à 0 : pleine échelle des écarts
relatifs
de -20 à +20
- Broche RA5 du PIC à 1 : pleine échelle des écarts relatifs
de -40 à +40
A chaque nouveau battement de coeur, un nouveau calcul est
effectué sur les derniers intervalles de
temps
observés et on oublie les plus anciens. Le nombre maximal de points de
mesures utilisés pour établir la moyenne est de 8 (tiens, c'est une
puissance de 2, sûrement une coïncidence). Une LED "Over" s'allume
quand aucune impulsion n'est décelée pendant au moins 5 secondes
consécutives, elle est branchée sur la broche RA4 du PIC qui est en
collecteur (ou drain) ouvert. Donc cathode LED côté PIC et anode
branchée sur le +5 V (avec résistance de limitation de
courant, ça va presque de soi).
Affichage sur ordinateur (précision fine)
Les données calculées par le PIC sont précises mais le nombre
volontairement limité des LED ne permet pas d'en profiter pleinement,
même si l'information de tendance peut suffire pour rendre l'appareil
utilisable. C'est pourquoi j'ai
aussi prévu l'envoi des données brutes sur une liaison série RS232 dans
un format de type Hexa (côté matériel, un MAX232 pour l'interfaçage
TTL/RS232, mais on pourrait aussi fort bien se contenter de quelques
composants classiques). Je disposais de deux approches possibles pour
les données à envoyer :
- envoi d'une trame de plusieurs octets, un premier octet
représentant la
valeur moyenne du rythme cardiaque, un second pour l'écart relatif qui
est
déjà calculé par le PIC. Cette façon de faire impose cependant une
méthode pour facilement retrouver ses petits au niveau réception PC,
notement en encadrant les données utiles par des délimiteurs de trame.
Chaque trame de données pourrait ainsi débuter par la valeur $00 et se
terminer par la valeur $FF, et les valeurs transmises entre ces deux
délimiteurs étant impérativement comprises entre $01
et $FE.
- envoi d'un seul octet représentant la valeur moyenne du
rythme cardiaque. On ne peut pas faire plus simple côté PIC mais cela
demande un petit calcul supplémentaire côté PC pour déterminer l'écart
relatif.
C'est la deuxième option que j'ai choisie ici, car il me semble que
même un PC un peu ancien est capable de
s'en sortir. L'unique octet est donc
transmis à chaque nouveau battement de coeur, et sa valeur
correspond à la dernière valeur calculée qui représente le
nombre
de battements
par minute.
Freeware IndicBattCoeur
Le logiciel (freeware)
IndicBattCoeur
est on ne peut plus simple, on spécifie le numéro de port série sur
lequel les données (octets) arrivent et il s'occupe du reste.
Prototype
Réalisé sur plaque d'expérimentation sans soudure
pour la partie étage d'entrée et monostable. Testé avec trois LDR
différentes (sur la troisième photo ci-après et en partant de
la
gauche, une LDR05, une LDR de récup. modèle inconnu et une LDR03).
Test étage d'entrée et monostable
La
source lumineuse est ici une LED blanche très haute luminosité (15000
mcd / 25 mA). Ca fonctionne bien. Très bien même. A tel point que
lorsque j'ai fini d'assembler les composants et effectué les premiers
tests, la nuit tombait. Alors forcement j'ai allumé la lampe du
plafond... qui est du type à incandescence. Vous imaginez ce qui s'est
alors passé ? Et oui, les fluctuations de lumière liées au secteur 50
Hz étaient captées par la LDR et le monostable était continuellement
redéclanché. Du coup j'ai du finir mes tests dans la pénombre. Bien sûr
pour le montage final il faut faire en sorte que la cellule LDR ne
soit pas soumise à une source de rayonnement externe. En ce
qui
concerne le gain total requis pour ce prototype, la valeur "idéale"
était comprise entre +50 dB et +70 dB, selon le type de LDR testé et
selon l'épaisseur du doigt - pouce et auriculaire ne permettent pas les
mêmes "performances" pour un réglage de gain donné. Au début je
trouvais le positionnement du doigt assez critique, mais c'est parce
que le gain n'était pas assez élevé. Avec un ajustage correct obtenu de
façon expérimental (comment pourrions-nous faire autrement), ça
fonctionne vraiment bien et de façon reproductible. La LDR qui a
nécessité le moins de gain pour un fonctionnement correct est celle
dont je ne connais pas la référence (celle au centre de la photo
ci-avant). Avec ce composant et en poussant un peu le gain, le système
affichait non pas un clignotement (T...T...T...T) pour chaque pulsation
cardiaque, mais deux clignotements rapprochés (T.T...T.T...T.T...T.T).
C'est dire la précision à laquelle on peut arriver au niveau de la
détection de changement d'opacité du doigt ! Dans notre cas une telle
sensibilité n'est pas requise mais en plus elle est préjudiciable au
bon fonctionnement du système puisque le calcul qui va suivre va
travailler avec le double d'impulsions. Il faut donc faire en sorte que
le système ne détecte qu'une seule variation d'opacité à chaque pouls,
et au besoin augmenter le temps de l'impulsion du monostable de sorte
que même à un pouls lent les deux impulsions successives de
déclenchement soient "noyées" dans une seule impulsion de sortie. Pour
ma part j'ai décidé de conserver la durée de l'impulsion à 200 ms
environ et faire en sorte qu'une seule impulsion de déclenchement
n'arrive au monostable à chaque pulsation cardiaque.
Remarques
- Au
tout début des tests, la résistance série de limitation de courant de
la LED "source lumière" avait une valeur trop élevée et le flux
lumineux n'était pas suffisant (LED 3,0 V / 25 mA allimentée sous 5 V
avec résistance de limitation de 220 ohms au lieu de 120 ohms). On
voyait bien la lumière à travers le doigt (doigt bien rouge), mais la
quantité de lumière qui arrivait sur la LDR n'était pas suffisant et le
montage fonctionnait de façon erratique. Après avoir poussé le flux
lumineux, plus de problème.
- Par curiosité, j'ai aussi fait des
tests avec une LED verte très haute luminosité (30000 mcd). Sans aucun
succès. La seule chose que j'ai apprise ce jour avec ce type de LED est
qu'elle peut aussi émettre un rayonnement rouge, un sifflement et une
odeur horrible quand on se trompe de branchement (alimentation directe
sur pile 9 V sans résistance de limitation de courant). Mais le
phénomène reste de très courte durée pour qu'on puisse vraiment en
profiter...
- Tests
également menés avec des photodiodes et des phototransistors, sans trop
de succès. Seul le BPW42 me permettait d'obtenir des résultats à peu
près fiables. J'avoue tout de même que je n'ai pas trop joué avec la
polarisation du composant, ayant du début à la fin laissé en place la
résistance de 4,7 kO.
Source lumineuse : LED ou ampoule à incandescence ?
A
la suite de mes divers tests, je serais presque tenté de dire que
l'ampoule à
incandescence est mieux que la LED. Mais il serait plus sage d'ajouter
que c'est
plutôt vrai "pendant les tests", quand la source de lumière et la LDR
sont susceptibles de bouger. Avec un couple LED + LDR parfaitement
stable, ça fonctionne très bien avec les deux méthodes, du moment que
- comme je le
disais avant - la LED émette un flux lumineux suffisant. C'est par
unique curiosité que j'ai essayé avec quelques ampoules à incandescence
basse tension,
histoire de voir ce que ça rendait.
Le
verdict est le même que pour la LED : pour un fonctionnement correct,
il faut assez de lumière pour que le doigt paraisse bien rouge par
transparence quand on l'éclaire. Ce qui m'a le plus gêné pendant les
tests (avec LED et ampoules incandescence) est que le fonctionnement
n'était pas fiable si on bougeait un tout petit peu la source de
lumière ou son capteur associé. Pas si simple de tenir l'ampoule ou la
LED et en même temps de poser un doigt sur la LDR sans bouger du tout !
Une fois le tout bien mis en place dans
un boîtier (fixation rigide - comme vous pouvez le voir sur la vidéo
présentée plus loin - et à l'abri de la lumière ambiante), ça
roule et il n'y a même pas besoin de retoucher aux réglages entre
essais avec doigts d'adulte et doigts d'enfants.
Et avec des infrarouges ?
J'ai
également fait des tests avec un système optique infrarouge
fonctionnant par réflexion de type OPB706, où les parties émission
et réception sont incluses dans un boîtier plastique unique et
séparées d'un petit millimètre.
(OPB706 déconnecté puis remis en place juste pour la photo)
Résultats
guère concluants en mode indicateur battements coeur, mais bon
détecteur de proximité (distance 15 à 20 cm). Puis j'ai essayé avec une
LED d'émission IR de type LED55C associée à un phototransistor BPW42.
Et là ça fonctionne vraiment très bien (testé sur moi et sur ma fille
de 6 ans), je trouve même que le réglage est
beaucoup plus souple qu'avec le sysème à lumière visible. La LED55C
accèpte un courant continu permanent de 100 mA, mais je l'ai limité ici
à 35 mA environ, c'est amplement suffisant. Pour ma version définitive,
j'opterai pour ce couple de composants.
Vidéo de démonstration
Cette vidéo
montre le montage en fonctionnement avec système lumière visible. C'est
filmé dans la pénombre car
je n'ai pas fini le boîtier de rangement final et les fluctuations de
la lumière ambiante (soleil / nuages)
gênaient le fonctionnement du montage.
Vidéo
YouTube
Tests du programme du PIC
Premiers tests
réalisés avec le PIC seul dans son coin (sans le détecteur lumineux et
son circuit de mise en forme), avec ma platine EasyPic 4
reliée
via port série à un PC portable équipé de mes logiciels
ComTools
et
IndicBattCoeur.
Tout est OK. Bon j'avoue que les premiers tests m'ont fait me gratter
un peu la tête car seules deux ou trois interruptions étaient détectées
quand j'appliquais une tension positive de +5 V sur l'entrée RB0 du
PIC. A partir de la troisième impulsion, tout se bloquait et
les impulsions suivantes n'étaient plus vues et donc plus
aucune
donnée
n'était transmise sur la sortie RB2/TX. Il m'a fallu près
d'une
heure pour me rendre compte que j'avais tout simplement oublié une
résistance de rappel
entre la broche RB0 et la masse... Quelle idée aussi d'avoir un montage
qui fonctionne
pendant un certain temps et puis plus après, ça n'aide pas vraiment à
localiser la source du problème !
Seconde
série de tests réalisés avec ma platine EasyPic7, pour la version de
PIC du 22/09/2013 (ajout fonction réglage d'échelle pour la partie
affichage
autonome).
Cette fois, j'ai utilisé un module USB/RS232 (FTDI232)
pour établir une liaison série virtuelle (VCP, virtual com
port) entre le PIC et l'ordinateur où était
installé mon logiciel
IndicBattCoeur.
J'aurais bien sûr pu utiliser le module USB/RS232 prévu sur la platine
de
développement, mais tant qu'à faire, montrons ce qu'on peut mettre en
oeuvre quand on ne possède pas une telle platine de développement et
que le PC utilisé ne possède pas de port COM/RS232. Pour
la simulation des battements (pas envie de refaire le proto
de l'époque), j'ai utilisé mon générateur BF, dont un des
inconvénients est de ne pas pouvoir descendre très bas en fréquence
avec une
grande précision. Je me suis contenté des valeurs qu'il m'imposait,
suffisantes pour les besoins du tests. Sur la photo qui suit, on voit
que la fréquence
du signal en sortie du générateur est de 1,49 Hz, ce qui correspond à
une valeur d'environ 90 battements par minute (1,49 *
60).
Le circuit fonctionne bien après modif (ajout échelle écarts), et je
reconnais que l'échelle +/-20 est plus "logique" que l'échelle +/-40
(on visualise mieux les variations qui souvent ne sont pas si énormes
que ça).
Ces
nouveaux tests m'ont permis de déceler un petit bug dans
mon logiciel
IndicBattCoeur,
qui bénéficie du coup d'une petite cure de rajeunissement.
Prototype d'Alain D.
Alain
a réalisé ce prototype et m'en a fait un retour très complet, avec
graphes oscillo à l'appui (sortie phototransisor avant et après
monostable).
Retours d'Alain :
Mon capteur est composé d'une pince à linge équipée d'une LED IR SFH4253 et
d'un phototransistor QTLP610. La position du capteur qui a donné les
meilleurs résultats (signal d'amplitude la plus élevée en sortie du
phototransistor) est sur la lunule de l'ongle ou de l'index. Ce montage
marche parfaitement bien. L’utilisation d'un capteur Infra Rouge permet
de travailler à lumière ambiante sans perturbation., mais le capteur
doit bouger le moins possible. Pour la suite je ferai des essais avec
un autre capteur : le tcrt1000 qui est un émetteur/récepteur IR qui
fonctionne par reflection. Cela permettra de prendre le pouls sur des
zones non traversantes comme le poignet ou la carotide. Merci pour tout ça !
Logiciel du PIC
Le fichier binaire compilé
(*.hex) et le code source sont disponibles dans l'archive dont
le
lien suit. Ecriture / compilation avec MikroPascal Pro
V5.30.
Indicateur
battements coeur 001 - 16F628A - 22/09/2013
Si
vous souhaitez recevoir par la poste un PIC préprogrammé
et prêt à utiliser, merci de consulter la page
PIC - Sources.
Circuit imprimé
Non réalisé.
Historique
08/02/2015
- Ajout commentaires et photos du prototype de Alain D., que je remercie.
22/09/2013
- Ajout possibilité de choisir entre deux échelles pour l'indication
autonome par LED des écarts de rythme cardiaque (utilisation de la
broche RA5 pour le choix de l'échelle). A celle d'origine
+/-40 s'ajoute celle de +/-20.
30/10/2011
- Ajout du
condensateur C6 de 47 nF en parallèle sur [RV1 + R8] pour limiter un
peu plus la bande passante dans le haut du spectre (filtrage passe-bas
plus énergique). Le réglage de RV1 s'en trouve facilité et les petits
mouvements de doigt entre source d'émission et capteur sont moins
problématiques (impulsions délivrées plus stables).
- Essais avec élements d'émission et de réception infrarouge combinés
(OPB706) et discrets (LED55C et BPW42).
02/10/2011
- Ajout vidéo présentation.