ArduMower: Umfeldsensorik: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Zeile 83: Zeile 83:
=== Basistest mit MATLAB und Arduino ===
=== Basistest mit MATLAB und Arduino ===
<source lang="cpp">
<source lang="cpp">
Test
#define trigger 3
#define echo 2   


int getEntfernung()
{
  long d0;
  long t=0;
  digitalWrite(trigger, LOW);
  delayMicroseconds(3);
  noInterrupts();
  digitalWrite(trigger, HIGH); //Trigger Impuls 10 us
  delayMicroseconds(10);
  digitalWrite(trigger, LOW);
  t = pulseIn(echo, HIGH); // Echo-Zeit messen
  interrupts();
  t = (t/2); // Zeit halbieren da doppelte Strecke zurückgelegt wird
  d = t / 29.1; // Zeit in cm umrechnen
  return(d);
}
</source>
</source>



Version vom 6. Juli 2017, 20:24 Uhr


Autoren: Phillip Blunck, Simon Kohfeld, Marius Schaffer

Betreuer: Prof. Schneider, Prof. Göbel

Aufgabe

Einleitung

Ultraschall

Technische Daten des Moduls

Abb.1: Frontansicht
Messbereich Messintervall Messungen pro Sekunde Versorgunsspannung Pinbelegung
2cm - 300cm 0,3cm maximal 50 VCC +5V +-10%, GND 0V
Pin 1: Pin 2: Pin 3: Pin 4:
VCC 5V Triggereingang Echo GND 0V




Funktionsweise des Moduls

Abb.2: Timing-Diagramm

Durch eine fallende Flanke am Triggereingang für mindestens 10µs wir der Messzyklus gestartet. Anschließend wird nach ca. 250µs ein 40kHz Burst-Signal für 200µs gesendet und der Ausgang (Echo) wechselt auf ein H-Pegel. Daraufhin wartet das Modul auf dem Empfang des Echos. Falls es detektiert wird, fällt der Ausgang auf einen L-Pegel. 20ms nach der Triggerung kann eine neue Messung druchgeführt werden. Wird jedoch kein Echo detektiert bleibt der Ausgang für 200ms auf dem H-Pegel und eine erfolglose Messung ist eingetreten. Danach reagiert das Modul auf die nächste fallende Flanke am Triggereinang und die Messung beginnt neu.









Verbauen der Ultraschallsensoren

Abb.3: Frontplatte

In der Frontplatte des Ardumowers sind sechs Bohrungen enthalten, welche für die Montage der drei Ultraschallsensoren vorgesehen sind. Diese liegen zentral, links und rechts, damit ein möglichst großer Bereich erfasst werden kann.

Die Ultraschall Sensoren werden auf der Hauptplatine an den vorgesehenen Pins angeschlossen. Dabei haben diese eine feste Pin-Belegung am Arduino Mega:

  • Sensor Mitte: PIN22 = Echo, PIN24 = Trigger
  • Sensor Links: PIN34 = Trigger, PIN36 = Echo
  • Sensor Rechts: PIN30 = Trigger, PIN32 = Echo

Außerdem ist darauf zu achten wie die Sensoren an der Hauptplatine verkabelt werden. Damit keine Fehler auftauchen sind die Pins nummeriert und haben dieselbe Reihenfolge:

  • 1 = VCC +5V
  • 2 = GND
  • 3 = Trigger
  • 4 = Echo.

Basistest mit MATLAB und Arduino

#define trigger 3 
#define echo 2    

int getEntfernung()
{
  long d0;
  long t=0;

  digitalWrite(trigger, LOW);
  delayMicroseconds(3);
  noInterrupts();
  digitalWrite(trigger, HIGH); //Trigger Impuls 10 us
  delayMicroseconds(10);
  digitalWrite(trigger, LOW);
  t = pulseIn(echo, HIGH); // Echo-Zeit messen
  interrupts();
  t = (t/2); // Zeit halbieren da doppelte Strecke zurückgelegt wird
  d = t / 29.1; // Zeit in cm umrechnen
  return(d);
}

Auf gegenseitige Störung prüfen

Erfassungsbereich
  • Bei Distanzen unter 1m kann der Winkel zum Objekt 45° Betragen
  • Bei einer Distanz von 3m muss das Objekt genau positioniert sein und im Sendekegel von 15° liegen.
  • Sensoren werden nacheinander ausgelesen, sodass keine Überschneidungen vorliegen








Messfehler feststellen