Neigungsschalter (tilt switch) mit Arduino ansteuern

Ü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.

bricklet_tilt_mechanics

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

Neigungsschalter_Schaltplan

Anschlussplan

Neigungsschalter_Steckplatine

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);

 }

 

neigungsschalter_aufbau

Schlagworte: Arduino, Anleitung, Starter Kit

Die mit einem * markierten Felder sind Pflichtfelder.