Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Détection de la fréquence cardiaque avec une photorésistance

Composants et fournitures

Digilent OpenScope MZ
× 1
Arduino UNO
× 1
Texas Instruments Quad Op-Amp à usage général
× 1
Comparateur unique haute vitesse Texas Instruments
× 1
Potentiomètre de précision multitours - 10k ohms (25 tours)
× 2
Potentiomètre à un tour - 100k ohms
Si vous pouvez obtenir un potentiomètre multi-tours, il sera plus facile à régler.
× 1
Potentiomètre à un tour - 10k ohms
× 1
Condensateur 100 µF
× 1
Condensateur 100 nF
× 1
Résistance 10k ohm
Ou un seul 20k
× 2
Résistance 4.75k ohm
× 1
Résistance 82k ohm
Vous pouvez également obtenir deux des 100k potentiomètres et en régler un sur 82k.
× 1

Applications et services en ligne

Arduino IDE
Digilent WaveForms Live

À propos de ce projet

Présentation

Ce projet a été inspiré par une vidéo YouTube publiée par CapitanoRed , où l'auteur a conçu un moniteur de fréquence cardiaque à photorésistance à afficher sur un oscilloscope. Après avoir vu leur vidéo, j'ai voulu répliquer le projet et ajouter un Arduino pour calculer et afficher la fréquence cardiaque. De cette façon, vous pouvez regarder la forme d'onde sur un oscilloscope tout en obtenant une lecture de votre fréquence cardiaque.

Lorsque le cœur se contracte et pousse le sang dans tout le corps, les fluctuations momentanées de la pression artérielle sont détectables. C'est la raison pour laquelle nous pouvons sentir notre pouls. Dans les zones du corps où la peau et la chair sont suffisamment fines, ces impulsions peuvent être détectées dans les légères variations de lumière qui les traverse. Bien que nos yeux ne soient pas assez sensibles pour voir la lumière traverser notre corps, sans parler des fluctuations, les photorésistances ont ce niveau de sensibilité.

Une photorésistance fait varier sa résistance avec l'intensité de la lumière qui lui tombe dessus. Bien que la variation de résistance puisse être assez faible pour des changements subtils d'intensité lumineuse, elles peuvent être amplifiées à l'aide de quelques circuits intégrés d'amplificateur opérationnel.

Principes de fonctionnement

Les diagrammes ci-dessous montrent le schéma du circuit ainsi que la maquette utilisée dans ce projet.

La photorésistance est dans un diviseur de tension avec la résistance de 20 kΩ, ce qui signifie que lorsque la quantité de lumière sur la résistance augmente, la tension au niveau du diviseur augmente également. Le premier amplificateur opérationnel ("Amp1" dans l'image ci-dessus) sert de filtre pour le diviseur de tension, éliminant le bruit haute fréquence du signal. Le deuxième ampli op ("Amp2") sert d'amplificateur inverseur, réglé pour maximiser le signal traversant le filtre. Le troisième amplificateur opérationnel ("Amp3") définit la masse virtuelle, qui centre le signal à 2,5V. Cela garantit que les amplis op sont capables de fournir une oscillation maximale du signal de 0V à 5V. Après avoir été filtré et amplifié, le signal ressemble à ceci.

Afin de permettre à l'Arduino de mesurer votre fréquence cardiaque, le signal doit passer par un comparateur ("Cmp" dans le schéma). Un comparateur est un ampli op spécialisé conçu pour produire un signal haut ou bas. Lorsque la tension à l'entrée positive est supérieure à l'entrée négative, le comparateur sort haut, et lorsque la tension à l'entrée positive est inférieure à l'entrée négative, le comparateur sort bas. Dans sa configuration la plus basique, un comparateur sert de détecteur de seuil, signalant lorsque la tension mesurée est supérieure ou inférieure à ce seuil. Étant donné qu'un comparateur produit une sortie haute (5 V) ou basse (0 V), il est parfait pour l'interfaçage avec les broches numériques d'un Arduino.

En regardant de plus près l'image du signal provenant de l'ampli op, il est clair qu'il y a une impulsion secondaire avant que la tension ne baisse (c'est ce qu'on appelle l'encoche dicrotique). De plus, il y a une quantité importante de bruit dans le signal. Ces deux faits signifient que la configuration de base du comparateur ne sera pas en mesure de détecter correctement les impulsions. Au lieu d'une seule impulsion carrée pour chaque battement cardiaque, le comparateur générera plusieurs impulsions. Cela se produira parce que le bruit amènera le signal à franchir le seuil plusieurs fois lors de la montée et de la descente et, selon l'endroit où les seuils sont définis, peut-être pendant le cran dicrotique. Cela se traduira par l'Arduino comptant beaucoup plus d'impulsions qu'il n'y en avait réellement.

