Gyroskop mit Matlab/Simulink
Autor: Philipp Tewes
Betreuer: Prof. Dr.-Ing. Ulrich Schneider
Sensor: EV3-Gyrosensor-45505
Für die Lehrveranstaltung Signalverarbeitende Systeme des Studiengangs Business and Systems Engineering im SoSe 2018 war es die Aufgabe einen 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.
Lego Mindstorms
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).
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.
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.
Lego EV3 Gyro-Sensor
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.
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.
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.
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.
Historisch
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.
Modern
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.
Aufbau
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.
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.
Datenblätter zum Spannungswandler sind im SVN Ordner für eine detailliertere Einsichtsmöglichkeit abgelegt.
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.
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.
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 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.
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.
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.
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.
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.
Einheit | Merkmal | |
---|---|---|
Core | 16 Mhz advanced STM8 core mit Harvard Architektur | |
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
Um das Gyroskop welches ein analoges Signal ausgibt einlesen zu können, bedarf es einem analog zu digital Wandler.
Dieser wird dazu verwendet das kontinuierliche Eingangssignal in einzelne diskrete Abtastwerte digital aufzulösen. Hierbei ist eine Qantiesirung nötig, denn stehen in jedem Fall nur endliche Ausgangswerte zur verfügung (Abb. 10). Das Ergebnis einer A/D Wandlung lässt sich in einem Signal Zeit Diagramm in einer Punktabfolge mit endlichen horizontalen und vertikalen Abständen Zeichnen. Die Hauptparameter eines A/D Wandlers sind die Bittiefe und seine maximale Abtastrate bei dieser. Die Umsetzzeit sollte wesentlich kleiner als 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.
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.
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).
Die Bildliche abfolge einer analog Signal zu digital Signal Wandlung ist in den Abbildungen 11 bis 14 zu sehen.
Kommunikation
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.
Die UART Kommunikation ist eine asynchrone Kommunikation und unterstützt 2400 Bit/s bis zu 460 Kbit/s an den Ports 1 und 2, die Ports 3 und 4 unterscheiden sich hiervon, sie beiten bis zu 230 Kbit/s. Um zu Kommunizieren werden 1 Startbit, 8 Datenbits, kein parity bit und 1 Stoppbit verwendet. Um eine UART Kommunikation mit dem EV3 herstellen zu können, müssen die bestimmten Kommunikationssequenzen befolgt werden.
Sensor Identifikation
Die 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 welcher Pin 1, 2, 5 und 6 in einer speziellen Sequenz gesetzt werden, um zu identifizieren, welches externe Element angeschlossen ist.
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 1 ist größer als 4800mV, (AD Messung)
- Pegel an Pin 2 ist high, (Digital I/O Messung)
- Pegel an Pin 5 ist high, (Digital I/O Messung)
- Pegel an Pin 6 ist low, (Digital I/O Messung)
- Wert an Pin 6 ist kleiner als 150 mV, (AD Messung)
- Wert an Pin 1 ist größer als 4800mV, (AD Messung)
Um eine sichere Erkennung der angeschlossenen externen Elemente zu ermöglichen, muss dieser Zusatnd der Pins mindestens für 350mS vorliegen. Die aktuelle Version der Firmware kann folgende Elemente erkennen:
- MINDSTORMS EV3 Berührungssensor
- MINDSTORMS EV3 Temperatursensor
- MINDSTORMS EV3 digitale Sensoren
- MINDSTORMS EV3 Farbsensor
- MINDSTORMS EV3 Gyrosensor
- MINDSTORMS EV3 Ultraschallsensor
- MINDSTORMS EV3 IR-Sensor
Neben den Sensoren die für den EV3 entwickelt wurden, sind auch die folgenden NXT Sensoren kompatiebel:
- 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 Tabelle 2 aufgeführt sind. Der Gyro Sensor des EV3 ist ein digitaler Sensor, alle digitalen Sensoren melden sich identisch an.
Sensor | Pin Level | |
---|---|---|
LEGO MINDSTORMS EV3 Digital Sensor | Pin 2 ist high, Pin 1 besitzt weniger Spannung als 100 mV |
Sensor Kommunikation
Arduino
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.
Einheit | Merkmal | |
---|---|---|
Core | 16 Mhz ATmega328 | |
Speicher | ||
Flash-Speicher | 32 KB | |
SRAM | 2 KB | |
EEPROM | 1KB | |
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 Komponenten
Bei der ausgewählten Variante musste einmal der PC mit dem Arduino und der Arduino mit dem EV3 Gyroskop verbunden werden.
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.
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.
Ader im EV3 Kabel | Belegung im Sensor | Anschluss an Arduino |
---|---|---|
Pin1 Weiß | GND | GND |
Pin2 Schwarz | Nicht angeschlossen | Nicht angeschlossen |
Pin3 Rot | GND | GND |
Pin4 Grün | Vin | 5V |
Pin5 Gelb | RX | |
Pin6 Blau | TX |