Arduino ADXL335 Accelerometer Tutorial: Bewegungsalarm bauen

Ich zeige dir heute, wie du mit einem Arduino ADXL335 Accelerometer einen intelligenten Bewegungsalarm baust, der bei Erschütterungen sofort reagiert und visuell warnt. Du lernst dabei, wie du einen 3-Achsen-Beschleunigungssensor ausliest und für praktische Anwendungen nutzt.

Ein Beschleunigungssensor (Accelerometer) misst Bewegungen und Lageänderungen in alle Raumrichtungen. Der ADXL335 ist perfekt für Einsteiger geeignet und ermöglicht spannende Projekte: vom einfachen Bewegungsalarm über Neigungssensoren bis hin zu Lage-Detektoren für interaktive Installationen. Ich führe dich Schritt für Schritt durch den Aufbau – von der einfachen Testschaltung bis zum vollständigen Alarmsystem mit einstellbarer Empfindlichkeit.

Materialliste: Das brauchst du für dein Projekt

Optional für Erweiterungen:


Sieh dir jetzt meinen neuen Arduino-Videokurs an: Jetzt ansehen!


  • Gehäuse für den fertigen Alarm
  • Externe Stromversorgung (Batterie oder Netzteil)
  • Piezo-Summer für akustischen Alarm

Technische Grundlagen: So funktioniert der ADXL335

Der ADXL335 Beschleunigungssensor im Detail

Der Arduino ADXL335 Accelerometer ist ein 3-Achsen-Sensor, der Beschleunigungen in alle Raumrichtungen (X, Y, Z) erfasst. Er arbeitet mit kapazitiver MEMS-Technologie und liefert analoge Ausgangssignale, die du direkt mit den Arduino-Analog-Pins auslesen kannst.

Wichtige Eigenschaften:

  • Messbereich: ±3g (dreifache Erdbeschleunigung)
  • Ausgangssignal: Analog, 0-1023 beim Arduino (bei 5V Referenz)
  • Ruhewerte: Liegen typisch bei ca. 512 (Mitte des Analogbereichs)
  • Betriebsspannung: 3.3V (wichtig: nicht 5V verwenden!)
  • Empfindlichkeit: Etwa 300mV/g

Funktionsprinzip unseres Bewegungsalarms

Ich habe das System so konzipiert, dass es in zwei Zuständen arbeitet:

1. Initialisierung: Beim Start speichert der Arduino die Ruhewerte aller drei Achsen. Diese dienen als Referenz.

2. Überwachungsmodus (State 0):

  • Die grüne LED leuchtet (System bereit)
  • Kontinuierlicher Vergleich der aktuellen Werte mit den Startwerten
  • Das Potentiometer regelt die Empfindlichkeit (0-10 Einheiten Abweichung)

3. Alarmzustand (State 1):

  • Bei Überschreitung des Schwellwerts: Alarm wird ausgelöst
  • Rote und blaue LED blinken abwechselnd
  • Grüne LED erlischt

4. Reset: Mit dem Taster beendest du den Alarm und kehrst zum Überwachungsmodus zurück.

Verkabelung: Vom Test zur fertigen Schaltung

Schritt 1: Einfache Testschaltung für den Sensor

Ich empfehle dir, zunächst nur den Sensor anzuschließen und die Rohwerte zu testen. So verstehst du, wie der ADXL335 reagiert.

Einfache Testschaltung für Arduino ADXL335 Accelerometer mit analogem Sensorausgang

ADXL335 an Arduino anschließen:

ADXL335 PinArduino PinHinweis
VCC3.3VWichtig: NICHT 5V!
GNDGNDMasse
X-AchseA2Analoger Eingang
Y-AchseA1Analoger Eingang
Z-AchseA0Analoger Eingang

Wichtiger Hinweis: Der ADXL335 darf nur mit 3.3V betrieben werden! Bei 5V riskierst du eine Beschädigung des Sensors. Verwende also unbedingt den 3.3V-Ausgang deines Arduino.

Mit dieser einfachen Schaltung kannst du zunächst die Sensorwerte im Serial Monitor beobachten und ein Gefühl für die Messwerte bekommen.

Schritt 2: Vollständiger Bewegungsalarm mit LEDs und Steuerung

Jetzt erweitern wir die Schaltung um die visuellen Indikatoren und Bedienelemente.

Komplette Schaltung für Arduino ADXL335 Bewegungsalarm mit LEDs, Taster und Potentiometer

LEDs mit Vorwiderständen (je 220Ω):

