Nr.09 – Arduino Neigungssensor SW-520D

Sketch: Mit dem Arduino einen Neigungssensor SW-520D auslesen

arduino-neigungssensor

Mit dem Arduino lassen sich auf verschiedenen Art und Weisen Neigungen messen. Sehr exakte Messungen bekommt man zum Beispiel mit einem Beschleunigungssensor, bei dem man nahezu jeden Winkel genau messen kann. Es geht jedoch auch ganz einfach mit dem Neigungssensor (engl. Tilt sensor oder Tiltswitch). Materialbeschaffung: www.funduinoshop.com

Dieser Sensor erkennt jedoch nur zwei Stufen, nämlich “geneigt” oder “nicht geneigt”. Dazu rollen im inneren des Sensors zwei frei bewegliche Metallkugeln umher. Sobald der Sensor so gekippt ist, dass eine der Kugeln im Inneren gegen die zwei Kontakte stößt, werden diese beiden Kontakte miteinander verbunden. Das ist dann so, als wäre ein Taster gedrückt, und der elektrische Strom kann von einem Kontakt zum anderen Kontakt fließen.

Daher ist der Sketch und der Aufbau sehr ähnlich, wie der Stetch mit dem Taster.

Im folgenden Bild erkennt man die Funktionsweise des Sensors mit den beiden Kugeln.

arduino-neigungssensor-schema

Wenn der Sensor wie auf diesem Bild senkrecht verwendet wird, beispielsweise wenn er einfach im Breadboard eingesteckt wird, ist der Stromkreis zwischen den beiden Kontakten geschlossen und der Strom kann von einem Kontakt zum anderen fließen. Sobald der Sensor jedoch um mehr als 45° geneigt wird, rollen die Kugeln von den beiden Kontakten weg und die Verbindung ist unterbrochen.

Aufbauskizze:

arduino-neigungssensor-aufbau-skizze
Fertig aufgebaut sieht dieses Beispiel dann so aus:

arduino-neigungssensor-aufbau-foto-klein

Aufgabe: Mit einem Neigungssensor soll eine LED eingeschaltet werden, sobald eine Neigung von mehr als 45° vorliegt

Material: Arduino / eine LED / Ein Widerstand mit 100 Ohm / Ein Widerstand mit 1K Ohm (1000 Ohm) / Breadboard / Kabel / Neigungssensor

Der Sketch:

int LED=6; //Das Wort „LED“ steht jetzt für den Wert 6.
int TILT=7; //Das Wort „TILT“ steht jetzt für den Wert 7 - Der Neigungssensor wird also an Pin7 angeschlossen
int NEIGUNG=0; //Das Wort „NEIGUNG“ steht jetzt zunächst für den Wert 0. Später wird unter dieser Variable gespeichert, ob eine Neigung von mehr als 45 Grad vorliegt oder nicht.

void setup() //Hier beginnt das Setup.
{
pinMode(LED, OUTPUT); //Der Pin mit der LED (Pin 6) ist jetzt ein Ausgang.
pinMode(TILT, INPUT); //Der Pin mit dem Neigungssensor (Pin 7) ist jetzt ein Eingang.
}

void loop()
{ //Mit dieser Klammer wird der Loop-Teil geöffnet.
NEIGUNG=digitalRead(TILT); //Hier wird der Pin7, also der Neigungssensor ausgelesen (Befehl:digitalRead). Das Ergebnis wird unter der Variable „NEIGUNG“ mit dem Wert „HIGH“ für 5Volt oder „LOW“ für 0Volt gespeichert. Wenn der Sensor gerade steht, kann der Strom zwischen beiden Kontakten des Sensors fließen. Es liegt dann am Pin7 eine Spannung an. Der Status wäre dann also “HIGH”. Wenn der Sensor 45 oder mehr Grad geneigt ist, kann kein Strom fließen und der Status wäre dann “LOW”.

if (NEIGUNG == HIGH) //Verarbeitung: Wenn der Sensor weniger als 45 Grad geneigt ist//Programmabschnitt des IF-Befehls öffnen.
digitalWrite(LED, LOW); //dann soll die LED nicht leuchten//Programmabschnitt des IF-Befehls schließen.
else //...ansonsten...//Programmabschnitt des else-Befehls öffnen.
digitalWrite(LED, HIGH); //...soll die LED leuchten.//Programmabschnitt des else-Befehls schließen.//Mit dieser letzten Klammer wird der Loop-Teil geschlossen.

 

Hier noch einmal der kompakte Sketch ohne Erklärungen:

 

int LED=6;
int TILT=7;
int NEIGUNG=0;
void setup()
{
pinMode(LED, OUTPUT);
pinMode(TILT, INPUT);
}

void loop()
{
NEIGUNG=digitalRead(TILT);

if (NEIGUNG == HIGH)
{
digitalWrite(LED, LOW);
}

else
{
digitalWrite(LED, HIGH);
}
}