In diesem Tutorial schauen wir uns den KY-039 Herzschlagsensor an. Das gemessene Signal zeigen wir dann auf dem Serial Plotter an.
Material und Schaltplan
Folgende Materialien benötigst du für dieses Tutorial:
Arduino UNO*Herzschlagsensor KY-039*Steckbrett*Drähte*Der Schaltplan ist sehr einfach. Die Spannungsversorgung mit 5V+ und GND muss angeschlossen werden. Der dritte Anschluss "S" führt zum Analogen Pin A0.
Funktionsweise des Sensors
Man würde vielleicht erwarten, der Sensor gibt uns einfach eine Herzschlagrate als Wert zurück. Aber ganz so einfach ist es leider nicht.
Zunächst müssen wir verstehen, wie der Sensor funktioniert. Er besteht aus einer Infrarot Leuchtdiode und einem Empfänger, der misst, wieviel Infrarotlicht es vom Sender zum Empfänger schafft. Je weniger Infrarotlicht durchkommt, desto höher der Wert. Am Anschluss "S" des Sensors wird uns ein analoger Wert zwischen 0 und 1023 übergeben.
Wenn wir nun unseren Finger zwischen die Infrarot-LED und dem Empfänger platzieren, erweitert der Herzschlag die Blutgefäße, was zur Folge hat, dass weniger Infrarotlicht am Empfänger ankommt. Daraus entsteht ein pulsierendes Signal, welches sich messen lässt und darstellen lässt.
Im ersten Schritt wollen wir die Daten im Seriellen Plotter ausgeben. Dazu wird der Pinmode des Analogpins A0 auf Input festgelegt. Anschließend wird der Wert am Analogpin A0 mit der Methode "analogRead(A0)" gelesen. Um Störungen im Signal, z.b. durch Wackeln oder durch Umgebungslicht, etwas auszugleichen, werden immer 20 Messungen gemacht, von denen der Mittelwert gebildet wird.
Nach je 20 Messungen wird eine Pause von 100 ms eingelegt.
Arduino Sketch: herzschlag.inoxxxxxxxxxxvoid setup() { pinMode(A0, INPUT);}void loop() { float beat; float sum = 0; for (int i = 0; i < 20; i++) //mit Schleife 20 Messung ausführen sum += analogRead(A0); beat = sum / 20.00; //Mittelwert bilden delay(100);} Messdaten im Serial-Plotter ansehen
Zur Ausgabe der Werte im Serial Plotter müssen wir die Werte über die Serielle Schnittstelle senden.
Der gesamte Sketch:xxxxxxxxxxvoid setup() { pinMode(A0, INPUT); Serial.begin(9600); //Initialisiert die serielle Kommunikation mit 9600 Baud}void loop() { float beat; float sum = 0; for (int i = 0; i < 20; i++) sum += analogRead(A0); beat = sum / 20.00; Serial.print("Herzschlag:"); //Übertragen des Namens zur Darstellung im Plotter Serial.print(beat); //der eigentlich anzuzeigende Wert Serial.print("\n"); //Zeilenumbruch delay(100);} Nach dem der Sketch übertragen wurde, kannst Du den Serial-Plotter öffnen (Menü: Tools > Serial Plotter). Nun sollte der Verlauf des Signals entsprechend abgebildet werden.
Herzschlag im Serial-Plotter
Fazit
Natürlich ist das keine Ausgabe eines Herzschlages für medizinische Zwecke. Es sind Störsignale enthalten, z.b. durch Umgebungslicht oder durch die 50Hz Netzfrequenz von Raumleuchten. Und natürlich ist der Sensor nicht besonders hochwertig und auch nicht entsprechend vom Umgebungslicht abgeschirmt.
Der sehr einfache Algorithmus könnte natürlich auch noch verbessert werden. Dieses Tutorial sollte den Sensor nur kurz vorstellen, nun bist Du am Zug, damit etwas zu basteln!