Bauteil · Sensor
Lever Microswitch
Hebel-Mikroschalter: der Kontaktsensor hinter einem Roboter-Bumper. Ausfallsicher verdrahten, warum ein Druck neun Flanken erzeugt und wozu der Hebelarm dient.
Was es ist
Ein Hebel-Mikroschalter – ein Miniatur-Schnappschalter – ist ein mechanischer Kontakt in einem kleinen Plastikgehäuse mit einem herausstehenden Metallhebel. Hebel drücken, und eine innere Feder schnappt den Kontakt um; loslassen, und die Feder schnappt ihn zurück. Er ist eines der ältesten Bauteile in dieser Bibliothek und an einem Roboter eines der nützlichsten.
Was ihn zum Robotikbauteil macht, ist die Schnappwirkung. Der Kontakt schließt nicht allmählich beim Drücken; er springt, an einem wiederholbaren Punkt, mit hörbarem Klick. Das gibt dir eine definitive Ja-oder-Nein-Antwort aus einem Mechanismus, den ein fahrender Roboter schubst – genau die Situation, in der ein allmählicher Sensor Unsinn liefert.
Wie es funktioniert
Drei Anschlüsse: COM (gemeinsam), NO (Schließer) und NC (Öffner). Ungedrückt ist COM mit NC verbunden. Gedrückt schnappt er auf NO um. Du nutzt zwei der drei und ignorierst den anderen.
Für einen Roboter-Bumper verdrahte COM nach Masse und NO an den Eingangspin, mit eingeschaltetem internen Pull-up des Pins:
pinMode(BUMP_L, INPUT_PULLUP); // idle HIGH
bool pressed = digitalRead(BUMP_L) == LOW; // LOW means the bumper moved
Diese Anordnung ist ausfallsicher: Eine gebrochene Bumperleitung liest HIGH, was nicht gedrückt ist. Andersherum verdrahtet überzeugt ein gerissenes Kabel den Roboter, er kollidiere dauerhaft. Für einen Not-Aus nutze stattdessen NC – dort soll ein gebrochenes Kabel die Maschine stoppen.
Der Hebel tauscht Kraft gegen Weg. Der nackte Stößel will etwa 1 N über grob 1 mm; ein Hebelarm vervielfacht die Bewegung, sodass eine Bumperhülle 3–5 mm laufen und mit viel leichterem Druck auslösen kann. Eine Rolle am Ende reduziert Reibung, wo etwas quer darüber gleitet statt gerade hineinzudrücken.
Wann man ihn verwendet
Nutze einen, wo immer der Roboter wissen muss, dass er bereits Kontakt hatte: Bumper, Endanschläge an einem Arm oder Schlitten, Deckel- oder Schubladensensor oder Andockerkennung. Es ist die Sensorik letzter Instanz, und das ist ein Kompliment – sie erwischt das schwarze Stuhlbein, die Glasscheibe und das Hindernis in falscher Höhe, das jeder optische und akustische Sensor verpasst.
Es ist auch die einzige Sensorik, die ein Zufalls-Coverage-Roboter braucht. Zwei davon und ein Zufallszahlengenerator decken einen ganzen Raum ab, was bemerkenswert viel Verhalten für zwei bewegte Teile ist.
Schau dich anderswo um, wenn du die Kollision vermeiden statt erkennen musst – dafür ist ein Ultraschall- oder Time-of-Flight-Sensor da. Nutze beides: Der Entfernungsmesser meidet die meisten Hindernisse, der Schalter erwischt die, die er nicht sehen kann.
Typische Fallstricke
- Ein Druck sind neun Flanken. Entprelle ihn, und hänge niemals einen zählenden Interrupt daran – nur einen, der ein Flag setzt oder einen Zeitstempel nimmt.
- Das Schaltergehäuse ist kein Strukturteil. Gib der Bumperhülle einen harten Anschlag, der den Aufprall nimmt. Schaltergehäuse reißen; daran sterben sie lange bevor die Kontakte verschleißen.
- Seine eigene Feder stellt deinen Bumper nicht zurück. Ein Mikroschalter drückt mit 50–100 g zurück. Nutze Gummibänder oder leichte Druckfedern für die Rückstellung und lass den Schalter nur messen.
- Ein flacher Bumper verpasst streifende Treffer. Führe die Hülle mindestens 45° zu jeder Seite herum, mit einem Schalter hinter jeder Hälfte, damit der Code weiß, wohin er drehen muss.
- Lange Leitungen fangen Motorstörungen. Halte die Strecke kurz, verdrille das Paar und verlasse dich auf den niederohmigen Pull-up-Weg im geschlossenen Zustand.
- Kontaktbewertungen gelten für Netz, nicht Logik. Ein mit 5 A bei 125 V AC bewerteter Schalter wird hier um Mikroampere gebeten; die Bewertung sagt nichts Brauchbares über seine Lebensdauer in diesem Job. Vorlaufweg und Betätigungskraft schon.
Verdrahtung
Zwei der drei Anschlüsse, und welche zwei entscheidet, wie der Roboter versagt.
| Nutzen | COM nach | Signal von | Ruhezustand | Gebrochenes Kabel liest |
|---|---|---|---|---|
| Bumper | GND | Schließer, Pin INPUT_PULLUP |
HIGH | Nicht gedrückt – sicher |
| Not-Aus | GND | Öffner, Pin INPUT_PULLUP |
LOW | Gedrückt – sicher |
| Beides, externer Pull-up | GND | Schließer oder Öffner, 10 kΩ nach VCC | — | Wie oben |
Die Unterscheidung zählt. Ein auf Schließer verdrahteter Bumper versagt sicher mit „keine Kollision“, was richtig ist – ein Roboter mit gebrochener Bumperleitung soll weiterfahren, nicht einfrieren. Ein auf Öffner verdrahteter Not-Aus versagt sicher mit „gestoppt“, was aus umgekehrtem Grund ebenfalls richtig ist.
Nutze den internen Pull-up. Er kostet nichts, braucht keine Bauteile und gibt einen definierten Ruhezustand. Ein Pin als bloßes INPUT mit Schalter daran schwebt bei offenem Schalter, und schwebende Pins lesen, welches elektrische Rauschen nearby ist – was an einem Roboter voller Motoren viel ist.
Entprellen, richtig gemacht
Ein einziger Druck erzeugt etwa neun Übergänge über grob 4,7 ms, wie die Kontakte schnappen und zurückfedern. Software, die den Pin naiv liest, sieht neun Drücke.
const int BUMP_L = 2, BUMP_R = 3;
const unsigned long DEBOUNCE_MS = 8; // longer than the ~5 ms bounce
struct Bumper {
uint8_t pin;
bool stable; // the debounced state
bool lastRead;
unsigned long changedAt;
};
Bumper left = {BUMP_L, true, true, 0};
Bumper right = {BUMP_R, true, true, 0};
// Returns true on the frame the bumper newly closes.
bool update(Bumper &b) {
bool now = digitalRead(b.pin); // HIGH = open, with INPUT_PULLUP
if (now != b.lastRead) {
b.lastRead = now;
b.changedAt = millis(); // restart the timer on any edge
return false;
}
if (millis() - b.changedAt >= DEBOUNCE_MS && b.stable != now) {
b.stable = now;
return (now == LOW); // newly pressed
}
return false;
}
void setup() {
pinMode(BUMP_L, INPUT_PULLUP);
pinMode(BUMP_R, INPUT_PULLUP);
}
void loop() {
if (update(left)) { backUp(); turnRight(); }
if (update(right)) { backUp(); turnLeft(); }
}
Das wichtige Strukturdetail ist, dass der Timer bei jeder Flanke neu startet, statt einmal abzutasten und zu warten. Ein festes Abtasten-und-Warten kann im Prellen landen und den falschen Wert einrasten; das Neustarten des Fensters heißt, der Zustand wird erst übernommen, wenn der Pin die volle Periode ruhig war.
Warum kein Interrupt
Interrupts an einem Bump-Schalter sind eine Falle, und zwar konkret:
- Niemals einen zählenden Interrupt anhängen. Neun Flanken werden neun Zählungen, und ein Entprellen in einer ISR braucht
millis(), das in einer ISR auf AVR nicht weiterläuft. - Ein Flag-setzender Interrupt ist in Ordnung, wenn das Entprellen in der Hauptschleife passiert. Aber einen Schalter mit 100 Hz abzufragen kostet nichts, und die Schleife eines Roboters läuft ohnehin.
- Reserviere D2 und D3 für Encoder an einem Uno. Es sind die einzigen zwei externen Interrupt-Pins, und Encoder brauchen sie wirklich. Ein Bumper nicht.
Der eine Fall, der einen Interrupt rechtfertigt, ist ein harter Not-Aus, der die Motoren auch bei hängender Hauptschleife kappen muss – und das löst man besser, indem man den Schalter in die Freigabeleitung des Motortreibers verdrahtet, sodass es ganz ohne Software geht.
Montage: das Teil, das wirklich entscheidet, ob es funktioniert
Alles oben ist ein gelöstes Problem. Das mechanische Design entscheidet, ob Bumper gelingen oder scheitern.
Die Hülle nimmt den Aufprall, nicht der Schalter. Ein Mikroschaltergehäuse ist dünnes Plastik und reißt unter direktem Treffer. Baue eine Bumperhülle, die schwenkt oder gleitet, gib ihr einen harten Anschlag, der die Kraft nimmt, und lass den Schalter eine kleine Bewegung nahe dem Ende dieses Wegs messen.
Führe die Hülle herum. Ein flacher Frontbumper verpasst alles, was im Winkel getroffen wird – und ein Roboter, der per Entfernungsmessung navigiert, trifft meist Dinge im Winkel, weil frontale Hindernisse schon erkannt waren. Mindestens 45° zu jeder Seite herumführen.
Zwei Schalter, nicht einer. Links und rechts, hinter den zwei Hälften der Hülle. Ein Schalter sagt dir, dass du etwas getroffen hast; zwei sagen dir, wohin du drehen musst. Der Verhaltensunterschied ist dramatisch und die Mehrkosten etwa zwanzig Cent.
| Schalter | Was der Roboter lernt | Mögliches Verhalten |
|---|---|---|
| 1, Mitte | Etwas wurde getroffen | Zurücksetzen, zufällig drehen |
| 2, links und rechts | Welche Seite getroffen wurde | Zurücksetzen, vom Kontakt wegdrehen |
| 3, plus Heckschalter | Auch, dass er rückwärts wohin fuhr | Entkommen aus Einklemmung |
Den Bumper mit eigener Feder zurückstellen. Die innere Feder eines Mikroschalters drückt mit nur 50–100 g zurück, was nicht reicht, um eine Hülle mit Reibung im Drehpunkt verlässlich zurückzusetzen. Nutze Gummibänder oder leichte Druckfedern, und lass den Schalter nichts tun als messen.
Den Vorlaufweg so einstellen, dass sich die Hülle bewegt, bevor der Schalter auf Block geht. Der Schalter schaltet nach 1–3 mm und hat dahinter etwas Überweg; der harte Anschlag der Hülle muss im Überweg kommen, sonst nimmt die innere Mechanik des Schalters den Aufprall.
Einen wählen
| Hebeltyp | Betätigungskraft | Am besten für |
|---|---|---|
| Kein Hebel (nackter Stößel) | ~1 N über ~1 mm | Endanschläge, wo die Mechanik präzise ist |
| Kurzer gerader Hebel | 0,5–0,8 N | Allgemeine Bumper |
| Langer gerader Hebel | 0,2–0,5 N | Leichte Bumperhüllen, zarter Kontakt |
| Rollenhebel | 0,5–1 N | Alles, was quer darüber gleitet statt hineinzudrücken |
| Simulierter Roller (gebogen) | 0,5–1 N | Billigere Alternative zur Rolle |
Die Kontaktbewertung ist hier irrelevant. Ein mit 5 A bei 125 V AC bewerteter Schalter wird um wenige Mikroampere in einen Pull-up gebeten. Was zählt, ist die mechanische Spezifikation: Betätigungskraft, Vorlaufweg und bewertete mechanische Lebensdauer (10⁵–10⁷ Betätigungen). Ein Roboter, der hundertmal pro Fahrt anstößt, erreicht 10⁵ Betätigungen nach tausend Fahrten, also ist mechanische Lebensdauer effektiv unbegrenzt – der Schalter stirbt lange vorher an gerissenem Gehäuse.
Fehlerbehebung
| Symptom | Wahrscheinliche Ursache | Lösung |
|---|---|---|
| Ein Druck löst mehrfach aus | Kein Entprellen | Muster oben mit 8-ms-Fenster nutzen |
| Liest dauerhaft gedrückt | Auf Öffner statt Schließer verdrahtet | Auf Schließer-Anschluss wechseln |
| Liest zufällig bei Nichtberührung | Pin schwebend | INPUT_PULLUP oder externe 10 kΩ |
| Fehlauslösungen bei laufenden Motoren | Lange ungeschirmte Leitungen fangen Störungen | Paar kürzen und verdrillen; 100 nF über den Pin |
| Bumper federt nicht zurück | Verlass auf die eigene Feder des Schalters | Gummibänder oder Rückstellfeder ergänzen |
| Schalter nach wenigen Kollisionen gerissen | Aufprall geht durchs Schaltergehäuse | Harten Anschlag ergänzen, den die Hülle zuerst trifft |
| Verpasst schräge Kollisionen | Flacher Bumper | Hülle 45° zu jeder Seite herumführen |
| Roboter setzt zurück, trifft aber dasselbe | Ein Schalter, keine Richtungsinfo | Zwei Schalter, und weg vom auslösenden drehen |
| Auf der Bank ok, am Roboter nicht | Bumpergeometrie, nicht Elektronik | Hülle von Hand in mehreren Winkeln drücken und Pin beobachten |
Warum dieses billige Teil seinen Platz verdient
Jeder andere Sensor an einem Roboter hat Flächen, die er nicht sehen kann. Ein Ultraschallsensor ist blind für Vorhänge und für Wände in steilem Winkel. Ein VL53L0X ist blind für schwarze matte Flächen, Spiegel und alles in hellem Sonnenlicht. Eine Kamera braucht Licht.
Ein Mikroschalter hat keine solche Liste. Wenn etwas die Hülle berührt, schließt der Schalter. Das macht ihn zur Sensorik letzter Instanz, und an einem Roboter, der unbeaufsichtigt überleben muss, ist er die billigste Verlässlichkeit überhaupt – zwei Schalter, zwei Pins und etwa vierzig Cent.
Er reicht bemerkenswerterweise auch allein. Ein Roboter mit zwei Bump-Schaltern und zufälligem Abbiegen bei Kontakt deckt mit genug Zeit einen ganzen Raum ab – genau so arbeitete die erste Generation von Saugrobotern, und das lohnt sich zu verstehen, bevor man zu etwas Raffinierterem greift.
Den Graphen erkunden
Verwendet in diesen Bauprojekten
Projekte, Lernpfade und Simulatoren, die Lever Microswitch verwenden.
- ProjektEinen Raumabdeckungsroboter bauen, der Böden kehrt
- ProjektEinen Stiftplotter bauen: Zwei Schrittmotorachsen, die ankommen
- ProjektPick-and-Place-Roboter: Der Fehlgriffe erkennt
- LernpfadGreifen und Endeffektoren: Wirklich aufnehmen
- LernpfadPräzisionsbewegung mit Schrittmotoren: Ein Lernpfad
- LernpfadReaktive Navigation: Einem Roboter Hindernisse meiden lehren
Fragen
FAQ zu Lever Microswitch
Wofür wird ein Hebel-Mikroschalter an einem Roboter verwendet?
Er ist der Sensor hinter einem Bumper. Eine gefederte Hülle an der Roboterfront drückt beim Kontakt den Schalter und gibt dem Code ein eindeutiges Bit – ich bin angestoßen –, das kein optischer oder akustischer Sensor so verlässlich liefert. Damit erkennt ein Roboter ein schwarzes Stuhlbein, eine Glasscheibe oder ein Hindernis in falscher Höhe für seinen Entfernungsmesser.
Soll der Schalter als Schließer oder Öffner verdrahtet werden?
Als Schließer nach Masse mit Pull-up am Pin, für einen Bumper. So liest sich ein gebrochenes Kabel als nicht gedrückt, also kann eine gerissene Leitung den Roboter nicht überzeugen, er kollidiere dauerhaft. Nutze stattdessen den Öffnerkontakt für einen Not-Aus, wo der sichere Fehler der umgekehrte ist – ein gebrochenes Kabel soll die Maschine stoppen.
Warum meldet ein Druck mehrere Male?
Kontaktprellen. Der Metallkontakt trifft auf, federt zurück, trennt und trifft erneut mehrmals in den ersten Millisekunden, und ein Mikrocontroller, der mit Megahertz abtastet, sieht jede davon als echte Flanke. Ein modellierter Hebelschalter erzeugt neun Übergänge über etwa 4,7 ms. Entprelle in Software mit einem Ignorieren-nach-Annahme-Fenster und hänge niemals einen zählenden Interrupt daran.
Was tut der Hebelarm wirklich?
Er tauscht Kraft gegen Weg. Der nackte Stößel braucht 1 bis 1,5 N über etwa 1 mm; ein Hebel vervielfacht die Bewegung, sodass die Hülle 3 bis 5 mm laufen kann und mit viel leichterem Druck auslöst. Das zählt, weil eine Bumperhülle weit genug fahren muss, um verlässlich zu sein, und leicht genug, um kleine Hindernisse nicht erst zu verschieben, bevor sie auslöst.
Brauche ich einen Pull-up-Widerstand?
Nein – nutze den internen Pull-up des Mikrocontrollers mit INPUT_PULLUP. Er ist gratis, braucht kein Extrabauteil an der meistmisshandelten Ecke des Roboters, und der niederohmige Weg nach Masse bei geschlossenem Schalter hindert eine lange Bumperleitung daran, Störungen vom Motortreiber daneben aufzuschnappen.
Weiterführende Literatur