Objekterkennung mit rotierenden Ultraschall mit Matlab/Simulink und EV3

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Autorin: Cosima Eckert-Ludwig
Betreuer: Prof. Dr.-Ing. Ulrich Schneider

Für das Fach „Signalverarbeitende Systeme“ im Sommersemester 2017 wurden den Studierenden des Masters „Business and Systems Engineering“ jeweils ein Projekte aufgegeben. Dieses Projekt beschäftigt sich mit einem fahrbaren Roboter mit Lego Mindstorms EV3. Dieser soll mit Matlab/Simulink gesteuert werden und mit einem Sensor ergänzt werden. Fährt das Fahrzeug auf ein Hindernis zu, soll es 5 cm davor eine automatische Notbremsung durchführen. Zudem soll der Sensor rotieren. Die Signalverarbeitungskette soll ebenfalls beschrieben und untersucht werden. Weitere Informationen gibt es im Hauptartikel: Signalverarbeitende Systeme SoSe2017

Der Primärsensor und seine Funktion

Abbildung 1: Der Ultraschallsensor

Der Sensor

Der Sensor für dieses Projekt ist der LEGO Mindstorms EV3 Ultrasonic Sensor (95652). In Abbildung 1 wird der Sensor dargestellt. Er misst Entfernungen zwischen 3 und 250 cm. Die Messgenauigkeit liegt bei +/- 1 cm. Der Sensor leuchtet dauerhaft beim Senden und blinkt beim Empfangen. Die EV3-Software erkennt den angeschlossenen Sensor automatisch und durch das passende Matlab/Simulink Supportpackage kann so auf den Sensor zugegriffen werden. Kurzgefasst besteht der Ultrasonic Sensor aus einem Sender und einem Empfänger. Der Sender emittiert die Ultraschallwellen, während der Empfänger die Ultraschallwellen empfängt. So können Objekte und deren Entfernung in cm gemessen werden. Der Ultrasonic misst die Strecke, indem er die Zeit auswertet, die er benötigt, um die Ultraschallwellen auszusenden und wieder zu empfangen.

LEGO Mindstorms EV3 Ultrasonic Sensor (95652) besteht unter anderem aus

  • einem STM8S103F3 Mikrocontroller
  • einem AW8T40-10OA00 Sender
  • einem AW8R40-10OA00 Empfänger


Abbildung 2: Funktionsweise des Sensors

Die Funktion

Im allgemeinem sind Ultraschallsensoren sehr zuverlässige und präzise Sensoren zum Messen der Entfernung von Hindernissen. Das Prinzip ist dem Sonar der Fledermäuse nachempfunden. Zunächst wird mit einem Ultraschallsender (Piezo Schallwandler) einige Ultraschallbursts (begrenzte Anzahl von Schwingungen fester Frequenz) erzeugt. Diese liegen im Bereich von 40kHz. Anschließend werden die von einem Hindernis reflektierten Schallwellen mit dem Ultraschallempfänger empfangen. Dazu misst ein Prozessor die Zeit, bis das Echo eintrifft. Diese Zeit ist proportional zur Entfernung des Hindernisses, da sich der Schall, in einem Medium wie Luft z.B. sich mit einer linearen Geschwindigkeit von ca. 300m/s bewegt. Das Echo legt dabei die doppelte Strecke zurück. So komm man auf eine Zeit von ca. 60µs pro cm. Damit lässt sich die Entfernung des Hindernisses durch teilen der gemessenen Zeit ermitteln. Abbildung 2 zeigt das Prinzip des Ultraschallsensors.

Als Ultraschall wird ein Schall mit Frequenzen oberhalb des Hörfrequenzbereichs des Menschen bezeichnet. Er umfasst Frequenzen ab etwa 16 kHz. Wie bereits erwähnt, besteht der Ultrasonic aus einem Sender und einem Empfänger. Im Sender befinden sich kleine Metallplatten, sogenannte piezoelektrische Elemente mit positiven und negativen Ladungen. Ändert sich die Spannung zwischen den Metallplatten, ziehen sich diese an und bewegen sich aufeinander zu bzw. werden voneinander weggedrückt. Somit sind im Sender sozusagen kleine Membrane die schwingen können. Dadurch können die Schallwellen erzeugt werde, die über die Luft übertragen werden. Treffen die Schallwellen nun auf ein undurchlässiges Gewebe, wird der Schall reflektiert. Der Rückschall der entsteht, trifft anschließend auf die Metallplatten. Dadurch wird die Platte bewegt und es ändert sich die Spannung. Diese Spannungsänderung wird im System aufgenommen und nun kann die Zeit zwischen des Zeitpunktes wann das Signal losgeschickt wurde und des Zeitpunktes wann es wieder zurück reflektiert wurde gemessen werden. Durch die Zeitdifferenz kann anschließend der Weg berechnet werden.