LED-FarbeArduino PinFunktion
GrünPin 11Statusanzeige (System bereit)
RotPin 7Alarmanzeige
BlauPin 3Alarmanzeige

Jede LED benötigt einen Vorwiderstand! Schließe die LEDs so an:

  • Längeres Bein (Anode) → über 220Ω Widerstand → Arduino Pin
  • Kürzeres Bein (Kathode) → GND

Taster anschließen:

  • Ein Pin des Tasters → Pin 2
  • Anderer Pin des Tasters → GND
  • (Optional: 10kΩ Pull-Up-Widerstand zwischen Pin 2 und 5V, wenn kein interner Pull-Up verwendet wird)

Potentiometer (Empfindlichkeitsregler):

  • Linker Pin → GND
  • Mittlerer Pin (Schleifer) → Analog Pin A3
  • Rechter Pin → 5V

Mit dem Potentiometer regelst du später die Empfindlichkeit des Alarms – von sehr sensibel bis zu relativ träge.

Der Code: Vom Test zum fertigen Alarmsystem

Code Teil 1: Sensor testen und verstehen

Bevor du das komplette Alarmsystem baust, empfehle ich dir diesen einfachen Testcode. Er gibt die Rohwerte des Arduino ADXL335 Accelerometer im Serial Monitor aus:

int accZPin=0;
int accYPin=1;
int accXPin=2;

void setup(){
  Serial.begin(9600);
}

void loop(){
  Serial.print(analogRead(accZPin));
  Serial.print("\t");
  Serial.print(analogRead(accYPin));
  Serial.print("\t");
  Serial.println(analogRead(accXPin));
  delay(10);
}

So verwendest du den Testcode:

  1. Lade den Code auf deinen Arduino hoch
  2. Öffne den Serial Monitor (Werkzeuge → Serieller Monitor oder Strg+Umschalt+M)
  3. Stelle die Baudrate auf 9600 ein
  4. Bewege und neige den Sensor in verschiedene Richtungen
  5. Beobachte, wie sich die Werte ändern
  6. Notiere dir die Ruhewerte bei unbewegtem Sensor

Du siehst drei Werte (durch Tabs getrennt): Z-Achse, Y-Achse und X-Achse. Typischerweise liegen die Ruhewerte zwischen 300 und 700, je nach Ausrichtung des Sensors zur Erdanziehung.

Code Teil 2: Kompletter Bewegungsalarm mit State-Machine

Jetzt kommt der vollständige Code für dein Alarmsystem. Ich habe eine State-Machine (Zustandsautomat) implementiert, die zwischen Überwachung und Alarm umschaltet:

int myState=0;
int greenLedPin=11;
int redLedPin=7;
int blueLedPin=3;
int buttonPin=2;
int potPin=3;
int accZPin=0;
int accYPin=1;
int accXPin=2;

int startAccZ;
int startAccY;
int startAccX;

void setup(){
  pinMode(greenLedPin,OUTPUT);
  pinMode(redLedPin,OUTPUT);
  pinMode(blueLedPin,OUTPUT);
  pinMode(buttonPin,INPUT);
  startAccZ=analogRead(accZPin);
  startAccY=analogRead(accYPin);
  startAccX=analogRead(accXPin);
}

void alertBlinking(){
  digitalWrite(redLedPin,HIGH);
  delay(50);
  digitalWrite(redLedPin,LOW);
  delay(100);
  digitalWrite(blueLedPin,HIGH);
  delay(50);
  digitalWrite(blueLedPin,LOW); 
  delay(100);  
}

boolean senseAcceleration(int myPotVal){
  boolean myReturn=false;
  myPotVal=map(myPotVal,0,1023,0,10);
  if (analogRead(accXPin)>startAccX+myPotVal) myReturn=true;
  if (analogRead(accYPin)>startAccY+myPotVal) myReturn=true;
  if (analogRead(accZPin)>startAccZ+myPotVal) myReturn=true;
  return myReturn;
}

void loop(){
  //alertBlinking();
  switch (myState){
  case 0: //idle
    if (senseAcceleration(analogRead(potPin))==true) {
      digitalWrite(greenLedPin,LOW);
      myState=1;
    } else {
      digitalWrite(greenLedPin,HIGH);    
    };
    break;
  case 1: // alert
    alertBlinking();
    if (digitalRead(buttonPin)==HIGH){
      myState=0;
    }
    break;
  }
  delay(10);
}

Code-Erklärung: So funktioniert das Programm

