Gyroskop mit Matlab/Simulink

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Autor: Philipp Tewes

Betreuer: Prof. Dr.-Ing. Ulrich Schneider

Sensor: EV3-Gyrosensor-45505

Für die Lehrveranstaltung Signalverarbeitende Systeme des Studiengangs „Business and Systems Engineering“ im SoSe 2018 war es die Aufgabe, einen Gyrosensor des Lego EV3 Roboter mit Matlab / Simulink auszulesen und seine Messwerte zu verarbeiten. Verwendet werden konnten dazu zwei Variationen. Eine Möglichkeit war es, den EV3 Sensor an ein EV3 zu Verbinden und diesen dann mit dem PC, auf welchem Matlab die Werte verarbeitet, die andere Möglichkeit, welche in dem Fall dieses Projektes verwendet wird, ist es den Sensor an einen Arduino anzuschließen. Der Arduino übernimmt die Rolle des EV3 Bausteins und Kommuniziert mit dem PC, auf welchem Matlab / Simulink die Sensordaten auswerte kann.


Lego Mindstorms

Abb. 3: Lego RCX
Abb. 2: Lego NXT
Abb. 1: Lego EV3

Der Lego Mindstorms EV3 Roboter ist der dritte Roboter welcher von Lego entwickelt wurde. Die erst Entwicklung war der RCX welcher im Jahr 1998 erschienen ist. Die RCX Variante ist von der Leistungsfähigkeit den neueren Entwicklungen deutlich unterlegen, bot aber schon drei Eingänge und drei Ausgänge an. Beim Aufbau der Systeme hat Lego mit diesem begonnen eine zentrale Recheneinheit mit externen Motoren und Sensoren zu ergänzen. Auf diese Weise sind sehr flexible Konstruktionen möglich. Beim RCX wurde die Konstruktion der Bauteile auf die Art vorgenommen, dass diese mit dem normalen Lego System kompatibel sind. Für die Verbindung der Komponenten trifft dies ebenfalls zu, diese werden durch ein Lego "Block" versteckt (Abb. 3). [1]


Mit der Lego Mindstorms NXT Serie welche im Jahr 2006 auf dem Markt erschienen ist, gab es deutliche Veränderungen gegenüber des RCX Roboters und seiner Anbauteile (Abb. 2). Die Integrationsmöglichheit in das normale Lego Stecksystem wurde auf das System von Lego Technik umgestellt. Im Fall der Sensoren handelt es sich um Neuentwicklungen ohne eine Abwärtskompatibilität zu bieten. Die NXT Serie bietet neben analogen Sensoren erstmals digitale Sensoren welche die Messwerte intern bestimmen und per BUS-System an den NXT Baustein senden. An vielen Schulen und Universitäten fand der Lego NXT Abnehmer, verwendet wird dieser für die Einführung in Programmierung. Bei den Verbindungen der Bauteile gab es gegenüber des RCX ebenfalls eine nicht abwärtskompatible Änderung, die Verbindung wurde von der Lego "Block" Verbindung zu einer Art RJ12 Stecker umgestellt. [2] [3]

Die aktuellste Entwicklung, aus 2013, der Lego Mindstorms Serie ist der EV3 (Abb. 1). Dieser bietet ebenfalls wie der NXT eine Integrationsmöglichkeit in das Lego Technik System. Bei dieser Entwicklung wurde ein größerer Wert auf Abwärtskompatibilität gesetzt. Dies gilt für die Sensoren wie für die Kabelverbindungen. Bei den Schnittstellen gab es eine Erweiterung auf die Möglichkeit vier Motoren mit dem EV3 Verbinden zu können. Neben dieser Änderung wurde der EV3 mit mehr Tasten und stärkerer Rechen-Hardware ausgestattet, sowie mit mehr Speicherplatz. Die digitalen Sensoren übermitteln die Messwerte beim EV3 via UART welches zu der I2C des NXT eine weitere Veränderung darstellt.

Lego EV3 Gyro-Sensor

Abb. 4: Lego EV3 Gyroskop

Bei dem Lego Gyrosensor (Abb. 4) handelt es sich um einen digitalen Sensor um Drehungen um die Hochachse ermitteln zu können. Diese kann bis zu einer Geschwindigkeit von 440°/s gemessen werden. Die Messabweichung liegt in einem Bereich von Plus/Minus 3° bei einer Drehung um 90°. Die Bestimmung der Drehrate um andere Achsen ist mit diesem Sensor nicht möglich, es können nur Drehungen um die Hochachse (z-Achse) gemessen werden.

Bei der Kommunikation mit dem EV3 wurde auf die UART Schnittstelle zurückgegriffen, der Sensor beinhaltet einen 8bit Microkontroller welcher für die Datenverarbeitung und Datenversendung zuständig ist. Der Microkontroller übermittelt selbstständig 1000 Messwerte in der Sekunde. Der Sensor versendet Messwerte wann immer diese eine Änderung aufweisen, neben dieser selbstständigen Übermittlung ist es ebenfalls möglich, dass der EV3 den aktuellen Messwert abfragen kann.

Wird der Gyrosensor mit dem EV3 Verbunden, beginnt dieser damit sich beim EV3 als Gyrosensor "anzumelden". Wurde dies erfolgreich Durchgeführt übermittelt der Gyrosensor seine möglichen Messmöglichkeiten und Wertebereiche der gesendeten Messwerte. Nach dem Abschluss dieses Anmeldevorgangs startete der Gyrosensor mit der Übermittlung von Messwerten an den EV3. Es kann zwischen drei verschiedenen Modi gewechselt werden. Der Default Modus ist der „Gyro Winkel Modus“, hierbei wird kontinuierlich gemessen und die Winkelgeschwindigkeit akkumuliert, dies wird übersetzt in einen relativen Winkel. Der relative Winkel bezieht sich auf die Drehung seit dem letzten Zurücksetzen des akkumulierten Winkels. Wird der Gyrosensor zu langsam gedreht, oder schneller als die maximale Geschwindigkeit von 440°/s, wird die relative Winkelmessung ungenau. Neben diesem Modus gibt es den „Gyro Modus“, bei diesem wird die Gierrate kontinuierlich bestimmt. Wenn sich der Sensor nicht dreht, ist dieser Wert Null. Die schnellste Rotationsgeschwindigkeit, die der Sensor bestimmen kann, beträgt 440°/s. Der dritte Modus des Gyrosensors ist der „Gyro und Winkel Modus“, bei welchem die identischen Messungen wie in den zuvor behandelten Modi durchgeführt werden. Der Unterschied liegt darin, dass beide Messwerte gleichzeitig an den EV3 versendet werden. [4]