Die Rohsignale

Der Ultrasonic kann durch die Spannungsänderung die Zeit messen. Mit Hilfe der Geschwindigkeit der Ultraschallen und der Zeit kann die Distanz gemessen werden. Die Geschwindigkeit des Ultraschalls ist 340m/s. Damit die Geschwindigkeit in cm angegeben wird, wird die Einheit umgerechnet. Somit liegt nun die Geschwindigkeit bei 0,034cm/µs. Da bei dem Sensor der Weg der Ultraschallwellen die Strecke vom Sensor zum Gegenstand und vom Gegenstand zum Sensor zurück beinhaltet, muss dieser Wert verdoppelt werden. Um Anschließend mit dem Zeitwert die Strecke auszurechnen, muss dieser Wert wieder halbiert werden, da nur die Strecke zwischen dem Sensor und dem Gegenstand relevant ist.

Die Geschwindigkeit des Ultrasonic: bzw.

Der Ultrasonic misst die Zeit wie folgt:


Da der Ultrasonic allerdings den Weg zum Objekt und wieder zurück berechnen muss, ergibt sich hieraus folgende Formel:

Der Ultrasonic misst die Strecke wie folgt:


Um den Zeitwert auszurechnen, muss jedoch der Wert wieder halbiert werden, da nur die Zeit vom Aussenden des Signals bis zum Objekt relevant ist.


Im folgendem wird ein Beispiel angegeben: Der Roboter ist vom Gegenstand entfernt und die Geschwindigkeit des Ultraschalls . Dann brauchen die Ultraschallwellen für die Strecke. Dies berechnet sich wie folgt:

Dieser Wert lässt sich nun wieder in die Strecke umrechnen:

Die Signalvorverarbeitung

Abbildung 3: Komponenten des Sensors

Messwerte und Vorverarbeitung

Beim Ultrasonic werden vorverarbeitet Daten als digitale Werte an den Brick weitergegeben. Der Ultrasonic besteht aus verschiedenen Komponenten, die in Abbildung 3 dargestellt werden. Der Ultrasonic besitzt zudem einen Timer. Dieser besitzt folgende Eigenschaften:

  • Fortgeschritten Timer-Steuerung: 16-bit, 4 CAPCOM Kanäle, 3 komplementäre Ausgänge, Totzeit Einfügung und flexible Synchronisierung
  • 16-bit Allzweck-Timer, mit 3 CAPCOM Kanälen (IC, OC or PWM)
  • 8-bit Basic Timer mit 8-bit Vorteiler
  • Auto wake-up Timer
  • Window watchdog und independent watchdog Timer

Aus den Rohdaten wird über diesen Timer die Zeit gemessen, die der Ultrasonic zwischen der Ausstrahlung der Ultraschallwellen und der Messung benötigt.

Kennlinie

Da sich die Werte des Sensors bei der Messung nach bestimmten Gegebenheiten ändern kann, bzw. nicht dem optimal entsprechen, ist eine Kennlinie wichtig, um diese Änderungen einzuplanen. Besonders beim Ultrasonic verhalten sich die Messungen je nach bestimmten Austrahlwinkel anders.

Die Kennlinie des Senders und des Empfängers sind in Abbildung 4 bzw. 5 zu sehen. Beide können bei einer Frequent von 40 KhZ am besten die Signale empfangen bzw. auswerten. Die Kennlinie bezüglich der Frequenzcharakteristik bezieht sich auf den Sender, siehe Abbildung 6. Es ist gut zu erkennen, dass bei einer Frequenz von 40 kHz die beste Objekterkennung erfolgen kann. Anhand der Kennlinie des Austrahlwinkels, siehe Abbildung 7, lässt sich erkennen, dass der Ultrasonic beim Senden seiner Wellen ab einen Austrahlwinkel von +- 40% ungenauer wird bzw. das Objekt nicht mehr optimal detektiert werden kann.

