EKG Sensor- Serial Plot undeutlich

Hallo, ich habe eine Frage bezüglich des EKG-Sensors AD8232.
Ich benutze ihn in Zusammenhang mit dem NodeMCU ESP8266 und habe den folgenden Code benutzt:

***************************/

void setup() {
  // initialize the serial communication:
  Serial.begin(9600);
  pinMode(14, INPUT); // Setup for leads off detection LO +
  pinMode(12, INPUT); // Setup for leads off detection LO -

}

void loop() {

  if ((digitalRead(14) == 1) || (digitalRead(12) == 1)) {
    Serial.println('!');
  }
  else {
    // send the value of analog input 0:
    Serial.println(analogRead(A0));
  }
  //Wait for a bit to keep serial data from saturating
  delay(10);
}

Nun mein Problem: Wenn ich die EKG-Elektroden anbringe, bekomme ich im Serial Plotter nicht so eine schöne Linie, wie man sie beim EKG kennt sondern entweder absolut zufällige Oszillationen oder eine einfache gerade Linie. Wenn ich die Elektroden abnehme oder anderswo platziere sehe ich im Plotter aber, das irgendetwas gemessen wird (Graph verändert sich).
Ich hab mich auch bei anderen Leuten umgeschaut und überall sieht das EKG-Bild entweder normal aus oder es heißt man solle die Elektroden anders anbringen ( hab ich bereits versucht).
Kennt sich jemand damit aus und kann mir helfen?
Vielen Dank im voraus.

Welche Fehlermeldung bringt dein Sketch ?

So wie du ihn programmiert hast, kann der nicht funktionieren.
In einem funktionierenden Sketch darf es nur eine loop geben.

Oh sorry, da ist mir ein Fehler beim Kopieren unterlaufen.
Ich habe den Code oben korrigiert.
Eine Fehlermeldung direkt bekomme ich nicht, es ist der Graph welcher fehlerhaft aussieht

Ich gehe jetzt mal davon aus, du hast den Sketch richtig kopiert und auch die Anschlüsse richtig vorgenommen, dann tippe ich auf einen Kontaktfehler oder Defekt des Sensors.

Für brauchbare Plots würde ich vor allem die Baudrate weit erhöhen.

Was soll denn das Ausrufezeichen im Serial Plotter machen?

Habe die Baudrate erhöht- hat leider nicht geholfen.
Das Ausrufezeichen ist nur für den Serial Monitor- hat keine nötige bedeutung.
Angeschlossen ist das ganze an meinem Laptop (keine batterie).
Zu erwähnen ist evtl., dass der Code für den Arduino Uno gedacht war. Aber ich habe die Pins angepasst also eigentlich dürfte es nicht an der nodeMCU liegen...
Meine Anschlüsse sind:

Board vom EKG Sensor Node MCU
GND GND
3.3v 3.3v
OUTPUT A0
LO- D5
LO+ D6

Der Plot sieht jetzt so aus wie im Anhang.
Mir fällt auf, dass wenn ich warte und die Luft anhalte sogar etwas EKG ähnliches angezeigt wird( sensoren scheinen zu funktionieren-sieht aber bei weitem noch nicht korrekt aus). Allerdings springt der Plot immer hoch und runter ( wie im Anhang zu sehen, sieht aus wie ein digitalsignal). Kann ich das beheben?

Allerdings springt der Plot immer hoch und runter ( wie im Anhang zu sehen, sieht aus wie ein digitalsignal). Kann ich das beheben?

Ein Digitalsignal ist es nicht, dafür sind zu viele Werte in der Mitte zwischen 0 und 1023. Aber das Eingangssignal ist zu groß, so dass es übersteuert (bzw. wohl auch < 0 wird)

Dein delay(10) ergibt knapp 100 Messungen je Sekunde. Das sollte für ein Hobby-EKG reichlich sein und passt auch für eine Geschwindigkeit von 9600, wenn du in den 10 ms nur eine vierstellige Zahl + NeueZeile ausgibst.

Zu erwähnen ist evtl., dass der Code für den Arduino Uno gedacht war.

Dann teste doch erstmal mit dem UNO oder Nano...

Wenn das klappt, weißt du dass der Sensor ok ist, und dir der ESP Streiche spielt.
Denn der ESP ist für seine begrenzten Analogfähigkeiten bekannt.
z.B. benutzt er den ADC auch intern um die Sendeleistung zu messen/steuern.
Zudem hat er seinen Vollausschlag bei 1V
OK, dein Nodemcu dürfte einen Spannungsteiler drauf haben, um den Messbereich auf 3,3V zu erweitern.

michael_x:
Ein Digitalsignal ist es nicht, dafür sind zu viele Werte in der Mitte zwischen 0 und 1023. Aber das Eingangssignal ist zu groß, so dass es übersteuert (bzw. wohl auch < 0 wird)

Ist jetzt vermutlich eine blöde Frage :sweat_smile:, aber was bedeutet das für mich und meine Konstruktion konkret? Wie kann ich das Eingangssignal runtersetzen? Wenn ich das richtig verstehe müsste das dann ja die Lösung für die angezeigte Übersteuerung sein richtig?

combie:
Dann teste doch erstmal mit dem UNO oder Nano...

Wenn das klappt, weißt du dass der Sensor ok ist, und dir der ESP Streiche spielt.
Denn der ESP ist für seine begrenzten Analogfähigkeiten bekannt.
z.B. benutzt er den ADC auch intern um die Sendeleistung zu messen/steuern.
Zudem hat er seinen Vollausschlag bei 1V
OK, dein Nodemcu dürfte einen Spannungsteiler drauf haben, um den Messbereich auf 3,3V zu erweitern.

