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
| Anschluss | Motor | Aufgabe |
|---|---|---|
| S1 | 180°-Servo | Delta-Zeiger (Abweichung zum Referenzpunkt) |
| S2 | 180°-Servo | Sensor-A-Zeiger |
| S3 | 180°-Servo | Sensor-B-Zeiger |
| S4 | 360°-Servo | Differenz-Stärke-Rotor links |
| S5 | 360°-Servo | Differenz-Stärke-Rotor rechts |
| S6 | 180°-Servo | Zeigt, welcher Sensor den höheren Wert hat |
| STEPPER | Schrittmotor | Feinskala der Differenz zum Referenzpunkt |
| DC | DC-Motor | Vibrations-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
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.
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.
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.
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.
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.
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.