Setup-Phase:

  • Alle Pins werden als Ein- oder Ausgänge konfiguriert
  • Die Startwerte aller drei Achsen werden gespeichert (Referenzwerte)
  • Diese Werte dienen als Basis für die Bewegungserkennung

State 0 (idle = Überwachungsmodus):

  • Grüne LED leuchtet kontinuierlich (System bereit)
  • senseAcceleration() prüft permanent, ob eine Bewegung erkannt wird
  • Bei Bewegung: Wechsel zu State 1, grüne LED erlischt

State 1 (alert = Alarmzustand):

  • alertBlinking() lässt rote und blaue LED abwechselnd blinken
  • System bleibt in diesem Zustand, bis du den Taster drückst
  • Nach Tastendruck: Rückkehr zu State 0

Die Funktion senseAcceleration():

  • Empfängt den Potentiometer-Wert (0-1023)
  • Mapped diesen auf 0-10 (Schwellwert in Analogwert-Einheiten)
  • Vergleicht alle drei Achsen mit ihren Startwerten
  • Gibt true zurück, wenn mindestens eine Achse den Schwellwert überschreitet

Empfindlichkeitsregelung:

Mit dem Potentiometer stellst du ein, wie stark eine Bewegung sein muss:

  • Ganz links (0): Extrem empfindlich, reagiert auf kleinste Erschütterungen
  • Ganz rechts (10): Weniger empfindlich, nur bei deutlichen Bewegungen

Inbetriebnahme und Test

So testest du dein System:

  1. Stromversorgung herstellen: Schließe den Arduino an
  2. Warten: Lass das System 2-3 Sekunden ruhen (Initialisierung)
  3. Grüne LED prüfen: Sollte leuchten (System bereit)
  4. Empfindlichkeit einstellen: Drehe am Potentiometer
  5. Bewegung testen: Bewege das Breadboard oder tippe darauf
  6. Alarm prüfen: Rote/blaue LEDs sollten blinken
  7. Reset testen: Drücke den Taster – grüne LED sollte wieder leuchten

Troubleshooting: Häufige Probleme

Problem: Alarm löst ständig aus

  • Lösung: Empfindlichkeit mit Potentiometer reduzieren (nach rechts drehen)
  • Oder: Sensor benötigt stabilere Montage

Problem: Sensor reagiert gar nicht

  • Prüfe die 3.3V-Verbindung (nicht 5V!)
  • Kontrolliere alle Kabelverbindungen
  • Teste mit dem einfachen Serial-Monitor-Code die Rohwerte

Problem: LEDs blinken nicht

  • Prüfe Polarität der LEDs (langes Bein = Plus)
  • Kontrolliere, ob Vorwiderstände vorhanden sind
  • Teste LEDs einzeln mit einem einfachen Blink-Sketch

Problem: Taster funktioniert nicht

  • Prüfe Pin-Zuordnung (Pin 2?)
  • Teste mit Serial.println(digitalRead(buttonPin))
  • Eventuell Pull-Up-Widerstand ergänzen

Praktische Anwendungsideen für dein Arduino ADXL335 Accelerometer

Mit diesem Grundprojekt hast du die Basis für zahlreiche praktische Anwendungen:

Sicherheit & Überwachung:

  • Diebstahlschutz für Laptop, Fahrrad oder Motorrad
  • Erschütterungsdetektor für empfindliche Geräte oder Kunstwerke
  • Türalarm: Erkennt Öffnen durch Vibration

Technik & Monitoring:

  • Neigungswarner für Regale oder Möbel (Kippgefahr)
  • Maschinenüberwachung: Erkennt ungewöhnliche Vibrationen
  • Transport-Logger: Dokumentiert Erschütterungen beim Versand

Sport & Fitness:

  • Einfacher Bewegungszähler für Trainingseinheiten
  • Schrittzähler (mit Optimierung der Erkennungslogik)
  • Haltungstrainer (warnt bei falscher Neigung)

Interaktive Projekte:

  • Klopf-Sensor für Smart-Home-Steuerung
  • Musikinstrument: Erzeugt Töne durch Bewegung
  • Gaming-Controller mit Neigungssteuerung

Mögliche Erweiterungen für Fortgeschrittene

Ich zeige dir einige Ideen, wie du das Projekt ausbauen kannst:

1. Akustischer Alarm mit Piezo-Summer