Messprinzip

Ein Gyroskop, auch Kreiselinstrument bezeichnet, ist ein rotierender symmetrischer Kreisel, der sich in einem beweglichen Lager dreht. Dieser ist frei in einem Käfig beweglich aufgehangen. Aufgrund der Drehimpulserhaltung weist ein Kreisel ein hohes Beharrungsvermögen gegenüber äußeren Lageänderungen im Raum auf. Gyroskope werden als Navigationsinstrumente sowie zur aktiven Lageregelung eingesetzt, insbesondere in der Luftfahrt und Raumfahrt. Bei der Lageregelung von Raumflugkörpern wie Satelliten oder Raketen wird der Effekt genutzt, dass das Gesamtsystem aus Raumflugkörper und Gyroskop seinen Drehimpuls beibehält. Hierdurch kann die Drehimpulsübertragung zwischen beiden bestimmt werden und die Lage gesteuert.

Historisch

Abb. 5: Effekte an einer rotierenden Scheibe

Die bei Gyroskopen verwendeten Kreiselsysteme lassen sich als geschlossenes System betrachten. Der Drehimpuls dieses Systems bleibt konstant. Wird durch eine äußere Kraft versucht die Drehachse des Kreisels zu kippen, resultiert hierdurch ein Drehmoment (Abb. 5). Damit das System seinen Gesamtimpuls bewahren kann, kippt die Kreiselachse senkrecht zur angreifenden Kraft. Bekannt ist dies vermutlich jedem durch Spielzeugkreisel, dessen Achse durch die ihn kippen wollende Schwerkraft entlang eines Kegelmantels präzediert. Durch diesen Effekt, der Massenträgheit und des Drallsatzes, ist es möglich die Lageänderung eines Objektes zu bestimmen. Hieraus ergeben sich zwei Messprinzipien. Soll ein Bezug zur Lage hergestellt werden, kann die Stabilität der Kreiselachse verwendet werden. Durch das Bestreben eines symmetrischen Kreisels die Drehachse im Inertialraum beizubehalten, ist ein Bezug zur Lage gegeben. Dies ist bekannt vom z.B. künstlichen Horizont in Flugzeugen. Das weitere Messprinzip ist die Präzession, hierbei kann eine Kraft gemessen werden die im direkten Zusammenhang zur Präzession steht. Hierdurch wird ebenfalls eine Lageänderung messbar. [3] [5]








Modern

Abb. 6: Kapazitiver Wandler für Gyroskope

Kreiselinstrumente haben den Nachteil, dass sie relativ großen Bauraum benötigen und dazu teuer sind. Der Verbau in Robotern oder Handys würde so nicht in Frage kommen. Moderne Gyroskope, wie es im Lego EV3 Gyrosensor verbaut ist, verwenden eine andere Technik zur Bestimmung einer Lageänderung und damit Drehrate. Die verwendete Technik wird MEMS genannt. Bei Gyroskopen mit dieser Technik dreht sich kein Kreisel mehr in einem Käfig, sondern wird ein Körper in eine definierte Vibration versetzt. Genutzt wird der Effekt der Corioliskraft, diese Besagt das bei jeder Drehbewegung im Raum eine messbare Größe entsteht. Zur Bestimmung der Lageänderung wird genutzt, dass wenn ein vibrierendes Objekt im Raum gedreht wird, die Corioliskraft diese Vibration verändert. Gemessen wird der Grad der Veränderung der Vibration durch die Corioliskraft. In Schwingung werden sehr kleine Bauteile gebracht, die Schwingung beträgt oft zwischen 16kHz bis zu 32kHz. Über den Schwingungsmodus lässt sich die Drehrate bestimmen. Die Veränderung des Schwingungsmodus wird oft, wie auch im Fall des Lego EV3 Gyroskop, kapazitiv bestimmt (Abb. 6). Eine seismische Masse befindet sich zwischen zwei Kondensatorplatten. Durch die Lagerung und Vibration der Masse verändert sich durch die Corioliskraft, bei einer Drehung, die Position der Masse, dies bedeutet eine Feldänderung, welche bestimmt werden kann. Es wird von einem kapazitiven Wandler gesprochen welcher die Veränderung der Vibration bestimmt und in die Drehrate umrechnet. [6] [7]











Aufbau

Abb. 7: Lego EV3 Gyro Sensor Schaltplan

Bei dem in diesem Projekt behandelten Gyrosensor handelt es sich um eine Entwicklung von Lego selbst. Er stammt nicht wie viele Sensoren vom NXT Roboter vom Unternehmen HiTechnics. Der Sensor ist als ein digitaler Sensor entwickelt worden, dieser gibt also kein analoges Signal aus welches vom EV3 ausgewertet wird. Der eigentliche Gyrosensor besteht aus drei Einheiten, eines Spannungswandlers, eines 8bit Microkontrollers und des eigentlichen Gyroskops (Abb.7). Die Messwerte werden im Sensor selbst berechnet und gefiltert, kommuniziert wird über die UART Schnittstelle. Hierrüber übermittelt der Sensor selbstständig seine Messwerte. [4]

Spannungswandler

Versorgt wird der Gyrosensor im Normalfall vom EV3 Roboter mit einer Spannung von 4.4V, dies ist einheitlich und wird vom EV3 nicht variiert. Der Microkontroller und das Gyroskop selbst im Sensor benötigen eine Eingangsspannung von 3.3V. Der Spannungswandler besitzt die Aufgabe die Eingangsspannung des Sensors, die vom EV3 Roboter gespeist wird, auf die benötigten Arbeitsspannungen des Gyroskop und des Microkontrollers zu wandeln. Beim Spannungswandler handelt es sich um den XC6201P33 welcher eine maximale Eingangsspannung von 12V wandeln kann. So ist es möglich, den Sensor mit der Spannung des USB Ports des Computers zu versorgen, welche 5V beträgt.

