MODE 7 — DIFF METER

Medium · 1h 30 min · Fast kostenlos

Ziel & Anwendung

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.

  • Zwei Sensor-Kanäle auf getrennten Zeigern parallel darstellen und vergleichen.
  • Nullpunkt-Referenz per touch1 setzen und Delta-Abweichung als zentrierten Zeiger anzeigen.
  • Differenz-Alarm zwischen zwei beliebigen Sensoren implementieren.

Anschluss & Funktion

Motoren am Board

AnschlussMotorAufgabe
S1180°-ServoDelta-Zeiger (Abweichung zum Referenzpunkt)
S2180°-ServoSensor-A-Zeiger
S3180°-ServoSensor-B-Zeiger
S4360°-ServoDifferenz-Stärke-Rotor links
S5360°-ServoDifferenz-Stärke-Rotor rechts
S6180°-ServoZeigt, welcher Sensor den höheren Wert hat
STEPPERSchrittmotorFeinskala der Differenz zum Referenzpunkt
DCDC-MotorVibrations-Alarm bei großer Differenz

Materialliste

  • Kartonstreifen je ca. 10 × 2 cm als Zeiger (3 Stück)
  • Breite Kartonplatte ca. 25 × 15 cm als Anzeigebrett
  • Filzstift für Skalenbeschriftung (Delta-Zeiger zentriert bei 0)
  • Klebezettel für Sensor-Labels (A und B)
  • Klebeband und Heißkleber

Step-by-Step Tutorial

  1. Differential-Anzeigebrett aufbauen

    Kartonplatte (25 × 15 cm) als Anzeigebrett aufstellen. Drei Servos nebeneinander montieren. S1 links mit bipolarer Skala (−50 bis +50 Einheiten, Mitte=0). S2 und S3 mit normalen 0–100 Skalen. Sensor-Labels auf Klebezettel: A und B jeweils aktuellen Sensor beschriften.

    Check: Drei Servo-Positionen auf einer breiten Kartonplatte — S1 links (Delta), S2 Mitte (Sensor A), S3 rechts (Sensor B)

    Tipp: S1 (Delta) als bidirektionalen Zeiger aufbauen: Nullpunkt in der Mitte der Skala (1500 µs), links=negatives Delta, rechts=positives Delta.

  2. Delta-Zeiger S1 mit bipolarer Skala montieren

    S1 Servo-Horn aufschrauben. Zeiger-Karton (10 × 1,5 cm) flächig aufkleben. Bipolare Skala aufzeichnen: Mitte markiert, links mit Minus-Vorzeichen, rechts mit Plus. Code: servocontroller.setServoPulse(1, constrain(1500 + (int)(delta6 * 20), 1000, 2000)).

    Check: S1 zeigt bei 1500 µs genau auf die Mitte der Skala (0-Linie)

    Tipp: Delta-Skala: 1000 µs = −50, 1500 µs = 0, 2000 µs = +50. Skalenmitte deutlich mit dicker Linie markieren.

  3. Sensor-Auswahl-Logik einrichten

    Vier Sensoren verfügbar: 0=Temperatur (0–50°C), 1=Luftfeuchte (0–100%), 2=Distanz (0–200cm), 3=Spannung (0–3,3V). EncoderButton zählt snsA hoch. touch2 zählt snsB hoch. touch1 setzt Referenz: refA = valA (Nullpunkt).

    Check: EncoderButton wechselt Sensor A (0=Temp, 1=Feuchte, 2=Distanz, 3=Volt). touch2 wechselt Sensor B.

    Tipp: Klebezettel unter S2 und S3 immer aktuell beschriften — so ist jederzeit klar welcher Sensor verglichen wird.

  4. Leichtgängigkeits-Test ohne Strom

    Alle drei Zeiger von Hand drehen: kein Klemmen? S1 in Mittelstellung auf Skalenmitte ausrichten. Horn ggf. neu ausrichten wenn Zeiger nicht auf 0 zeigt. Erst dann einschalten.

    Check: Alle drei Zeiger drehen frei. S1 zeigt in Neutral-Position auf Skalenmitte.

    Tipp: S1 muss in Mittelstellung (1500 µs) genau auf den aufgemalten 0-Strich zeigen — ggf. Zeiger auf Horn neu positionieren.

  5. MODE 7 aktivieren — Zwei Sensoren vergleichen

    Messgeräte → MODE 7. EncoderButton wählt Sensor A, touch2 wählt Sensor B. touch1 drücken: Referenzpunkt (refA) = aktueller Wert. Sensor A ändern: S1 (Delta) schlägt aus. Sensor A und B sehr unterschiedlich: DC-Motor Alarm bei absDiff >10.

    Check: S1 zeigt Delta zu Referenzpunkt. S2 und S3 zeigen beide Sensor-Live-Werte. DC-Alarm bei großer Differenz.

    Tipp: Beispiel: Sensor A=Temp, Sensor B=Feuchte. touch1 bei Zimmertemperatur (21°C) drücken. Dann Finger auf BME280: Temp steigt, S1 zeigt positives Delta.

  6. Differential-Messung dokumentieren

    Sensor A und B beide auf Temperatur stellen. touch1: Referenzpunkt setzen. Dann BME280 erwärmen: S1 zeigt positives Delta. Display-Wert und Zeiger-Ablesung vergleichen. Passt? Dann verschiedene Sensor-Kombinationen testen.

    Check: Delta-Wert nach Sensor-Änderung ist auf der Skala ablesbar und stimmt mit Display-Wert überein

    Tipp: Display zeigt Delta (Dlt:), Sensor A (A:) und Sensor B (B:) für genaue Kontrollablesung.