Ergänze einen Piezo-Buzzer für hörbaren Alarm:

  • Piezo an Pin 8 und GND anschließen
  • In alertBlinking() zusätzlich tone(8, 1000, 50) einfügen
  • Verschiedene Töne für verschiedene Bewegungsintensitäten

2. Achsenspezifische Empfindlichkeit

Statt einem Potentiometer drei verwenden:

  • Jede Achse bekommt eigenen Schwellwert
  • Ermöglicht Reaktion nur auf bestimmte Bewegungsrichtungen
  • Nützlich für Neigungswarner (nur Z-Achse überwachen)

3. Datenlogger mit SD-Karte

Dokumentiere alle Alarmereignisse:

  • SD-Kartenmodul hinzufügen
  • Zeitstempel und Sensorwerte speichern
  • Analysiere später Bewegungsmuster

4. LCD-Display für Echtzeit-Feedback

Zeige Sensorwerte und Status an:

  • 16×2 oder 20×4 LCD-Display integrieren
  • Aktuelle Werte aller drei Achsen anzeigen
  • Schwellwert und Empfindlichkeit visualisieren
  • Hilfreich beim Kalibrieren

5. Unterschiedliche Alarmmuster

Implementiere verschiedene Alarmstufen:

  • Kleine Bewegung: Nur gelbe LED
  • Mittlere Bewegung: Blaues Blinken
  • Starke Bewegung: Rotes Blinken + Piezo
  • Verwendung von Intensitätsstufen

6. Kalibrierungs-Button

Füge einen zweiten Taster hinzu:

  • Drücken speichert neue Referenzwerte
  • Ermöglicht Rekalibrierung ohne Neustart
  • Nützlich bei Positionsänderungen des Sensors

Fazit: Dein Einstieg in die Sensorwelt

Mit diesem Arduino ADXL335 Accelerometer Tutorial hast du gelernt:

✅ Wie du einen 3-Achsen-Beschleunigungssensor anschließt und ausliest
✅ Die Implementierung einer State-Machine für Zustandsverwaltung
✅ Schwellwert-basierte Sensordatenverarbeitung mit variabler Empfindlichkeit
✅ Kombination mehrerer Eingabe- und Ausgabekomponenten in einem System
✅ Praktische Anwendung analoger Sensoren für Bewegungserkennung

Der ADXL335 ist ein vielseitiger Sensor, der dir den Einstieg in die Welt der Bewegungserkennung ermöglicht. Du hast nicht nur ein funktionierendes Alarmsystem gebaut, sondern auch die Grundlagen verstanden, um eigene kreative Projekte zu entwickeln.

Wichtige Tipps für deine weiteren Projekte:

🔧 Betriebsspannung: Verwende immer 3.3V für den ADXL335, niemals 5V!
🔧 Montage: Der Sensor benötigt eine stabile Plattform für zuverlässige Messungen
🔧 Kabelführung: Halte die Kabel zum Sensor kurz, um elektrische Störungen zu minimieren
🔧 Kalibrierung: Lass das System nach dem Start 2-3 Sekunden ruhen
🔧 Empfindlichkeit: Starte mit niedriger Empfindlichkeit und steigere sie schrittweise

Ich hoffe, dieses Tutorial hat dir geholfen, die Möglichkeiten des Arduino ADXL335 Accelerometer kennenzulernen. Experimentiere mit verschiedenen Einstellungen, erweitere das Projekt nach deinen Vorstellungen und hab Spaß beim Bauen!

Wenn du Fragen hast oder deine Erweiterungen teilen möchtest, hinterlasse gerne einen Kommentar. Viel Erfolg mit deinem Bewegungsalarm-Projekt!


Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book »Arduino Projekte Volume 1« an!

  • Die beliebtesten Arduino-Projekte von StartHardware
  • Inklusive Schaltplan, Beschreibung und Code
  • Arduino-Schnellstart-Kapitel
  • Kompakter Programmierkurs


0 0 votes
Article Rating
3 Comments
Newest
Oldest Most Voted
Inline Feedbacks
Alle Kommentare anzeigen
11 Jahre zuvor

Magnificent beat ! I wish to apprentice while you amend your site, how could i subscribe for
a blog web site? The account helped me a acceptable deal.

I had been tiny bit acquainted of this your broadcast provided bright clear concept

14 Jahre zuvor

@Lukas: Der Serielle Monitor zeigt Daten an, die über die serielle Schnittstelle gesendet werden. :)

https://www.starthardware.org/2010/06/arduino-software/

Lukas
14 Jahre zuvor

voll genial das Tutorial aber was genau ist ein Serial-Moitor?