MODE 4 — RANGEFINDER

Easy · 1h · Fast kostenlos

Ziel & Anwendung

Der Ultraschall-Sensor wird zum Distanzmessgerät mit drei Skalen: S1 zeigt den Grobbereich 0–200 cm, S2 den zyklischen Feinbereich (jede 20-cm-Dekade wiederholt), S3 den kritischen Nahbereich. Der Stepper fährt wie ein mechanisches Maßband proportional zur Distanz — und DC-Motor plus Buzzer warnen bei Annäherung unter 10 cm.

  • Ultraschall-Distanzmessung auf drei Servo-Zeigern mit unterschiedlichen Skalen darstellen.
  • Stepper als mechanisches Maßband (1 cm = 5 Schritte) proportional zur Distanz bewegen.
  • Mehrstufige Nähewarnung (30 cm und 10 cm) mit Buzzer und DC-Vibration implementieren.

Anschluss & Funktion

Motoren am Board

AnschlussMotorAufgabe
S1180°-ServoGrobskala 0–200 cm
S2180°-ServoZyklische Feinskala (20-cm-Dekade)
S3180°-ServoNahbereichs-Zeiger
S4360°-ServoAnnäherungsgeschwindigkeits-Rotor
S5360°-ServoTrend-Anzeige (nähert sich / entfernt sich)
S6180°-ServoMarkierung der kürzesten gemessenen Distanz
STEPPERSchrittmotorMechanisches Maßband, folgt der gemessenen Distanz
DCDC-MotorVibrations-Warnung bei sehr naher Distanz

Materialliste

  • Kartonstreifen je ca. 12 × 2 cm als Zeiger (3 Stück)
  • Langes Karton-Maßband (Streifen 30 × 3 cm) als Stepper-Tape
  • Halbkreis-Karton je Ø 14 cm als Skalenblatt (3 Stück)
  • Filzstift für Distanzmarkierungen
  • Klebeband und Heißkleber

Step-by-Step Tutorial

  1. Drei-Skalen-Panel aufbauen

    Drei Halbkreise (Ø 14 cm) nebeneinander auf einer Kartonplatte aufstellen. Entsprechende Servos darunter montieren. Skala S1 (Grob): 0 links bis 200 cm rechts. Skala S2 (Fein): 0–20 cm, wiederholt sich jede Dekade. Skala S3 (Nah): 0–30 cm mit roter Zone unter 10 cm.

    Check: Drei Halbkreis-Skalen nebeneinander — links Grobskala (0–200 cm), Mitte Feinskala (0–20 cm Modul), rechts Nahbereich

    Tipp: Grobskala hat 10 Teilstriche (20 cm je Strich), Feinskala hat 10 Teilstriche (2 cm je Strich) — Strichbreite unterschiedlich für leichte Unterscheidung.

  2. Servo-Zeiger montieren

    Für jeden Servo Plastik-Servo-Horn aufschrauben. Zeiger-Karton flächig auf Horn kleben. S1 nutzt mapDistanceCMlong (0–200 cm). S2: map(distanceCM % 20, 0, 20, 1000, 2000) — zyklisch alle 20 cm. S3 nutzt mapDistanceCMshort (0–30 cm Feinbereich).

    Check: Alle drei Zeiger drehen von 1000 µs bis 2000 µs frei ohne Klemmen

    Tipp: Zeiger für S2 (Fein) kann dünner sein — er bewegt sich schneller da sich die Skala alle 20 cm wiederholt.

  3. Stepper als mechanisches Maßband aufbauen

    Schmales Karton-Band (30 × 1 cm) mit Zentimeter-Markierungen beschriften. Band auf Stepper-Mitnehmer-Rad aufwickeln. Code: distDelta = distanceCM - lastDist. Bei |delta| >1 cm: stepper.move(delta × 5). Band scrollt sichtbar vor/zurück.

    Check: Stepper bewegt Karton-Maßband-Streifen proportional zur Distanz (1 cm = 5 Schritte)

    Tipp: Maßband-Streifen mit Zentimeter-Markierungen beschriften und auf Stepper-Rad aufwickeln — sichtbares Abrollen bei Distanzänderung.

  4. Leichtgängigkeits-Test ohne Strom

    Jeden Zeiger von Hand vollständig drehen: kein Klemmen? Stepper-Rad von Hand langsam drehen: Band rollt ab ohne zu reißen? Dann ProtoPeaks einschalten.

    Check: Alle drei Zeiger drehen frei. Stepper-Maßband-Rad dreht ohne Abreißen des Karton-Bandes.

    Tipp: Maßband-Band locker genug lassen — zu straff gespannt reißt es beim Stepper-Schritt. Ein leichtes Durchhängen ist erwünscht.

  5. MODE 4 aktivieren — Distanz messen

    Messgeräte → MODE 4. Objekt vor Ultraschall-Sensor halten: S1 Grobzeiger bewegt sich. Objekt näher: S2 dreht schnell durch (zyklisch). Unter 30 cm: Buzzer.setValue(80) Dauerton. Unter 10 cm: DC-Motor Vibration + Buzzer SHORT_BLINK + Stepper stoppt.

    Check: Alle drei Zeiger folgen der Distanz. Stepper-Band scrollt. Nähewarnung bei <30 cm und <10 cm.

    Tipp: Hand langsam auf den Ultraschall-Sensor zubewegen: alle drei Zeiger bewegen sich gleichzeitig — S2 dreht mehrmals durch wenn S1 noch langsam läuft.

  6. Kalibrierung mit bekannter Distanz

    ProtoPeaks auf exakt 50 cm von einer Wand aufstellen (Lineal messen). Display-Wert mit Zeiger-Ablesung vergleichen. Bei Abweichung >5 cm: Ultraschall-Sensor-Ausrichtung korrigieren — muss exakt senkrecht zur Wand zeigen. Dann bei 100 cm und 20 cm wiederholen.

    Check: Zeiger-Ablesung stimmt mit gemessenem Abstand überein (±5 cm Toleranz)

    Tipp: Lineal anlegen: ProtoPeaks auf genau 50 cm Abstand zu Wand stellen. Display zeigt 50 cm? Zeiger auf 25 % der Skala? Passt.