Troubleshooting

  • S1 (Delta) bleibt immer auf Maximum oder Minimum — refA wurde noch nicht gesetzt. touch1 drücken um aktuellen Sensor-A-Wert als Referenzpunkt zu setzen. Danach zeigt S1 das Delta vom aktuellen Wert zur Referenz.
  • DC-Alarm löst sofort nach Start aus — Sensor A und B haben sehr unterschiedliche Einheitenbereiche (z.B. Dist=50 cm vs. Volt=2V ergibt absDiff=48). Sinnvolle Sensor-Kombinationen wählen (z.B. Temp vs. Temp nach Zeit).

Modifikationen & Sicherheit

  • Pro-Tipp: Encoder-Drehung als feinjustierbaren Offset für Referenzpunkt — erlaubt präzise Null-Kalibrierung.
  • Erweiterung: Differenz-Wert in physikalische Einheiten umrechnen (z.B. Temp-Differenz in Kelvin) und auf Skala beschriften.
  • Sicherheit: Vergleich von Sensoren mit sehr unterschiedlichen Einheiten (z.B. Temp vs. Distanz) ergibt sinnlose Werte — Sensor-Labels immer aktuell halten.

Wichtige Code-Teile

// Sensor A und B wählen
static uint8_t snsA = 0, snsB = 1;
if(isButtonPressed(EncoderButton, lastEncBtn6)) snsA = (snsA + 1) % 4;
if(touch2) snsB = (snsB + 1) % 4;
// Referenzpunkt setzen
if(isButtonPressed(touch1, lastT1_6)) refA = valA;
// Delta zu Referenz
float delta6 = valA - refA;
float absDiff = abs(valA - valB);
// S1: Delta (zentriert bei 1500)
servocontroller.setServoPulse(1, constrain(1500 + (int)(delta6 * 20), 1000, 2000));
// S2/S3: Live-Werte A und B
servocontroller.setServoPulse(2, map(constrain((int)(valA * 10), 0, 500), 0, 500, 1000, 2000));
servocontroller.setServoPulse(3, map(constrain((int)(valB * 10), 0, 500), 0, 500, 1000, 2000));
// DC-Alarm bei großer Differenz zwischen A und B
setMotorspeed(absDiff > 10 ? 40 : 0);

Ähnliche Projekte

  • MODE 6 — PEAK HOLD — Ein universeller Peak-Detektor für fünf verschiedene Sensoren: Encoder-Button wechselt den aktiven Sensor (Temperatur, Distanz, Helligkeit, Spannung, Feuchte), S1 zeigt den Live-Wert, S2 hält das bisherige Maximum und S3 das bisherige Minimum — alle gleichzeitig auf derselben Skala. touch2 löscht alle gespeicherten Extremwerte.
  • 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 8 — FORCE METER — touch1 halten simuliert eine Kraftmesszelle: je länger gedrückt, desto mehr Kraft wird angezeigt (0–100 g in 2 Sekunden). Loslassen lässt den Wert langsam abfallen — wie eine Federkraft-Simulation. S1 zeigt die aktuelle Kraft, S2 hält den Spitzenwert. S3 zeigt die Gyro-Y-Neigung als Tara-Korrektur. Über 80 g: DC-Vibration und Buzzer.