Gyroskop mit Matlab/Simulink

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Autor: Philipp Tewes

Betreuer: Prof. Dr.-Ing. Ulrich Schneider

Sensor: EV3-Gyrosensor-45505

Für die Lehrveranstaltung Signalverarbeitende Systeme des Studiengangs Business and Systems Engineering im SoSe 2018 war es die Aufgabe einen 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 welchen Matlab/Simulink die Sensordaten auswerte kann.


Verkabelung

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 einer versteckung. 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 enzelnen 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.

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

EV3-Gyrosensor-45505

Abb. 1: 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 Gyroskop. 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.



















Microkontroller

Abb. 2: 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 Microkontroller 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 Microkontroller die Kommunikation mit dem EV3 durchzuführen und diesem die Messwerte über die UART Schnittstelle zu senden. Der Aufbau als Blockbild des verwendeten Microkontroller ist in der Abbildung 2 zu sehen.


Tab. 2: Spezfikationen des Microkontroller
Einehit 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. Diese Aufgabe wird von dem im Sensor verbauten 8 Bit Microkontroller übernommen, dieser wandelt das eraltende analog Signal in einen digitalen Wert, welchen er auch gleichzeitig versendet. Aufgelöst wird das analoge Singnal in ein 10 Bit digitales Signal

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 zm 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 Anfraen, selbst stellt dieser keine Abfragen an den EV3. Finden keine Abfragen des EV3 ab, nutzt der Sensor den Microkontoller, und damit die UART Schnittstelle, um selbstständig die Messwerte an den EV3 zu übermitteln. Genauer wird au die Kommunikationsabfolgen im Kapitel !!! eingegangen.

Gyrosensor

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 herraus gerechnet werden, möglich ist dies z.B. mit der kopplung eines Beschleunigungssensor. Beide Sensordaten können so z.B. in einem Kalmanfilter fusioniert werden und die Störung herrausgerechnet. Dieses Verfahren ist je nach umsetzung Rechenaufwenig, was einen Grund für den Verzicht dieses Verfahrens im Fall dieses Gyrosensor darstellen könnte.

Arduino

Kommunikation Gyro Sensor und Arduino

Kommunikation des Gyrosensor

"Implementation" des EV3 auf dem Arduino

Kommunikation Arduino und PC Matlab Software

Kommunikations Implementationauf dem Arduino

Aufbau des Matlab Programms auf dem PC