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.
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.
hallo zusammen, was müsste ich machen damit ich den adxl345 mit einem dspic33 steuern kann danke
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.
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.