NXT Lichtsensor mit Matlab/Simulink
Signalverarbeitungskette eines Lego Mindstorms NXT/EV3 Lichtsensor 9844 und auslesen in Matlab Simulink
Autor: Eileen Hinners
Einleitung
Der folgende Artikel befasst sich mit der Inbetriebnahme eines NXT-Lichtsensors und dem Auslesen bzw. Verarbeiten der Daten in Matlab. Entstanden ist der Artikel im Rahmen der Vorlesung Signalverarbeitende Systeme im Sommersemester 2018. Zunächst werden die Grundlagen zur Arbeit mit dem Sensor beschrieben und daraufhin umgesetzt.
Projektplanung
Hier kommt der Teil zur Projektplanung rein.
Auswahl des Primärsensors
Funktionsweise des Sensors
Der Lego Lichtsensor besteht aus einer roten LED mit Vorwiderstand, sowie einem Phototransistor mit Arbeitswiderstand. Der Lichtsensor kann in zwei verschiedenen Betriebsmodi benutzt werden. Im ersten Modus ist die LED ausgeschaltet. Der Phototransistor agiert als Empfänger und nimmt die vom Umgebungslicht reflektierten Strahlen des da-vorstehenden Gegenstandes auf. Je nach Intensität der eingehenden Strahlung, verändert sich die Gleichspannung im Phototransistor. Für den zweiten Betriebsmodus wird die rote LED dazugeschaltet. Die LED ist dabei in die gleiche Richtung ausgerichtet, wie der Phototransistor. Deshalb kann die LED ein Hilfslicht ausstrahlen, das von dem betreffen-den Gegenstand reflektiert wird und auf den Phototransistor trifft. Um betrieben werden zu können bietet der Sensor das NXT Sensor Interface Pinout an. Dieses ist in sechs verschiedene Pins aufgeteilt. [Vgl. Bild]. Der erste Pin (weiß) übernimmt dabei die Funktion der Übertragung des analogen Outputs. Am zweiten (schwarz) und dritten (rot) Pin liegt die Erde an. Über den vierten Pin (grün) wird die Betriebsspannung angelegt. Die Steuerung des Modus lässt sich über den fünften Pin (gelb) des NXT Sensor Interface Pinouts steuern. Um den zweiten Modus zu wählen, wird an dem Pin eine Spannung von 5 V angelegt. Der sechste Pin ist beim Lichtsensor nicht belegt.[1]
Inbetriebnahme des Sensors
Die Inbetriebnahme des Sensors ist über mehrere Varianten möglich. Die erste Variante ist die direkte Messwerterfassung über den EV3. Dabei wird zunächst ohne Computeranbindung eine Messwerterfassung gestartet. Auf dem Display wird der Graph mit den Messwerten in Echtzeit angezeigt. Zusätzlich können der Ist-Wert, die Dauer, Minimum und Maximum, sowie der Durchschnittswert angezeigt werden. Nach Beenden der Erfassung wird eine Messwertdatei auf dem Brick gespeichert, die über die Lego Mindstorms EV3 Education Software geöffnet werden kann. In der EV3-Software wird der Lichtsensor zu den Farbsensoren gezählt und kann über den Farbsensor-Block gesteuert werden. Trotz der unterschiedlichen Versionen ist die Nutzung des NXT-Sensors mit dem neueren EV3 möglich. Da dieses Projekt in Matlab bzw. Simulink umgesetzt werden soll, muss eine Verbindung vom EV3 zu Matlab hergestellt werden. Für Matlab und Simulink ist jeweils ein Add-On verfügbar um den EV3 zu steuern. Nach Herstellen der Verbindung zwischen Matlab und dem Roboter können die verbundenen Sensoren ausgelesen werden. Die Kategorien sind analog zur EV3-Software. Der Lichtsensor wird allerdings nicht als „color“-Sensor, sondern als „NXT-Light“ angezeigt. Für das Auslesen des NXT-Lichtsensors ist keine eigene Funktion vorhanden. Auch ein Verbinden über die Funktion des Farbsensors, wie in der EV3-Software, ist nicht möglich. Für den NXT ist eine ähnliche Toolbox in Matlab verfügbar, die auch eine Funktion zum Aufrufen des NXT-Lichtsensors besitzt. Die Tool-box ist allerdings nicht mit dem EV3-Brick kompatibel, sodass keine Verbindung zum Brick hergestellt werden kann. Aus diesem Grund scheidet die Verwendung des EV3-Bricks im Nachhinein aus. Um trotzdem eine Umsetzung in Matlab bzw. Simulink zu ermöglichen, wird als Mikrocontroller nicht der EV3-Brick, sondern ein Arduino Uno genutzt. Da der Arduino nicht über einen Anschluss für das NXT Sensor Interface Pinout verfügt, musste das Verbindungskabel aufgetrennt werden. Um nicht das hochschuleigene Kabel zu nutzen, wurde ein eigenes gekauft, aufgetrennt und die einzelnen Adern mit Jumperkabeln, den Isolierungsfarben entsprechend, verbunden.
Rohsignale des Sensors
Die Rohsignale des Sensors liegen im Voltbereich. Nach der Verarbeitung sollen Werte zwischen 0 (dunkel) und 100 (hell) ausgegeben werden. Die Signale sind einheitenlos.
Signalvorverarbeitung
Hier kommt der Teil zur Signalvorverarbeitung rein.
Analog-Digital-Umsetzer
Der Analog-Digital-Umsetzer für die Signale des Lichtsensors sitzt im Co-Processor (Atmel AVR) des NXT-Brick. Die Funktionsweise wird im nachstehenden Kapitel beschrieben.
Umsetzung des analogen Signals
Der Fototransistor ändert seine Gleichspannung in Abhängigkeit zur Intensität des ein-gehenden Lichts. Die daraus folgenden analogen Daten werden danach über den ersten Pin des NXT SIP an den NXT- oder EV3-Brick weitergegeben. Dort wird das analoge Signal in ein digitales Signal umgesetzt. Für die Umsetzung wird ein 10Bit-ADU genutzt.
Funktionsweise des ADU
Verwendet wird der im Atmel AVR verbaute Analog-Digital-Wandler. Das zur Umsetzung genutzte Verfahren ist die sukzessive Approximation (SAP) und gehört zu den Stufen-wandlern. Zunächst wird ein Startimpuls, Start of Conversation (SOC) gesendet. Dieser setzt alle im (internen) Speicher befindlichen Register auf Null. Im weiteren Verlauf wer-den die analogen Eingänge mit Referenzspannungen verglichen. Diese Referenzspannung ändert sich mit jedem Schritt nach einer festen Reihenfolge. Es wird mit dem Most Significant Bit (MSB) gestartet und bis zum Least Significant Bit (LSB) fortgefahren. Für jeden Schritt wird die aktuelle Referenzspannung mit dem analogen Signal verglichen. Ist die Referenzspannung größer als das Signal, so wird das aktuelle Bit des Digitalwertes (im internen Speicher) auf Null gelassen. Wenn die Referenzspannung kleiner ist als das Signal, wird das aktuelle Bit auf Eins gesetzt. Wenn alle Schritte durchlaufen sind, wird das Signal End of Communication (EOC) gesendet. Die sukzessive Approximation beruht auf einer einfachen Komparatorschaltung. [!]
Stärken- und Schwächenanalyse
Die Stärken der sukzessiven Approximation liegen in der einfachen Umsetzung. Die Auflösung liegt im Regelfall zwischen zwölf und sechzehn Bit, aber auch eine Auflösung bei 10 Bit, wie in diesem Fall, ist möglich. Die SAP verwendet Abtastraten um die 100 kHz. Die einfache Umsetzung beeinträchtigt allerdings die Schnelligkeit des Verfahrens. In Bezug auf das Schnelligkeitskriterium ist die SAP im Nachteil zum Flash-ADU, der dafür aber in der Komplexität höher ist. Ein Flash-ADU hat eine kleinere Auflösung von 8 Bit und eine Abtastrate im GHz-Bereich. Eine weitere Alternative zum AD-Wandler mit sukzessiven Approximation ist ein Delta-Sigma-Wandler. Dieser wandelt das analoge Signal in 24 Bit bei einer Abtastrate von kleiner 100 kHz um. Nachteil des Delta-Sigma-Wandlers ist die Komplexität und die kleinere Abtastrate. Vorteil im Vergleich zur SAP ist die Fähigkeit zu einer hochauflösenden Erfassung der Messdaten. Ebenfalls ein hoch-aufgelöstes Ergebnis ist durch ein Dual-Slope-Wandler möglich. Dieser hat eine Auflösung von mehr als 20 Bit um eine Abtastrate im Hz-Bereich. Das Dual-Slope-Verfahren ist schneller als die sukzessive Approximation, aber im Vergleich komplexer umzusetzen. Zusammengefasst kann der AD-Wandler eher nicht für hochauflösende Messwerte verwendet werden und gehört zu den langsameren Umsetzern. Dafür ist die Komplexität sehr gering und der Umsetzungsaufwand klein. Die Ergebnisse durch die Anwendung dieses AD-Wandlers für den Lichtsensor sind in Bezug auf die Erwartungen angemessen.
Bussystem
Hier kommt der Teil zum Bussystem rein.
Digitale Signalverarbeitung
Hier kommt der Teil zur Signalverarbeitung rein.
Darstellung der Ergebnisse
Hier kommen die Ergebnisse rein.
YouTube-Video
Zu dieser Ausarbeitung ist auch ein YouTube-Video erstellt worden. Dieses zeigt die grundlegenden Ergebnisse des Projektes, sowie eine Echtzeit-Datenerfassung des Sensors in Matlab.
Herausgeber: Eileen Hinners Hochschule: Hochschule Hamm-Lippstadt Studiengang: Business and Systems Engineering, 1. Fachsemester Projektkurs: Signalverarbeitende Systeme Ziel: Sensordaten in Echtzeit auslesen und in Matlab verwenden Ergebnis: Der Sensor konnte mit einem Arduino Uno ausgelesen und in Matlab/Simulink verwendet werden. Beschreibung: Dieses Video zeigt die grundlegenden Ergebnisse des Projektes, sowie eine Echtzeit-Datenerfassung des Sensors in Matlab Betreuer: Prof. Dr. Ulrich Schneider
SVN Projektordner
In dem nachstehenden Ordner im SVN sind alle Unterlagen zum Projekt abgelegt.
Literaturverzeichnis
→ zurück zum Hauptartikel: SigSys SoSe2018