Tilt sensor ADXL335 with Arduino

FunduinoLast updated on

Lage und Beschleunigung in drei Achsen messen

Ein Beschleunigungssensor misst, in welche Richtung etwas gezogen oder geschoben wird. Weil auch die Erdanziehung eine solche Kraft ist, verrät er zugleich, wie er selbst im Raum liegt – genau das nutzen Smartphones, um den Bildschirm zu drehen.

Der ADXL335 auf dem Modul GY-61 macht das für drei Achsen gleichzeitig und braucht dafür keine Bibliothek: Er gibt seine Werte als Spannung aus, die du direkt an den analogen Eingängen ausliest.

Kleine Platine GY-61 mit dem ADXL335-Sensorchip
Das Modul GY-61 mit dem Beschleunigungssensor ADXL335
Beschleunigungssensor mit fünf Leitungen am Mikrocontroller
Der Sensor am Mikrocontroller – im Foto an einem MEGA2560, die Anschlüsse sind beim UNO dieselben
1 / 2

Material

Für dieses Projekt brauchst du:

  • 1× Mikrocontroller mit passendem USB-Kabel
  • 1× Beschleunigungssensor ADXL335 auf dem Modul GY-61
  • 5× Steckkabel männlich/weiblich

Was der Sensor misst

Der ADXL335 misst Beschleunigung – und zwar in drei Richtungen gleichzeitig: entlang der x-, der y- und der z-Achse. Weil auch die Erdanziehung eine Beschleunigung ist, verrät er damit zugleich, wie das Modul im Raum liegt.

Für jede Achse gibt es einen eigenen analogen Ausgang. Kippst du das Modul, steigt die Spannung an der einen Achse und fällt an der anderen. Der Arduino liest diese drei Spannungen an seinen analogen Eingängen ein – eine Bibliothek brauchst du dafür nicht.

Kleine Platine GY-61 mit dem ADXL335-Sensorchip
Das Modul GY-61 mit dem Beschleunigungssensor ADXL335

Aufbau

Das Modul braucht fünf Leitungen:

  • VCC → 5V
  • GND → GND
  • X → analoger Eingang A0
  • Y → analoger Eingang A1
  • Z → analoger Eingang A2

Auf dem Modul GY-61 sitzt ein eigener Spannungsregler, deshalb darf es an 5V. Das Foto zeigt den Aufbau an einem MEGA2560 – am UNO sind die Anschlüsse dieselben.

Beschleunigungssensor mit fünf Leitungen am Mikrocontroller
Der Sensor am Mikrocontroller – im Foto an einem MEGA2560, die Anschlüsse sind beim UNO dieselben

Die Werte auslesen

Lade den Sketch hoch und öffne den Seriellen Monitor mit 9600 Baud. Dort erscheinen drei Zahlen nebeneinander: x, y und z.

Liegt das Modul flach auf dem Tisch, pendeln sich x und y bei ungefähr 335 ein. Kippst du es entlang einer Achse, wird der zugehörige Wert größer oder kleiner. Genau daraus lässt sich später eine Bedingung bauen – zum Beispiel ein Alarm, wenn etwas umkippt.

Warum 335 und nicht 512? Der Sensorchip arbeitet intern mit 3,3 Volt und gibt in Ruhelage die Hälfte davon aus, also rund 1,65 Volt. Der Arduino rechnet aber gegen 5 Volt um – und 1,65 von 5 Volt ergeben eben ungefähr 335 statt 512. Dein eigener Wert kann je nach Modul etwas abweichen; lies ihn einmal in Ruhelage ab und rechne von dort aus weiter.

Serieller Monitor mit drei Zahlenspalten für x, y und z
Die drei Achsenwerte im Seriellen Monitor
Sketch: Die drei Achsen auslesen
int x = 0;  // Variable fuer den Sensorwert der x-Achse
int y = 0;  // Variable fuer den Sensorwert der y-Achse
int z = 0;  // Variable fuer den Sensorwert der z-Achse

void setup()
{
  Serial.begin(9600);  // Serielle Verbindung fuer den Seriellen Monitor starten
}

void loop()
{
  x = analogRead(A0);  // Auslesen des Sensorwertes der x-Achse
  y = analogRead(A1);  // Auslesen des Sensorwertes der y-Achse
  z = analogRead(A2);  // Auslesen des Sensorwertes der z-Achse

  Serial.print(x);
  Serial.print("    ");   // Vier Leerzeichen als Trenner
  Serial.print(y);
  Serial.print("    ");
  Serial.println(z);      // println erzeugt zusaetzlich einen Zeilenumbruch

  delay(100);             // Wartezeit zwischen den Ausgaben
}
Rate the instructions

Comments

Ask a question or share an experience

Contact us if something doesn’t work. Please include your board and the error message.

We review every comment before publication. Your email address remains with us.