Objekterkennung mit rotierenden Infrarotsensor mit Matlab/Simulink und EV3

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Autor: Thorsten Drees
Betreuer: Prof. Dr.-Ing. Ulrich Schneider

Aufgabenstellung

Begleitend zu der Vorlesung „Signalverarbeitende Systeme“ besteht die Aufgabe des Studenten darin, dass ein LEGO Mindstorm Roboter mit EV3 Brick mittels eines Sensors ein Hindernis erkennt und automatisch abbremst. Diese Notbremsung soll erfolgen, sobald sich ein Objekt (Kopierpapierkarton) 20 cm vor dem Roboter befindet. Als Sensor kommt in diesem Projekt ein rotierender LEGO Infrarot Sensor zum Einsatz. Die Programmierung soll in Matlab und/oder Simulink implementiert werden. Zudem ist ein Video zu erstellen, welches die Funktionalität demonstriert.

Projektplan

Zur zeitlichen Planung des Projekts wurde ein Gantt Chart mit MS Project 2016 erstellt. Dieses ist in Abbildung 1 zu sehen.

Abbildung 1: Gantt-Chart

Primärsensor

Abb.2: Lego Infrarot Sensor [8]

Als Sensor für die Distanzmessung kommt der Lego EV3 Infrarot Sensor zum Einsatz. Dieser Sensor hat drei Funktionen: • IR proximity Sensor • IR seeker Sensor • IR remote control Receiver Für dieses Projekt wird der Sensor als „IR proximity Sensor“ eingesetzt. In diesem Modus bestimmt der Sensor eine relative Distanz zu einem vor ihm liegenden Objekt. Als Ausgabe liefert der Sensor einen Wert von 0 (sehr nah) bis 100 (maximale Entfernung). Implementiert ist dieser Sensor als digitaler Sensor. Das bedeutet, dass der Sensor einen kleinen 8-bit Mikrocontroller integriert hat, welcher über den UART-Bus mit dem EV3-Brick kommuniziert.





Funktionsweise des Sensors

Der Sensor besteht grundlegend aus zwei Bauteilen. Zum einen besteht der Sensor aus einer infraroten LED und zum anderen aus einer Fotodiode. Die Infrarot-LED sendet einen Infrarotlichtstrahl auf ein Objekt aus. Ein Teil des ausgesendeten Lichtes wird vom Objekt reflektiert und von der Fotodiode empfangen. Die Intensität des reflektierten Lichtes ist dabei umgekehrt proportional zum Quadrat der Distanz. Die vom optischen Sensor erzeugten analogen Spannungswerte werden durch den AD-Wandler des Sensors in Digitalwerte umgewandelt. Zudem findet im Mikrocontroller die Vorverarbeitung statt, indem die Werte auf Entfernungswerte von 0-100 normiert werden. Da dieser Sensor nicht nach der Triangulation als Messmethode arbeitet sondern nach der reflektierten Lichtmenge, treten je nach Oberfläche und Farbe des Objektes stark unterschiedliche Entfernungswerte auf. Die höchste Sensibilität hat der eingesetze optische Sensor bei einer Wellenlänge von ca. 900 nm und es wird alle 50 mS eine Messung durchgeführt. Das schließt Störeinflüsse durch Umgebungslicht nahezu aus. Abbilung 3 Zeigt dazu schematisch die Funktionsweise falls sich kein Objekt vor dem Sensor befindet. [3]

Abb.3: Kein Objekt vor dem Sensor [2]

Sobald sich ein Objekt vor dem Sensor befindet erfasst die Fotodiode das reflektierte Infrarotsignal.Dies ist in der Abbildung 4 zu sehen.

Abb.4: Objekt vor dem Sensor [2]

Rohsignale des Sensors

Der eigentliche Infrarotsensor, also der optische Sensor (Fotodiode), gibt analoge Spannungswerte aus. Leider war es nicht möglich hierzu eine Kennline des Sensors zu erhalten. Die Rohsignale des fertigen LEGO Infrarotsensors bestehen aus int8 Werten von 0-100. Die Ausgabe erfolgt über den UART-Bus auf pin 5 und 6.

Signalvorverarbeitung

Abb.5:Schaltplan [1]

Bei dem verwendeten Sensor handelt es sich um einen digitalen Sensor welcher vorverarbeitete Daten überträgt. Durch den optischen Sensor (Fotodiode) wird die Intensität des reflektierten Lichtes, welches umgekehrt proportional zum Quadrat der Distanz ist, in eine Spannung gewandelt. Diese Spannung wird durch den ADU in einen digitalen Wert umgesetzt und im Mikrocontroller auf einen relativen Distanzwert von 0-100 normiert. Die dafür eingesetzte Kennlinie ist leider nicht verfügbar. Der Schaltplan auf welchem auch der eingesetze Microcontroller gezeigt ist, ist in Abbildung 5 zu sehen.





Analog-Digital-Umsetzer

Umsetzung der analogen Signale

Die Analogwerte werden innerhalb des Sensors mittels eines Microcontrollers mit der Bezeichnung STM8S103F3 umgesetzt.

Eingesetzer ADU

Abb.6:Prinzip der sukzessiven Approximation [5]