Datenblätter zum Spannungswandler sind im SVN Ordner für eine detailliertere Einsichtsmöglichkeit abgelegt.










Gyroskop

Abb. 8: Block Diagramm Gyroskop

Beim verbauten Gyroskop handelt es sich um das ISZ-655, dieses ist ein einachsiges Gyroskop welches um die z-Achse misst (Abb. 8). Bei Gyroskopen ist es ein häufiges Problem, dass die Messung mit einem Drift des Messwertes behaftet sind. Diese Störung muss heraus gerechnet werden, möglich ist dies z.B. mit der Koppelung eines Beschleunigungssensors. Beide Sensordaten können so z.B. in einem Kalmanfilter fusioniert werden und die Störung herausgerechnet. Dieses Verfahren ist je nach Umsetzung rechenaufwendig, was einen Grund für den Verzicht dieses Verfahrens im Fall dieses Gyrosensors darstellen könnte. Um die Eliminierung durch die Verwendung eines Kalmanfilters oder eines Komplementärfilters durchführen zu können, müsste dazu noch ein weiterer Sensor verbaut werden. Kombiniert werden bei diesen verfahren Sensoren mit hochfrequenten und niederfrequenten Störungen. Aus dem Grund, dass der Drift eines Gyroskops niederfrequent ist, könnte ein Beschleunigungssensor verwendet werden, denn weist dieser eine hochfrequente Störung auf. Weitere Sensoren können in den Datensätzen welche durch Lego veröffentlicht wurden nicht gefunden werden.

Im Fall des ISZ-655-Gyroskop handelt es sich um ein zweimassen- Vibrations MEMS Gyroskop. Die Verwendung von zwei Massen, welche gegensätzlich oszilliert werden, haben den Hintergrund, externe Beschleunigungen bestimmen zu können. Dies ist wichtig, denn würden die Messung verfälscht werden. Die Prüfmassen werden bei Resonanz elektrostatisch oszilliert. Ein interner automatischer Verstärkungsregelkreis steuert präzise die Oszillation der Prüfmassen. Der Block „Charge Pump Regulator“ erzeugt die Spannung, die erforderlich ist, um die mechanische Struktur zu oszillieren. Der Coriolis Effekt beeinflusst die Vibration, die durch einen kapazitiven Abgriff detektiert werden. Das resultierende Signal wird verstärkt, demoduliert und gefiltert, um eine analoge Spannung zu erzeugen, die proportional zur Winkelgeschwindigkeit ist. Die Oszillation oder auch Schwingung wird in einem Vakuum durchgeführt. Ändert sich der Innendruck, z.B. durch starke thermische oder physische Belastung des Sensors, kann dies signifikanten Einfluss auf die Präzision des Sensors haben.

Um die zu Abweichung führenden Temperaturveränderungen auszugleichen, wird ein Skalierungsfaktor aufgeschaltet. Der Skalierungsfaktor des Gyroskops ist abhängig von der Amplitude der mechanischen Bewegung und der Trimmeinstellung der internen Verstärkungsstufen. Der Schwingkreis steuert präzise die Amplitude, um eine konstante Empfindlichkeit über den Betriebstemperaturbereich aufrechtzuerhalten und keine Messbeeinflussung durch Temperaturveränderungen zu bekommen. Für die Ermittlung der Temperatur ist ein integrierter Temperatursensor (Proportional zur absoluten Temperatur) enthalten, Temperaturinformationen sind auf Pin 20 zu erhalten.

Die Aufgabe des Blocks des „Rate Sensor“ ist es, die Winkelgeschwindigkeit um die z-Achse, unter Verwendung von InvenSens proprietärer hergestellter Bulk-Silizium-Technologie, zu erfassen. Die Struktur ist auf Waferebene aufgebaut und hermetisch abgeschlossen. Die hermetische Abdeckung schützt das Gyroskop vor elektromagnetischen Störungen sowie Funkstörungen (EMI/RFI). Verwendet wird das bereits erwähnte zwei-Massen-Design, um Störungen durch lineare Beschleunigung eliminieren zu können. Der Block „Oszillatorschaltung“ erzeugt elektrostatische Kräfte, um die Struktur in Resonanz zu schwingen. Die Schaltung erfasst die Vibration durch Messen der Kapazität zwischen der oszillierenden Struktur und einer festen Elektrode. Die Oszillatorschaltung schaltet in Quadraturphase mit der Kapazitätsmessung, um bei Resonanz zu schwingen.

Der Block „Coriolis Sense“ besitzt die Aufgabe, die durch die Coriolis Kraft bewirkte Schwingungsänderung, welche auf die mechanische schwingende Struktur wirkt, zu bestimmen. Die resultierende Vibration wird wie bei der Oszillatorschaltung kapazitiv gemessen. Dieses Signal wird mittels rauscharmer ladungsintegrierender Verstärkerstufen und Verstärkungsstufen in eine wellenförmige Spannung umgewandelt. Mit diesem Signal arbeitet der Demodulator weiter. Die Amplitude entspricht der Drehrate und die Trägerfrequenz ist die mechanische Antriebsfrequenz. Der Synchrondemodulator wandelt die durch die Coriolis Kraft entstandenen Erfassungswellen in ein Niederfrequenz Winkelgeschwindigkeitssignal um. Das Signal des „Demodulationsstufen“ Blocks ist ein Tiefpassfilter nachgeschaltet. Dieser Filter dämpft Rauschen und hochfrequente Artefakte vor der Endverstärkung.

