Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

1 - PING))) Sensor

Die heute wohl am häufigsten eingesetzten Verfahren zur Entfernungsmessung bzw. Abstandsbestimmung beruhen auf Laufzeitverfahren. Handwerker arbeiten mit Lasergeräten, mit denen sich auch große Entfernungen ausmessen lassen, im Hobbybereich und in der Schule werden häufig Ultraschallsensoren eingesetzt, deren maximale Reichweite bei ca. 3 Metern liegt.

Beide Medien nutzen die Laufzeitdifferenzen, die entstehen, wenn ein ausgesandtes Licht- oder Schallsignal von einem Hindernis reflektiert wird und anschließend zum Sender zurückkehrt.

In den Kapiteln Mikrocontroller - BS - Intelligente Sensoren - Ultraschallsensor PING))) und Mikrocontroller - Prop.Sensoren et al. - Ultraschallsensor wurde bereits ausführlich auf die Theorie der Abstandsbestimmung mit dem PING))) Sensor der Fa. Parallax eingegangen. Es ist empfehlenswert, sich diese Abschnitte anzuschauen und durchzulesen, bevor man hier weiter liest.

2 - Abstandsmessung mit dem PING)))-Sensor

Abb. 1 - Ping)))-Sensor der Fa. Parallax mit drei Anschlüssen

Der PING)))-Sensor der Fa. Parallax verfügt über drei Anschlüsse: GND, 5V, SIG. Einige Versuche mit diesem Sensor und den Controllern BASIC Stamp 2 und Propeller wurden an anderer Stelle bereits vorgestellt. Wir werden hier die Beschaltung und Programmierung mit dem Arduino UNO kennen lernen.

Abstandsmessung mit dem PING))) Sensor
Material
  • 1x  PING))) Sensor
  • 1x  Steckbrett
  • 1x Arduino UNO oder NANO ESP32
  • 1x  USB-Verbindungskabel
  • 1x  Steckernetzteil
  • 3x  Steckdraht
Aufgaben
  • Baue die Schaltung nach dem Verdrahtungsplan auf dem Steckbrett auf.
  • Achte auf die korrekte Verbindung der Anschlusspin des Sensors mit dem Arduino Board.
  • Verbinde das Board mit dem PC und schalte die Energiequelle ein.
  • Übertrage das Programm PING_1.ino in den Editor und speichere es ab.
  • Starte das Programm.
  • Öffne den seriellen Monitor über Arduino IDE - Tools - Serial Monitor.

Verdrahtungsplan des Schaltungsaufbaus

Abb. 2a - Schaltungsaufbau mit Arduino UNO R3 und PING))) Sensor. Die SIG-Leitung ist mit D7 verbunden.

Schaltskizze

Abb. 2b - Pinbelegung des PING))) Sensors

Das Programm PING_1.ino

Ausgabe im seriellen Terminal

Wie arbeitet das Programm Ping1.ino?

Die Schallgeschwindigkeit in Luft ist von der Temperatur abhängig. Den formelmäßigen Zusammenhang kann man nachschlagen oder über die Näherungsformel

  • cLuft = 331,5 + 0,6 T

berechnen. c_schall ist auf diese Weise berechnet worden. In der Methode setup() wird die serielle Schnittstelle gestartet. Das Hauptprogramm in der Methode loop() besteht nur aus drei Zeilen. In der Variablen s wird der Rückgabewert aus der Methode Abstand_cm() abgelegt und mit Serial.println anschließend im Terminal ausgegeben. Die Hauptarbeit erfolgt in der Methode Abstand_cm().

 

P7 des Arduino wird Ausgang und für 5 µs auf LOW, anschließend - ebenfalls für 5 µs - auf HIGH und dann wieder auf LOW gesetzt. Das ist der Startimpuls, mit dem der PING))) Sensor getriggert wird; er sendet nach einer kleinen Pause eine kurze Impulsfolge (Ultraschall von 40 kHz) aus und setzt gleichzeitig Pin SIG auf HIGH.

