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. Außerdem 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:

  1. Schreibweise des Makros „BV()“ in die neuere Variante „_BV()“ geändert, wo es im Sourcecode vorkam
  2. 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))

Dann lies sich modeeg-p2.c übersetzen. (dies ist Version 2 der Firmware; Version 3 liegt auch bei, habe ich aber nicht weiter betrachtet, da Electric Guru nur mit Version 2 zurechtkommt) Außerdem liegen fertige HEX-Dateien für Version 2 und 3 bei, so dass man auch gar nicht kompilieren muss.

Platine des Analogteils am Anfang der Bestückung
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 sind die beiden Platinen miteinander verbunden, und erste Tests der Gesamtfunktion laufen.
Hier das Ganzmetallgehäuse, das Störstrahlungen abmildert. Die Verdrahtung der Platinen mit den Gehäuse-Anschlüssen ist noch nicht erfolgt.
Gehäuse mit aufgesetztem Deckel.
Gehäuse, nun bereits verdrahtet. Die ursprünglichen Buchsen wurden durch andere ersetzt, da die ursprünglichen Buchsen von einer gemeinsamen Masse ausgingen.

dito.

Damit ist die Hardware schon mal testbar. Die Elektroden fehlen noch.

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, muss 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 muss 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ähnte Testsignal (Rechteck, 14Hz, hier nur noch 250µV Amplitude) an. die Amplitude muss 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

Reparatur eines Mini Helikopters (Motor Tausch)

Für kleines Geld sind kleine fernsteuerbare Hubschrauber erhältlich. Leider halten die Motoren nicht ewig. Bei meinem Modell war eines Tages einer der drei Motoren defekt.

Symptom: Der zugehörige Rotor dreht sich nicht mehr.

Es gibt drei Motoren:

  • Zwei für den Hauptpropeller, der aus zwei gegenläufigen Rotoren besteht
  • Einer für die Richtungssteuerung am Heck

Bei meinem Modell war der für den unteren Rotor (das ist der vordere Motor) defekt.

Benötigtes Werkzeug:

  • feiner Lötkolben mit schnaler Spitze, so maximal 30 Watt
  • Ohmmeter
  • Feiner Kreuzschlitzschraubenzieher, Größe PH0-3
  • Wenn möglich Lupe oder aber gute Augen
  • Kombizange

Ungeübte Löter und Kinder schaffen den Motoraustausch möglicherweise nicht, es müssen sehr feine Drähte ab- und angelötet werden.

Fehlerfeststellung:  Ich habe zur Fehlerfeststellung die Motorkontakte abgelötet und an den Enden den Widerstand gemessen (mittels Ohmmeter). Der Widerstand war nicht messbar -> Motor defekt. Beim nachgekauften Ersatzmotor war der Widerstand 1.2 Ohm.

Achtung, es gibt Motoren für den oberen und den unteren Rotor (die Achslängen sind unterschiedlich). Der hintere Motor weicht bei meinem Modell von den Maßen der vorderen ab, er ist sicher schwächer.

Ersatzbeschaffung: Nach Messen des Motors (7mm Durchmesser, 16.5mm Länge ohne Achse, Achse 5.5mm Länge) bestellte ich auf gut Glück einen mit denselben Abmessungen bei ebay für etwa 5 Euro incl. Versand. Ob die Spannung passt, wusste ich beim Bestellen nicht. Da die Hubschrauber alle aus China kommen und man dort auch nicht übermäßig individuell fertigt, dachte ich die Wahrscheinlichkeit ist hoch, dass der Motor für zahllose Modelle passt.

So war es dann auch, der Motor funktionierte nach Einbau mindestens so gut wie der Originalmotor.

Austausch: Im folgenden ein paar Bilder zum Austausch.
Man benötigt für die feinen Schrauben unbedingt einen passenden kleinen Schraubenzieher. Die Farben der Leitungen und deren Anlötpunkte hält man fest, bevor man sie ablötet (Foto oder Skizze). Beim Löten wegen der sehr engen Platzverhältnisse darauf achten, dass die anderen Kabel nicht angeschmort werden. Ein dicker Lötkolben ist für die Lötung ungeeignet.

Der Motor ist -bei meinem Modell- von oben eingesteckt und wird mit zwei Metalllaschen festgehalten. Diese Laschen mit der Zange vorsichtig wegbiegen. Dann lässt sich der Motor nach oben herausziehen. Das Ritzel mit den Fingern vom alten Motor abziehen, ohne Gewalt, es geht erstaunlich leicht ab, und einfach auf den neuen Motor aufstecken.
Den neuen Motor von oben einführen, darauf achten, dass das Ritzel auf der Motorachse so positioniert ist, dass es gut in das andere Zahnrad eingreift. Danach die Metalllaschen zurück drücken, so dass der Motor fixiert ist. Dann die Kontakte des Motors anlöten. Auf Polung achten!

Danach alles noch lose wieder zusammenschrauben und – Testflug 🙂


Alle externen Teile sind vorne an der Platine angelötet: Akku, drei Motoren, 2x Leds. Im Bild oben mittig die silberne Motor-Röhre

Skizze der Platine mit den Lötpunkten für die externen Teile (Batterie, Motoren, Leds). Der nicht eingezeichnete Leiter des hinteren Motors geht an „M-„.

 


Der zerlegte Motor

 


Im inneren des Motors der Stator ein kleiner aber starker Magnet.

 


Der Rotor mit Spule und Stromaufnehmer (5 Einzelkontakte)

 


Die „Bürsten“ zur Stromübertragung auf den Stromaufnehmer. Man kann erkennen, dass eine der beider Bürsten (die linke) nur noch ganz kurz ist, vermutlich abgebrochen oder durchgeglüht.

Am alten Motor konnte beim Zerlegen festgestellt werden, dass eine der beiden Bürsten defekt war.

Impressum

Anbieterkennzeichnung im Sinne des §6 des Teledienstgesetzes

Verantwortlich für den Inhalt dieser Website:

Dennis Dingeldein
(Spam-sichere eMail-Adresse, (AT) steht für ‚@‘, (PUNKT) steht für ‚.‘)
eMail:

info (AT) spurtikus (PUNKT) de

Links auf die ich referenziere, haben zum Zeitpunkt des Referenzierens zu dieser Site themenverwandten Inhalt gehabt. Möglicherweise ändern sich diese Inhalte. Von geänderten Inhalten die nicht zu dieser Site themenverwandt sind, distanziere ich mich und bin für den Inhalt dieser externen Links nicht verantwortlich.

Ich beschreibe bei meinen Basteleien ausschließlich Laborexperimente. Von  einer Nutzung der dargestellten Informationen durch Dritte für andere Zwecke außer Laborexperimente rate ich absolut ab und übernehme keinerlei Verantwortung.