Elektrokardiogramm
Das Elektrokardiogramm (kurz EKG) ist die Aufzeichnung der elektrischen Aktivitäten der Herzmuskelfasern mittels eines Elektrokardiografen. Auch dieses Gerät lässt sich mit einem Arduino umsetzen. Für das Experiment werden 3 Körperelektroden benötigt. Eine davon wird mit dem rechten Fuß verbunden, die beiden anderen werden an den in der Abbildung gezeigten Stellen platziert. Die schwachen Spannungen werden mit einem Instrumentenverstärker (INA128) erfasst und verarbeitet.
Mit einem Oszilloskop lässt sich dann die Herztätigkeit visuell darstellen. Um den Puls zu ermitteln, wird der Ausgang des zur Verstärkung des Signals dienenden LM741 mit dem Arduino über einen digitalen Pin (z.B. D7) verbunden.
Zur besseren Kopplung der Elektroden an die Haut wird EKG-Gel empfohlen.










Arduino-Code:
// This program reads the incoming signal from the electrocardiograph and outputs the heart rate
// Pin D7 is connected to the signal input
// Pin D6 is connected to a mini-speaker
// For the connection to the liquid crystal display, see the LiquidCrystal Librairy
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27,16,2); // ACHTUNG: set the LCD address to 0x20 or 0x27 for a 16 chars and 2 line display!!!
// Anschlüsse:
// GND - GND
// VCC - 5V
// SDA - ANALOG Pin 4
// SCL - ANALOG Pin 5
// Variablendeklaration
// ====================
const int signal = 7; // Pin connected to the filtered signal from the circuit
unsigned long time;
unsigned long frequency;
int period = 2000;
int starttime = 2000;
int input = 0;
int lastinput = 0;
// ==========================================
// ================= SETUP ==================
// ==========================================
void setup() {
Serial.begin(9600);
pinMode(signal, INPUT);
lcd.init(); // initialize the lcd
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Puls = ");
lcd.setCursor(0,1);
lcd.print("You are ");
}
// ==========================================
// ============= HAUPTSCHLEIFE===============
// ==========================================
void loop() {
time = millis(); // erfasst die aktuelle Zeit
input = digitalRead(signal); // Liest das Ausgabesignal ein
if ((input != lastinput)&&(input == HIGH)) // Abfrage bzgl. einer steigenden Flanke
{
period = time - starttime; // Berechnet die seit dem letzten Puls vergangene Zeit
starttime = time; // Werteübergabe bzgl. Zeit
tone(6,800,100); // kurze Tonausgabe
}
lastinput = input; // Werteübergabe bzgl. Ausgabesignal
if (period < 0) {
frequency = 0;
}
else {
frequency = 60000/period; // Berechnung der Herzfrequenz in Schläge/min
Serial.print("f = " );
Serial.println(frequency);
}
if (frequency < 20) // Puls < 20 bpm --> möglicher Herzstillstand
{
tone(6,900); // kontinuierliche Tonausgabe
lcd.setCursor(7,0);
lcd.print("<20");
lcd.setCursor(8,1);
lcd.print("dead! ");
}
else
{
lcd.setCursor(7,0);
lcd.print(" ");
lcd.setCursor(7,0);
lcd.print(frequency);
lcd.setCursor(8,1);
lcd.print("alive ");
}
}
