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

Construire un Moniteur de Fréquence Cardiaque Précis avec une Photorésistance et Arduino

Composants et fournitures

Composant Quantité Notes
Digilent OpenScope MZ 1 Pour visualiser le signal (oscilloscope)
Arduino UNO 1
Amplificateur opérationnel quadruple TI (ex: LM324) 1 Usage général
Comparateur rapide TI (ex: TLV3501) 1 Simple, haute vitesse
Potentiomètre multi-tours 10 kΩ (25 tours) 2 Pour réglages précis
Potentiomètre simple tour 100 kΩ 1 Multi-tours recommandé pour réglage fin
Potentiomètre simple tour 10 kΩ 1
Condensateur 100 µF 1
Condensateur 100 nF 1
Résistance 10 kΩ 2 Ou une seule 20 kΩ
Résistance 4,75 kΩ 1
Résistance 82 kΩ 1 Ou deux potentiomètres 100 kΩ réglés à 82 kΩ

Applications et services en ligne

À propos du projet

Introduction

Ce projet s'inspire d'une vidéo YouTube de CapitanoRed où l'auteur réalise un moniteur cardiaque à photorésistance affiché sur oscilloscope. J'ai voulu reproduire le montage et y ajouter un Arduino pour calculer et afficher la fréquence cardiaque, tout en gardant la visualisation du signal sur oscilloscope.

Quand le cœur se contracte, les fluctuations de pression artérielle sont détectables – c'est ce qu'on sent comme pouls. Dans les zones où la peau est fine, ces pulsations créent de légères variations de lumière traversant le tissu. Nos yeux ne les perçoivent pas, mais les photorésistances, elles, y sont sensibles.

Une photorésistance varie sa résistance selon l'intensité lumineuse. Bien que la variation soit faible pour des changements subtils, elle peut être amplifiée par quelques amplificateurs opérationnels.

Principes de fonctionnement

Construire un Moniteur de Fréquence Cardiaque Précis avec une Photorésistance et Arduino
Construire un Moniteur de Fréquence Cardiaque Précis avec une Photorésistance et Arduino

La photorésistance forme un diviseur de tension avec une résistance de 20 kΩ. Plus la lumière augmente, plus la tension au point milieu augmente.

Construire un Moniteur de Fréquence Cardiaque Précis avec une Photorésistance et Arduino

Le signal passe ensuite par un comparateur (Cmp) qui sort un niveau haut (5 V) ou bas (0 V) – idéal pour les entrées numériques de l'Arduino. Mais le signal brut présente un « notch dicrotique » (pic secondaire) et du bruit, ce qui ferait déclencher le comparateur plusieurs fois par battement.

Construire un Moniteur de Fréquence Cardiaque Précis avec une Photorésistance et Arduino

La solution : hystérésis (comparateur asymétrique). Une boucle de rétroaction modifie la tension d'entrée positive, créant deux seuils distincts : un pour la montée (Vh), un pour la descente (Vl). Le comparateur ne déclenche qu'une fois par battement, après le notch dicrotique.

Construire un Moniteur de Fréquence Cardiaque Précis avec une Photorésistance et Arduino

Voir le document Texas Instruments sur le conditionnement de signal avec hystérésis (pages 5 et 7).

Préparation de la photorésistance

Utilisez un revêtement transparent (gaine thermorétractable claire) pour protéger la photorésistance. Au minimum, isolez complètement les pattes pour éviter tout contact avec la peau – les tensions corporelles sont dans la même gamme que le signal détecté.

Construire un Moniteur de Fréquence Cardiaque Précis avec une Photorésistance et Arduino

Réglage du moniteur cardiaque

