Gyroskop mit Matlab/Simulink: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(356 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 8: Zeile 8:
'''Sensor:'''  [https://shop.lego.com/de-DE/EV3-Gyrosensor-45505 EV3-Gyrosensor-45505]
'''Sensor:'''  [https://shop.lego.com/de-DE/EV3-Gyrosensor-45505 EV3-Gyrosensor-45505]


Für die Lehrveranstaltung Signalverarbeitende Systeme des Studiengangs Business and Systems Engineering im SoSe 2018 war es die Aufgabe einen Gyro Sensor 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 auszulesen. Die andere Möglichkeit welche in dem Fall des Gyso Sensors verwendung fand, war es den Sensor an einen Arduino anzuschließen, dieser Kommuniziert mit dem PC auf welchem Matlab/Simulink die Sensordaten auswerte kann.
'''Lehrveranstaltung:''' [http://193.175.248.52/wiki/index.php/SigSys_SoSe2018 Signalverarbeitende Systeme im Sommersemester 2018]


[http://193.175.248.52/wiki/index.php/Spezial:Letzte_%C3%84nderungenhttps://youtu.be/NEZiz4j8CWM ''' YouTube Video:''']
= Einleitung =
Für die Lehrveranstaltung Signalverarbeitende Systeme des Studiengangs „Business and Systems Engineering“ im SoSe 2018 war es die Aufgabeeinen 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 mit einem 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 auswerten kann.
= Keine Zeit zu Suchen!? -> Kurzwahl =
# Auswahl eines Primärsensors
## [[#Gyroskop|Wie funktioniert der Sensor?]]
## [[#Modern|Welche Rohsignale liefert der Sensor?]]
# Signalvorverarbeitung
## [[#Lego EV3 Gyrosensor|Sollen Messwerte oder vorverarbeitete Daten übertragen werden?]]
## [[#Gyroskop|Wie lässt sich eine Vorverarbeitung umsetzen?]]
## [[#Gyroskop|Wird eine Kennlinie eingesetzt? Wenn ja, wie wird diese kalibriert?]]
# Analog-Digital-Umsetzer
## [[#Analog-Digital-Wandler|Wie werden die analogen Signale umgesetzt?]]
## [[#Microkontroller|Welcher ADU kommt zum Einsatz?]]
## [[#Analog-Digital-Wandler und Alternativen|Welche Gründe sprechen für diesen ADU? Alternativen?]]
# Bussystem
## [[#Kommunikation|Wird ein Bussystem zwischen Sensor und Mikrocontroller eingesetzt?]]
## [[#Kommunikation|Wenn ja, wie funktioniert dieses Bussystem?]]
# Digitale Signalverarbeitung
## [[#Gyroskop|Welche Verarbeitungsschritte sind notwendig?]]
## [[#Gyroskop|Welche Filter werden angewendet?]]
## [[#Datenverarbeitung|Bestimmen Sie Auflösung, Empfindlichkeit und Messunsicherheit des Sensors.]]
# Darstellung der Ergebnisse
## [[#Gyroskop|Welche Fehler treten in welchem Verarbeitungsschritt auf?]]
## [[#Winkelmessung |Stellen Sie die Messunsicherheit bzw. das Vertrauensintervall dar.]]
# EV3 Connect Box
## [[#EV3 Connect Box|Was ist eine EV3 Connect Box?]]
## [[#EV3 Connect Box-Anwendung|Wie greife ich auf eine EV3 Connect Box zu?]]
# [[#YouTube Video| Funktioniert das Projekt überhaupt?]]
= [http://193.175.248.52/wiki/images/6/60/Projektplan.PNG Projektplanung] =
Um eine fristgerechte Fertigstellung des Projektes sicherstellen zu können, wurde zu Beginn ein [http://193.175.248.52/wiki/images/6/60/Projektplan.PNG Projektplan] angelegt. Durch diesen war es möglich einen Überblick über die Teilprozesse zu behalten und im Zeitrahmen zu bleiben.


= Lego Mindstorms =
= Lego Mindstorms =
[[Bild:LEGO_RCX.png|thumb|240px|right|Abb. 3: Lego RCX]]
[[Bild:LEGO_RCX.png|thumb|240px|right|[http://193.175.248.52/wiki/images/5/57/LEGO_RCX.png Abb. 3: Lego RCX]]]
<div class="tright" style="clear:none">[[Datei:Lego_NXT.jpg|350px|mini|Abb. 2: Lego NXT]]</div>
<div class="tright" style="clear:none">[[Datei:Lego_NXT.jpg|350px|mini|[http://193.175.248.52/wiki/images/4/40/Lego_NXT.jpg Abb. 2: Lego NXT]]]</div>
<div class="tright" style="clear:none">[[Datei:Lego_EV3.jpg|350px|mini|Abb. 1: Lego EV3]]</div>
<div class="tright" style="clear:none">[[Datei:Lego_EV3.jpg|350px|mini|[http://193.175.248.52/wiki/images/f/f0/Lego_EV3.jpg Abb. 1: Lego EV3]]]</div>


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. Diese Variante ist von der Leistungsfähigkeit den neueren Entwicklugen deutlich unterlegen, bot aber schon drei Eingänge und 3 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, das diese mit dem normalen Lego System kompatiebel sind. Für die Verbindung der Komponenten trifft dies ebenfalls zu, diese werden durch einen Lego "Block" versteckt (Abb. 3).
Der Lego Mindstorms EV3 Roboter ist der dritte Roboter, welcher von Lego entwickelt wurde. Die Erstentwicklung war der RCX, welcher im Jahr 1998 erschienen ist. Die RCX Variante ist den neueren Entwicklungen bezüglich der Leistungsfähigkeit 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 [https://shop.lego.com/en-US/LEGO-Basic-Bricks-Deluxe-6177 Lego "Block"] versteckt (Abb. 3). <ref name="Lego Mindstorms"> "Lego Mindstorms" von Wikipedia.org [https://de.wikipedia.org/wiki/Lego_Mindstorms]</ref>


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. Bei den Sensoren wurden alle neu entwickelt ohne eine Abwärtskompatibilität zu bieten. Die NXT Serie bot neben analogen Sensoren erstmals digitale Sensoren welche die Messwerte intern bestimmen und per BUS-System an den NXT senden. An vielen Schulen und Universitäten fand der Lego NXT Abnehmer, hier wurde dieser für die Einführung in Programmierung verwendet. Bei den Verbindungen der Bauteile gab es gegenüber des RCX ebenfalls eine nicht Abwärtskompatibile Änderung, die Verbindung wurde von der Lego "Block" Verbindung zu einer Art RJ12 Stecker umgestellt.
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. <ref name="Lego NXT"> "Lego NXT" von Wikipedia.org [https://de.wikipedia.org/wiki/Lego_Mindstorms_NXT]</ref> <ref name="Programmierung mit LEGO MINDSTORMS NXT"> "Berns, Schmidt (2009): Programmierung mit LEGO MINDSTORMS NXT; Springer Vieweg
" </ref>


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 gillt für die Sensoren wie für die Kabelverbindungen. Bei den Schnitstellen gab es eine Erweiterung auf die Möglichkeit 4 Motoren mit dem EV3 Verbinden zu können. Neben dieser Änderung wurde der EV3 mit mehr Tasten und stärkerer Rechen Hardware ausgestattet, sowie mehr Speicherplatz. Die digitalen Sensoren übermitteln die Messwerte beim EV3 via UART welches zu der I2C des NXT eine weitere Veränderung darstellt.
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 [https://www.lego.com/de-de/themes/technic 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 =
= [https://shop.lego.com/de-DE/EV3-Gyrosensor-45505 Lego EV3 Gyrosensor] =


[[Bild:Gyroskop_EV3.jpg|thumb|300px|right|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º / Sekunde 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.
[[Bild:Gyroskop_EV3.jpg|thumb|300px|right| Abb. 4: Lego EV3 Gyroskop]]


Bei der Kommunikation mit dem EV3 wurde auf die UART Schnittstelle zurückgegriffen, der Sensor beinhaltet einen 8 Bit 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 das der EV3 den aktuellen Messwert abfragen kann.  
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.  


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º / Sekunde, 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 Grad/Sekunde. 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 das beide Messwerte gleichzeitig an den EV3 versendet werden.
Bei der Kommunikation mit dem EV3 wurde auf die [https://www.mikrocontroller.net/articles/UART 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. Die versendeten Messwerte wurden bereits intern verarbeitet, Störungen werden intern im Sensor eliminiert.  


<br/>
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. <ref name="Lego EV3 Gyro Sensor"> "Lego EV3 Gyro Sensor" von Lego.com [https://www.lego.com/r/www/r/mindstorms/-/media/franchises/mindstorms%202014/downloads/firmware%20and%20software/advanced/lego%20mindstorms%20ev3%20hardware%20developer%20kit.zip?l.r2=1016700452 ]</ref>
<br/><br/><br/>


== Messprinzip ==
== 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 aufgehanden. 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.  
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 ===
=== Historisch ===
Zeile 43: Zeile 80:
[[Bild:Gyroscope_wheel_animation.gif|thumb|700px|right|Abb. 5: Effekte an einer rotierenden Scheibe]]
[[Bild:Gyroscope_wheel_animation.gif|thumb|700px|right|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ägkeit und des Drallsatzes ist es möglich die Lageänderung eines Objektes zu bestimmen. Hierraus 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.
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 einen 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. <ref name="Programmierung mit LEGO MINDSTORMS NXT"> "Berns, Schmidt (2009): Programmierung mit LEGO MINDSTORMS NXT; Springer Vieweg" </ref> <ref name="Lehrbuch der Technischen Mechanik - Dynamik"> "Mahnken (2009): Lehrbuch der Technischen Mechanik - Dynamik; Springer Vieweg" </ref>


<br/>
<br/>
Zeile 57: Zeile 94:
[[Bild:Gyroskop_Prinzip.png|thumb|270px|right|Abb. 6: Kapazitiver Wandler für Gyroskope]]
[[Bild:Gyroskop_Prinzip.png|thumb|270px|right|Abb. 6: Kapazitiver Wandler für Gyroskope]]


Kreiselinstrumente haben den Nachteil das 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 die Größe von 2ωv entsteht. Hierbei handelt es sich um ω, die Drehrate, und v die Bahngeschwindigkeit. 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 16 kHz bis zu 32 kHz. Ü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.
Kreiselinstrumente haben den Nachteil, dass sie relativ großen Bauraum benötigen und dazu teuer sind. Der Verbau in Robotern oder Handys würde somit 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 [https://de.wikipedia.org/wiki/MEMS-Oszillator MEMS] (Micro-Electro-Mechanical Systems) 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, dass 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 16 kHz bis zu 32 kHz. Ü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. <ref name="Integrierte Navigationssysteme"> "Wendel (2011): Integrierte Navigationssysteme; Oldenbourg Wissenschaftsverlag" </ref> <ref name="Physik verstehen"> "Schloms (2008): Physik verstehen; Oldenbourg Wissenschaftsverlag" </ref>
 


<br/>
<br/>
Zeile 69: Zeile 107:
<br/>
<br/>


== Aufbau ==
== [http://193.175.248.52/wiki/images/e/e2/Sensor_Schaltplan.JPG Aufbau] ==


[[Bild:Sensor Schaltplan.JPG|thumb|500px|right|Abb. 7: Lego EV3 Gyro Sensor Schaltplan]]
[[Bild:Sensor Schaltplan.JPG|thumb|500px|right|[http://193.175.248.52/wiki/images/e/e2/Sensor_Schaltplan.JPG Abb. 7: Lego EV3 Gyro Sensor Schaltplan]]]


Bei dem in diesem Projekt behandelten Gyro Sensor 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 Gyro Sensor besteht aus drei Einheiten, eines Spannungswandlers, eines 8 Bit Microkontrollers und des eigentlichen Gyroskops. Die Messwerte werden im Sensor selbst berechnet und gefiltert, kommuniziert wird über die UART Schnittstelle. Hierrüber übermittelt der Sensor selbstständig seine Messwerte.
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: Einem Spannungswandler, einem 8bit Microkontroller und dem eigentlichen Gyroskop (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. Alle Datenblätter zu den in den folgenden Abschnitten behandelten Einheiten des Gyrosensors sind im [https://svn.hshl.de/svn/BSE_Tewes/trunk/Signalverarbeitende%20Systeme/ SVN Ordner] hinterlegt. <ref name="Lego EV3 Gyro Sensor"> "Lego EV3 Gyro Sensor" von Lego.com [https://www.lego.com/r/www/r/mindstorms/-/media/franchises/mindstorms%202014/downloads/firmware%20and%20software/advanced/lego%20mindstorms%20ev3%20hardware%20developer%20kit.zip?l.r2=1016700452 ]</ref>


=== Spannungswandler ===
=== Spannungswandler ===


Versorgt wird der Gyro Sensor im normalen Fall 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 aber 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, aus diesem Grund ist es möglich den Sensor mit der Spannung des USB Ports des Computers zu versorgen, welche 5V beträgt.
Versorgt wird der Gyrosensor im Normalfall vom EV3 Roboter mit einer Spannung von 4.4 V, dies ist einheitlich und wird vom EV3 nicht variiert. Der Microkontroller und das Gyroskop selbst im Sensor benötigen eine Eingangsspannung von 3.3 V. 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 12 V wandeln kann. So ist es möglich, den Sensor mit der Spannung des USB Ports des Computers zu versorgen, welche 5 V beträgt.


Datenblätter zum Spannungswandler sind im SVN Ordner für eine detailliertere Einsichtsmöglichkeit abgelegt.
Datenblätter zum Spannungswandler sind im SVN Ordner für eine detailliertere Einsichtsmöglichkeit abgelegt.
Zeile 91: Zeile 129:
<br/>
<br/>


=== Gyroskop ===
=== [http://193.175.248.52/wiki/images/e/e8/Gyro_Block_Diagramm.PNG Gyroskop] ===


[[Bild:Gyro Block Diagramm.PNG|thumb|500px|right|Abb. 8: Block Diagramm Gyroskop]]
[[Bild:Gyro Block Diagramm.PNG|thumb|500px|right|[http://193.175.248.52/wiki/images/e/e8/Gyro_Block_Diagramm.PNG 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. Bei Gyroskopen ist es ein häufiges Problem das die Messung mit einem Drift des Messwerte behaftet sind. Diese Störung muss heraus gerechnet werden, möglich ist dies z.B. mit der Koppelung eines Beschleunigungssensor. Beide Sensordaten können so z.B. in einem Kalmanfilter fusioniert werden und die Störung herausgerechnet. Dieses Verfahren ist je nach Umsetzung rechenaufwenig, was einen Grund für den Verzicht dieses Verfahrens im Fall dieses Gyrosensors darstellen könnte.
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 und die Störung herausgerechnet werden. 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 Prüfmassen des Kreisels 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 wird. Das resultierende Signal wird verstärkt, demoduliert und gefiltert, um eine analoge Spannung zu erzeugen, die proportional zur Winkelgeschwindigkeit ist.
Im Fall des ISZ-655-Gyroskops 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 durch die externen Beschleunigungen 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 Vibrationen, 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.  


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 den Gyro Sensor vor elektromagnetischen Störungen sowie Funkstörungen (EMI / RFI). Durch ein zwei-Massen-Design weist die Messung jene Signale zurück, welche durch lineare Beschleunigung verursacht werden. 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.
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.


Um 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 Temperatur Sensor (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 durch Messen der Kapazitätsänderung zwischen der mechanischen Struktur und den festen Elektroden detektiert. 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.
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 Gyro Sensor um ein sogenanntes MEMS Gyroskop, diese weisen einen hohen Drift über der Zeit aus. Dieser kann bis zu 20º / Stunde 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.  
Wie bereits erwähnt handelt es sich im Fall des Gyroskops im Lego Gyrosensor um ein sogenanntes MEMS 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, dass die Signale keinen Drift aufweisen, wird davon ausgegangen, dass 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º / Sekunde) und einen zweiten Ausgang, der für langsamere Bewegungen (über einen vollen Skalenbereich von ± 440º / Sekunde) 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.
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 ===
=== [http://193.175.248.52/wiki/images/c/cb/MCU_Block.PNG Microkontroller] ===


[[Bild:MCU Block.PNG|thumb|500px|right|Abb. 9: Aufbau des Microkontroller]]
[[Bild:MCU Block.PNG|thumb|500px|right|[http://193.175.248.52/wiki/images/c/cb/MCU_Block.PNG Abb. 9: Aufbau des Microkontroller]]]


Wie bereits erwähnt handelt es sich beim Gyro Sensor 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 8 bit Microkontroller welcher mit einem Takt von 16 MHz getaktet ist. Die genauen Spezifikationen sind in der Tabelle 2 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 Abbildung 9 zu sehen.   
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 8 bit Microkontroller, welcher mit einem Takt von 16 MHz 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.   




Zeile 119: Zeile 157:
|+ Tab. 1: Spezfikationen des Microkontrollers
|+ Tab. 1: Spezfikationen des Microkontrollers
|-align="middle
|-align="middle
! Einheit !! Merkmal !! 
! Einheit !! Merkmal  
|-   
|-   
| Core                || 16 Mhz advanced STM8 core mit Harvard Architektur
| Core                || 16 Mhz advanced STM8 core mit Harvard Architektur
|-  
|-  
| Speicher            
| ADU                || 10 bit, 14 Taktzyklen (sukzessive Approximation)
|-
| Speicher           ||
|-
|-
| Programm Speicher  || 8 Kbyte Flash
| Programm Speicher  || 8 Kbyte Flash
Zeile 131: Zeile 171:
| Spannungsversorgung || 2.95 V - 5.5 V
| Spannungsversorgung || 2.95 V - 5.5 V
|-
|-
| Kommunikation
| Kommunikation       ||
|-
|-
| UART                || SmartCard, IrDA, LIN master mode
| UART                || SmartCard, IrDA, LIN master mode
Zeile 147: Zeile 187:
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
=== Analog-Digital-Wandler ===
[[Bild:Ad-wandler.png|thumb|400px|right|Abb. 10: Digital zu Analog Wandlung]]
Um das Gyroskop, welches ein analoges Signal ausgibt, einlesen zu können, bedarf es einem Analog-Digital-Wandler.
Dieser wird dazu verwendet das kontinuierliche Eingangssignal in einzelne diskrete Abtastwerte digital aufzulösen. Hierbei ist eine Quantisierung 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 Abtastrate. 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. <ref name="Elektronische Meßtechnik"> "Heyne (1999): Elektronische Meßtechnik; Oldenbourg Wissenschaftsverlag" </ref>
Diese Aufgabe wird von dem im Sensor verbauten 8 bit Microkontroller übernommen, dieser wandelt das erhaltende Analog-Signal in einen digitalen Wert. Aufgelöst wird das analoge Signal in ein 10 bit digitales Signal. Die benötigte Zeit für eine Wandlung beträgt 14 Taktzyklen. Seine Aufgabe ist es eine analoge Eingangsspannung durch sukzessive Approximation in einen 10 bit 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 sukzessive Approximationsverfahren, wird für die Umsetzung des Analog-Signals 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-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 verglichen. Nach dem ersten Vergleich im Komparator wird die Referenzspannung in einem größeren Digitalschritt an die Spannung des Analog-Signals 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. <ref name="Elektronische Meßtechnik"> "Heyne (1999): Elektronische Meßtechnik; Oldenbourg Wissenschaftsverlag" </ref>
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). <ref name="Elektronische Meßtechnik"> "Heyne (1999): Elektronische Meßtechnik; Oldenbourg Wissenschaftsverlag" </ref>
Die Bildliche Abfolge einer Analog-Signal zu Digital-Signal Wandlung ist in den Abb. 11 bis 14 zu sehen.
[[Bild:AD_Wandlung_3.PNG|thumb|390px|right|Abb. 14: Gewandeltes und geglättetes digitales Signal (rot) im Vergleich zu dem analog Signal (blau)]]
<div class="tright" style="clear:none">[[Datei:AD_Wandlung_2.PNG|330px|mini|Abb. 13: Gewandeltes digitales Signal]]</div>
<div class="tright" style="clear:none">[[Datei:AD_Wandlung_1.PNG|450px|mini|Abb. 12: Endliche Abtastung des analogen Signals]]</div>
<div class="tright" style="clear:none">[[Datei:AD_Wandelung_0.PNG|310px|mini|Abb. 11: Analoges Signal]]</div>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
=== Analog-Digital-Wandler und Alternativen ===
Der Vorteil der sukzessiven Approximation liegt darin, dass ein beispielsweise geringer Implementationsaufwand besteht, dazu eine schnelle Wandlungszeit innerhalb von Mikrosekunden erreicht wird. Die Genauigkeit hingegen liegt je nach Abhängigkeit der Stabilität der Referenzspannung auf einem hohen bis mittleren Niveau.
Um eine höhere Genauigkeit zu erreichen, bei einem ebenfalls geringen Implementierungsaufwand, wäre es eine Option einen ADC mit einem Dual-Slope Verfahren einzusetzen, mit dem Nachteil das in diesem Fall die Wandlungszeiten höher ausfallen würden.
=== 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. <ref name="Lego EV3 Gyro Sensor"> "Lego EV3 Gyro Sensor" von Lego.com [https://www.lego.com/r/www/r/mindstorms/-/media/franchises/mindstorms%202014/downloads/firmware%20and%20software/advanced/lego%20mindstorms%20ev3%20hardware%20developer%20kit.zip?l.r2=1016700452 ]</ref>
Die UART Kommunikation ist eine asynchrone Kommunikation und unterstützt 2400 bit/s bis zu 460 Kbit/s an den Ports eins und zwei, die Ports drei und vier unterscheiden sich hiervon, sie bieten bis zu 230 Kbit/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. <ref name="Lego EV3 Gyro Sensor"> "Lego EV3 Gyro Sensor" von Lego.com [https://www.lego.com/r/www/r/mindstorms/-/media/franchises/mindstorms%202014/downloads/firmware%20and%20software/advanced/lego%20mindstorms%20ev3%20hardware%20developer%20kit.zip?l.r2=1016700452 ]</ref>
==== 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. <ref name="Lego EV3 Gyro Sensor"> "Lego EV3 Gyro Sensor" von Lego.com [https://www.lego.com/r/www/r/mindstorms/-/media/franchises/mindstorms%202014/downloads/firmware%20and%20software/advanced/lego%20mindstorms%20ev3%20hardware%20developer%20kit.zip?l.r2=1016700452 ]</ref>
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 4800 mV, (AD Messung) <br>
** 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 150 mV, (AD Messung)
Um eine sichere Erkennung der angeschlossenen externen Elemente zu ermöglichen, muss dieser Zustand der Pins mindestens für 350 ms 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.
{| class="wikitable"
|+ Tab. 2: Auto ID Pin Level
|-align="middle
! Sensor !! Pin Level
|- 
| LEGO MINDSTORMS EV3 Digital Sensor || Pin zwei ist high, Pin eins besitzt weniger Spannung als 100 mV
|-
|}
==== Sensor Kommunikation ====


=== Analog digital Wandler ===
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.


[[Bild:Ad-wandler.png|thumb|300px|right|Abb. 4: Digital zu Analog Wandlung]]
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 1 ms 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. <ref name="Lego EV3 Gyro Sensor"> "Lego EV3 Gyro Sensor" von Lego.com [https://www.lego.com/r/www/r/mindstorms/-/media/franchises/mindstorms%202014/downloads/firmware%20and%20software/advanced/lego%20mindstorms%20ev3%20hardware%20developer%20kit.zip?l.r2=1016700452 ]</ref>


Um das Gyroskop welches ein analoges Signal ausgibt einlesen zu können, bedarf es einem analog zu digital Wandler.
Konfigurationsdaten umfassen:
* Der UART Tx-Pin wird für mindestens 500 ms auf low gesetzt.
* Sensortyp (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 10 ms 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. <ref name="Lego EV3 Gyro Sensor"> "Lego EV3 Gyro Sensor" von Lego.com [https://www.lego.com/r/www/r/mindstorms/-/media/franchises/mindstorms%202014/downloads/firmware%20and%20software/advanced/lego%20mindstorms%20ev3%20hardware%20developer%20kit.zip?l.r2=1016700452 ]</ref>


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. 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 das 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.
= [http://193.175.248.52/wiki/images/5/5c/Connect_Box_mit_Sensor.jpg EV3 Connect Box] =


Diese Aufgabe wird von dem im Sensor verbauten 8 Bit Microkontroller übernommen, dieser wandelt das erhaltende analog Signal in einen digitalen Wert. Aufgelöst wird das analoge Signal in ein 10 Bit 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 10 bit 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 ein 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 Gyroskop, für die Wandlung in ein Digitalsignal benutzt. 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.  
Für die Auslesung des Lego EV3 Gyroskops 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 in einem hohen Preis resultiert, 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, dass 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 Informationen 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.  


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 0 gesetzt, im anderen Fall auf 1. Anschließend wird die Referenzspannung halbiert und erneut für einen Vergleich angelegt. Der nachfolgede Vergleich zwischen beiden Spannungen für das nächste Bit zeigt, dass die Referenzspannung geringer ist als die Eingangsspannung. Hierraus resultiert dass, das folgende Bit wird auf 1 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).
=== Kommunikation mit der EV3 Connect Box ===


=== Kommunikation ===
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.


Aus dem Grund das es sich beim EV3 Gyro Sensor um einen digitalen Sensor handelt und diese 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 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. 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.
{| class="wikitable"
|+ Tab. 3: Kommunikationsbefehle mit der EV3 Connect Box
|-align="middle
! 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
|-
|}


= Arduino =
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.


[[Datei:Nano bearbeitet.PNG|400px|mini|right|Arduino Nano auf einem Steckbrett]]
=== [https://store.arduino.cc/usa/arduino-nano Arduino der EV3 Connect Box] ===


Beim Arduino wurde sich für den Arduino Nano entschieden. 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 8 analoge Eingänge sind, zur Verfügung. Die Spannungsversorgung für den Arduino wird durch das USB Kabel umgesetzt, der Gyro Sensor bezieht einen Teil davon für die eigene Versorgung.  
Beim verwendeten Arduino wurde sich für den [https://store.arduino.cc/usa/arduino-nano 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.


<br/>
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.


[[Datei:ConnectBox oben.jpg|700px|mini|right|Abb 16: Arduino Nano verbaut in der EV3 Connect Box]]
{| class="wikitable"
{| class="wikitable"
|+ Tab. 2: Spezfikationen des Arduino Nano
|+ Tab. 4: Spezifikationen des Arduino Nano
|-align="middle
|-align="middle
! Einheit !! Merkmal !! 
! Einheit !! Merkmal  
|-   
|-   
| Core                || 16 Mhz ATmega328
| Core                || 16 Mhz ATmega328
Zeile 191: Zeile 353:
| SRAM                ||  2 KB
| SRAM                ||  2 KB
|-
|-
| EEPROM              ||  1KB
| EEPROM              ||  1 KB
|-
|-
| Spannungen
| Spannungen
Zeile 210: Zeile 372:
|}
|}


= Verbindung der Komponenten =
=== [http://193.175.248.52/wiki/images/f/f3/Connect_Box_Verbinden.jpg Verbindung der EV3 Connect Box] ===


Bei der ausgewählten Variante musste einmal der PC mit dem Arduino und der Arduino mit dem EV3 Gyroskop verbunden werden.
[[Datei:Anschluss ConnectBox.jpg|600px|mini|right|[http://193.175.248.52/wiki/images/4/4d/Anschluss_ConnectBox.jpg 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.
<br/>
<br/>
Die Verbindung von Arduino 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.
Die Verbindung von Connect Box und PC wurde über die serielle Schnittstelle des Arduino umgesetzt. Hierzu kann das [https://www.reichelt.de/?ARTICLE=180139&PROVID=2788&gclid=CjwKCAjwmufZBRBJEiwAPJ3Lpi7V1vFz0fB47R8oVm107EYIUul68mpKA0_taehOHuxsSD0b1YHMexoCOzkQAvD_BwE 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.
 
<br/>
<br/>
Bei der Verbindung vom EV3 Gyroskop und dem Arduino gab es keine Möglichkeit eines verstecken. Buchsen Anschlüsse für den von Lego verwendeten Stecker sind nur sehr schwer erhältlich, so wurde sich gegen eine Buchse entschieden. Es wurde das Kabel was für die Verbindung von EV3 Gyroskop und EV3 verwendet wird durchgeschnitten, um so an die einzelnen Adern im Kabel direkt zu gelangen. Die Verkabelung wurde nach der Tabelle 1 vorgenommen. Am Arduino können beliebige Pins verwendet werden, sie müssen nur Serielle Kommunikation unterstützen.  
Bei der Verbindung vom EV3 Gyroskop und der Connect Box gab es die Möglichkeit eines Versteckens. Es wurde eine baugleiche [http://www.mindsensors.com/ev3-and-nxt/58-breadboard-connector-kit-for-nxt-or-ev3 Buchse] verwendet, wie sie an einem Lego EV3 Baustein verwendet wird, hierdurch können Sensoren mit den Original-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.  
<br/>
<br/>


{| class="wikitable"
{| class="wikitable"
|+ Tab. 3: Belegung der Kabelverbindungen
|+ Tab. 5: Belegung der Kabelverbindungen
|-align="middle
|-align="middle
! Ader im EV3 Kabel !! Belegung im Sensor !! Anschluss an Arduino   
! Ader im EV3 Kabel !! Belegung im Sensor !! Anschluss an Arduino   
Zeile 232: Zeile 394:
| Pin3 Rot          || GND                || GND
| Pin3 Rot          || GND                || GND
|-
|-
| Pin4 Grün          || Vin                || 5V
| Pin4 Grün          || Vin                || 5 V
|-
|-
| Pin5 Gelb          || RX                  ||
| Pin5 Gelb          || RX                  || 14
|-
|-
| Pin6 Blau          || TX                  ||
| Pin6 Blau          || TX                  || 15
|}
|}


= Matlab-Software =
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
 
= [http://193.175.248.52/wiki/images/b/b9/EV3_Connect_Box_GUI_only.PNG EV3 Connect Box-Anwendung] =
 
[[Datei:EV3 Connect Box GUI only.PNG|600px|mini|right|Abb 18: EV3 Connect Box PC Anwendung]]
[[Datei:EV3 Connect Box GUI.PNG|1650px|mini|right|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 [https://de.mathworks.com/discovery/matlab-gui.html 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 weiteres 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, dass 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.
<br/>
 
Die grafische Oberfläche ist in der Abb. 18 zusehen. Im Abschnitt des „Serial Ports“ kann im drop down Menü der [https://msdn.microsoft.com/en-us/library/windows/hardware/ff546485(v=vs.85).aspx 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. Das Auslesen 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.     
 
Die Softwareentwicklung wurde mit [https://de.mathworks.com/products/new_products/release2017a.html Matlab R2017a] und [https://www.arduino.cc/en/main/software Arduino CC 1.8.5] durchgeführt.
 
 
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>


== Matlab GUI ==


== Datenverarbeitung ==
== Datenverarbeitung ==


= Datenauswertung =
Im Fall des EV3 Gyroskop ist keine weitere Datenverarbeitung nötig, wie im Kapitel „Lego EV3 Gyrosensor" 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. Die Auflösung des Sensors beträgt 1 °, die Empfindlichkeit 0,5 °. 
 
=== 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.
 
=== Temperatureinflüsse ===
 
Wie in vorherigen Kapiteln erklärt, können durch Temperaturveränderungen Abweichungen in einer Messung entstehen. Dies wurde mit Hilfe eines Kühlschranks überprüft, das EV3 Gyroskop wurde dazu von einer Zimmertemperatur von 23 °C in einen Kühlschrank gelegt, in welchem eine Temperatur von 6 °C vorlag. Die Messung wurde mit dem noch auf 23 °C erwärmten Gyroskop begonnen und für drei Stunden durchgeführt. Eine Abweichung nach dieser Zeit konnte nicht festgestellt werden. Erklären lässt sich dies durch die interne Temperaturmessung im Gyroskop, hierrüber wird die Abweichung herausgerechnet.
 
=== [http://193.175.248.52/wiki/images/7/74/MessungenF.jpg 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 Skala beträgt 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.
 
 
[[Bild:MessungenF.jpg|thumb|700px|right|Abb. 20: Messaufbau für die Winkelüberprüfung]]
{| class="wikitable"
|+ Tab. 6:
! colspan="1" style="font-weight:bold;" | Wahrer Wert
! colspan="2" style="font-weight:bold;" | Absolute Abweichung
! colspan="2" style="font-weight:bold;" | Relative Abweichung in %
! style="font-weight:bold;" | Arithmetisches Mittel
! style="font-weight:bold;" | Standardabweichung
! style="font-weight:bold;" | Messunsicherheit
! style="font-weight:bold;" | Vertrauensintervall
|-
| style="font-weight:bold;" | Soll Winkel
| style="font-weight:bold;" | Min.
| style="font-weight:bold;" | Max
| style="font-weight:bold;" | Min
| style="font-weight:bold;" | Max
| style="font-weight:bold;" |
| style="font-weight:bold;" |
| style="font-weight:bold;" |
|-
|  5 °
|  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 °
|}
 
==== Berechnung der Werte ====
 
Die in der Tab. 6 eingetragenen Werte wurden nach den Formeln, wie sie in der begleitenden Vorlesung Signalverarbeitende System, gelehrt wurden berechnet. Demnach ergeben sich die folgenden Formeln. <br/><br/>
'''Mittelwert'''<br/>
Der Mittelwert <math>{\bar {x}}</math>, stellt den im mittel vom Sensor bestimmten Messwert dar. Er ist damit eine Schätzung des Erwartungswertes bei einem Stichumfang von n. Der Stichprobenumfang ist die Anzahl der durchgeführten Messungen. <br/><br/>
 
<math>\bar x=\frac{1}{n}\cdot\sum_{i=1}^n x_i</math><br/><br/>
 
'''Standardabweichung'''<br/>
Die Standardabweichung macht eine Aussage über die Streubreite der bestimmten Messwerte um dessen Mittelwert<br/><br/>
 
<math>s = \sqrt{\frac{1}{n-1}\cdot\sum_{i=1}^n (x_i - \bar x)^2} </math><br/><br/>
 
'''Vertrauensbereich für den Erwartungswert'''<br/>
In der folgenden Formel steht t für einen Vertrauensfaktor der Student-t-Verteilung. Dieser kann Tabellen entnommen werden und hängt im Wesentlichen von der Anzahl der Messungen und den gewählten Vertrauensniveaus ab.<br/><br/>
 
<math>u_A = \bar x \pm \frac{t\cdot(n-1)}{\sqrt n}\cdot s </math>
 
= [https://youtu.be/NEZiz4j8CWM YouTube Video] =
 
Über das fertiggestellte Projekt wurde ein YouTube Video erstellt. In diesem wird der Umgang mit der Connect Box und der Connect Box-Anwendung vorgeführt, ebenso werden die Messwerte des Gyroskops in Echtzeit ausgelesen.
 
[https://youtu.be/NEZiz4j8CWM EV3 Gyroskop mit Matlab]
 
= 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 hergestellt werden und eine tiefe Einarbeitung in das verwendete Kommunikationsprotokoll des EV3 Roboter.
 
=== Mögliche Weiterführung in der Zukunft ===
In weiteren Semestern könnten die noch ausstehenden EV3 Sensoren in die Software hinzugefügt werden. Auf diese Weise würde sich eine universelle Auslesemöglichkeit für EV3 Sensoren durch Matlab realisieren lassen.
 
 
= Einzelnachweise =
<references />

Aktuelle Version vom 6. Juli 2018, 22:55 Uhr

Autor: Philipp Tewes

Betreuer: Prof. Dr.-Ing. Ulrich Schneider

Sensor: EV3-Gyrosensor-45505

Lehrveranstaltung: Signalverarbeitende Systeme im Sommersemester 2018

YouTube Video:


Einleitung

Für die Lehrveranstaltung Signalverarbeitende Systeme des Studiengangs „Business and Systems Engineering“ im SoSe 2018 war es die Aufgabeeinen 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 mit einem 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 auswerten kann.

Keine Zeit zu Suchen!? -> Kurzwahl

  1. Auswahl eines Primärsensors
    1. Wie funktioniert der Sensor?
    2. Welche Rohsignale liefert der Sensor?
  2. Signalvorverarbeitung
    1. Sollen Messwerte oder vorverarbeitete Daten übertragen werden?
    2. Wie lässt sich eine Vorverarbeitung umsetzen?
    3. Wird eine Kennlinie eingesetzt? Wenn ja, wie wird diese kalibriert?
  3. Analog-Digital-Umsetzer
    1. Wie werden die analogen Signale umgesetzt?
    2. Welcher ADU kommt zum Einsatz?
    3. Welche Gründe sprechen für diesen ADU? Alternativen?
  4. Bussystem
    1. Wird ein Bussystem zwischen Sensor und Mikrocontroller eingesetzt?
    2. Wenn ja, wie funktioniert dieses Bussystem?
  5. Digitale Signalverarbeitung
    1. Welche Verarbeitungsschritte sind notwendig?
    2. Welche Filter werden angewendet?
    3. Bestimmen Sie Auflösung, Empfindlichkeit und Messunsicherheit des Sensors.
  6. Darstellung der Ergebnisse
    1. Welche Fehler treten in welchem Verarbeitungsschritt auf?
    2. Stellen Sie die Messunsicherheit bzw. das Vertrauensintervall dar.
  7. EV3 Connect Box
    1. Was ist eine EV3 Connect Box?
    2. Wie greife ich auf eine EV3 Connect Box zu?
  8. Funktioniert das Projekt überhaupt?

Projektplanung

Um eine fristgerechte Fertigstellung des Projektes sicherstellen zu können, wurde zu Beginn ein Projektplan angelegt. Durch diesen war es möglich einen Überblick über die Teilprozesse zu behalten und im Zeitrahmen zu bleiben.

Lego Mindstorms

Abb. 3: Lego RCX

Der Lego Mindstorms EV3 Roboter ist der dritte Roboter, welcher von Lego entwickelt wurde. Die Erstentwicklung war der RCX, welcher im Jahr 1998 erschienen ist. Die RCX Variante ist den neueren Entwicklungen bezüglich der Leistungsfähigkeit 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 Gyrosensor

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. Die versendeten Messwerte wurden bereits intern verarbeitet, Störungen werden intern im Sensor eliminiert.

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 einen 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 somit 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 (Micro-Electro-Mechanical Systems) 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, dass 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 16 kHz bis zu 32 kHz. Ü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: Einem Spannungswandler, einem 8bit Microkontroller und dem eigentlichen Gyroskop (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. Alle Datenblätter zu den in den folgenden Abschnitten behandelten Einheiten des Gyrosensors sind im SVN Ordner hinterlegt. [4]

Spannungswandler

Versorgt wird der Gyrosensor im Normalfall vom EV3 Roboter mit einer Spannung von 4.4 V, dies ist einheitlich und wird vom EV3 nicht variiert. Der Microkontroller und das Gyroskop selbst im Sensor benötigen eine Eingangsspannung von 3.3 V. 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 12 V wandeln kann. So ist es möglich, den Sensor mit der Spannung des USB Ports des Computers zu versorgen, welche 5 V 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 und die Störung herausgerechnet werden. 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-Gyroskops 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 durch die externen Beschleunigungen 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 Vibrationen, 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 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, dass die Signale keinen Drift aufweisen, wird davon ausgegangen, dass 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 8 bit Microkontroller, welcher mit einem Takt von 16 MHz 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 16 Mhz advanced STM8 core mit Harvard Architektur
ADU 10 bit, 14 Taktzyklen (sukzessive Approximation)
Speicher
Programm Speicher 8 Kbyte Flash
Data Speicher 640 byte EEPROM
Spannungsversorgung 2.95 V - 5.5 V
Kommunikation
UART SmartCard, IrDA, LIN master mode
SPI 8 Mbit/s
I2C 400 kbit/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-Digital-Wandler.

Dieser wird dazu verwendet das kontinuierliche Eingangssignal in einzelne diskrete Abtastwerte digital aufzulösen. Hierbei ist eine Quantisierung 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 Abtastrate. 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 8 bit Microkontroller übernommen, dieser wandelt das erhaltende Analog-Signal in einen digitalen Wert. Aufgelöst wird das analoge Signal in ein 10 bit digitales Signal. Die benötigte Zeit für eine Wandlung beträgt 14 Taktzyklen. Seine Aufgabe ist es eine analoge Eingangsspannung durch sukzessive Approximation in einen 10 bit 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 sukzessive Approximationsverfahren, wird für die Umsetzung des Analog-Signals 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-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 verglichen. Nach dem ersten Vergleich im Komparator wird die Referenzspannung in einem größeren Digitalschritt an die Spannung des Analog-Signals 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 Analog-Signal zu Digital-Signal 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













Analog-Digital-Wandler und Alternativen

Der Vorteil der sukzessiven Approximation liegt darin, dass ein beispielsweise geringer Implementationsaufwand besteht, dazu eine schnelle Wandlungszeit innerhalb von Mikrosekunden erreicht wird. Die Genauigkeit hingegen liegt je nach Abhängigkeit der Stabilität der Referenzspannung auf einem hohen bis mittleren Niveau.

Um eine höhere Genauigkeit zu erreichen, bei einem ebenfalls geringen Implementierungsaufwand, wäre es eine Option einen ADC mit einem Dual-Slope Verfahren einzusetzen, mit dem Nachteil das in diesem Fall die Wandlungszeiten höher ausfallen würden.

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 2400 bit/s bis zu 460 Kbit/s an den Ports eins und zwei, die Ports drei und vier unterscheiden sich hiervon, sie bieten bis zu 230 Kbit/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 4800 mV, (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 150 mV, (AD Messung)

Um eine sichere Erkennung der angeschlossenen externen Elemente zu ermöglichen, muss dieser Zustand der Pins mindestens für 350 ms 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 100 mV

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 1 ms 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 500 ms auf low gesetzt.
  • Sensortyp (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 10 ms 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 Gyroskops 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 in einem hohen Preis resultiert, 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, dass 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 Informationen 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 16 Mhz ATmega328
Speicher
Flash-Speicher 32 KB
SRAM 2 KB
EEPROM 1 KB
Spannungen
Betriebsspannung 5 V
Empfohlene Eingangsspannung 7 V - 12 V
Maximale Eingangsspannung 20 V
Kommunikation
UART Ja
I2C Ja
I/O-Pins 14, davon 6 PWM und 8 analoge Eingänge

Verbindung 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 Versteckens. Es wurde eine baugleiche Buchse verwendet, wie sie an einem Lego EV3 Baustein verwendet wird, hierdurch können Sensoren mit den Original-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 5 V
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 weiteres 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, dass 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. Das Auslesen 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.

Die Softwareentwicklung wurde mit Matlab R2017a und Arduino CC 1.8.5 durchgeführt.










































Datenverarbeitung

Im Fall des EV3 Gyroskop ist keine weitere Datenverarbeitung nötig, wie im Kapitel „Lego EV3 Gyrosensor" 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. Die Auflösung des Sensors beträgt 1 °, die Empfindlichkeit 0,5 °.

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.

Temperatureinflüsse

Wie in vorherigen Kapiteln erklärt, können durch Temperaturveränderungen Abweichungen in einer Messung entstehen. Dies wurde mit Hilfe eines Kühlschranks überprüft, das EV3 Gyroskop wurde dazu von einer Zimmertemperatur von 23 °C in einen Kühlschrank gelegt, in welchem eine Temperatur von 6 °C vorlag. Die Messung wurde mit dem noch auf 23 °C erwärmten Gyroskop begonnen und für drei Stunden durchgeführt. Eine Abweichung nach dieser Zeit konnte nicht festgestellt werden. Erklären lässt sich dies durch die interne Temperaturmessung im Gyroskop, hierrüber wird die Abweichung herausgerechnet.

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 Skala beträgt 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
5 ° 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 °

Berechnung der Werte

Die in der Tab. 6 eingetragenen Werte wurden nach den Formeln, wie sie in der begleitenden Vorlesung Signalverarbeitende System, gelehrt wurden berechnet. Demnach ergeben sich die folgenden Formeln.

Mittelwert
Der Mittelwert , stellt den im mittel vom Sensor bestimmten Messwert dar. Er ist damit eine Schätzung des Erwartungswertes bei einem Stichumfang von n. Der Stichprobenumfang ist die Anzahl der durchgeführten Messungen.



Standardabweichung
Die Standardabweichung macht eine Aussage über die Streubreite der bestimmten Messwerte um dessen Mittelwert



Vertrauensbereich für den Erwartungswert
In der folgenden Formel steht t für einen Vertrauensfaktor der Student-t-Verteilung. Dieser kann Tabellen entnommen werden und hängt im Wesentlichen von der Anzahl der Messungen und den gewählten Vertrauensniveaus ab.

YouTube Video

Über das fertiggestellte Projekt wurde ein YouTube Video erstellt. In diesem wird der Umgang mit der Connect Box und der Connect Box-Anwendung vorgeführt, ebenso werden die Messwerte des Gyroskops in Echtzeit ausgelesen.

EV3 Gyroskop mit Matlab

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 hergestellt werden und eine tiefe Einarbeitung in das verwendete Kommunikationsprotokoll des EV3 Roboter.

Mögliche Weiterführung in der Zukunft

In weiteren Semestern könnten die noch ausstehenden EV3 Sensoren in die Software hinzugefügt werden. Auf diese Weise würde sich eine universelle Auslesemöglichkeit für EV3 Sensoren durch Matlab realisieren lassen.


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"