Bei diesem Microcontroller kommt ein ADU nach dem Prinzip der sukzessiven Approximation zum Einsatz. Die genauen Daten des ADU sind folgende:

  • 10-bit successive approximation A/D converter (ADC1) with up to 5 external multiplexed input channels
  • Input voltage range: 0 to VDD
  • Conversion time: 14 clock cycles
  • Single and continuous and buffered continuous conversion modes
  • Buffer size (n x 10 bits) where n = number of input channels
  • Scan mode for single and continuous conversion of a sequence of channels
  • Analog watchdog capability with programmable upper and lower thresholds
  • Analog watchdog interrupt
  • External trigger input
  • Trigger from TIM1 TRGO
  • End of conversion (EOC) interrupt

Die AD-Wandler, wie der hier eingesetzte, funktionieren nach dem folgenden Prinzip: Das analoge Messsignal wird in n Schritten digitalisiert, wobei die Genauigkeit bei jedem Schritt um 1 Bit steigt. Bei jedem Schritt wird die Eingangsspannung mit einer Referenzspannung verglichen, die durch einen DA-Wandler erzeugt wird. Je nachdem, ob die Eingangsspannung größer oder kleiner als die Spannung des DA-Wandlers ist, wird die Referenzspannung im nächsten Schritt um die halbe Schrittweite des letzten Schrittes nach oben oder nach unten verändert. Dadurch nähert sich die Spannung des DA-Wandlers immer mehr der Eingangsspannung an. Zum Schluss, wenn das letzte Bit des DA-Wandlers gesetzt ist, entspricht der Wert des DAUs ungefähr der Eingangsspannung. [4]

Gründe für diesen ADU

Gründe, welche für diesen ADU sprechen, gibt es einige. Zum einen die hohen Abtastraten im Millisekundenbereich. Zudem sorgt die konstante Umsetzzeit für eine genaue Messung. Der Implementierungsaufwand bei dieser Art von DAUs ist zudem gering und die Kosten niedrig. Das Prinzip der sukzessiven Approximation eignet sich außerdem hervorragend zur Nachbildung per Software.

Bussystem

Bussystem zwischen Sensor und Mikrocontroller

Zwischen dem Sensor und dem EV3 Brick kommt ein UART-Bus zum Einsatz. Dabei kommuniziert der im Sensor integrierte Microcontroller über den UART-Bus auf Pin 5 und 6 mit dem EV3 P-Brick. Der Microcontroller mit der UART-Schnittstelle ist in Abbildung 7 gezeigt.

Abbildung 7: Microcontroller mit UART-Schnittstelle

Funktionsweise des Bussystems

UART steht für Universal Asynchronous Receiver Transmitter. Diese digitale serielle Schnittstelle ist im Fall dieses EV3-Sensors als Funktionsblock eines höherintegrierten Bauteiles (hier der STM8S103F3 Mikrocontroller) ausgeführt. Die verwendete UART-Schnittstelle dient zum Senden und Empfangen von Daten über eine Datenleitung. Die Daten werden als serieller digitaler Datenstrom mit einem fixen Rahmen übertragen, der aus einem Start-Bit, fünf bis maximal neun Datenbits, einem optionalen Parity-Bit zur Erkennung von Übertragungsfehlern und einem Stopp-Bit besteht. Bei der hier verwendeten UART-Kommunikation werden ein Start-Bit, 8 Daten-Bits, ein Stopp-Bit und kein Parity-Bit eingesetzt. [1] Durch die asynchrone Betriebsweise wird kein eigenes Taktsignal auf einer Übertragungsleitung benötigt. Stattdessen synchronisiert sich der Empfänger über die Länge des Rahmens. Dieser ist gegeben durch die Schaltflanke von Start- und Stopp-Bit, sowie die eingestellte Baudrate (entspricht der Bitrate). Der Beginn einer Übertragung kann zu beliebigen Zeitpunkten mit dem Start-Bit erfolgen, daher wird diese serielle Schnittstelle als asynchron bezeichnet. Um eine Synchronisation gewährleisten zu können, ist die Anzahl der übertragbaren Bits eingeschränkt. [6]

Digitale Signalverarbeitung

Verarbeitungsschritte im Simulink-Modell

Empfindlichkeit des Sensors

Darstellung der Ergebnisse

Fehler in den einzelnen Verarbeitungsschritten

Messunsicherheit und Vertrauensintervall

Lessons Learned

Youtube-Video

Einzelnachweise

[1] https://education.lego.com/de-de/support/mindstorms-ev3/developer-kits Abgerufen am 20.05.2017
[2] http://www.eetimes.com/document.asp?doc_id=1272536 Abgerufen am 25.05.2017
[3] http://www.g9toengineering.com/AllSaints/infraredproximity.htm Abgerufen am 01.06.2017
[4] http://www.vias.org/mikroelektronik/adc_succapprox.html Abgerufen am 01.06.2017
[5] Skript Signalverarbeitende Systeme; Prof. Dr.-Ing. Ulrich Schneider; 2017
[6] https://de.wikipedia.org/wiki/Universal_Asynchronous_Receiver_Transmitter Abgerufen am 09.05.2017
[7] http://www.st.com/en/microcontrollers/stm8s103f2.html Abgerufen am 09.05.2017
[8] https://sh-s7-live-s.legocdn.com/is/image/LEGO/45509?$PDPDefault$ Abgerufen am 09.06.2017


→ zurück zum Hauptartikel: Signalverarbeitende Systeme SoSe2017