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
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
Hi, hab vor kurzem erst rumexperimentier mit denen! Sieh dir doch mal die AP http://www.analog.com/UploadedFiles/Application_Notes/320058905AN604.pdf an, da ist das Auslesen erklärt! Prinzipiell kannst du den Duty Cycle Messen oder das Analog Signal direkt mit dem AD Wandler messen! mfg
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
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.