Beschleunigungssensor ADXL 202 auslesen

Gast #262576
Lesenswert?
• ▲
▼
Hallo Experten,

ich möchte mit einem Beschleunigungssensor ADXL202 die Beschleunigung
messen und auf einem LC - Display ausgeben. Als Mikrocontroller
verwende ich einen ATmega8. Als Programmierumgebung verwende ich WIN
AVR zum schreiben des Codes und zur Erstellung des HEX Files, welches
ich mit PonyProg2000 auf den Mikrocontroller lade. Ich brauche nun den
Code, mit dem ich das digitale Signal des Beschleunigungssensor
auslesen kann. Die Initialisierungsroutine für das Display habe ich
bereits geschrieben, d.h. ich kann bereits Zahlen oder Wörter auf dem
LC - Display ausgeben. Allerdings weiß ich jetzt nicht mehr weiter.
Vielleicht kann mir jemand einen Tipp geben oder vielleicht hat ja
jemand schon einmal so etwas ähnliches gemacht. Ich wäre sehr dankbar,
wenn ich dann denn Code erhalten könnte!!


mfg Hans
Gast #262577
Lesenswert?
• ▲
▼
Hallo Hans,

ich hab zwar noch nichts mit dem AVR und dem ADXL 202 gemacht (obwohl
ich bei Ebay mal welche von den ADXL ersteigert hatte *gg).
Hab in den Datenblättern meine ich gesehen das die Teile ein PWM-Signal
abgeben. Die Pulsweite ist der jeweilige Beschleunigungswert.
Mit diesen beiden PWM Signalen (X/Y) würde ich auf zwei
Interruptleitungen gehen und die jeweilige Pulslänge über einen Timer
messen.
Dann solltest du die Beschleunigungswerte erhalten.
Hatte damals mal (als die Dinger rauskamen) ein Demo von Analog Devices
bei uns an der FH gesehen. Die Teile sind eigentlich recht akkurat.
Kann man bestimmt witzige Sachen mit machen. Sag mal bescheid wenns
klappt und wie genau die Teile sind.

Gruß
Rene
Gast #262579
Lesenswert?
• ▲
▼
Du solltest drei Programmschritte vorsehen:


1.) messen der Frequenz der PWM, das musst du nur periodisch
durchführen da der Temeraturdrift des ADXL sehr gering ist. Du brauchst
abr die Frequenz

2.) permanentes messen des Dutycycles vom X und Y Kanal.

3.) Kalibrierungswerte ermitteln, dies machst du nur einmalig
undspeicherst dann die gemessenen Werte im EEPROM. Dabei legst du den
ADXL zb in der X Achse so das diese in Richtung Erde zeigt. Diu misst
den Dutycycle der X-Achse. Danach drehst du den ADXL um 180 Grad so das
die X Achse wiederum in Richtung Erde zeigt. Du hast nun zwei Werte
gemeseen für die X Achse, addiere sie und teile sie duch 2 und schon
hast du den Nullpunkt der X Achse ermittelt. Dein Duty kann also nun
+-12.5 % von diesem Nullpunkt abweichen. Das gleiche machst du auch mit
der Y-Achse.

Gruß Hagen

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.