ThereminoKurs

Sensoren 1 – Ultraschallsensor anschließen 🔊

In diesem Kapitel lernst Du, wie man mit einem Ultraschallsensor Abstände messen kann.

Sensoren sind ganz allgemein elektronische Bauteile, die ihre Umgebung wahrnehmen und Informationen an den Microcontroller weitergeben. Einen Sensor hast Du schon kennengelernt: den Button. Auch er sammelt eine Information (wurde er gedrückt oder nicht?) und gibt sie an den Arduino weiter.

Das Auslesen von Sensor-Daten funktioniert häufig über einen read-Befehl. Es gibt zwei verschiedene Versionen:

analogRead(Pin);   // liefert Werte von 0 bis 1023 (analoge Pins)
digitalRead(Pin);  // liefert nur 0 oder 1 (digitale Pins)

Funktionsprinzip

Ein Ultraschallsensor ist ein Sensor, mit dem sich Abstände bestimmen lassen. Das Prinzip, auf dem er beruht, ist das selbe mit dem Fledermäuse ihre Umgebung wahrnehmen.

Fledermaus bemerkt Beute

Sowohl die Fledermaus als auch ein Ultraschallsensor senden eine Schallwelle aus, die im Ultrachschall-Bereich liegt. Ein Mensch kann solche Schallwellen nicht mehr wahrnehmen, weil die Frequenz zu hoch für unsere Ohren ist. Trifft die Ultraschallwelle auf ein Hindernis (z. B. eine Wand), so wird sie reflektiert. Ein Teil der Welle kommt wieder beim Sender an. Je weiter das Objekt entfernt ist, desto mehr Zeit vergeht.

Funktionsprinzip des Ultraschallsensors

Die Schallgeschwindigkeit ist cS. Kennt man die Zeit t, kann man die Länge l berechnen:

l = cS · t

Da die Welle Hin- und Rückweg braucht:

l = cS · (tmess / 2)


Anschlüsse des Sensors

Der Ultraschallsensor hat 4 Pins:

Ultraschallsensor HC-SR04


Die Funktion pulseIn()

Um den Ultraschallsensor anzusteuern, brauchen wir eine neue Funktion: pulseIn(pin, value)

Die Funktion wartet darauf, dass der Pin auf den gewünschten Wert wechselt (bei uns: HIGH).
Dann misst sie, wie lange der Pin in diesem Zustand bleibt, bis er wieder auf LOW fällt.
Das Ergebnis ist die gemessene Zeit in Mikrosekunden.


🛠️ Aufgabe

  1. Schließe den Ultraschallsensor nach dem Schaltplan an Deinen Arduino an.
  2. Kopiere den folgenden Code in einen neuen Sketch in der Arduino IDE.
  3. Schreibe in void loop() Code, der die Distanz berechnet und im seriellen Monitor ausgibt.

Schaltplan

Schaltplan Ultraschallsensor

Code

// Festlegung der digitalen Pins für Trig & Echo
#define triggerPin 13
#define echoPin 12

// Speichern der Schallgeschwindigtkeit in Konstante in der Einheit Meter pro Mikrosekunde
#define schall 0.0343

// Deklaration von Variablen zum Speichern ...
float duration; // ... der Zeit die bis zum wieder Ankommen des Signals vergangen ist und ...
float distance; // ... der Länge, die wir berechnen wollen.


void setup() {
  // Starten des seriellen Monitors
  Serial.begin(9600);

  // Festlegen der Pin-Modi
  pinMode(triggerPin, OUTPUT);
  pinMode(echoPin,INPUT);
  
}

void loop() {
  // Aussenden des Ultraschall-Signals über den Trigger-Pin
  digitalWrite(triggerPin,HIGH);
  delayMicroseconds(10);
  digitalWrite(triggerPin,LOW);

  // Messung der Zeit zwischen Absenden und Empfangen des Signals
  duration = pulseIn(echoPin,HIGH);
  
  // Hier kommt Dein Code hin
  
  delay(1000); // Kurzes Warten, damit der Sensor nicht überfordert wird
}
💡 Hinweis: In pulseIn() steckt bereits ein read()-Befehl. Deshalb brauchst Du hier kein extra digitalRead().

Nun hast Du alle Grundlagen, die Du brauchst, um ein Theremin zu bauen.
Wenn Du Lust hast, kannst Du gleich damit starten. Oder Du schaust Dir im optionalen Kapitel Sensoren 2 an, wie man einen Phototransistor anschließt und in Dein Projekt integriert.


Lösungsvorschlag


#define triggerPin 3
#define echoPin 4

#define schall 0.0343

float duration;
float distance;


void setup() {
  Serial.begin(9600);
  
  pinMode(triggerPin, OUTPUT);
  pinMode(echoPin,INPUT);
  

}

void loop() {
  digitalWrite(triggerPin,HIGH);
  delayMicroseconds(10);
  digitalWrite(triggerPin,LOW);

  duration = pulseIn(echoPin,HIGH);

  distance = (duration/2)*schall;
  Serial.println(distance);

  delay(1000);
}