Un signal bruité peut être traité en utilisant l'hystérésis. Ce document par Texas Instruments présente une excellente discussion sur le sujet du conditionnement du signal avec hystérésis, montre comment le bruit du signal affecte les performances du comparateur et comment traiter ces problèmes. J'ai utilisé leurs schémas et équations dérivées (pages 5 et 7, respectivement, du document) pour concevoir le comparateur asymétrique pour ce projet. L'idée générale est qu'une boucle de rétroaction de la sortie modifiera la tension à l'entrée positive, ce qui signifie que le seuil pour passer de bas à haut sera différent du seuil pour passer de haut à bas. Ce que cela signifie dans le contexte des impulsions cardiaques, c'est que le comparateur peut être réglé pour se déclencher à un moment donné lors de la phase ascendante, puis à un autre point lors de la phase descendante, de préférence après l'encoche dicrotique. De cette façon, l'Arduino verra une seule impulsion carrée pour chaque battement cardiaque, comme indiqué ci-dessous.

Préparation de la photorésistance

Je recommande fortement d'utiliser une sorte de couverture transparente sur la photorésistance, telle qu'un thermorétractable transparent. À tout le moins, assurez-vous que les fils sont complètement recouverts pour éviter de les toucher avec votre peau. Les tensions générées par votre corps se situent bien dans la plage que la photorésistance crée lorsqu'elle détecte votre pouls, donc le contact avec votre peau pourrait fausser les résultats.

Réglage du moniteur de fréquence cardiaque

Pour le potentiomètre du schéma (R7), utilisez un potentiomètre à un tour et ajustez-le pour maximiser le gain de l'ampli op sans entrer dans la saturation. Commencez par régler un côté du potentiomètre à environ 375Ω et connectez le filtre ("Amp1") à ce côté. Cette quantité de gain devrait générer suffisamment d'impulsions pour que vous puissiez la voir dans WaveForms Live. Après avoir suivi les étapes de la section suivante ("Affichage des impulsions dans WaveForms Live") et affiché avec succès votre impulsion, vous pouvez modifier le gain si nécessaire. Augmentez l'amplitude d'impulsion en tournant le potentiomètre pour réduire la résistance côté filtre. Si l'amplitude est déjà trop grande et provoque un écrêtage, augmentez la résistance côté filtre. Lisez les légendes sur les images qui suivent pour déterminer à quoi ressemble un signal souhaitable.

Je recommande d'utiliser des potentiomètres multitours pour les résistances R3 et R4 afin de régler précisément les seuils du comparateur. La résistance R5 peut être n'importe quelle résistance dans la plage de 10 à 100 kΩ, à condition qu'elle soit mesurée avec précision. Vous pouvez utiliser la feuille de calcul dans la section des pièces jointes pour déterminer les valeurs à définir pour R3 et R4 en fonction de la valeur mesurée de R5 et des tensions de seuil. Les seuils « Vl » et « Vh » devront être modifiés en fonction de l'impulsion que vous verrez à travers l'oscilloscope (voir la section intitulée « Réglage des seuils du comparateur »).

Les résistances R8 et R9 peuvent être remplacées par un potentiomètre, la broche du milieu étant connectée à l'entrée positive de l'ampli op. De cette façon, la terre virtuelle peut facilement être ajustée sans avoir à trouver des résistances adaptées. Utilisez un voltmètre ou l'OpenScope tout en ajustant la sortie à 2,5V.

Affichage des impulsions dans WaveForms Live

