Übersicht
Neigungsschalter (englisch tilt switch) ermöglichen es Ihnen, die Ausrichtung oder Neigung zu erkennen. Sie sind klein, kostengünstig, stromsparend und einfach zu bedienen. In der Regel verschleißen sie auch nicht. Die Einfachheit macht sie beliebt für Spielzeug, Gadgets und Haushaltsgeräte.
Manchmal werden sie auch „Quecksilberschalter“, „Neigungsschalter“ oder „Neigungswinkelschalter“ genannt. Früher waren die Neigungsschalter noch Quecksilberschalter, bei denen ein mit einem Tropfen Quecksilber gefülltes Glasrohr mit zwei elektrischen Kontakten versehen war. Mittlerweile werden statt Quecksilber rollende Kugeln verwendet. Am Ende vom Hohlraum sind zwei leitfähige Elemente (Pole), die ab einer gewissen Neigung von der Kugel verbunden werden, damit der Schaltzustand erreicht wird.
Vorteile von Neigungsschaltern
Neigungsschalter sind zwar nicht so präzise oder flexibel wie ein vollständiger Beschleunigungsmesser, können jedoch Bewegungen und Ausrichtungen erkennen. Ein weiterer Vorteil ist, dass die größeren Neigungsschalter den Strom selbst schalten können. Beschleunigungsmesser geben hingegen eine digitale oder analoge Spannung aus, die dann mit einer zusätzlichen Schaltung analysiert werden muss. Ein gutes Beispiel für den Einsatz von Beschleunigungssensoren sind Controller mit einer Bewegungssteuerung (z.B. von der Switch oder Wii Konsole).
Nachteile von Neigungsschaltern
- Quecksilberschalter sind giftig und nicht mehr zeitgemäß
- Vibrationen können Fehleingaben erzeugen
- Ohne Schwerkraft funktionieren die Schalter nicht
- Funktion ist in beweglichen Projekten nicht zuverlässig
Benötigte Komponenten
- Uno R3 kompatibles Board
- Neigungsschalter
- 2x Dupontkabel Buchse-Stecker
Schaltplan
Anschlussplan
Beispielcode
Mit diesem Beispielcode bringen wir die integrierte LED (Beschriftung L auf der Platine) zum Aufleuchten, wenn der Neigungsschalter schaltet. Sie können stattdessen auch eine LED an Pin 13 anschließen. Dieses Beispiel ist etwas komplizierter als üblich, funktioniert durch die Debounce-Funktion aber wesentlich zuverlässiger.
// Pins werden deklariert
constint ledPin = 13;// Pin für die LED
constint sensorPin = 2; // Pin für den Neigungsschalter
//Variablen werden deklariert
int sensorState; // Aktueller Status vom Sensor
int lastTiltState =HIGH; // Letzter Status vom Sensor
int sensorWert; // Variable um den Messwert einzulesen
unsignedlong lastDebounceTime = 0; // Letzte Zeit als der Sensor ausgelöst wurde
unsignedlong debounceDelay = 50; // Entprellwert in Milisekunden um Fehleingaben zu vermeiden
voidsetup()
{
pinMode(ledPin,OUTPUT);// Initialisiere den LED Pin als Ausgang
pinMode(sensorPin,INPUT); // Initialisiere den Neigungsschalter als Eingang
digitalWrite(sensorPin,HIGH); // Setze den Neigungsschalter auf HIGH
digitalWrite(ledPin,LOW); // Setze die LED auf LOW
Serial.begin(9600); // Serielle Verbindung mit Baud 9600 öffnen
}
voidloop() {
sensorWert =digitalRead(sensorPin); // Sensorwert lesen
// Debounce (Entprellen) vom Sensorwert, um Fehleingaben zu verhindern
if (sensorWert == lastTiltState) {
// Debounce timer zurücksetzen
lastDebounceTime =millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
// Wenn der Sensorwert länger vorhanden ist als der Debounce Delay, wird der Sensorwert übernommen
lastTiltState = sensorWert;
}
//Wenn der Sensorwert 1 (HIGH) ist, dann wird die LED eingeschaltet. Ansonsten ist die LED aus
if (sensorWert == 1) {
digitalWrite(ledPin,HIGH);// LED einschalten
}
else
{
digitalWrite(ledPin,LOW);// LED ausschalten
}
Serial.println(sensorWert); // Ausgabe vom Sensorwert
delay(500);
}