Forum: Mikrocontroller und Digitale Elektronik Analoge Nulllageregelung (EKG) durch digitale Regelung ersetzen


von Wolle G. (wolleg)



Lesenswert?

Das Ziel besteht darin, ein kleines "EGK-Gerät" mit dem rel. kleinen 
Eingangsverstäker ADS1293, welcher seinen Messwert über SPI ausgibt, zu 
bauen.
Ein damit aufgenommenes EKG-Diagramm ist im Anhang zu sehen. Dies zeigt 
hier eine Kurve, wo durch eine Änderung des Elektrodenpotentials sich 
die Kurve in ihrer Höhenlage verschoben hat, ohne wieder in 
Ursprungshöhe zu kommen.
In der Analogtechnik kann man mit der im Anhang gezeigten Schaltung 
dafür sorgen, dass die verschobene Kurve nach ca. 10s wieder nahe der 
Nulllinie verläuft.
Sinn ist, dass die Kurve nicht ständig über den Bildrand läuft, sondern 
nach einer gewissen Zeit selbst regulierend wieder im Bild läuft
Hat jemand einen Lösungsvorschlag, wie man dies digital mit einem µC 
(MSP430F1611)  machen könnte.
Mein erster Ansatz dazu wäre, dass man den gleitenden Mittelwert der 
vielleicht letzten 500 Messwerte  bildet, diesen Wert von eine 
Konstanten abzieht,  usw.
Wie macht man es richtig? Geht wahrscheinlich in Richtung Filtertheorie 
o.ä., wovon mir leider die Grundlagen fehlen.

von Nikolas (Gast)


Lesenswert?

Wenn es nur grob Mittelwertfrei sein soll, dann müsste es tatsächlich 
reichen, über ausreichend viele Werte den Mittelwert zu bilden und 
diesen dann vor der Anzeige von den Messwerten zu subtrahieren. Du musst 
aber natürlich aufpassen, dass du nicht den Messbereich des AD-wandler 
überschreitest

von Georg G. (df2au)


Lesenswert?

Bist du sicher, dass du den Mittelwert gleich halten möchtest? Wäre es 
nicht besser, wenn die Nulllinie an gleicher Stelle bleiben würde?

von Jakob (Gast)


Lesenswert?

@  Georg G. (df2au): Mittelwert, oder Nulllinie?
- Erkläre uns doch bitte den Unterschied bei so einem Signal!

Ansonsten: Langsamen Potentialverschiebungen wirkt man mit
einem (zeitlich) angemessen dimensioniertem Hochpassverhalten
entgegen.

Analog wird das mit einem Hochpass (Kondensator in Reihe mit
dem Eingangswiderstand der Schaltung - tau = R x C) bewerkstelligt.

Oder mit einem Tiefpass in der Gegenkopplung, was das zweite
Bild auch zeigt: Der erfasste Mittelwert (!) der letzten 0,22 s
(tau = 2M2 x 100 µ = 0,22 s) wird einfach als Offset abgezogen.

Das erfordert keine große Filtertheorie, sondern nur die
rechnerische Nachbildung dieses Verhaltens:

Mittelwert erfassen und vom Eingangssignal abziehen.

von Wolfgang (Gast)


Lesenswert?

Am besten hälst du die Nulllinie, indem du anhand der R-Zacke die 
Herzfrequenz bestimmst und dann gezielt den Periodenmittelwert ohne 
QRS-Komplexes bestimmst. Damit lassen sich schnelle Änderungen des 
überlagerten Untergrundes besser abziehen, als bei einem (blinden) 
gleitenden Mittelwert, der wesentlich länger sein muss, damit die Fläche 
der R-Zacke nicht zu sehr stört.

von Jakob (Gast)


Lesenswert?

@ Wolfgang (Gast):
Fragt sich - bei dem gezeigten Signal - wie man die R-Zacke
(ist das das der starke positive Puls?) von der Offset-
Verschiebung besser trennt, als mit einem simplen Hochpass.

Im gezeigten Signal sind ja beide Anstiegsgeschwindigkeiten
kaum auseinanderzuhalten.
Wie detektierst du das eindeutig?

von Wolle G. (wolleg)


Lesenswert?

Jakob schrieb:
> Mittelwert erfassen und vom Eingangssignal abziehen.

Schade dass Du Dich "so spät" gemeldet hast.
Zwischenzeitlich war ich auch auf diese Lösung gekommen und kann 
bestätigen dass diese Verfahrensweise funktioniert.
Gibt es noch Hinweise, welcher gleitende Mittelwert günstig wäre, um 
Ausreißer besser eleminieren zu können

von Jim M. (turboj)


Lesenswert?

Jakob schrieb:
> Im gezeigten Signal sind ja beide Anstiegsgeschwindigkeiten
> kaum auseinanderzuhalten.
> Wie detektierst du das eindeutig?

Das gezeigte Signal filtert auch die Analogschaltung nicht wirklich weg, 
das ist zu extrem. Da hat wer an den Kabeln gewackelt?

Normalerweise nimmt man einen Hochpass bei ca. 0.1 Hz, bei höherer 
Frequenz kann es schon zur Verzerrung auf der T-Welle kommen.

von Achim S. (Gast)


Lesenswert?

Jakob schrieb:
> Oder mit einem Tiefpass in der Gegenkopplung, was das zweite
> Bild auch zeigt: Der erfasste Mittelwert (!) der letzten 0,22 s
> (tau = 2M2 x 100 µ = 0,22 s) wird einfach als Offset abgezogen.

Tja, und hier versteckt sich das Problem dieser Schaltung. Die 
Zeitkonstante von 2,2M und 100µ ist nicht 0,22s (was halbwegs vernünftig 
wäre) sondern 220s (was viel zu langsam ist). Einfach richtig 
dimensionieren, dann sieht die Kurve schon viel besser aus.

von Feldstecher (Gast)


Lesenswert?

wolle g. schrieb:
> Gibt es noch Hinweise, welcher gleitende Mittelwert günstig wäre, um
> Ausreißer besser eleminieren zu können
Wenn die Länge deines gleitenden Mittelwertes genau die Länge einer 
Periode bzw. ein Vielfaches davon ist, dann wird dein (periodisches) 
Nutzsignal komplett rausgefiltert, beim anschließenden Abziehen wäre das 
Nutzsignal also ideal erhalten. Nur ist die Herzfrequenz ja nicht 
konstant und schon verfälscht man das Nutzsignal durch den Filter (Was 
nat. jeder Filter unterschiedlich stark tut).

Ich würde hinter den gleitenden Mittelwertfilter noch einen einfachen 
IIR-Tiefpass "hängen" (und das gefilterte Signal wie gehabt vom 
Eingangssignal abziehen). Z.B. so:
y(n+1) = 0,95*y(n) + 0,05*u

Die Konstanten variierst du wie dus brauchst, sollten in Summe halt 1 
ergeben.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.