Afin de visualiser votre rythme cardiaque via WaveForms Live, vous devrez modifier certains paramètres dans le menu. Par défaut, la sortie sera soit allongée et difficile à interpréter, soit la vitesse de mise à jour sera très lente et il sera difficile d'ajuster votre prise sur la photorésistance pour générer des impulsions claires.

Connectez le canal 2 de l'oscilloscope OpenScope (fil bleu) à la sortie de "Amp2" et assurez-vous que le fil de terre est connecté à la terre sur la maquette. Dans WaveForms Live, modifiez l'Heure à "1s" et dans le Trigger menu appuyez sur la touche OFF bouton. Pour les deux Osc Ch 1 et Osc Ch2 les menus définissent le Décalage à 2,5 V et à côté des Échantillons cliquez sur l'icône de verrouillage et tapez "1000" dans le champ qui devient disponible. Cela fera apparaître le signal sur une échelle de temps facile à interpréter, mais fera que les mises à jour se produiront plus souvent qu'elles ne le feraient par défaut. L'écran devrait se mettre à jour toutes les 4 secondes environ. Si cela est encore trop lent, vous pouvez augmenter les Échantillons valeur, mais au détriment d'un extrait plus court du signal ("2000" capturera environ un battement de cœur à la fois).

Appuyez sur RUN et prenez votre pouls avec votre doigt sur la photorésistance. Vous devrez trouver la meilleure façon d'obtenir des résultats cohérents. Le système est très sensible aux changements de pression, vous devez donc trouver un moyen de garder votre doigt très immobile. J'ai trouvé que le meilleur endroit pour prendre mon pouls était dans la première articulation de l'index. Il faut un peu de temps pour s'entraîner, mais vous finirez par trouver la meilleure méthode. Si votre pouls semble trop faible, ajustez le potentiomètre comme indiqué dans le premier paragraphe de la section précédente ("Réglage du moniteur de fréquence cardiaque").

Définition des seuils du comparateur

Une fois que le signal est visible sur l'oscilloscope, vous devrez définir les seuils auxquels le comparateur se déclenchera et signalera l'Arduino. Obtenez une forme d'onde représentative et arrêtez la capture pour conserver la forme d'onde à l'écran. En bas de l'écran, appuyez sur les CURSEURS bouton. Sous Type sélectionnez "Tension" et définissez les deux CursorChannels à "Osc 2". Deux lignes horizontales en pointillés apparaîtront à l'écran. Faites glisser les triangles sur le côté gauche pour les déplacer. Réglez l'une des lignes à un point proche du pic du pouls et l'autre à un point en dessous de l'encoche dicrotique. Regardez en bas de l'écran et enregistrez les deux tensions indiquées entre parenthèses. Entrez ces valeurs comme tensions de seuil « Vl » et « Vh » dans la feuille de calcul jointe à la fin. La plus petite valeur sera "Vl" et la plus grande sera "Vh". Sur la base de ces valeurs et de la valeur de résistance R5 que vous avez choisie, définissez les valeurs du potentiomètre R3 et R4 que la feuille de calcul calcule.

Une fois le comparateur réglé, il doit commencer à émettre un signal ressemblant à celui qui précède la section « Préparation de la photorésistance ».

Code Arduino

Le code Arduino se compose d'un fréquencemètre et d'une méthode de calcul de la fréquence cardiaque en battements par minute. Le fréquencemètre prend en compte la largeur de l'impulsion provenant du comparateur et rejette tout ce qui est inférieur à 200 millisecondes ou supérieur à 800 millisecondes. Cela l'empêchera d'afficher de fausses données lorsque la photorésistance n'est pas utilisée pour les mesures et que le comparateur peut être haut, bas ou basculer rapidement entre les deux états. Le code conserve une moyenne courante de la fréquence cardiaque au cours des 15 secondes précédentes afin de filtrer les impulsions manquées dues au bruit du signal causé par des mouvements accidentels.

Améliorations futures