Pour le potentiomètre R7 (gain de l'ampli), commencez avec ~375 Ω côté filtre. Ajustez pour maximiser l'amplitude sans saturation (écrêtage). Observez sur WaveForms Live.

Construire un Moniteur de Fréquence Cardiaque Précis avec une Photorésistance et Arduino
Construire un Moniteur de Fréquence Cardiaque Précis avec une Photorésistance et Arduino
Construire un Moniteur de Fréquence Cardiaque Précis avec une Photorésistance et Arduino
Construire un Moniteur de Fréquence Cardiaque Précis avec une Photorésistance et Arduino
Construire un Moniteur de Fréquence Cardiaque Précis avec une Photorésistance et Arduino
Construire un Moniteur de Fréquence Cardiaque Précis avec une Photorésistance et Arduino
Construire un Moniteur de Fréquence Cardiaque Précis avec une Photorésistance et Arduino

Utilisez des potentiomètres multi-tours pour R3 et R4 (seuils comparateur). R5 : résistance 10–100 kΩ mesurée précisément. Un tableau Excel (fourni) calcule R3 et R4 selon R5, Vl et Vh.

R8 et R9 (masse virtuelle) peuvent être remplacés par un potentiomètre, curseur sur l'entrée positive de l'AOP, ajusté pour 2,5 V sortie (voltmètre ou OpenScope).

Visualisation dans WaveForms Live

Connectez la canal 2 (fil bleu) de l'OpenScope à la sortie de l'Amp2, masse sur breadboard. Dans WaveForms Live :

Appuyez sur RUN, placez votre doigt sur la photorésistance (premier joint de l'index recommandé), restez immobile. Ajustez le gain si nécessaire.

Construire un Moniteur de Fréquence Cardiaque Précis avec une Photorésistance et Arduino

Réglage des seuils du comparateur

Arrêtez la capture sur une forme d'onde représentative. Activez CURSORS → Type « Voltage », les deux canaux sur « Osc 2 ». Placez un curseur près du pic, l'autre sous le notch dicrotique. Relevez les deux tensions (Vl = plus petite, Vh = plus grande). Entrez-les dans le tableau Excel avec la valeur de R5 pour obtenir R3 et R4.

Construire un Moniteur de Fréquence Cardiaque Précis avec une Photorésistance et Arduino

Code Arduino

Le code compte les impulsions du comparateur (largeur 200–800 ms) et calcule la fréquence cardiaque (bpm) sur une moyenne glissante de 15 secondes pour filtrer les ratés dus aux mouvements.

#define INT0 3
float frequency, freqAvg, total;
long timeCount, pulseStart;
int counter, inputPin = 3;
boolean low;

void setup() {
  attachInterrupt(digitalPinToInterrupt(INT0), intrruption, CHANGE);
  counter = 0; timeCount = 0; frequency = 0; low = false;
  Serial.begin(9600);
  total = 15;
}

void loop() {
  timeCount = millis();
  while (millis() - timeCount < 5000) {
    frequency = counter;
  }
  if (frequency > 3) {
    total += frequency;
    total -= freqAvg;
    freqAvg = total / 3;
  }
  showHR();
  counter = 0;
}

void intrruption() {
  if (digitalRead(3) == 0) { fallDetect(); low = true; }
  else if (digitalRead(3) == 1) { widthCheck(); }
}

void fallDetect() { pulseStart = millis(); }

void widthCheck() {
  long pulseEnd = millis();
  if ((pulseEnd - pulseStart > 200) && (pulseEnd - pulseStart < 800) && low) {
    counter++; low = false;
  }
}

void showHR() {
  Serial.print("Heart rate = ");
  Serial.println(freqAvg * 12); // 5s fenêtre → ×12 pour bpm
}

Améliorations futures

Code source

Schémas

Fichier Fritzing : hr_monitor_tnffXlVQQV.fzz

Processus de fabrication

  1. Défibrillateur externe : histoire, conception et fabrication
  2. Cœur artificiel : technologie, histoire et perspectives futures
  3. Valves cardiaques artificielles : types, histoire et innovations futures
  4. Détection d'éclairs avec Raspberry Pi et AS3935 : Guide pratique
  5. Lire les pulsations cardiaques avec Windows 10 IoT Core sur Raspberry Pi – Guide étape par étape
  6. Système de surveillance cardiaque à distance avec alertes AWS IoT
  7. Mesure de la signature magnétique du noyau d'un atome unique
  8. Capteurs de fréquence cardiaque intégrés dans les vêtements intelligents : surveillance portable fiable
  9. Protégez votre cœur : habitudes de vie essentielles pour le mois de la santé cardiaque en février