Der Sensor zum Messen der Pulsfrequenz des menschlichen Herzens ist ein
recht gängiges Arduino-Modul. Es wurde als
Open Hardware
von Joel Murphy and Yury Gitman erstellt.
Geliefert wird es entweder verlötet mit einer Stiftleiste oder mit Jumperkabeln, wobei
letztere den Umgang mit dem Modul erleichtern, da ja der Kontakt mit der Haut (z.B. den
Fingerspitzen) erforderlich ist. Betrieben wird das Modul mit 3V bis 5V und verbraucht
ca. 4mA (bei 5V).
Die Herzfrequenz wird mit einer hellen LED im Zentrum der kreisförmigen Platine und einem unmittelbar daneben liegenden Umgebungslichtsensor (hier: APDS-9008 von Avago) gemessen. Man drückt das Modul leicht auf eine Stelle der Haut, wo sich eine Arterie befindet und die Haut möglichst dünn ist, z.B. eine Fingerspitze. Dabei muss darauf geachtet werden, dass der Druck nicht zu stark (Blutzufuhr wird sonst abgeklemmt) aber auch nicht zu gering ist (Umgebungslicht kann den Sensor stören).
Das zurückgeworfene Licht wird vom Umgebungslichtsensor aufgefangen und mittels eines Operationsverstärkers an den Signal-Ausgang weitergeleitet. Durch die unterschiedliche Durchlässigkeit des Lichts der Arterien, während das Blut hindurch fließt, werden auch unterschiedliche Signal-Stärken an den Ausgang geliefert.
Pin | Arduino |
---|---|
+ (VCC) | 5V oder 3V |
- (GND) | GND |
S (Signal) | analoger Pin (z.B. A0) |
Achtung: Nicht das Sensor-Modul mit dem Körper berühren/anschließen, solange noch eine Verbindung zum Stromnetz besteht! (PC, Laptop, USB-Ladegeräte etc.)! Am besten immer eine 3V/5V Stromquelle verwenden.
Um zu vermeiden, dass durch den Körperkontakt die offenen Leiterbahnen des Pulsmoduls einen Kurzschluss und/oder unvorhergesehene Messungen produzieren, wird das Modul zunächst mit der Berührungsseite mit der mitgelieferten, selbstklebenden PVC-Folie (oder einem anderen durchsichtigen Klebeband) isoliert.
Da auf der Unterseite des Moduls die elektronischen Komponenten offen liegen, wird hier ein Stück des mitgelieferten Klettbandes darüber befestigt.
Diese Vorbereitungen reichen für einen Prototypen aus, aber dennoch sind noch Anschlüsse
nicht isoliert, so dass es nicht für ein "Endverbraucher-Produkt" tauglich ist.
Für detailliertere Informationen siehe:
Pulse Sensor Getting Started Guide
Der folgende Sketch sendet die Puls-Signale kontinuierlich vom analogen Pin an die serielle Konsole. Durch den in der Arduino-IDE eingebauten seriellen Plotter werden die Signale in einen Graphen umgewandelt, der an einen Herz-Monitor erinnert.
#define PIN_SENSOR A0
#define PIN_LED 13
#define PULSE_THRESHOLD 510
void setup()
{
pinMode(PIN_LED, OUTPUT);
Serial.begin(9600);
}
void loop()
{
int pulseSignal = analogRead(PIN_SENSOR);
Serial.println(pulseSignal);
if (pulseSignal > PULSE_THRESHOLD) {
digitalWrite(PIN_LED, HIGH);
} else {
digitalWrite(PIN_LED, LOW);
}
delay(10);
}
Es wird von pulsesensor.com eine Arduino-Library mit einigen Beispielen zur Verfügung gestellt, um u.a. die durchschnittliche Herzfrequenz zu errechnen und auf dem seriellen Plotter anzuzeigen. Der folgende Sketch ist das vereinfachte Beispiel "PulseSensor_BPM". (siehe mehr Informationen im Beispiel-Sketch bzw. der Library).
#define USE_ARDUINO_INTERRUPTS true
#include <PulseSensorPlayground.h>
const int OUTPUT_TYPE = SERIAL_PLOTTER;
const int PULSE_INPUT = A0;
const int PULSE_BLINK = 13;
const int PULSE_FADE = 5;
const int THRESHOLD = 510;
PulseSensorPlayground pulseSensor;
void setup()
{
Serial.begin(115200);
pulseSensor.analogInput(PULSE_INPUT);
pulseSensor.blinkOnPulse(PULSE_BLINK);
pulseSensor.fadeOnPulse(PULSE_FADE);
pulseSensor.setSerial(Serial);
pulseSensor.setOutputType(OUTPUT_TYPE);
pulseSensor.setThreshold(THRESHOLD);
if (!pulseSensor.begin()) {
Serial.println("Error init pulseSensor!");
while (true);
}
}
void loop()
{
pulseSensor.outputSample();
if (pulseSensor.sawStartOfBeat()) {
pulseSensor.outputBeat();
}
delay(20);
}
zurück