Le principal inconvénient de ce projet est qu'il est difficile de tenir la photorésistance de telle sorte que les impulsions soient de même amplitude entre les utilisations. Étant donné que le capteur dépend de la lumière ambiante pour la détection des impulsions, la modification des niveaux de lumière tout au long de la journée peut entraîner des résultats différents. J'ai remarqué que les jours nuageux, les seuils de mon comparateur étaient trop larges et que les jours de forte luminosité, l'encoche dicrotique était très prononcée et pouvait provoquer une fausse détection des impulsions. De plus, même les changements de lumière subtils causés par le mouvement dans la pièce sont détectables par la photorésistance. La question de la cohérence peut être abordée de différentes manières.

Le système de capteur pourrait inclure une LED pour fournir une lumière constante. Cela ressemblerait aux clips de surveillance cardiaque utilisés dans les cabinets de médecins ou aux moniteurs de fréquence cardiaque vus dans les téléphones portables. J'ai essayé de tenir une LED rouge contre le haut de mon doigt avec la photorésistance de l'autre côté. Les résultats étaient encourageants, c'est donc probablement une option viable si un bon enclos pouvait être fabriqué.

Côté logiciel, une solution potentielle serait d'utiliser un algorithme de sélection automatique dans l'Arduino. Il détecterait les impulsions et trouverait leurs pics et leurs creux. Cependant, cela ne suffirait pas pour effectuer une mesure de la fréquence cardiaque. Un compteur de fréquence approprié nécessite des interruptions. Sans interruption, le processeur de l'Arduino pourrait faire autre chose que vérifier les broches d'entrée et rater une impulsion. Étant donné que les interruptions ne sont disponibles que sur les broches numériques, la meilleure façon de mettre en œuvre la gamme automatique serait d'utiliser des potentiomètres numériques. L'Arduino utiliserait la broche analogique pour trouver la plage dans laquelle l'impulsion apparaît, déterminerait quels devraient être les seuils du comparateur, les appliquerait via les potentiomètres numériques, puis utiliserait le signal numérique du comparateur pour effectuer le comptage de fréquence.

Code

  • comparateur calcs.xlsx
  • Compteur de fréquence cardiaque Arduino
comparateur calcs.xlsxArduino
Cette feuille de calcul Excel calculera les valeurs R3 et R4 pour définir des seuils asymétriques pour le comparateur. Vous pouvez remplacer la colonne R5 par une valeur de résistance mesurée. Vl et Vh doivent être modifiés selon les seuils nécessaires pour obtenir un pouls propre à partir de la fréquence cardiaque.
Aucun aperçu (téléchargement uniquement).
Compteur de fréquence cardiaque ArduinoArduino
Ce code calculera votre fréquence cardiaque en fonction des impulsions qui lui sont envoyées par le comparateur.
#define INT0 3float Frequency;long timeCount;int counter;long pulseStart;int inputPin =3;boolean low;float freqAvg;float total;void setup() { attachInterrupt(digitalPinToInterrupt(INT0), intrruption, CHANGE); compteur =0 ; timeCount =0 ; fréquence =0; faible =faux ; Serial.begin(9600); total =15;}boucle vide() { timeCount =millis(); while(millis() - timeCount <5000){ fréquence =compteur ; } if(fréquence> 3){ total +=fréquence ; total -=freqAvg; freqMoy =total/3 ; } showHR(); counter =0;}void intrruption(){ if(digitalRead(3) ==0){ fallDetect(); faible =vrai ; } else if(digitalRead(3) ==1){ widthCheck(); }}void fallDetect(){ pulseStart =millis();}void widthCheck(){ long pulseEnd =millis(); if((pulseEnd - pulseStart> 200) &&(pulseEnd - pulseStart <800) &&low){ counter++; faible =faux ; }}void showHR(){ Serial.print("Fréquence cardiaque ="); Serial.println(freqAvg * 12); }

Schémas

hr_monitor_tnffXlVQQV.fzz

Processus de fabrication

  1. Défibrillateur externe
  2. Cœur artificiel
  3. Valve cardiaque artificielle
  4. Détection de foudre avec un Raspberry Pi
  5. Windows 10 IoT Core – Lecture des impulsions de fréquence cardiaque
  6. Moniteur de fréquence cardiaque à distance
  7. Détection du magnétisme du noyau d'un seul atome
  8. Capteurs intégrés aux vêtements Moniteur de fréquence cardiaque
  9. La santé cardiaque commence par de l'air comprimé sans huile