Wie bereits erwähnt handelt es sich im Fall des Gyroskops im Lego Gyrosensor um ein sogenanntes MEMS (Micro-Electro-Mechanical Systems) Gyroskop, dieses weisen einen hohen Drift über der Zeit aus. Dieser kann bis zu 20°/h betragen. Aus diesem Grund besitzt das Gyroskop den „Auto Zero“ Block. Dieser reduziert den durch Offset-Drift verursachten DC-Offset. Die Implementierung dieser Funktion variiert je nach Anwendungsanforderung und wird von Lego nicht offengelegt. Pin 21 (AZ) kann verwendet werden, um die Auto Zero Funktion einzustellen und die Vorspannung auf ungefähr VREF zurückzusetzen. Aus dem Grund das die Signale keinen Drift aufweisen, wird davon ausgegangen das Lego diese Funktionalität verwendet hat.

Das Gyroskop besitzt zwei Ausgänge (Z-OUT und Z4.5OUT), mit Skalierungsfaktoren und Full Scale Empfindlichkeiten, die um einen Faktor von 4,5 variieren. Mit zwei Empfindlichkeiten kann der Endbenutzer einen Ausgang für schnellere Bewegungen (über einen vollen Skalenbereich von ± 2000°/s) und einen zweiten Ausgang, der für langsamere Bewegungen (über einen vollen Skalenbereich von ± 440°/s) zugreifen. Somit kann ein Analog Digital Wandler (ADC) mit niedrigerer Auflösung verwendet werden, um die Bewegung zu digitalisieren, wobei die Verstärkung von 4,5 in dem Ausgang Z4.5OUT dem Benutzer effektiv zwei zusätzliche Bits an Auflösung ermöglicht.

Microkontroller

Abb. 9: Aufbau des Microkontroller

Wie bereits erwähnt handelt es sich beim Gyrosensor für den EV3 Roboter um einen digitalen Sensor, alle Messwerte werden „im Sensor" verarbeitet. Diese Aufgabe übernimmt der Microkontroller des Unternehmens ST Elektronics, es handelt sich um das Modell STM8S103F3. Bei diesem Handelt es sich um einen 8bit Microkontroller welcher mit einem Takt von 16MHz getaktet ist. Die genauen Spezifikationen sind in der Tab. 1 nachzusehen oder im Datenblatt im SVN Ordner. Zu den Aufgaben des Microkontrollers gehört es mit dem integrierten A/D Wandler das analog Signal welches das Gyroskop ausgibt zu wandeln und zu Filtern. Neben dieser Aufgabe ist es die Aufgabe des Microkontrollers die Kommunikation mit dem EV3 durchzuführen und diesem die Messwerte über die UART Schnittstelle zu senden. Der Aufbau als Blockbild des verwendeten Microkontrollers ist in der Abb. 9 zu sehen.


Tab. 1: Spezfikationen des Microkontrollers
Einheit Merkmal
Core 16Mhz advanced STM8 core mit Harvard Architektur
Speicher
Programm Speicher 8Kbyte Flash
Data Speicher 640byte EEPROM
Spannungsversorgung 2.95V - 5.5V
Kommunikation
UART SmartCard, IrDA, LIN master mode
SPI 8Mbit/s
I2C 400kbit/s











Analog Digital Wandler

Abb. 10: Digital zu Analog Wandlung


Um das Gyroskop welches ein analoges Signal ausgibt einlesen zu können, bedarf es einem analog zu digital Wandler.

Dieser wird dazu verwendet das kontinuierliche Eingangssignal in einzelne diskrete Abtastwerte digital aufzulösen. Hierbei ist eine Qantiesirung nötig, denn stehen in jedem Fall nur endliche Ausgangswerte zur Verfügung (Abb. 10). Das Ergebnis einer A/D Wandlung lässt sich in einem Signal Zeit Diagramm in einer Punktabfolge mit endlichen horizontalen und vertikalen Abständen Zeichnen. Die Hauptparameter eines A/D Wandlers sind die Bittiefe und seine maximale Abtastrate bei dieser. Die Umsetzzeit sollte wesentlich kleiner als der Kehrwert der Abtastrate betragen. Die Bittiefe eines A/D Wandlers begrenzt die maximal mögliche Auflösung und damit resultiert eine begrenzte Genauigkeit, mit welcher das Eingangssignal gewandelt wird. [8]


Diese Aufgabe wird von dem im Sensor verbauten 8bit Microkontroller übernommen, dieser wandelt das erhaltende analog Signal in einen digitalen Wert. Aufgelöst wird das analoge Signal in ein 10bit digitales Signal. Die benötigte Zeit für eine Wandlung beträgt 14 Taktzyklen. Seine Aufgabe ist es eine analoge Eingangsspannung durch succsessive Approximation in einen 10bit Digitalwert zu wandeln. Der kleinste mögliche Wert entspricht GND, der maximale Wert entspricht der Referenzspannung, welches die Arbeitsspannung des Microkontrollers darstellt. Betrieben werden kann der Analog Digital Wandler in zwei Arten, der kontinuierlichen oder der einzelnen Wandlung. Bei der Einzelwandlung wird jede Wandlung durch das Programm einzeln gestartet, hierzu wird der A/D Wandler durch das Programm getriggert. Bei der kontinuierlichen Wandlung werden die Eingänge ständig ausgewertet und die Daten im ADC Daten Register aktualisiert. Wurde eine Wandlung abgeschlossen, kann ein Interrupt ausgelöst werden.

Das succsessive Approximations Verfahren, wird für die Umsetzung des Analogsignals, des Gyroskops, für die Wandlung in ein Digitalsignal verwendet. Es basiert auf dem Vergleich der analogen Eingangsspannung mit einer Referenzspannung und wird auch als Wägeverfahren bezeichnet. Für dieses Verfahren bedarf es einem digital zu Analog Wandler um die Referenzspannungen zu erzeugen. Es erfolgt ein schrittweiser und wiederholter ständiger Vergleich, wobei die Referenzspannung so variiert wird, dass sie sich immer mehr der Eingangsspannung annähert. Es werden also nicht direkt Spannungen gemessen, sondern vergleicht. Nach dem ersten Vergleich im Komparator wird die Referenzspannung in einem größeren Digitalschritt an die Spannung des Analogsignals angepasst. Anschließend wird in folgenden Vergleichen der Digitalschritt der Referenzspannung verringert. Nach einem erneuten Vergleich erfolgt eine weitere Verringerung um immer näher an den wahren Wert zu gelangen. Für jeden Schritt, also jeden neuen Vergleich, ist jeweils ein eigener Taktzyklus erforderlich. [8]