Troubleshooting

  • Stepper dreht ständig hin und her obwohl Abstand konstant ist — Ultraschall liefert leicht schwankende Werte (±2 cm). Totband erhöhen: if(abs(distDelta) > 2.0f) statt 1.0f. Alternativ: Mittelwert über 3 Messungen bilden.
  • S2 (Feinzeiger) dreht sprunghaft statt gleichmäßig — Modulo-Operation (% 20) erzeugt Sprünge bei Übergang von 20 auf 0. Das ist korrekt — S2 ist eine zyklische Feinskala. Skala entsprechend beschriften: '0/20/40...' am Nullpunkt.

Modifikationen & Sicherheit

  • Pro-Tipp: Stepper-Maßband mit echten Zentimeter-Markierungen bedrucken für professionelles Aussehen.
  • Erweiterung: Encoder-Drehung passt die Alarm-Schwellen an (z.B. 5 cm statt 10 cm für Roboter-Hinderniserkennung).
  • Sicherheit: Ultraschall-Sensor hat Totzonen unter 3 cm — in diesem Bereich sind Messwerte unzuverlässig und Alarm bleibt aktiv.

Wichtige Code-Teile

// S1 (180°): Grobskala 0–200 cm
servocontroller.setServoPulse(1, mapDistanceCMlong);
// S2 (180°): Feinskala zyklisch alle 20 cm
servocontroller.setServoPulse(2, map(constrain((int)distanceCM % 20, 0, 20), 0, 20, 1000, 2000));
// S3 (180°): Nahbereich
servocontroller.setServoPulse(3, mapDistanceCMshort);
// Stepper: Maßband (1 cm = 5 Schritte)
static float lastDist3 = 0;
float distDelta = distanceCM - lastDist3;
if(abs(distDelta) > 1.0f) { stepper.move((int)(distDelta * 5)); lastDist3 = distanceCM; }
// Alarm-Stufen
setMotorspeed(distanceCM > 0 && distanceCM < 10 ? 60 : 0);
if(distanceCM > 0 && distanceCM < 10) Buzzer.setMode(SHORT_BLINK);
else if(distanceCM > 0 && distanceCM < 30) Buzzer.setValue(80);
else Buzzer.setValue(0);

Ähnliche Projekte

  • MODE 2 — KLIMA LAB — Fünf Servo-Zeiger zeigen gleichzeitig Temperatur, Luftdruck und Luftfeuchte des BME280 an. Zwei 360°-Servos fungieren als lebendige Trend-Indikatoren: steigt die Temperatur, dreht S4 nach rechts — fällt der Druck, schlägt S5 nach links. Bei Extremwerten (>35 °C oder >85 % Feuchte) löst der Buzzer automatisch Alarm aus.
  • MODE 5 — LUX METER — Drei Servo-Zeiger arbeiten gleichzeitig: S1 zeigt den Live-Lichtwert, S2 hält den Spitzenwert (Schleppzeiger-Prinzip wie ein analoges Maximum-Thermometer) und S3 friert den aktuellen Wert auf Knopfdruck ein. touch2 löscht den Peak-Wert, touch1 aktiviert den Hold-Modus. Der Stepper dreht bei sehr hellem Licht automatisch weg — als Sonnenschutz-Simulation.
  • MODE 7 — DIFF METER — Zwei Sensor-Kanäle werden verglichen: S1 zeigt die Differenz von Sensor A zu einem gesetzten Referenzpunkt (touch1 = Nullpunkt setzen), S2 zeigt Sensor A live, S3 zeigt Sensor B live. EncoderButton wechselt Sensor A, touch2 wechselt Sensor B. Der DC-Motor warnt wenn die Differenz zwischen A und B einen Schwellwert überschreitet.