Objekterkennung mit Ultraschall mit Matlab/Simulink und EV3: Unterschied zwischen den Versionen
Zeile 118: | Zeile 118: | ||
<math>\frac{x}{t}=343 \frac{m}{s}</math> | <math>\frac{x}{t}=343 \frac{m}{s}</math> | ||
<math> | <math>x=343 \frac{m}{s}*t</math> | ||
='''Quellen'''= | ='''Quellen'''= |
Version vom 16. Juni 2017, 20:38 Uhr
Autor: Mike Westhoff
Betreuer: Prof. Schneider
→ zurück zum Hauptartikel: Signalverarbeitende Systeme SoSe2017
Aufgabenstellung
Im Fach Signalverarbeitende Systeme soll, als Semesterbegleitende Aufgabe, ein Lego Mindstorms Roboter konstruiert werden, der bei Objekterkennung innerhalb eines kritischen Bereichs eine Vollbremsung vollzieht. Bei dem Roboter handelt es sich um einen Lego Mindstorms EV3. Die Objekterkennung wird mittels eines Ultraschallsensors (SRF 05) umgesetzt. Der EV3-Roboter soll solange geradeaus fahren, bis dieser ein Objekt erkennt und vor diesem im Abstand von 5 cm anhalten (Vollbremsung). Als Software darf Matlab oder Simulink verwendet werden. Die Dokumentation der Vorgehensweise und Ergebnisse erfolgt im vorliegenden Wiki-Artikel. Zusätzlich ist ein Video zu erstellen, welches die Funktionsweise darstellt.
Vorstellung des Sensors
Technische Daten
Tabelle 1: Technische Daten SRF05 [1]
Betriebsspannung | 5 V |
Betriebsmode | Auslöse-Pin und Echo-Pin |
Stromaufnahme | nur 4 mA |
Ultraschallfrequenz | 40 kHz |
Maximale Reichweite | 4 m |
Minimale Reichweite | 1 cm |
Größe | 43 mm x 20 mm x 17 mm |
Auf der Abbildung 1 ist in der Vorderansicht links der Sender und rechts der Empfänger des SRF05 zu sehen. Die Abbildung 2 zeigt die möglichen Anschlüsse bzw. Pins zur Kontaktierung.
Funktionsweise Sensor
Der Ultraschallsensor ist so konzipiert, dass dieser die Entfernung zu einem Objekt mittels Schall misst. Der ausgesendete Schall benötigt zwischen dem Aussenden und der Reflexion des Signals eine bestimmte Zeit. Aus der Zeitdifferenz wird mittels einer Umrechnung ein Distanzwert in cm berechnet (Digitale Vorverarbeitung). Der Distanzwert gibt die Entfernung zwischen dem Sensor und dem Objekt an. Der Ultraschallsensor SRF05 von Devantech besteht aus zwei Grundbausteinen, dem Sender und Empfänger. Der Sender arbeitet dabei vergleichsweise wie ein Lautsprecher und der Empfänger wie ein Mikrophon. Dementsprechend besitzen beide Bauteile jeweils eine Membran zum Senden, als auch zum Empfangen von Signalen. Es ist weiter anzunehmen, dass der Ultraschallsensor mit dem piezoelektrischen Effekt arbeitet, jedoch konnte dies nicht von dem Sensor – Hersteller bestätigt werden. Insgesamt besitzt der Ultraschallsensor wie in Abb. zu sehen vier Anschlüsse. Neben der Spannungsversorgung (5V) und dem Masseanschluss (GND), gibt es einen Trigger-Pin und einen Echo-Pin. Zu Beginn sorgt ein Auslöseimpuls dafür, dass der Trigger-Pin auf „high“ gesetzt wird. Der Ultraschallsensor generiert nach dem Auslösesignal eine Ultraschallwelle. Diese Schallwelle hat eine Frequenz von 40kHz und acht Perioden. Nach der Aussendung des Signals wird der Echo-Pin solange auf „high“ gesetzt bis der erste reflektierte Ultraschallimpuls empfangen wird. Das Echo-Signal gibt demnach an, wie viel Zeit der Ultraschall benötigt, um das vor ihm liegende Objekt zu erreichen und durch Reflexion wieder zum Sensor zurück zu gelangen. Der Echo-Pin wird nach dem Empfang wieder auf „low“ gesetzt. Die Dauer zwischen dem Aussenden und Empfangen kann bei Objekterkennung zwischen 100µs und 25ms betragen.
Warum wird eine Ultraschallfrequenz mit 40kHz verwendet?
Hersteller: „40 khz is an optimum point of range and sensitivity, the receiver is 40khz resonant so other frequencies won't pass into the circuit, so no need for band pass filtering.” Die Ultraschallfrequenz mit 40kHz ist ein optimaler Punkt bzgl. Reichweite und Empfindlichkeit. Bei dieser Resonanzfrequenz hat der Empfänger ebenfalls kein Problem mit Hintergrundgeräuschen bzw. anderen Frequenzen, die zu Störungen führen könnten. Somit gibt es keine Notwendigkeit für entsprechende Filter.
Wie wird mit dem Arduino die Zeit gemessen?
pulseIn() Mit dem “pulse” Befehl können sowohl “high” als auch “low” Signale an einem Pin eingelesen werden. Mit dem Trigger Impuls von 10 μs wird die Entfernungsmessung gestartet. Nach der Aussendung der Ultraschallwelle, wird der pulseIn() Pin (Echo_Pin) auf High gesetzt. Die Zeitmessung startet und dauert solange an, bis der Sensor ein reflektiertes Echo erkennt. Der pulseIn() wird wieder auf low gesetzt und die Zeitmessung stoppt. Die Ausgabe der Zeitmessung erfolgt in Mikrosekunden.
Warum sind auf dem SRF05 Zeit Diagramm Leerlaufzeiten eingezeichnet?
Hersteller: „[…] there is also a slight delay for slower controllers (from some years back) to start there timing following the trigger pulse.” Nach heutigen Standards (bzw. leistungsfähigen Mikrocontrollern) ist daher auch die nachfolgende Darstellung zulässig.
Signalvorverarbeitung
Auf der folgenden Abbildung 5 ist die Verbindung zwischen Arduino und dem Ultraschallsensor SRF05.
Anschluss Sensor an den Arduino UNO
Umrechnung Zeit in Abstandswert
In dem Arduino Programm muss der gemessene Zeitwert zwischen dem ausgesendeten und empfangenen Ultraschallsignal zur weiteren Verarbeitung in einen Abstandswert umgerechnet werden. In dem Arduino Quellcode wird dazu die Impulsdauer am Ausgang (Echo) durch den Umrechnungsfaktor 29 µs/cm und 2 geteilt. Die nachfolgende Berechnung zeigt, wie der Umrechnungsfaktor (siehe Datenblatt) aus der Geschwindigkeit für Ultraschall (343 m/s bei 20 °C) berechnet wird. Der Entfernungswert ist zusätzlich noch zu halbieren, da nur eine Distanz für die Entfernungsmessung bzw. Abstandskontrolle des EV3 Roboters benötigt wird. Der unten berechnete Umrechnungsfaktor gilt aber nur für 20 °C bei trockener Luft. Bei abweichender Temperatur ändert sich der Wert für die Schallgeschwindigkeit und dementsprechend auch der Umrechnungsfaktor.
Quellen
!!!Für SVN Ordner sind die entsprechenden Zugriffsrechte erforderlich!!!
- ↑ http://www.embedded.arch.ethz.ch/uploads/Examples/ExampleSensorboardSupersonic2/SRF05Datasheet.pdf
- ↑ Von Evan-Amos - Eigenes Werk, Gemeinfrei, https://commons.wikimedia.org/w/index.php?curid=33217678, Abgerufen am 09.05.2017
- ↑ https://www.robot-electronics.co.uk/images/srf05p2.jpg]]
- ↑ https://www.robot-electronics.co.uk/htm/srf05tech.htm]]
- ↑ https://creativecoding.uni-bayreuth.de/assets/Bauteile/srf05arduino.png
→ zurück zum Hauptartikel: Signalverarbeitende Systeme SoSe2017