Weist die Eingangsspannung beim ersten Schritt des A/D Wandlers einen niedrigeren Wert als die Vergleichsspannung auf, dann wird das Most Significant Bit (MSB) auf null gesetzt, im anderen Fall auf eins. Anschließend wird die Referenzspannung halbiert und erneut für einen Vergleich angelegt. Der nachfolgende Vergleich zwischen beiden Spannungen für das nächste Bit zeigt, dass die Referenzspannung geringer ist als die Eingangsspannung. Hieraus resultiert das, dass folgende Bit auf eins gesetzt wird. Es wird wieder die Referenzspannung halbiert und erneut verglichen. Dieses Verfahren wird zyklisch weitergeführt bis alle Bits gesetzt sind, das letzte Bit ist das Least Significant Bit (LSB). [8]


Die Bildliche Abfolge einer Analogsignal zu Digitalsignal Wandlung ist in den Abb. 11 bis 14 zu sehen.

Abb. 14: Gewandeltes und geglättetes digitales Signal (rot) im Vergleich zu dem analog Signal (blau)
Abb. 13: Gewandeltes digitales Signal
Abb. 12: Endliche Abtastung des analogen Signals
Abb. 11: Analoges Signal













Kommunikation

Aus dem Grund, dass es sich beim EV3 Gyrosensor um einen digitalen Sensor handelt, und die Messwerte dem EV3 übermittelt werden müssen, bedarf es einer Kommunikation. Der im Sensor verbaute Microkontroller bietet hierzu mehrere Möglichkeiten. Welche in der Tabelle 1 aufgeführt sind. Gewählt wurde von Lego die UART Schnittstelle um die Kommunikation umzusetzen. Mögliche Übertragungen finden vom EV3 Baustein zum Sensor und auch in der anderen Richtung statt. Der EV3 nutzt die Schnittstelle um abzufragen, um welchen Sensor es sich handelt, oder um den Sensor in einen bestimmten Modus zu setzen. Der Sensor antwortet auf diese Anfragen, selbst stellt dieser keine Abfragen an den EV3 Baustein. Finden keine Abfragen des EV3 statt, nutzt der Sensor den Microkontroller, und damit die UART Schnittstelle, um selbstständig die Messwerte an den EV3 zu übermitteln. [4]

Die UART Kommunikation ist eine asynchrone Kommunikation und unterstützt 2400bit/s bis zu 460Kbit/s an den Ports eins und zwei, die Ports drei und vier unterscheiden sich hiervon, sie bieten bis zu 230Kbit/s. Um zu kommunizieren werden ein Startbit, acht Datenbits, kein parity Bit und ein Stoppbit verwendet. Um eine UART Kommunikation mit dem EV3 herstellen zu können, müssen bestimmte Kommunikationssequenzen befolgt werden. [4]

Sensor Identifikation

Der LEGO EV3 unterstützt die automatische Erkennung von externen Elementen wie Sensoren. Das Erkennen der externen Sensoren oder Motoren an den Eingangsports erfolgt nach einem speziellen Schema, in welchem Pin eins, zwei, fünf und sechs in einer speziellen Sequenz gesetzt werden, um zu identifizieren, welches externe Element angeschlossen ist. [4]

Anfänglich wird ein Eingangsport als "offener Port" mit der folgenden Konfiguration gesetzt:

  • Alle E/A Pins innerhalb eines Sensorports sind als Eingabeports festgelegt
    • Wert an Pin eins ist größer als 4800mV, (AD Messung)
    • Pegel an Pin zwei ist high, (Digital I/O Messung)
    • Pegel an Pin fünf ist high, (Digital I/O Messung)
    • Pegel an Pin sechs ist low, (Digital I/O Messung)
    • Wert an Pin sechs ist kleiner als 150mV, (AD Messung)

Um eine sichere Erkennung der angeschlossenen externen Elemente zu ermöglichen, muss dieser Zustand der Pins mindestens für 350ms vorliegen. Die aktuelle Version der Firmware kann folgende Elemente erkennen:

  • MINDSTORMS EV3 Berührungssensor
  • MINDSTORMS EV3 Temperatursensor
  • MINDSTORMS EV3 digitale Sensoren
  • MINDSTORMS EV3 Farbsensor
  • MINDSTORMS EV3 Gyrosensor
  • MINDSTORMS EV3 Ultraschallsensor
  • MINDSTORMS EV3 IR-Sensor

Neben den Sensoren die für den EV3 entwickelt wurden, sind auch die folgenden NXT Sensoren kompatibel:

  • MINDSTORMS NXT Touch Sensor
  • MINDSTORMS NXT Lichtsensor
  • MINDSTORMS NXT Farbsensor
  • MINDSTORMS NXT Temperatursensor
  • MINDSTORMS NXT Soundsensor.

Alle anderen Sensoren führen zu einem Fehler.

Verwendet werden die Erkennungssequenzen die in der Tab. 2 aufgeführt sind. Der Gyrosensor des EV3 ist ein digitaler Sensor, alle digitalen Sensoren melden sich identisch an.

Tab. 2: Auto ID Pin Level
Sensor Pin Level
LEGO MINDSTORMS EV3 Digital Sensor Pin zwei ist high, Pin eins besitzt weniger Spannung als 100mV

Sensor Kommunikation

Um mit dem EV3 Gyrosensor kommunizieren zu können, musste sein Kommunikationsprotokoll implementiert werden. Diese Implementation wird auf dem Arduino ausgeführt. Das Matlab Programm wird auf diese Weise entlastet und konnte auf die GUI, Daten Plotten sowie das Daten Logging spezialisiert werden.

