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

Propeller 8 Kern Controller - C Programmierung

1 - HC-SR04 und Propeller Controller

Der HC-SR04 Ultraschallsensor ist um ein Vielfaches billiger als der PING))) Sensor der Fa. Parallax und steht in den Leistungsdaten diesen um nichts nach. Wer also ein wenig auf das Geld achten muss, ist mit diesem Sensor bestens bedient.

Die vier Daten- und Versorgungsleitungen müssen nur richtig verdrahtet werden und schon lassen sich Abstands- und Entfernungsmessungen durchführen. Dazu ein Blick in das Datenblatt.

2 - Kenndaten des HC-SR04

  • Versorgungsspannung: 5 Volt
  • Stromaufnahme: < 2mA
  • Triggerung: über fallende Flanke (TTL-Pegel, >= 10µs); nach ca. 250µs wird ein 40kHz Burst-Signal ausgesendet (t = ca. 200µs); danach geht der Echo-Pin Ausgang auf H-Pegel und wartet auf das Rücklaufsignal. Sobald dies eintrifft, geht der Echo-Pin auf L-Pegel. Nach ca. 20ms kann die nächste Messung erfolgen. Trifft kein Echosignal ein, bleibt der Echo-Pin für ca. 200ms auf H-Pegel.
  • Messdistanz: von 2-3cm bis ca. 300cm
  • Messungen pro Sekunde: max. 50

3 - Ein erstes Programm zur Abstandsmessung

Der Anschluss Trig wird mit P6 und Echo mit P8 des Propeller Controllers verbunden. Den Triggerimpuls erzeugen wir über den Befehl

  • pulse_out(int pin, int time)

mit den Argumenten

pin:              I/O Pin des Controllers

time:            Impulslänge

Bei einer minimalen Impulslänge von 10µs (vom Hersteller vorgegeben), wählen wir hier 12µs. Der Anschlusspin ist P6.

Die Abfrage des Echopin an P8 erfolgt über den Befehl

  • pulse_in(int pin, int state)

mit den Argumenten

pin:               I/O Pin des Controllers, an dem das Signal vom Sensor einläuft.

state:          Status des Pulses (1 für Spannungssprung von HIGH nach LOW (fallende Flanke), 0 für einen Spannungssprung von LOW nach HIGH (steigende Flanke))

Der Echopin wird vom Sensor auf HIGH gesetzt, deshalb wählen wir hier für state die 1 und den Pin P8 (Echo vom HC-SR04).

Das folgende Programm erfüllt alle Bedingungen für eine einfache Messwertdurchführung. Die Zeit wird in diesem Fall über ein Oszilloskop (PicoScope 2205A MSO mit digitalen Kanälen) an P8 gemessen.

Schaltungsaufbau

Das Programm in Prop-C

Gleiche Ergebnisse erzielt man mit dem Arduino und dem Sensor HC-SR04. Das Arduino-C Programm ist etwas aufwändiger, da die Funktion pulse_out dort nicht vorhanden ist. Sie lässt sich in diesem Fall leicht nachbilden. Die ersten drei Programmzeilen in der Methode loop() setzen dies um. Zum Vergleich hier das Arduino C Programm..

 

Das Programm in Arduino-C

4 - Signallaufzeiten erfassen und auswerten

Mit Hilfe eines Oszilloskops erfassen wir die Laufzeiten des Echosignals. Die Bedeutung der beiden Signale erklärt die zweite Abbildung.

Abbildung 1 - Zeitverhalten der Signale ECHO und TRIG am HC-SR04; Einheit auf der Zeitachse: ms

Die blaue Kurve zeigt die Signale am Controller-Anschluss P6 (TRIG des Ultraschallsensors), die rote Kurve die am Controller-Anschluss P8 (ECHO des Ultraschallsensors). Das Triggersignal zum Aktivieren des Sensors ist kurz (ca. 12 µs). Nach einer Pause von ca. 250µs sendet der HC-SR04 automatisch ein 40kHz Burstsignal (Ultraschallsignal) von 200µs Dauer. Danach wird der Echo-Ausgang am Sensor auf HIGH gesetzt und vom Eingang P8 des Propeller Controllers über den Befehl PULSE_IN als HIGH erkannt. Sobald das am Hindernis reflektierte Ultraschallsignal am Sensor eintrifft, setzt dieser seinen Echo-Ausgang auf LOW, was vom Eingang P8 des Controllers ebenfalls erfasst wird.

Abbildung 2 - Erläuterungen zu den Signalen auf den Leitungen TRIG und ECHO.

Die Hin- und Rücklaufzeit t des Echosignals in der Einheit µs wird über das Programm in einer Variablen t abgelegt (Zeile 20 im Programm) und kann im Programm weiter verarbeitet werden.

Druckversion | Sitemap
© Reinhard Rahner - Gettorf