Capteur de battement cardiaque (KY-039)

Capteur de battement cardiaque (KY-039)

Code produit: KY-039
Qté en Stock : 5
  • $1.99


Données techniques / Description sommaire


Si on met un doigt sur la diode émettrice et le phototransistor, le signal de sortie délivre une image des pulsations du sang dans votre doigt.

Un phototransistor fonctionne comme ceci: il agit comme un transistor normal sauf que le courant de la base est remplacé par de la lumière reçue. Lorsque le phototransistor reçoit de la lumière, il change d'état et peut commuter une intensité relativement importante (en fonction de ses caractéristiques). 

Si vous placez une résistance en série avec le phototransistor, vous pourrez observer le comportement suivant: la tension aux bornes du phototransistor sera proche de 0 V lorsqu'il sera exposé à une lumière extérieure, tandis que cette tension sera proche de la tension d'alimentation dans l'obscurité.

Ce module permet de mesurer vos pulsations en plaçant un doigt entre la diode et le phototransistor. 

Explication: si vous placez votre doigt devant une lampe de poche, il deviendra plus ou moins translucide. Selon l'endroit éclairé, on peut vaguement discerner le pompage du sang.

Ce pompage du sang dans la veine présente une densité différente et donc des différences de luminosité dans le flux sanguin. Ce sont ces différences de luminosité que le module peut détecter et ainsi compter les pulsations. Ce phénomène est illustré par la capture d'écran sur un oscilloscope:

L'écran montre la variation de la tension au niveau du phototransistor (ainsi que les variations de luminosité dues à la circulation du sang) sur l'axe des ordonnées. Les pics ci-dessus représentent les impulsions du cœur. Si on compte les battements, on obtient environ 71 battements/minute.


Pour obtenir de bons résultats, nous recommandons d'effectuer la mesure sur en plaçant le capteur sur l'extrémité du petit doigt.


Pour un meilleur résultat, il est préférable de fixer le capteur à l'aire de sparadrap ou ruban adhésif.


L'enregistrement du rythme cardiaque est meilleur lorsque le capteur est placé au-dessus d'un vaisseau sanguin majeur.


Il est parfois utile de tester différents emplacements pour le capteur afin d'obtenir un enregistrement de meilleure qualité.

Ce capteur est destiné à une utilisation didactique, le résultat dépend de la personne et de la position du doigt sur le capteur. Il est possible de ne pas obtenir de bons résultats dans certaines conditions.


Brochage


Branchement des câbles :


Gris   -->  GND


Blanc -->  +V


Noir   -->  Signal


Exemple de code pour Arduino


L'exemple de code suivant est de Dan Truong qui l'a publié sous ce [|lien] sous licence [|MIT OpenSource]. La version ci-dessous est traduite en français, l'originale est à télécharger ci-dessous. 


Ce code détecte une impulsion. Il n'enregistrera pas le rythme cardiaque, mais il va rechercher les pics qui seront assimilés à des pulsations et feront allumer la led. Le nombre de pulsations peut être plus ou moins calculé.


Si le doigt est replacé entre la LED et le phototransistor, un délai est nécessaire jusqu'à ce que le programme se recalibre pour la nouvelle mesure et délivre la valeur correcte.


////////////////////////////////////////////////////////////////////////
/// Copyright (c)2015 Dan Truong
/// Permission is granted to use this software under the MIT
/// licence, with my name and copyright kept in source code
///
/// KY039 Arduino Heartrate Monitor V1.0 (April 02, 2015)
////////////////////////////////////////////////////////////////////////
///
/// Commentaires en français de GO TRONIC
///
////////////////////////////////////////////////////////////////////////
/// @param[in] IRSensorPin broche analogique à laquelle est raccordé le capteur
/// @param[in] delay (msec) Le délai entre les appels de la fonction de balayage.
/// Les meilleurs résultats sont obtenus si vous appelez la fonction 5 fois/pulsation
/// Pas plus lent que 150 ms pour environ 70 pulsations/min.
/// Un délai de 60 ms ou plus rapide pour aller lusqu'à 200 pulsations/min.
///
///
/// @Résumé
/// Sortie Vraie si une pulsation est détectée
/// Ce code détecte seulement les impulsions, il ne donne
/// pas la forme d'onde des impulsions cardiaques.
///
///
////////////////////////////////////////////////////////////////////////
  
int rawValue;
  
  
bool
heartbeatDetected(int IRSensorPin, int delay)
{
 static int maxValue = 0;
 static bool isPeak = false;
  
  
 bool result = false;
  
 rawValue = analogRead(IRSensorPin);
 // La tension au phototransistor est lue et stockée dans la variable rawValue
 rawValue *= (1000/delay);
  
 // Si la valeur de la dernière mesure dévie trop
 // (par exemple parce que le doigt a été enlevé ou a bougé)
 // maxValue se réinitialise
 if (rawValue * 4L < maxValue) { maxValue = rawValue * 0.8;  } 
 // Detect new peak
 if (rawValue > maxValue - (1000/delay)) {
 // Détection de l'impulsion. Si la nouvelle rawValue est plus grande
 // que la dernière valeur maximale, elle sera prise en compte en enregistrée
 if (rawValue > maxValue) {
 maxValue = rawValue;
 }
 // Attribution des pulsations
 if (isPeak == false) {
 result = true;
 }
 isPeak = true;
 } else if (rawValue < maxValue - (3000/delay)) {
 isPeak = false;
 // La valeur maximale est légèrement diminuée à chaque passage.
 // Cela peut prendre plusieurs secondes pour détecter de nouveau
 // le signal lorsque le doigt a bougé ou que le capteur est devant
 // une partie osseuse du doigt. On peut aussi vérifier le délai
 // depuis la dernière pulsation et s'il excède 1 seconde, on
 // rénitialise maxValue
 maxValue-=(1000/delay);
 }
 return result;
}
  
  
////////////////////////////////////////////////////////////////////////
// Arduino main code
////////////////////////////////////////////////////////////////////////
int ledPin=13;
int analogPin=0;
  
void setup()
{
 // La LED Arduino intégrée (Digital 13) est utilisée pour la sortie
 pinMode(ledPin,OUTPUT);
  
 // Initialisation de la sortie série
 Serial.begin(9600);
 Serial.println("Exemple de code de détection de pulsations.");
}
  
const int delayMsec = 60; // 100msec per sample
  
// Le programme principal a deux sorties:
// - Si un battement de coeur est détecté, le voyant clignote
// - L'impulsion est calculée et envoyée vers la sortie série.
  
void loop()
{
 static int beatMsec = 0;
 int heartRateBPM = 0;
 Serial.println(rawValue);
 if (heartbeatDetected(analogPin, delayMsec)) {
 heartRateBPM = 60000 / beatMsec;
 // Sortie LED par impulsion
 digitalWrite(ledPin,1);
  
 // Envoi des données série
 Serial.print(rawValue);
 Serial.print(", ");
 Serial.println(heartRateBPM);
  
 beatMsec = 0;
 } else {
 digitalWrite(ledPin,0);
 }
 delay(delayMsec);
 beatMsec += delayMsec;
 }




Affectation des broches Arduino:




Sensor Signal = [Pin 0]
Sensor +V = [5V]
Sensor - = [Pin GND]



Écrire une critique

Remarque: HTML n`est pas traduit!
    Mal           Bien
Captcha