READY.
Dies ist ein EKG-Gerät zum Anschluß an die serielle Schnittstelle. Die Hardware stellt drei Kanäle zur Verfügung, so daß die Extremitätenableitungen nach Eindhoven aufgenommen werden können. Die Ableitungen nach Goldberger werden daraus berechnet. Die Schaltung kann auf einer Lochrasterplatine im Euro-Format aufgebaut werden. Die zugehörige Software steht unter der GPL zur Verfügung.
Da dieses Gerät an Personen angeschlossen wird, darf es nur mit Batterien betrieben werden und niemals mit dem Lichtnetz verbunden werden. Bei dem Entwurf der Schaltung bin ich mit größter Sorgfalt vorgegangen, trotzdem kann ich Fehler nicht ausschließen. Da ich außerdem keinen Einfluß darauf habe, was andere Leute mit dieser Bauanleitung machen, schließe ich jegliche Haftung für Schäden, die durch diese Bauanleitung und die zugehörige Software entstehen könnten, aus. Ich weise darauf hin, daß es sich hier um ein Spielzeug und nicht um ein medizinisches Gerät handelt.
Die Software ist in C++ geschrieben und sollte auf allen gängigen Linux/Unix-Distributionen laufen. Es gibt ein graphisches und ein kommandozeilenorientiertes Programm zur Aufnahme von EKG. Beide können Aufnahmen als Postscript in üblichen skalierungen aufnehmen. Hier ist ein screenshot von gEKG und ein Ausdruck. Einige Funktionen sind:
Für das graphische Programm werden die Bibliotheken gtkmm-2.4 und ↥pstreams benötigt. Üblicherweise müssen neben den Bibliotheken selbst noch die Pakete für die Header-Dateien installiert werden, die unter Debian (und Ubuntu) auf „-dev“ enden. In diesem Falle also die Pakete „libgtkmm-2.4-dev“ und „libpstreams-dev“.
Sind die Pakete installiert, können die Programme compiliert werden:
$ tar -xzvf gekg.tar.gz # Archiv entpacken $ cd gekg # in das Quellverzeichnis wechseln $ make ekg # Kommandozeilenprogramm bauen $ make gekg # graphisches Programm bauen
Die beiden entstandenen Programme ekg
und gekg
können jetzt an Ort und Stelle gestartet werden oder als root nach
/usr/local/bin/
kopiert werden, so daß sie systemweit zur
Verfügung stehen. Beide Programme geben mit der Option -h eine kleine Hilfe
aus.
$ ekg -h # Hilfe zum Kommandozeilenprogramm $ gekg -h # Hilfe zum graphischen Programm
Die Schaltung besteht aus drei Eingangsverstärkern▿, einem Multiplexer▿, einem AD-Wandler▿ und einer galvanischen Trennung▿ zur seriellen Schnittstelle. Und zuletzt gibt es eine Liste aller benötigten Bauteile▿.
Es werden insgesamt drei Meßverstärker aufgebaut. Ein Verstärker besteht aus einem hochohmigen Differenzverstärker aus T1 und T2 am Eingang, zwei Operationsverstärkern und einem Tiefpaßfilter 4. Ordnung. Die Grenzfrequenz der Tiefpaßfilter beträgt etwa 25 Hz. Sie dienen dazu, Störspannungen, die hauptsächlich durch das Lichtnetz erzeugt werden, zu entfernen. Der Verstärkungsfaktor kann mit einem Trimmpoti eingestellt werden; eine mittlere Schleiferposition ist geeignet.
Der Multiplexer hat vier Kanäle, von denen der Erste fest mit der negativen Versorgungsspannung verbunden ist. Dieser Wert, der durch den nachgeschaltetn invertierenden Verstärker zu einem maximal großen Meßwert gemacht wird, dient der Software als Synchronisationssignal, um die Meßwerte im Datenstrom richtig zuzuordnen. Der Multiplexer schaltet nach jedem gesendeten Meßwert auf den nächsten Kanal um.
Dem Multiplexer nachgeschaltet ist ein Pegelumsetzer aus zwei Operationsverstärkern. Er Verschiebt den Bezugspunkt des Meßsignals von der halben analogen Versorgungsspannung (9 Volt) auf die halbe digitale Versorgungsspannung (5 Volt) und arbeitet auch bei nicht frischer Batterie zuverlässig. Außerdem wird das Maßsignal um etwa den Faktor 3 verstärkt.
Die Funktionsbeschreibung im Groben: Der IC 4060 oben links erzeugt eine Taktfrequenz von 9600 Hz und dient als Baudrategenerator. Die Taktfrequenz wird an den Zähler 47LS161 weitergegeben. Sobald vom Computer mittels der DTR-Leitung das Signal zum senden gibt (DTR wird beim öffnen der seriellen Schnittstelle gesetzt. ), beginnt der ADC 0803 die angelegte analoge Spannung zu messen und gibt sie an D0 - D7 aus. Über INTR wird dem Zähler der fertige Meßwert signalisiert. Der erzeugt daraufhin ein Startbit und steuert dann das Schieberegister, welches den Meßwert sendet. Der Zähler erzeugt ein Stopbit und beginnt dann den nächsten Sendevorgang, solange, bis DTR gelöscht wird.
Das Startbit, welches nach der Messung, aber vor dem Sendevorgang stattfindet, dient dem Multiplexer als Zeichen, auf den nächsten Kanal umzuschalten. Der ADC 0803 gibt an Uref genau die halbe Versorgungsspannung aus. Zu Testzwecken ist es Sinvoll, ein Oszilloskop auf das Signal an Trig. zu triggern. Der Inverter T3 kann nicht durch das noch freie NAND-Gatter ersetzt werden, da er langsam sein muß.
Die Schaltung gibt also die ganze Zeit Bytes mit 9600 Baud (8N1) aus. Dabei wird eine sich immer wiederholende Folge von 4 Bytes gesendet: Sy K1 K2 K3. Dabei sind K1–3 die Meßwerte der drei Kanäle und Sy eine konstante, recht hohe Zahl, die der Software zur Synchronisierung des Datenstroms dient. Die Meßwerte müssen dann noch in Spannungswerte umgerechnet werden. Die Skalierung wird in der Datei calibrate.h eingetragen.
Um den Patienten vom Computer galvanisch zu trennen, werden die Signale DTR und RxD über Optokoppler vermittelt. Die RS232 Schnittsttelle des Computers legt im Betrieb DTR und RTS auf positiver Spannung (+5 V bis +12 V) und TxD auf negative Spannung (-5 V bis -12 V), wenn der Computer nicht sendet. DTR signalisiert, daß der Computer empfangsbereit ist, und schaltet den RS-232 Sender des EKG-Gerätes ein. Der Strom für die DTR Sendediode wird mit einem FET beschränkt (etwa 10 mA) und ist damit unabhängig von der genauen Höhe der positiven Spannung. Auf RxD werden die Daten vom EKG-Gerät gesendet. Die Stromversorgung für den entsprechenden Empfänger wird aus den nicht benötigten Leitungen RTS und TxD gewonnen.
Zur Dokumentation ist hier noch eine alte Version der galvanischen Trennung gezeigt. Von deren Nachbau rate ich allerdings dringend ab. Diese Schaltung hatte zwar eine bessere Flankensteilheit, es hat sich aber gezeigt, daß sie nicht sehr nachbausicher ist, da der 741 doch schon sehr weit außerhalb der Spezifikation betrieben wird.
Widerstände | Kondensatoren | Halbleiter | |||
---|---|---|---|---|---|
3 | 120 | 1 | 12 p | 3 | BAT 46 |
4 | 220 | 1 | 150 p | 11 | BC 547 B |
6 | 470 | 6 | 6,8 n | 1 | BC 557 B |
6 | 2,2 k | 5 | 22 n | 1 | BF 256 B |
1 | 2,7 k | 5 | 100 n | 1 | 741 |
10 | 10 k | 20 | 10 µ | 3 | LM 324 |
9 | 22 k | 3 | 47 µ | 1 | TL 082 |
5 | 47 k | 3 | 100 µ | 2 | CNY 17-3 |
5 | 100 k | 3 | 470 µ | 1 | ADC 0803 |
2 | 330 k | 1 | 74 LS 00 | ||
6 | 680 k | 1 | 74 LS 02 | ||
6 | 1 M | 1 | 74 LS 05 | ||
Trimmpotis | 1 | 74 LS 74 | |||
3 | 100 k | 1 | 74 LS 161 | ||
1 | 220 k | 1 | 74 LS 165 | ||
1 | 4052 | ||||
1 | 4060 | ||||
1 | LED | ||||
Außerdem | |||||
1 | Batterieclip für 9 V Block | ||||
1 | SUB-D Stecker, 9 pol. | ||||
4 | Buchsen, 4 mm (schwarz, rot, gelb, grün) | ||||
4 | Stecker, 4 mm (schwarz, rot, gelb, grün) | ||||
4 | Elektroden mit Anschlußleitung |
Die gesamte Schaltung kann auf einer Lochrasterplatine im Euro-Format aufgebaut werden. Die Anordnug der Bauteile kann sicherlich noch optimiert werden, dennoch kann das folgende Bild als Anhaltspunkt dienen.
Zuerst muß der Baudrate-Generator im AD-Wandler auf die richtige Frequenz eingestellt werden. An Pin 7 muß eine Frequenz von 9600 Baud anliegen. Ich habe zum Abgleich ein Spindeltrimmer eingebaut; möglicherweise reicht aber auch ein normales Trimmpoti, wenn man sich mit dem Abgleich Mühe gibt.
Zum (groben) Kalibrieren der Eingagnsverstärker benötigt man eine geeignete Signalquelle. Das kann entweder ein Sinusgenerator mit f = 1 Hz und Vss = 1 mV sein oder ein Pulsgenerator, der Pulse von etwa 50 ms und 0,5 mV Amplitude im Abstand von etwa 1 s ausgibt. Um auf so kleine Spannungen zu kommen, wird man sich mit einem entsprechenden Spannungsteiler behelfen müssen. Hier ist ein geeigneter Pulsgenerator zu finden.
Hier wird die Kalibrierung mit einem Pulsgenerator beschrieben. Folgende Schritte werden für jeden Kanal (I: gelb → rot, II: grün → rot, III: grün → gelb) einzeln durchgeführt:
ekg -r /dev/ttySx > datei
wenige Sekunden
EKG-Rohdagen aufnehmen. Das Programm wird mit Strg-C angehalten. Die Daten
sind in datei
gespeichert.datei
enthält vier Spalten von Zahlen. Eine der Spalten
enthält einen Konstanten, hohen Wert. Die folgenden Spalten sind die
Meßwerte der Kanäle I, II und III (Zyklisch durchzählen, also nach der
ganz rechten Spalte wieder links anfangen.) So kann die Spalte ausfindig
gemacht werden, die zum gerade behandelten Kanal gehört. Ein Beispiel ist
hier zu sehen:
128 127 224 142 128 119 224 157 128 109 224 174 ...In diesem Beispiel ist die dritte Spalte die hohe Konstante, die Spalten vier, eins und zwei sind die Kanäle I, II und III.
datei
in einem Graphen darzustellen, wie im Bild unten zu
sehen. Es werden zwei Werte abgelesen. Der Nullwert N, der kurz vor einem
Puls erreicht wird (und der auch erreicht werden sollte, wenn der
entsprechende Eingang Kurzgeschlossen wird). Und der Maximalwert M an der
Spitze eines Pulses.calibrate.h
eingetragen. Der Nullwert N kommt nach
EKG_zero
, der Verstärkungsfaktor UP/(M-N) kommt nach
EKG_amp
. Mit den Meßdaten aus dem Bild unten und einer
Pulshöhe von 0,4 mV sähen die entsprechenden Zeilen also so aus:
const int EKG_zero[3] = { 128, ..., ... }; const float EKG_amp[3] = { 0.4/(190-128), ..., ... };
calibrate.h
eingetragen worden sind, werden die Programme ekg
und gekg noch einmal neu compiliert, damit die Kalibrierung wirksam wird.
Mit den Trimmpotis in den Meßverstärkern kann die Empfindlichkeit der Schaltung eingestellt werden. Es hat sich als günsig erwiesen, die Potis einfach auf einen mittleren Wert einzustellen. Nur wenn die Kurven deutlich zu klein (oder nach einer Kalibrierung deutlich zu treppenförmig) sind oder aber übersteuern, ist es notwendig, den Verstärkungsfaktor entsprechend zu ändern.
Der Patient wird über vier Buchsen angeschlossen. Rechter Fuß an „schwarz“, rechte Hand an „rot“, linke Hand an „gelb“ und linker Fuß an „grün“. Als Elektroden sind Metallplatten ab ca. 1 cm² geeignet. Um einen guten Übergangswiderstand zu Haut zu haben, sollten die Elektroden mit einem Elektrolyten versehen werden (anspucken ist gut!). Die Elektroden sollten gut befestigt werden, z. B. mit Leukoplast. Wenn die Elekroden guten Kontakt haben, ist ein softwareseitiges Nachbearbeiten des Signals mit Frequenzflitern nicht nötig.
Und für das Archiv:
Um nun auch zu verstehen, was auf den EKG-Aufnahmen überhaupt zu sehen ist, kann ich die Seite ↥ www.grundkurs-ekg.de/index.html empfehlen. Hier habe ich auch wichtige Informationen für die Planung der Schaltung gefunden.
Die Idee zu diesem Projekt kam mir beim Lesen des (leider vergriffenen) Buches „Bio-Elektronik“ von A. Holz und H.-G. Kreysch, aus dem auch der Eingangsverstärker stammt.