Die von Lego für den EV3 entwickelte Kommunikationsarchitektur für externe Sensoren und Motoren erfordert, dass die Geräte bestimmten Richtlinien einhalten. Die Entwicklung dieser Richtlinie ermöglicht viel mehr Möglichkeiten und Leistungsfähigkeit für die externen Geräte. Die neue EV3 Architektur erfordert, dass die externen Geräte Daten automatisch an den EV3 zurücksenden, ohne dass diese angefragt werden müssen. Der EV3 besitzt die Leistungsfähigkeit, neue Sensordaten vom externen Gerät mit einer maximalen Geschwindigkeit von 1ms zu verarbeiten. Im Folgenden wird die Initialisierungssequenz für einen digitalen Sensor wie den Gyrosensor durchgeführt, um zu veranschaulichen, wie das Protokoll implementiert wurde:

Der z.B. Gyrosensor beginnt mit der Übertragung aller Konfigurationswerte, hierdurch kann der EV3 das System entsprechend konfigurieren. [4]

Konfigurationsdaten umfassen:

  • Der UART Tx-Pin wird für mindestens 500ms auf low gesetzt.
  • Sesnortyp (Sensor ID)
  • Anzahl der vom Sensor unterstützten Modi
  • Unterstützte UART Kommunikationsgeschwindigkeit
  • Übertragung der einzelnen unterstützten Modi. Der Standardmodus für den Sensor muss als Modus 0 kommuniziert werden, der auch der letzte übertragene Modus sein muss. Begonnen wird mit der Übertragung des höchsten Modus und geendet mit dem Sendemodus 0. Zwischen jeder Modus-Übermittlung sollte eine Verzögerung von 10ms gelassen werden.
    • Modus Name
    • Rohwertbereich
    • SI-Wertebereich
    • Symbol
    • Datenformat
  • Nachdem alle Modus-Daten übermittelt wurden, sendet der Sensor ein ACK und wartet auf ein ACK des EV3. Wenn innerhalb von 80ms kein ACK empfangen wird, setzt sich der Sensor zurück. Wenn kein ACK vom EV3 gesendet wird lag in der Übermittlung ein Fehler vor. Nachdem der Sensor sich zurückgesetzt hat beginnt die Übermittlung erneut.
  • Wurde ein ACK vom EV3 gesendet, drückt dies eine Bestätigung der Daten aus und es wird auf die angeforderte Kommunikationsgeschwindigkeit geschaltet. Der EV3 ist nun Bereit die Daten zu empfangen.
  • Der EV3 sendet automatisch alle 300 ms einen NACK an den Sensor. Die MINDSTORS EV3 Sensoren verwenden diesen Befehl, um den internen Watchdog-Timer innerhalb des Sensors zurückzusetzen. Dies ermöglicht dem EV3 und den Sensoren, kontinuierlich Synchronisiert zu sein. Nach dem zurücksetzen senden die MINDSTORMS EV3 Sensoren die letzten gültigen Daten an den EV3. Wenn innerhalb von 5 NACKs keine Daten empfangen werden, wird das NACK nicht weiter vom EV3 gesendet, dies führt dazu, dass der Watchdog des Sensors nicht zurückgesetzt wird. Der EV3 wartet einen Watchdog-Timeout innerhalb des externen Geräts ab, dies führt zu einem Reset des externen z.B. Sensors. [4]

EV3 Connect Box

Für die Auslesung des Lego EV3 Gyroskop wurde, wie in der Einleitung bereits erwähnt, die Möglichkeit eines Arduinos verwendet. Dies bietet den Vorteil, dass für die Aufgabe des Datentransfers vom Sensor zum PC kein teurer EV3 Baustein verwendet werden muss. Denn wird die hohe Funktionalität eines EV3 Bausteins, welche einen hohen Preis resultieren lässt, für diese Aufgabe nicht benötigt. Es wurde unter Verwendung eines Arduino Nano eine Connect Box für EV3 Sensoren entwickelt. Diese bietet die Funktionalität, das EV3 Sensoren prinzipiell mit jeder PC Anwendung ausgelesen werden können. Alle Lego EV3 Sensoren nutzen die bereits vorgestellte Kommunikation. Die Connect Box wickelt diese Kommunikation mit dem Sensor vollständig ab, die Anwendung auf dem PC kann dadurch Infos zum Sensor oder auch Messdaten des Sensors Auslesen. Die Connect Box bietet ein übersichtliches Kommunikationsprotokoll über welches die Kommunikation von PC und Connect Box abgewickelt wird.

Kommunikation mit der EV3 Connect Box

Das entwickelte Kommunikationsprotokoll ist in der Tab. 3 zu sehen, diese findet zwischen dem PC und der EV3 Connect Box statt. Hierrüber könnte mit der EV3 Connect Box mit jedem beliebigen Gerät kommuniziert werden.

Tab. 3: Kommunikationsbefehle mit der EV3 Connect Box
Befehl Befehls Information
's' Sensor ID auslesen
'm' Sensor Modus auslesen
'0' - '6' Sensor in Modus z.B. 0 versetzen
'r' Sensor Reset durchführen
'f' Connect Box in den Daten-Modus versetzen
'd' Messdaten des Sensors anfordern

Wird die EV3 Connect Box durch den Anschluss eines USB Kabels mit Spannung versorgt, startet diese damit eine Verbindung zu einem EV3 Sensor aufzubauen. Wurde noch kein Sensor erkannt leuchtet die Status LED der EV3 Connect Box rot, wurde ein Sensor erkannt leuchtet die gelbe und die grüne LED. Ab diesem Zeitpunkt kann eine Verbindung mit dem PC zur EV3 Connect Box hergestellt werden. Wird die im folgenden Kapitel vorgestellte speziell für die EV3 Connect Box entwickelte Windows Anwendung verwendet, muss auf solche Details nicht geachtet werden. In diesem Fall wird alles automatisch für den Nutzer abgewickelt. Wurde die EV3 Connect Box durch die Anwendung erkannt und in den Datenmodus versetzt leuchtet nur noch die grüne LED, werden aktiv Daten ausgetauscht pulsiert die grüne LED.

Arduino der EV3 Connect Box

