mikrocontroller.net

Forum: Projekte & Code Beschleunigungssensor ADXL345 in C via TWI, Hard- oder Software-SPI konfigurieren/auslesen


Autor: Michael S. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo allerseits,

um den Einstieg in die Arbeit mit dem Beschleunigungssensor ADXL345 zu 
erleichtern, stelle ich hier einige Funktionen in C in die Codesammlung.

Der Sensor verfügt über eine TWI- und eine SPI-Schnittstellen.

Es sind die Funktionen vorbereitet, um wahlweise über eine der beiden
Schnittstellen auf den ADXL zuzugreifen.
Die SPI-Schnittstelle wiederum kann alternativ als Hardware- oder 
Software-SPI eingesetzt werden (für beide Varianten ist die 4-wire 
Lösung implementiert).

Die Daten des ADXL werden über die serielle Schnittstelle ausgegeben.
Im Debug-Modus werden beim Programmstart die aktuellen Werte der 
Register ebenfalls über die serielle Schnittstelle protokolliert.

Für erste Tests sind drei Testmodi implementiert, die in der global.h 
eingestellt werden.

Das ausführbare Programm hat eine Größe von ca 2.300 Byte, kann aber 
durch Entfernen von überflüssigen Debug-Ausgaben noch reduziert werden.

Ich war bemüht, den Programmcode zu dokumentieren.
Die Arbeitsweise des ADXL kann ich hier nicht beschreiben, ein 
ausgiebiges Studium des Datenblattes ist unvermeidlich.


Viel Spaß beim beschleunigen,

Michael S.

Autor: Michael S. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo allerseits,

hier ist noch einmal eine kleine praktische Anwendung in C für den ADXL 
als Alarmgeber, der bei Bewegung einen akustischen Alarm auslöst (z.B. 
zur Diebstahlabschreckung bei einem geparkten Fahrrad).

Der Sensor reagiert auf Lageveränderungen und weckt den angeschlossenen 
Controller.
Der gibt bis zum Ende des Alarms ein Alarmsignal auf einem Summer aus - 
und kann selbstverständlich auch noch andere Schaltvorgänge initieren.
Nach Ablauf einer weiteren optionalen Verzögerung geht der Controller 
wieder in den power-down-Modus.

Der Programmcode ist kleiner als 2K, die Kommunikation zum ADXL erfolgt 
via Hardware-SPI.
Im Beispiel wird ein ATMega48 mit 3.686400Hz XTAL verwendet.
Wenn das Debuggen über die serielle Schnittstelle nicht (mehr) benötigt 
wird, kann jeder beliebige ATTiny mit mindestens 2K-SRAM als Controller 
eingesetzt werden.

Der ADXL und der Controller haben zusammen eine gemessene 
Ruhestromaufnahme von ca. 100uA (bei 3.3V) bzw. ca. 40uA (bei 2.5V).
Ein Batteriebetrieb ist damit möglich.


Michael S.

Autor: samsung (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo zusammen,

was müsste ich machen damit ich den adxl345 mit einem dspic33 steuern 
kann


danke

Autor: Michael S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zuerst klären, über welche Schnittstellen (TWI/SPI) dein Controller 
verfügt.
SPI kann man im Zweifelsfall auch in Software implementieren.

Dann entscheiden, über welche Schnittstelle mit dem ADXL345 kommuniziert 
werden soll - und die erforderliche Software entwickeln oder aus den 
üblichen Quellen kopieren.

Dann kommt der ADXL-spezifische Teil der Übung, der ADXL will nämlich 
konfiguriert werden.
Dazu gibt es eine Reihe von Registern, über die sein Verhalten gesteuert 
wird.

Am besten wäre, das Datenblatt (insbesondere die Registerbeschreibung) 
zu lesen.
Dann fällt dir auf, wie sich welche Fähigkeiten des Sensors für deine 
Zwecke einsetzen lassen.

Schließlich bleibt die Frage, wie der ADXL mit dir kommunizieren soll:
- soll er sich melden, wenn definierte Grenzwerte überschritten wurden 
(Stichwort Interrupt) ?
- soll er permanent Beschleunigungswerte bereitstellen, die von dir 
regelmäßig ausgelesen und interpretiert werden ?

Hier gibt es eine Vielzahl von Möglichkeiten.
Nur du kannst entscheiden, welcher Weg für deine Aufgabenstellung die 
optimale Lösung darstellt.

Michael S.

Autor: Seb Astian (mbauer79)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tachchen,

ich hätte mal ein paar Fragen zum Code.

Ich habe einen Mega32 und nen ADXL345 dran. allerdings über TWI.

Deinen Code bekomm ich damit nich zum laufen :( .

Schöne Grüße

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.