Der Analog-Digital-Umsetzer

Abbildung 8: Verarbeitung

Die analogen Signale

Die analogen Signale werden so umgesetzt, dass zunächst der Sensor die Schallwellen aussendet und dann auf den Piezoempfänger zurücktreffen. Dieser steuert dann die Transistoren an. Es wird eine Spannung erzeugt und diese kann durch einen ADU in 10-Bit Werte umgesetzt werden. Abbildung 8 stellt die Verarbeitung dar.

DER ADU und Alternativen

Es kommt ein 10-Bit Analog Digital Umwandler ADC1 zum Einsatz, der in dem STM8S103F3 Mikrocontroller ist. Er arbeitet nach dem Prinzip der sukzessiven Approximation. Er weist folgende Eigenschaften auf:

  • 5 externe mehrfach nutzbare Eingangskanäle
  • Eingangsspannungsbereich: 0 - VDD
  • Wandlungszeit: 14 Taktzyklen
  • Single, kontinuierliche und gepufferte kontinuierliche Umwandlungsmodi
  • Puffergröße (n x 10 bits) wobei n = Anzahl Eingangskanäle
  • Scan mode für single und kontinuierliche Umsetzung von einer Folge von Kanälen
  • Analoge watchdog Fähigkeit mit programmierebaren upper und lower Schwellenwerten
  • Analoger watchdog Unterbrecher
  • Externer Triggereingang
  • Trigger von TIM1 TRGO
  • End of conversion (EOC) Unterbechung

Der ADC tastet somit ab und gibt den Wert an, der dann über UART in cm wiedergegeben wird. Die Umwandlung dauert 14 Taktschläge. Er braucht 1 ms um einen Takt umzusetzen und kann also 1 Mio. Messewerte pro Sekunde umsetzten.


Der ADC1 besitzt 10 Bit, dies ist zudem seine maximale Größe. Alternativ würde auch ein 8-Bit ADU für den Ultrasonic ausreichen. Da die Auflösung in cm ist, werden nur 7-Bit benötigt, da nur maximal 256 Werte aufgenommen bzw. dargestellt werden können, da es auch keinen negativen Bereich gibt. Allerdings existiert durch den 10-Bit ADU ein größerer Messbereich. Somit sind die Werte einfacher zu kalibrieren. Somit sind die Vorteile des 10 Bit ADU, dass die Messunsicherheit abgefangen wird, da im Bereich der Messfehler (Bedienung des Menschen, ADC Messfehler in Auflösung etc.) nun ein 4-facher overscan vorliegt. Da nur eine Cm-Stückelung vorliegt kommt es zu einer „Überabtastung“ und die Messung wird genauer. Bei einem 16-Bit ADU wird die Messunsicherheit noch weiter geringer, jedoch dauert die Verarbeitung umso länger. Daher ist die 10-Bit Variante am besten geeignet für den Ultrasonic.

Das Bus-System

Abbildung 9: UART

EV3/UART

Das Verbindungssystem zwischen dem EV3 Brick und dem Ultrasonic entspricht dem Typ „EV3/UART“. Der EV3 hat einen UART Sendeempfänger für jeden Inputeingang und somit kann automatisch auf den Ultraschallsensor zugegriffen werden. Der Typ „EV3/UART“ ist für Sensoren, die primär für den EV3 entwickelt sind. Diese Sensoren sind etwas „smarter“ und senden nicht nur ihre gemessenen Daten, sondern senden zudem Informationen über ihre Ressourcen. Das heißt, dass der Ultrasonic Sensor ohne einen neu geschriebenen Treiber funktioniert. Es liegt eine Point to Point-Verbindung vor und es wird kein Bus zwischen Ultrasonic und Brick benötigt. Der Ultrasonic sendet bzw. empfängt seine Daten über UART, was über den Mikrokontroller geschieht. Dabei werden die Daten an den Ausgang Pin 6 gesendet. Siehe Abbildung 9 UART1_TX. Pin 5 ist der Eingang der Daten, siehe ART1_RX.