Beim verwendeten Arduino wurde sich für den Arduino Nano entschieden (Abb. 16). Dieser besitzt nahezu dieselben Funktionalitäten und Leistungen wie der Arduino Uno, bietet aber eine kompaktere Bauform an. Um den Gyrosensor oder andere Komponenten anschließen zu können, stehen insgesamt 14 I/O Pins, wovon acht analoge Eingänge sind, zur Verfügung. Die Spannungsversorgung für den Arduino wird durch das USB Kabel sichergestellt, der Gyrosensor bezieht einen Teil davon für die eigene Versorgung. Weitere technische Informationen sind der Tab. 4 zu entnehmen. Verwendet wurden insgesamt acht Pinns des Arduino, sechs davon für die Schaltung der LED's und zwei für die Serielle Kommunikation mit den EV3 Sensoren.

Aus dem Grund, dass der verwendete Arduino nur eine hardwaretechnisch umgesetzte serielle Schnittstelle aufweist, musste eine weitere, durch die für Arduinos zur Verfügung stehende Software Serial, serielle Schnittstelle in Software hinzugefügt werden. Die in Hardware vorhandene serielle Schnittstelle wird für die Kommunikation mit dem PC verwendet, die in Software umgesetzte für die Kommunikation mit dem Sensor. Hierbei wäre keine Variation möglich, denn ist die in Hardware umgesetzte serielle Schnittstelle mit der USB Buchse verbunden.

Abb 16: Arduino Nano verbaut in der EV3 Connect Box
Tab. 4: Spezifikationen des Arduino Nano
Einheit Merkmal
Core 16Mhz ATmega328
Speicher
Flash-Speicher 32KB
SRAM 2KB
EEPROM 1KB
Spannungen
Betriebsspannung 5V
Empfohlene Eingangsspannung 7V - 12V
Maximale Eingangsspannung 20V
Kommunikation
UART Ja
I2C Ja
I/O-Pins 14, davon 6 PWM und 8 analoge Eingänge

Verbindungen der EV3 Connect Box

Abb 17: Vollständig verbundene EV3 Connect Box

Um vollständig funktionsfähig zu sein, muss die EV3 Connect Box mit einem EV3 Sensor und einem PC verbunden werden. Ein Beispiel für die Verbindung ist in der Abb. 17 zu sehen, der USB Hub ist mit einem PC verbunden.


Die Verbindung von Connect Box und PC wurde über die serielle Schnittstelle des Arduino umgesetzt. Hierzu kann das USB Kabel verwendet werden, welches ebenfalls für das Code flashen auf den Arduino verwendet wird. Dieses muss in die mini USB Buchse des Arduino gesteckt werden und in einen USB Anschluss des PC.


Bei der Verbindung vom EV3 Gyroskop und der Connect Box gab es die Möglichkeit eines verstecken. Es wurde eine baugleiche Buchse verwendet, wie sie an einem Lego EV3 Baustein verwendet wird, hierdurch können Sensoren mit den originalen Kabeln von Lego mit der Connect Box verbunden werden. Die Verkabelung nach der Tab. 5 ist hierdurch sichergestellt. Die interne Verbindung von Buchse und Arduino wurde durch Kabel mit einem geringen Querschnitt realisiert, um eine auf lange Zeit sichere Kontaktierung sicher zu stellen, wurden diese verlötet.

Tab. 5: Belegung der Kabelverbindungen
Ader im EV3 Kabel Belegung im Sensor Anschluss an Arduino
Pin1 Weiß GND GND
Pin2 Schwarz Nicht angeschlossen Nicht angeschlossen
Pin3 Rot GND GND
Pin4 Grün Vin 5V
Pin5 Gelb RX 14
Pin6 Blau TX 15




EV3 Connect Box Anwendung

Abb 18: EV3 Connect Box PC Anwendung
Abb 19: EV3 Connect Box PC Anwendung mit maximierten Plots

Eine Möglichkeit die EV3 Connect Box zu verwenden, ist die für diese entwickelte PC Anwendung (Abb. 18). Diese wurde mit der Software Matlab entwickelt mit zu Hilfenahme von GUIDE, wodurch es möglich ist grafische Oberflächen zu erstellen. Insgesamt gibt es zwei Matlab Skripts, einmal eins mit den callback Funktionen für die grafische Oberfläche und ein weiters für die Steuerung der GUI und die Kommunikation mit der Connect Box. Prinzipiell wurde die EV3 Connect Box sowie die EV3 Connect Box Anwendung so entwickelt, das sich hiermit alle EV3 Sensoren Auslesen und Konfigurieren lassen. Bisher ist jeweils nur der Case für den EV3 Gyrosensor implementiert, weitere Sensoren können dadurch unkompliziert hinzugefügt werden.


Die grafische Oberfläche ist in der Abb. 18 zusehen. Im Abschnitt des „Serial Ports“ kann im drop down Menü der COM Port ausgewählt werden, an welchem die EV3 Connect Box angeschlossen wurde. Wurde das Programm gestartet, werden alle COM Ports aufgelistet an welche ein Gerät angeschlossen wurde. Die Aktualisierung des drop down Menü wird durchgängig durchgeführt, ein schließen und öffnen der Anwendung ist dadurch nicht notwendig, wenn der Sensor erst zur Laufzeit der Anwendung verbunden wurde. Nach der Auswahl des korrekten COM Ports kann die Connect Box durch den Button "Connect" verbunden werden. Im Abschnitt „Working mode“ muss hierraufhin der Arbeitsmodus des Sensors ausgewählt werden, ebenfalls kann ein Data logging aktiviert werden. Wird das Data logging aktiviert, wird eine Textdatei im Verzeichnis des Programms erstellt in welches alle Messwerte geschrieben werden, so sind die Daten auch auf längere Zeit verfügbar. Die Auslesung des Sensors beginnt, wenn nach Auswahl des Working mode mit „confirm“ bestätigt wird. Daraufhin werden Messwerte von der Anwendung bei der Connect Box abgefragt und im Plot visualisiert, ebenfalls wird der aktuelle Messwert dezimal angezeigt. Aus dem Grund, dass die Plots in der Anwendung nur eine begrenzte Größe aufweisen, kann per „Bigger plot“ ein beliebig großer Plot aktiviert werden (Abb. 19). In den Plots werden auf der x-Achse immer die letzten 100 Messwerte Angezeigt. Im Fall des Gyrosensors können zwei Messwerte zur selben Zeit ausgelesen und in der Anwendung visualisiert, sowie im Log File abgespeichert werden.