Ich hab leider keinen Uno zur Verfügung. Aber mein Controller ist dieser: NodeMCU ESP8266 Development Board Wifi/UART/Keays/Extension Headers Onboard ESP -12E Module. Ich glaub der kann über den 1V Bereich hinaus plotten.

pho3nix:
Ich hab leider keinen Uno zur Verfügung. Aber mein Controller ist dieser: NodeMCU ESP8266 Development Board Wifi/UART/Keays/Extension Headers Onboard ESP -12E Module. Ich glaub der kann über den 1V Bereich hinaus plotten.

Das sollte für dich jetzt bedeuten, du musst dir einen Uno besorgen.
Das ist eh eine gute Sache für weitere Projekte.

pho3nix:
Habe die Baudrate erhöht- hat leider nicht geholfen.
Das Ausrufezeichen ist nur für den Serial Monitor- hat keine nötige bedeutung.
Angeschlossen ist das ganze an meinem Laptop (keine batterie).
Zu erwähnen ist evtl., dass der Code für den Arduino Uno gedacht war. Aber ich habe die Pins angepasst also eigentlich dürfte es nicht an der nodeMCU liegen...
Meine Anschlüsse sind:

Board vom EKG Sensor Node MCU
GND GND
3.3v 3.3v
OUTPUT A0
LO- D5
LO+ D6

Der Plot sieht jetzt so aus wie im Anhang.
Mir fällt auf, dass wenn ich warte und die Luft anhalte sogar etwas EKG ähnliches angezeigt wird( sensoren scheinen zu funktionieren-sieht aber bei weitem noch nicht korrekt aus). Allerdings springt der Plot immer hoch und runter ( wie im Anhang zu sehen, sieht aus wie ein digitalsignal). Kann ich das beheben?

Hast du nen Oszi zur Verfügung? Dann würdest du das Signal mal in seiner vollen Pracht sehen. Dein Analog Eingang scheint das Signal oben und unten abzuschneiden.

Ersteinmal vielen Dank an alle, dass ihr mir so viele Lösungsansätze bietet.
Einen Arduino Uno möchte ich nicht verwenden, da ich das Signal noch über Wifi an das Smartphone senden will.
Einen Oszi hab ich leider auch nicht :frowning:
Der Stand der Dinge: Wie ihr im Anhang sehen könnt, stimmt meine Konstruktion und auch die Sensoren funktionieren. Denn hin und wieder wird tatsächlich ein EKG- Bild sichtbar. Yay! :smiley:
Allerdings ist das oft nur kurzweilig und sieht nur so aus wenn ich glück habe.
Das einzige Problem sind jetzt nurnoch diese auftretenden Schwankungen, die ich mir nicht erklären kann.
Diese sehen entweder eben so aus wie im Bild zuvor, oder Sinusförmig mit den EKG zacken. Aber es geht halt immer hoch und runter. Lässt sich das einstellen, dass diese Linie auch grade verläuft und nur meine EKG-Zacken ausschlagen? Oder woran liegt so ein Kurvenverhalten?

woran liegt so ein Kurvenverhalten?

Scheint ein Problem des Sensors, der Messtechnik und Störungen zu sein.
Dass du zeitweise am Analogpin Werte außerhalb des Messbereichs einfängst, hängt wohl auch damit zusammen.

Ich verstehe dich so, dass du die kurzen Peaks erkennen willst, und daraus den Puls von (im Beispiel) ca. 60 BPM ermitteln. Diese Pulse sind kürzer als 20 Zyklen, ziemlich steil in beide Richtungen, spitz (auf einen schnellen Anstieg folgt ein schneller Abfall) und haben eine deutlich höhere Amplitude als der Rest der Kurve in diesem kurzen Puls-Zeitbereich.
Leider werden wohl die Parameter für die Amplituden und Änderungsraten bei jeder neuen Messung variieren, fürchte ich, so dass du diese automatisch kalibrieren müsstest, bis du eine realistische Pulsfrequenz erkennst, oder "nicht erkennbar" ermittelst.

(Wenn meine Pulsuhr irgendwo lose rumliegt, erkennt sie schonmal einen Puls von 180 und die App behauptet, ich würde Unmengen Kalorien verbrennen.)
:slight_smile:

Verwendest Du Einmal-Klebe-Elektroden?
Sind die Elektroden richtig angeklebt; ist das Gel noch flüssig (nicht ausgetrocknet). Hast Du sie an Körperstellen geklebt wo keine Haare sind? Wenn Du ein zusätzliche EKG-Gel verwendest darf es nicht zwischen allen 3 Elektroden verschmiert sein sondern jede Elektrode braucht seinen Gel-Punkt.

Für die Messung irgendeines EKG Signals ist die Position der Elektroden egal. Auch Hand - andere Hand- Kopf funktioniert.

Soll ein Arzt verstehen ob die Reizleitung im Herzen richtig funktioniert braucht es aber ganz bestimmte Abnahmepunkte der Signale.

Vie sieht die Spannungsversorgung aus? Batterie oder Netzteil? Klasse 1 (Erdung) oder Klasse 2 (Doppelisolation) ? ist die Masse der Versogungsspannung über das Netzteil geerdet? Das ist dann in diesem Fall keine Schutzerdung sondern Funktionserdung.

Grüße Uwe