OpenEEG
OpenEEG (http://openeeg.sourceforge.net/doc/)
ist ein Open Source
Projekt, um Gehirnwellen am PC sichtbar zu machen.
Aus diesem Bemühungen ist unter anderem eine Art "Produkt" entstanden, das "ModularEEG" heißt. ModularEEG besteht aus einem Hardware-Teil und einem Software-Teil.
Der Hardware-Teil besteht wiederum aus einem analogen und einem digitalen Teil.
Der analoge Teil ist im wesentlichen ein hochempfindlicher Verstärker und Filter um die Gehirnwellen aufzunehmen und die zahllosen Störsignale wegzufiltern.
Der digitale Teil basiert auf einem AVR-Mikrocontroller. Dieser besitzt einen 6-Kanal D/A-Wandler und wandelt die vom Analogteil kommenden Signale in digitale Daten um. Ausserdem versteht er noch ein paar Kommandos. Der AVR wird gesteuert durch eine Firmware, der ModularEEG Firmware. Diese wird in den AVR mittels ISP hineingeladen. Die Firmware liegt als C-Sourcecode vor. Die Kommunikation zwischen dem AVR und dem PC erfolgt via RS232. Auf der PC-Seite ist dazu ein steuerndes Programm erforderlich. Es existieren unterschiedliche Programme, die die ModularEEG Hardware nutzen.Die OpenEEG Hardware
ModularEEG wird auf zwei Platinen aufgebaut. Auf einer ist die gesamte hochempfindliche analoge Elektronik, auf der anderen der digitale Teil mit steuerndem AVR Mikrocontroller.
Die Platinen für
ModularEEG kann man fertig bestellen bei der bulgarischen
Firma Olimex (http://www.olimex.com/gadgets/index.html).
Die Bauteile für ModularEEG sind zum Teil ziemlich speziell, bei Reichelt kriegt man aber fast alles.
Der Aufbau der Hardware ist auf der OpenEEG Website ausführlich
beschrieben (Dokumente "Preparing to build the circuit boards" und
"Building the ModularEEG, Abschnitt Assembly).
Die Funktionsfähigkeit der Hardware kann man anhand mehrerer Tests verifizieren, wenn die Firmware auf den Controller geladen worden ist.
Firmware für den Controller
Die Firmware Source, die man aus dem Internet herunterladen kann (Stand 2009) wurde seit langem nicht weiterentwickelt und lässt sich mit aktuelleren avrlibc-Versionen nicht mehr übersetzen. Es handelt sich bei den problematischen Stellen aber nur um geänderte/weggefallene Makroschreibweisen, ich habe zwei Dinge korrigiert:
- Schreibweise des Makros "BV()" in die neuere Variante "_BV()" geändert, wo es im Sourcecode vorkam
- Am Anfang der Datei folgende Defines hinzufügen:
// for compatibility purposes, support for old makros
#define inp(port) (port)
#define outp(val, port) (port) = (val)
#define inb(port) (port)
#define outb(port, val) (port) = (val)
#define sbi(port, bit) (port) |= (1 << (bit))
#define cbi(port, bit) (port) &= ~(1 << (bit))
Fertig bestückte Analogplatine. Oben ist der Connector zu sehen, mit dem beide Platinen verbunden werden.
Fertig bestückte Digitalplatine. Unten der Connector, mit dem beide Platinen verbunden werden, oben der ISP Connector zum Programmieren des AVRs.
Funktionstest nach vollendeter Bestückung des Digitalteils und nach
Einladen der Firmware. Der AVR produziert ein Rechtecksignal mit 14 HZ
Frequenz. Dieses Signal kann gemessen werden. Wenn es produziert wird,
war das Hochladen der Firmware erfolgreich.
Laut Oszillograph ist der Test erfolgreich. Das Signal ist vorhanden
und die Frequenz stimmt.
Dieses Signal wird auf der Analogseite als Signal zur Kalibrierung
verwendet. Dort hat es allerdings nur noch 250µV Amplitude, um die
Verstärker nicht zu überfahren.
Hier das Ganzmetallgehäuse, das Störstrahlungen abmildert. Die Verdrahtung der Platinen mit den Gehäuse-Anschlüßen ist noch nicht erfolgt.
Gehäuse, nun bereits verdrahtet. Die ursprünglichen Buchsen wurden
durch andere ersetzt, da die ursprünglichen Buchsen von einer
gemeinsamen Masse ausgingen.
dito.
Erste Experimente mit der Software
Im folgenden wurde die Hardware via seriellem Kabel mit dem PC verbunden. Mangels unterstützender Linux-Software habe ich die Software "Electric Guru" für Windows genommen. Ich habe Windows XP in einer VM laufen und die serielle Schnittstelle von Linux bis in die VM durchgeschaltet, so dass auch Windows auf diese Schnittstelle zugreifen kann. Funktioniert gut.
Die sehr hohe Empfindlichkeit der Hardware zeigt sich schon darin, dass bei fehlender Abschirmung die Störstrahlung im Raum durch Telefon, Netzleitung, Handy etc. massiv sichtbar sind. Die folgenden beiden Bilder zeigen dies beeindruckend.
Oben: So sehen die Signale aus, wenn der Deckel des Metallgehäuses abgenommen wird (Es sind keine Elektroden angeschlossen). Das erkannte "Hauptsignal" ist zugestopft mit Störstrahlung.
... und so, wenn der Deckel aufliegt. Die Störstrahlung kommt nicht
mehr durch.
Kalibrieren der Hardware
Wenn die Hardware funktioniert und die Firmware läuft, muß die
Hardware zunächst kalibriert werden.
Dieser Vorgang ist ebenfalls auf der OpenEEG Website ausführlich
beschrieben.
Ich empfehle das Dokument "ModularEEG Testing Tips", Abschnitt
"Troubleshooting, Testing, and Calibration".
Es geht u.a. darum, den Signalpegel des Analogteils so einzustellen,
dass die PC-Software (hier: ElectricGuru) das Signal so bekommt, wie
sie es erwartet. Dazu muß die Amplitude eingestellt werden. Die beiden
folgenden Bilder zeigen beispielhaft die Situation vor und nach dem
Kalibrieren für einen (den unteren) Kanal.
Kalibrieren ("Coarse Trim") der Hardware. Es liegt im unteren Kanal das
oben schon
erwähnteTestsignal (Rechteck, 14Hz, hier nur noch 250µV Amplitude) an.
die Amplitude muß justiert werden.
Der obere Kanal läuft "frei" vor sich hin.
Bild nach dem Kalibrieren. Die Amplitude ist eingestellt (sie soll
zwischen den Werten 256 und 768 oszillieren)
Weiter
Bau der Elektroden
Weiterführende Links
- http://www.austingriffith.com/files/Griffith_OpenEEG.pdf: Schönes Paper über OpenEEG/ModularEEG von Austin Griffith