Die Anwendung kann durch das erstellte .m-file auf jedem PC verwendet werden, auf welchem die Software Matlab installiert ist. Um ebenfalls eine Nutzung auf PCs zu ermöglichen, auf welchen die Software Matlab nicht verfügbar ist, wurde eine .exe Anwendung mit dem Matlab Application Compiler erstellt. Auf dem Ziel PC muss bei dieser Variante eine Matlab Laufzeitumgebung installiert werden, anschließend ist auf diese Weise eine Verwendung möglich.










































Datenverarbeitung

Im Fall des EV3 Gyroskop ist keine weitere Datenverarbeitung nötig, wie im Kapitel „Lego EV3 Gyro-Sensor" ersichtlich ist, handelt es sich um einen digitalen Sensor. Intern im Sensor werden die Messwerte bestimmt und bereits gefiltert. Der typische Gyroskop Drift, sowie Messrauschen werden intern eliminiert und der Messwert anschließend über das BUS System versendet. Um diese Theorie zu überprüfen wurden Messreihen aufgenommen.

Drift

Gyroskope weisen in der Regel eine niederfrequente Messabweichung auf, diese wird auch Drift genannt, der Messwert "driftet" vom wahren Wert kontinuierlich ab. Im Fall des EV3 Gyroskop wird der Drift intern erfolgreich eliminiert. Der Sensor wurde hierzu gestartet und für sechs Stunden in unveränderter Position ausgelesen, es zeigte sich keine Abweichung des Messwerts.

Winkelmessung

Neben des Drifts über der Zeit wurde ebenfalls überprüft, ob der Winkel korrekt gemessen wird. Hierzu wurde ein einstellbarer Winkel verwendet (Abb. 20). Die Auflösung der aufgedruckten Skalar beträgt 0,1°, die maximale Winkeländerung beträgt 140°. Der Sensor wurde fest mit dem Winkel verbunden, ebenfalls wurde der Winkel mit Schraubzwingen mit der Tischplatte fest verbunden. So konnte sichergestellt werden, dass keine Fehler durch Änderung der Position des Winkels erzeugt werden konnten. Insgesamt wurde auf diese Weise vier Messreihen aufgenommen. Die Ergebnisse sind in der Tab. 6 eingetragen. Die von Lego angegebenen Messunsicherheiten wurden sichtlich unterschritten.


Abb. 20: Messaufbau für die Winkelüberprüfung
Tab. 6:
Wahrer Wert Absolute Abweichung Relative Abweichung in % Arithmetisches Mittel Standardabweichung Messunsicherheit Vertrauensintervall
Soll Winkel Min. Max Min Max
0 0 0,00% 0,00% 5,00 0,00 0,00 5,00 ± 0,00
10° 0 0 0,00% 0,00% 10,00 0,00 0,00 10,00 ± 0,00
20° 0 0 0,00% 0,00% 20,00 0,00 0,00 20,00 ± 0,00
30° 0 0 0,00% 0,00% 30,00 0,00 0,00 30,00 ± 0,00
40° 0 0 0,00% 0,00% 40,00 0,00 0,00 40,00 ± 0,00
50° 0 0 0,00% 0,00% 50,00 0,00 0,00 50,00 ± 0,00
60° 0 -1 0,00% -1,67% 59,75 0,50 2,39 59,75 ± 2,39
70° 0 -1 0,00% -1,42% 69,75 0,50 2,39 69,75 ± 2,39
80° 0 -2 0,00% -2,50% 79,50 1,00 4,77 79,50 ± 4,77
90° 0 -2 0,00% -2,22% 89,00 0,82 3,91 89,00 ± 3,91
100° 0 -3 0,00% -3,00% 99,00 1,41 6,73 99,00 ± 6,73
110° 0 -3 0,00% -2,73% 108,75 1,26 6,01 108,75 ± 6,01
120° 0 -3 0,00% -2,50% 118,75 1,26 6,01 118,75 ± 6,01
130° 0 -3 0,00% -2,31% 128,75 1,26 6,01 128,75 ± 6,01
140° 0 -4 0,00% -2,86% 138,75 1,89 9,02 138,75 ± 9,02

YouTube Video

Fazit

Zusammenfassend kann gesagt werden, dass die Durchführung des Projektes erfolgreich abgeschlossen werden konnte. Das EV3 Gyroskop lässt sich durch die Verwendung der entwickelten EV3 Connect Box mit einem PC Verbinden, unter Verwendung der entwickelten EV3 Connect Box Software lassen sie die Messwerte des Sensors für eine Analyse visualisieren und aufnehmen. Durch tiefe Recherchen der Datenblätter konnte dazu ein Verständnis für die Signalverarbeitungskette herstellen werden und eine tiefe Einarbeitung in das Verwendete Kommunikationsprotokoll des EV3 Roboter.

Einzelnachweise

  1. "Lego Mindstorms" von Wikipedia.org [1]
  2. "Lego NXT" von Wikipedia.org [2]
  3. 3,0 3,1 "Berns, Schmidt (2009): Programmierung mit LEGO MINDSTORMS NXT; Springer Vieweg " Referenzfehler: Ungültiges <ref>-Tag. Der Name „Programmierung mit LEGO MINDSTORMS NXT“ wurde mehrere Male mit einem unterschiedlichen Inhalt definiert.
  4. 4,0 4,1 4,2 4,3 4,4 4,5 4,6 "Lego EV3 Gyro Sensor" von Lego.com [3]
  5. "Mahnken (2009): Lehrbuch der Technischen Mechanik - Dynamik; Springer Vieweg"
  6. "Wendel (2011): Integrierte Navigationssysteme; Oldenbourg Wissenschaftsverlag"
  7. "Schloms (2008): Physik verstehen; Oldenbourg Wissenschaftsverlag"
  8. 8,0 8,1 8,2 "Heyne (1999): Elektronische Meßtechnik; Oldenbourg Wissenschaftsverlag"