Feder-Kippschalter (Erschütterungssensor)
Easy · 15 min · Kostenlos
Ziel & Lerninhalt
Baue einen einfachen Vibrations-/Kipp-Schalter aus einer Kugelschreiber-Feder und einem leichten Gewicht – ein digitaler 'Wackel'-Sensor ohne Elektronik.
- Eine Feder als mechanischen Trigger verstehen.
- INPUT_PULLUP korrekt einsetzen.
- Software-Entprellung gegen mechanisches Prellen einbauen.
Erklärung & Wissen
Basic
Stell dir eine kleine Feder vor, die wie eine Antenne aufrecht steht. Mittendrin hängt ein leichtes Gewicht (z.B. eine Schraube), das mit der Feder selbst verbunden ist. Drumherum stellst du einen Ring aus Draht oder Alufolie. Solange alles ruhig ist, hängt das Gewicht in der Mitte und berührt den Ring nicht. Schüttelst oder kippst du das Bauteil, schwingt die Feder – und das Gewicht touchiert kurz den Ring. Dieser Moment schließt einen Stromkreis. Aus jedem 'Wackeln' wird so ein digitaler Impuls.
Medium
Die Federmasse-Kombination ist ein mechanischer Tiefpass: Schnelle Stöße bringen sie nicht aus der Ruhe, eine schwere, langsame Bewegung dagegen schon (richtige Auslegung vorausgesetzt). Das Gewicht hängt am 'inneren' Pol; der Drahtring um die Feder ist der 'äußere' Pol. Du schließt das Gewicht an GND an, den Ring an einen Digital-Pin mit INPUT_PULLUP. Sobald das Gewicht den Ring berührt, sieht der Pin LOW. Mechanische Kontakte prellen heftig (mehrere ms Geflatter), deshalb baut man im Code ein 30-50 ms Debouncing ein, sonst zählt ein einzelner Wackler als ein Dutzend Auslösungen.
Expert
Das Schwingverhalten folgt $f = \frac{1}{2\pi}\sqrt{D/m}$ – die Federkonstante $D$ und die Masse $m$ bestimmen die Eigenfrequenz. Soll der Sensor auf langsames Kippen (z.B. 'Tasche umgefallen') reagieren, brauchst du eine weiche Feder und vergleichsweise große Masse. Soll er Vibrationen (z.B. Klopfen) erfassen, ist eine straffere Feder und kleine Masse sinnvoll. Sehr hochfreqünte Schwingungen (>50 Hz) verlässt das Modell, weil dann die Feder selbst in Eigenformen mitschwingt und Mehrfachkontakte erzeugt. Eine geometrisch saubere Lösung: Feder mittig in einer Hülse, Gewicht am unteren Ende der Feder, Ring auf Höhe des Gewichts – damit ist die Auslöserichtung kontrolliert.
Fun Fact
Genau dieses Prinzip steckt in fast jeder Lichtdusche-Geburtstagskerze: Beim Anpusten schwingt eine kleine Drahtfeder im Inneren und schließt kurzzeitig einen Kontakt zur LED.
- Hook'sches Gesetz
- Im linearen Bereich ist die Federkraft proportional zur Auslenkung: doppelte Dehnung = doppelte Kraft. $F = D \cdot s$ – $D$ ist die Federkonstante in N/m, $s$ der Federweg in Metern. Kugelschreiber-Federn haben typisch $D = 2{-}10\,\mathrm{N/m}$ (sehr weich). Eine Waagenfeder für 1 kg bei 1 cm Hub bräuchte $D = 1000\,\mathrm{N/m}$. Je weicher die Feder (kleines D), desto empfindlicher reagiert der Sensor auf schwache Erschütterungen.
- Eigenfrequenz
- Die natürliche Schwingungsfrequenz des Feder-Masse-Systems – bei dieser Frequenz resoniert es am stärksten. $f_0 = \frac{1}{2\pi}\sqrt{D/m}$. Weiche Feder + schwere Masse → niedrige Eigenfrequenz (Sensor reagiert auf langsames Kippen). Steife Feder + leichte Masse → hohe Eigenfrequenz (Sensor reagiert auf schnelle Vibrationen). Stimmt die angeregte Frequenz mit $f_0$ überein, explodiert die Auslenkung → maximale Empfindlichkeit.
- Software-Debouncing
- Warte-Logik im Code, die kurze Prellimpulse ignoriert und nur echte Signale weitergibt. Einfachste Methode: Nach einer erkannten Flanke $\texttt{delay(30)}$ warten und dann nochmal lesen. Sauberer: Timestamp merken ($\texttt{millis()}$) und nur reagieren, wenn seitdem >30 ms vergangen sind. Die Timestamp-Methode blockiert nicht und erlaubt, während der Wartezeit anderen Code auszuführen.
- Resonanz
- Wenn eine äußere Schwingung genau die Eigenfrequenz eines Systems trifft, schaukeln sich die Amplituden auf. Kleine, regelmäßige Stöße bei genau $f_0$ addieren sich auf – selbst schwächste Quellen können so zum maximalen Ausschlag führen. Gefährlich bei Brücken (Taktmarschieren verboten!) und Gebäuden (Erdbeben). Nützlich bei Sensoren: Vibrationssensor genau auf die Motorfrequenz abstimmen.
Praktischer Versuch: Vibrations-Kippschalter
Eine Kugelschreiberfeder als Kontaktarm, ein Drahtring als Außenpol, INPUT_PULLUP am Mikrocontroller.
- 1 Kugelschreiberfeder
- 1 kleine Schraube oder Mutter als Gewicht
- 1 Stück steifer Draht (z.B. Büroklammer) für den Ring
- Heißkleber
- Stückchen Karton als Basis
Feder stehend fixieren
Klebe die Feder mit Heißkleber senkrecht auf den Karton. Achte darauf, dass sie nicht in Klebe-Hosenträgern steckt.
Check: Feder steht senkrecht, schwingt frei beim Antippen.
Tipp: Klebe nur das unterste Ende fest – die oberen Windungen müssen sich bewegen können.
Gewicht oben einhängen
Hänge die Schraube am oberen Ende der Feder ein. Schraubenmutter mit kurzem Drahthaken ist am einfachsten.
Check: Gewicht baumelt mittig, ohne andere Teile zu berühren.
Tipp: Je schwerer das Gewicht, desto empfindlicher reagiert der Sensor – aber Vorsicht: zu schwer und die Feder klappt einseitig zusammen.
Ring drumherum bauen
Biege den Draht zu einer geschlossenen Schleife und klebe sie so auf den Karton, dass das Gewicht beim Schwingen den Ring berührt, im Ruhezustand aber nicht.
Check: Ring umschließt das Gewicht in ca. 2–4 mm Abstand.
Tipp: Kein Berühren im Ruhezustand! Lieber großzügig, das Federgewicht reicht beim Wackeln locker rüber.
Manuell prüfen
Verbinde Gewicht und Ring mit dem Multimeter. Klopfe sanft auf den Tisch – es muss kurz piepen.
Check: Multimeter im Durchgangsmodus piept beim Anstoßen, ruht ansonsten.
Tipp: Wenn es ständig piept, ist der Ring zu eng. Wenn nie, zu weit weg.
Anschließen und entprellen
Gewicht an GND, Ring an D2 mit INPUT_PULLUP. Code mit 30 ms Debounce hochladen.
Check: Bei einem einzigen Stoß erscheint genau ein 'WACKEL!' im Monitor.
Tipp: Ohne Debouncing siehst du leicht 5–10 Auslösungen pro echtem Stoß.
Gewicht → GND, Drahtring → D2 (INPUT_PULLUP).
// ProtoPeaks - Feder-Kippschalter
const int pin = 2;
unsigned long lastTrig = 0;
const unsigned long debounce = 30;
void setup() {
Serial.begin(9600);
pinMode(pin, INPUT_PULLUP);
}
void loop() {
if (digitalRead(pin) == LOW && millis() - lastTrig > debounce) {
lastTrig = millis();
Serial.println("WACKEL!");
}
}- Sensor löst auch im Ruhezustand aus. — Gewicht berührt den Ring schon im Stand. Ring etwas aufbiegen oder Feder neu zentrieren.
- Reagiert kaum. — Federkonstante zu hoch oder Gewicht zu klein. Längere Feder, schwereres Gewicht, oder Ring enger setzen.
- Pro Stoß zählt der Monitor viele Auslösungen. — Mechanisches Prellen. Debounce auf 50 ms erhöhen.
Kurzzusammenfassung
Aus Feder, Schraube und Drahtring ist ein voll funktionsfähiger Vibrations-/Kippsensor entstanden. Das Mikrofon der Mechanik: Bewegung → kurzer Kontakt → digitaler Impuls am Mikrocontroller.