Nr.09 – Arduino Neigungssensor SW-520D

Inhaltsverzeichnis

Mit dem Arduino einen Neigungssensor SW-520D auslesen

Arduino Neigungssensor SW520D

Mit dem Arduino lassen sich auf verschiedene Art und Weise 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). 

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 fast identisch, wie der Sketch mit dem Taster.

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

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.

Der Schaltplan

Der Programmcode

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

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.

Funduino - Dein Onlineshop für Mikroelektronik

  • Dauerhaft 10% Rabatt für Schüler, Studenten und Lehrkräfte
  • Mehr als 3.500 Artikel sofort verfügbar!
  • Über 8 Jahre Erfahrung mit Arduino, 3D-Druck und co.
SALE