Vorher wird P7 des Arduino UNO auf Eingang umgeschaltet. Mit dem Attribut HIGH wartet pulseIn() solange, bis P7 an seinem Eingang ein HIGH Signal erkennt (genauer: den Sprung von 0 auf 1) und beginnt mit der Zeitmessung. Sobald der Empfänger im PING))) Sensor das reflektierte Signal erkennt, setzt er Pin SIG auf LOW. P7 erkennt den Spannungssprung von 1 auf 0 und beendet seine Zeitmessung.

Abbildung 3 - Zeitdiagramm mit Triggerimpuls und Zeitmessung aufgenommen mit einem PicoScope 2205 AMSO.

Der Befehl pulsIn() weist die gemessene Zeit in der Einheit Mikrosekunden der Variablen t_us zu. Da es sich bei jeder Messung um die Zeit für einen Hin- und Rücklauf des Signals handelt, muss die gemessene Zeit halbiert und dieser Wert t dann in die Einheit Sekunde umgewandelt werden. Anschließend wird der Abstand d über die Beziehung

  • Abstand d = Geschwindigkeit v mal Zeit t

berechnet und im Terminal ausgegeben.

3 - Der Sensor HC-SR04

Der HC-SR04 Ultraschallsensor besitzt gegenüber dem PING))) Sensor vier Anschlüsse: Vcc, Trig, Echo, GND. Vcc wird mit der +5 Volt Buchse und GND mit der gleichnamigen Buchse auf dem Arduino UNO verbunden. Über den Anschluss Trig wird das Triggersignal, der Startimpuls für den Sensor, übertragen, während über den Anschluss Echo das Start- und Stoppsignal für die Zeitmessung empfangen wird. Ein Startimpuls von ca. 10µs startet die Abstandsmessung. Das Modul sendet daraufhin eine Impulsfolge im Ultraschallbereich aus (40 kHz), die die Zeitmessung startet, während das Rücklaufsignal sie stoppt.

Abb. 4 - HC-SR04 Abstandssensor mit vier Anschlüssen: Vcc. Trig, Echo, GND.

Im Prinzip arbeiten der Sensor PING))) und der HC-SR04 völlig identisch, so dass das nachfolgende Programm sich nur in einigen wenigen Programmteilen vom Versuch aus Abschnitt 2 unterscheidet.

Abstandsmessung mit dem HC-SR04
Material
  • 1x  HC-SR04 Sensor
  • 1x  Steckbrett
  • 1x Arduino UNO oder NANO ESP32
  • 1x  USB-Verbindungskabel
  • 1x  Steckernetzteil
  • 4x  Steckdraht
Aufgaben
  • Baue die Schaltung nach dem Verdrahtungsplan auf dem Steckbrett auf.
  • Achte auf die korrekte Verbindung der Anschlusspin des Sensors mit dem Arduino Board.
  • Verbinde das Board mit dem PC und schalte die Energiequelle ein.
  • Übertrage das Programm Ultraschall_HC_SR_04_UNO_WiFi_R2.ino (s. Abb. 5) in den Editor und speichere es ab.
  • Starte das Programm.
  • Öffne den seriellen Monitor über Arduino IDE - Tools - Serial Monitor.

Schaltungsaufbau

Abb. 5 - Beschaltung eines HC-SR 04 mit einem Arduino UNO R3. In Abweichung zur Abbildung ist Trig mit D2 und Echo mit D4 verbunden.

Das Programm Ultraschall_HC_SR_04_UNO_WiFi_R2.ino

Abbildung 5 - Zeitdiagramm mit Triggerimpuls (10µs) und Zeitmessung (295,8 µs, das entspricht 4,92 cm) aufgenommen mit einem PicoScope 2205 AMSO.
Druckversion | Sitemap
© Reinhard Rahner - Gettorf