|
|
Zeile 12: |
Zeile 12: |
| [http://193.175.248.52/wiki/index.php/Spezial:Letzte_%C3%84nderungenhttps://youtu.be/NEZiz4j8CWM ''' YouTube Video:'''] | | [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 =
| |
| [[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|[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|[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 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. 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 [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.
| |
|
| |
| = [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 °/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 [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.
| |
|
| |
| 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/>
| |
|
| |
| == 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 ===
| |
|
| |
|
| |
| [[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 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/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
|
| |
| === Modern ===
| |
|
| |
| [[Bild:Gyroskop_Prinzip.png|thumb|270px|right|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 [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/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
|
| |
| == [http://193.175.248.52/wiki/images/e/e2/Sensor_Schaltplan.JPG Aufbau] ==
| |
|
| |
| [[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 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 ===
| |
|
| |
| 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.
| |
|
| |
|
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
|
| |
| === [http://193.175.248.52/wiki/images/e/e8/Gyro_Block_Diagramm.PNG 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 (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.
| |
|
| |
| === [http://193.175.248.52/wiki/images/c/cb/MCU_Block.PNG 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 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.
| |
|
| |
|
| |
| {| class="wikitable"
| |
| |+ Tab. 1: Spezfikationen des Microkontrollers
| |
| |-align="middle
| |
| ! 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
| |
| |}
| |
|
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <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/>
| |
|
| |
| === 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 ====
| |
|
| |
| 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. <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>
| |
|
| |
| 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>
| |
|
| |
| = [http://193.175.248.52/wiki/images/5/5c/Connect_Box_mit_Sensor.jpg 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.
| |
|
| |
| {| 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
| |
| |-
| |
| |}
| |
|
| |
| 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.
| |
|
| |
| === [https://store.arduino.cc/usa/arduino-nano Arduino der EV3 Connect Box] ===
| |
|
| |
| 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.
| |
|
| |
| 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"
| |
| |+ Tab. 4: Spezifikationen des Arduino Nano
| |
| |-align="middle
| |
| ! 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
| |
| |}
| |
|
| |
| === [http://193.175.248.52/wiki/images/f/f3/Connect_Box_Verbinden.jpg Verbindung der EV3 Connect Box] ===
| |
|
| |
| [[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/>
| |
| 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/>
| |
| 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/>
| |
|
| |
| {| class="wikitable"
| |
| |+ Tab. 5: Belegung der Kabelverbindungen
| |
| |-align="middle
| |
| ! 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
| |
| |}
| |
|
| |
| <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/>
| |
|
| |
|
| |
| == 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 0,1 °, die maximale Winkeländerung beträgt 140 °. Der Sensor wurde fest mit dem Winkel verbunden, ebenfalls wurde der Winkel mit Schraubzwingen mit der Tischplatte fest verbunden. So konnte sichergestellt werden, dass keine Fehler durch Änderung der Position des Winkels erzeugt werden konnten. Insgesamt wurde auf diese Weise vier Messreihen aufgenommen. Die Ergebnisse sind in der Tab. 6 eingetragen. Die von Lego angegebenen Messunsicherheiten wurden sichtlich unterschritten.
| |
|
| |
|
| |
| [[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] = | | = [https://youtu.be/NEZiz4j8CWM YouTube Video] = |