Thema | Untersuchungen zur echtzeitfähigen Datenverarbeitung und Informationsweiterleitung medizinischer Sensoren |
---|---|
Bearbeitungszeitraum | 21.02.2014 – 21.08.2014 |
Betreuer |
Prof. Dr.-Ing. Kai Bruns |
Aufgabenstellung
[TEXT]
Die Messplattform
Der Erfassung der medizinischen Daten erfolgt über die e-Health Sensor Platform des spanischen Unternehmens Libelium in der zweiten Version. Die Plattform umfängt eine Reihe von Messgeräten, eine Anschlussplatine sowie eine Programmbibliothek zur Ansteuerung.Die Erweiterungsplatine kann mit einem Arduino Uno oder einem Raspberry Pi betrieben werden. Für Letzteren wird ein zusätzlicher Adapter benötigt. Die Kommunikation mit den Sensoren erfolgt auf vielfältige Arten, wie z. B. Analog-digital-Wandler, SPI-Bus und serielle Schnittstelle.
In der Auslieferungsvariante des Sensorboards finden alle Pins des Arduino Uno Verwendung, sodass keine zusätzlichen Sensoren angebunden werden können und Inkompatibilitäten zu anderen Erweiterungsplatinen auftreten.
Der wesentliche Vorteil der Plattform gegenüber dem direkten Anschluss der Sensoren besteht in der Nutzung der Messschaltungen, welche genauere und stabilere Ergebnisse ermöglichen.
Einige Sensoren eignen sich nicht für die permanente Überwachung, z. B. Blutzucker. Ebenso gibt es hardwarebedingte Erschwernisse bei der Abfrage des Blutdruck-Messgerätes, da dieses nur über ein eingeschränktes Kommunikationsprotokoll verfügt und den Puffer der seriellen Schnittstelle des Mikrocontrollers bei zu vielen Messwerten überflutet.
Die Sensoren für das Elektrokardiogramm und die Elektromyografie verwenden denselben analogen Eingang und können daher nur ausschließlich zur Datenerfassung genutzt werden.
Sensoren (Auswahl)
Der Pulsoxymetrie-Sensor misst die Herzfrequenz und den Sauerstoffsättigungsgehalt eines Patienten. Das Gerät kann ohne die Plattform mit zwei Batterien vom Typ AAA betrieben werden. An der Messplattform angeschossen dürfen diese nicht eingelegt sein. Bei Nichtanwendung schaltet sich der Sensor nach wenigen Sekunden selbstständig ab. Der Fall tritt beispielsweise ein, wenn der Sensor nicht korrekt auf dem Finger sitzt bzw. verrutscht. Für eine erneute Messung ist der Taster am Gerät zu betätigen. Die Datenübertragung zur Plattform erfolgt durch Auslesen der LED-Segmente der Geräteanzeige. Es werden die digitalen Pins 6-13 benötigt, wobei Pin 6 als Interrupt zum Einsatz kommt und zur Synchronisation mit der Plattform dient. Insgesamt ist der Sensor als Bastellösung einzustufen, der aber bei richtiger Anwendung zuverlässig Messwerte liefert.
Der Temperatursensor wird mittels eines Klinkensteckers an die Plattform angeschlossen und der Wert über den Analog-digital-Wandler am Pin A3 ermittelt. Auf der E-Health-Plattform befindet sich eine wheatstonesche Messbrücke zur Stabilisierung des Temperaturwiderstands. Eine Kalibrierung erfolgt durch Messen der einzelnen Widerstände und anpassen der Gleichung in der E-Health-Bibliothek. Der Sensor ist nicht zur Messung der Umgebungstemperatur geeignet und funktioniert nur bei direktem Körperkontakt. Wird auch die Raumtemperatur benötigt, so muss ein weiterer Temperatursensor angeschlossen werden.
Mit dem Sensor für die elektrodermale Aktivität wird der Hautleitwert gemessen. Der Anschluss an die Plattform erfolgt anhand zweier Schraubklemmen und wird am Mikrocontroller Pin A2 über den Analog-digital-Wandler eingelesen. Eine Verpolung der Kontakte ist nicht möglich. Die Genauigkeit der Messwerte kann durch eine Kalibrierung erhöht werden. Die ermittelten Werte sind abhängig von der Position, an der die Messkontakte angebracht wurden sowie vom Anpressdruck.
Anforderungen
Die Anforderungen an das Gesamtsystem richten sich nach den medizinischen Genauigkeiten, welche für eine sinnvolle Auswertung der Messdaten notwendig sind. Die Sensoren unterscheiden sich hinsichtlich der Aufnahmefrequenz der Werte sowie deren Interpretation. Die nachfolgende Tabelle gibt für die als wichtig eingestuften Sensoren die Kennzahlen an.Signalquelle Frequenz Atemfluss 40 Hz Blutdruck 10 Min GSR 50 Hz EKG 100 – 200 Hz EMG 1000 Hz Körperlage 1 Hz Pulsoximeter 80 Hz Temperatur 1 Hz Um den Unterschied zwischen verschiedenen Aufnahmefrequenzen zu demonstrieren und den damit einhergehenden Verlust der Genauigkeit aufzuzeigen, erfolgte eine Beispielmessung. Die nachfolgende Abbildung stellte die Messung des Elektromyografie-Sensors mit den Frequenzen 100 Hz und 5 Hz dar. Die Dauer der Messung betrug 10 s und erfolgte am Bizeps. Es wurden während der Aufnahme zwei unterschiedlich starke Ausschläge durch Anspannung des Muskels hervorgerufen. Trotz der verringerten Messgeschwindigkeit lassen sich immer noch Auslenkungen erkennen. Kurze Aktivitäten können mit dieser Aufnahmerate jedoch nicht mehr zweifelsfrei detektiert werden. Ebenso verschmelzen Teilausschläge wie zwischen Sekunde 2 und 3 auf der Abbildung sichtbar.
Die nachfolgende Abbildung stellt die Rohdaten einer EKG-Aufnahme dar sowie eine nachbearbeitete Version derselben Daten. Die gleichmäßigen Schwingungen resultieren nicht wie anfänglich vermutet von der Netzspannung, mit der die Mikrocontrollerplattform betrieben wurde. Dies ergaben Messungen, bei denen ein Akkupack zur Versorgung des Systems im Einsatz war. Die Glättung des Ergebnisses wurde mit einem gleitenden Mittelwert vorgenommen und auf Seiten des Empfängers durchgeführt. Das Ergebnis ist eine ruhigere Darstellung, welche jedoch gleichzeitig zu einer Dämpfung der Maxima und Minima führt. Durch eine Voranalyse sind diese Stellen erkennbar und können beispielsweise durch Nichteinbeziehung in den Glättungsvorgang geschützt werden. Weitere Methoden zur Verbesserung des Resultates sind die Beseitigung von Anomalie innerhalb der Gesamtmessung und das quadratische Mittel.
Echtzeitfähigkeit
Die Basis-Software des Arduino verwendet eine Implementierung, welche die vergangene Zeit seit dem Einschaltvorgang bereitstellt. Dafür wird der interne 8-Bit-Timer 0 des Mikrocontrollers genutzt. Die Auflösung der Zeitmessung beträgt bei allen Arduino-Mikrocontrollern mit 16 MHz Taktung 4 µs. Bis zu einen Überlauf vergehen beim µs-Zähler 71 Minuten und beim ms-Zähler 50 Tage (vgl. Arduino Referenz}. Mithilfe dieses Mechanismus kann die Dauer einzelner Vorgänge ermittelt werden. Durch eine Veränderung der Taktung des Mikrocontrollers sowie der Anpassung des Vorteilers lässt sich die Genauigkeit erhöhen.
Für diese Arbeit wurde der internen Zähler des Mikrocontrollers gewählt, da seine Genauigkeit ausreichend ist. Die nachfolgende Tabelle stellt die optimierten Ergebnisse für die gemessenen Aufnahmezeiten der einzelnen Sensoren dar. Alle Ergebnisse wurden jeweils über 3 Messungen mit einer Dauer von 30 Sekunden gemittelt. Dazu wurde ein Programm erstellt, welches nur den Sensorwert abfragt und die benötigte Zeit misst. Dadurch gab es keine Beeinflussungen durch andere Programmteile der Hauptanwendung.
Sensor Aufnahmezeit Puls 12 µs SP02 12 µs Körpertemperatur 508 µs Körperlage 272 µs Conductance 224 µs Resistance 244 µs ConductanceVol 168 µs EMG 124 µs EKG 181 µs Atemfluss 128 µs Umgebungstemperatur 204 µs Im Abschnitt Anforderungen erfolgte aus medizinischer Sicht eine Aufstellung der erforderlichen Aufnahmefrequenzen für die Sensoren, um aussagekräftige Messdaten zu erhalten. Die unterschiedlichen Anforderungen ergaben, dass nicht permanent alle Sensorwerte gemessen werden müssen. Aus diesem Grund wurden Klassen definiert, welche die verschiedenen Anforderungen repräsentieren. Durch Einteilung der Sensoren in die Klassen wird eine Verwaltungsstruktur aufgebaut. Dabei entspricht Klasse 1 der höchsten Aufnahmerate von 5 ms, welche bis hin zur Klasse 5 auf 1000 ms sinkt. Die Aufnahmeraten und die Einteilung der Sensoren sind in der nachfolgenden Tabelle dargestellt.
Klasse Aufnahmezeit Sensoren 1 5 ms EKG, EMG 2 10 ms Pulsoximeter 3 20 ms GSR, Atemfluss 4 100 ms – 5 1000 ms Temperatur, Körperlage Die Umsetzung der Klassifizierung wurde mittels des Zeitgebers des Mikrocontrollers realisiert.Während einer Messaufnahme stehen 5 ms zur Abarbeitung aller nötigen Schritte zur Verfügung. Dies entspricht der Zeitbasis von Sensoren der Klasse 1. Da die Gesamtzeit für die Abfrage sämtlicher Sensoren unter 2 ms benötigt, stört es nicht, falls alle Sensoren innerhalb in einer Aufnahmerunde gemessen werden müssten. Mit Hilfe von Zählern wird in jedem Durchgang geprüft, ob Sensoren der jeweiligen Klasse an der Reihe sind. Die elektrodermale Aktivität wird beispielsweise aller 4 Durchläufe gemessen und erlangt dadurch eine Aufnahmerate von 20 ms pro Wert.
Nach der Messung, der Generierung des Paketes und der Datenübertragung geprüft, ob die zeitlich Frist eingehalten wurde. Wenn dies zutrifft, begibt sich der Mikrocontroller die restliche Zeit in einen Wartezustand. Sollte jedoch eine Verletzung der Frist vorliegen, so enthält das nächste Paket eine Warnmeldung für den Empfänger. Die nachfolgende Abbildung stellt diesen Teil der Umsetzung im Programm dar.
Datenübertragung
Zur Datenübertragung kommt das Arduino WiFi Shield zum Einsatz. Es beherrscht die Funkstandards IEEE 802.11b/g und die Daten über die Netzwerkprotokolle TCP oder UDP verschicken. Die Kommunikation mit dem Mikrocontroller erfolgt über den SPI-Bus sowie einige zusätzliche Digital-Pins z. B. für den handshake.
Als Format der Datenübertragung wurde ein strukturierter Ansatz gewählt. Das Datenpaket setzt sich aus einem Paketrahmen (Sensor Packet) sowie einer dynamischen Anzahl von Sensordaten (Sensor Values) zusammen. Es besteht die Möglichkeit, mehrere Messwerte eines Sensors zu übertragen. Die kürzeste Paketlänge beträgt 7 Byte, wenn nur ein Wert übertragen wird.
Ein komplettes Datenpaket umfasst eine Paketnummer (Packet Counter) zur Ermittlung fehlender Pakete auf Empfängerseite, eine 16-Bit-Prüfsumme zur Erkennung einer fehlerhaften Übermittlung und ein oder mehreren Sensordaten. Die einzelnen Sensorpakete besitzen wiederum ein Feld für die Sensornummer (Sensor ID), den Datentyp (Data Type), Anzahl der aufgenommenen Daten (Count) und mindestens einen Messwert (Sensor Values). Die Prüfsumme errechnet sich aus der Paketnummer und den gesamten Sensordaten als Optimized CRC-16.
Bevor die Aufnahme von Messwerten beginnt, erfolgt zunächst eine zweiteilige Konfigurationsphase. Im ersten Schritt werden die Zugangsdaten für die Funkverbindung von einer Speicherkarte eingelesen. Das WiFi-Modul besitzt dafür einen microSD Kartensteckplatz, welcher mittels des SPI-Bus-Systems kommuniziert. Die Konfigurationstextdatei (config.cfg) liegt im Wurzelverzeichnis der Speicherkarte und enthält die Parameter: Netzwerkname des Wlans (SSID), das dazugehörige Passwort, die IP-Adresse und den Zielport, an den die Messdaten zu übermitteln sind. Nachdem die Daten eingelesen wurden, verbindet sich das Funkmodul mit dem Netzwerk und wechselt bei Erfolg in die zweite Konfigurationsphase.Die Plattform erwartet ein Paket mit den entsprechenden Parametern zur System- und Sensorkonfiguration. Es wird beispielsweise angegeben, welche Sensoren angeschlossen sind und der zeitliche Abstand zwischen einer Übertragung. Solang diese Phase nicht abgeschlossen ist, verharrt die Messstation in einem Wartezustand.
Das Konfigurationspaket besteht aus einer Paketnummer, plattformspezifischen Einstellungen, Füllbytes, Sensorparametern und einer Prüfsumme. Die Sensoreinstellungen enthalten die IDs der Sensoren, von denen Messwerte aufgenommen und übertragen werden. Der Wert spiegelt gleichzeitig die Priorität wieder, wobei 0 bedeutet, dass der Sensor nicht angeschlossen ist. Die nachfolgende Abbildung zeigt den Aufbau des Konfigurationspakets.
Ergebnisse