Hallo,
ich habe ein Verständnis Problem.
Ich möchte mit einem Digital Accelerometer ADXL345 die Beschleunigung
eines Leiterwagens messen.
Ich habe mir einen solchen IC besorgt und eine Leiterplatte angefertigt.
Und nach dem lesen des Datenblatts lese ich diesen Sensor jetzt aus.
Die Software funktioniert soweit das ich jedes Register lesen und
schreiben kann. Wenn die Platine mit dem Sensor drehe bekomme ich aus
den Registern für die X Y Z Achse einen wert zwischen 1 und -1.
Nun zu meinem Verständnis Problem.
Als erstes was sagt dieser Wert in den X Y Z Registern aus (welche
Einheit)?
Und zum zweiten noch viel wichtiger wie komme ich zur Beschleunigung?
Hoffe ich habe alle notwendigen Fakten beschrieben damit ihr mir helfen
könnt!
Vielen Dank
für Eure Hilfe
Labrador
labrador schrieb:> Wenn die Platine mit dem Sensor drehe bekomme ich aus> den Registern für die X Y Z Achse einen wert zwischen 1 und -1.
Der Sensor misst auch die Erdbeschleunigung, also das "Gewicht".
Beschleunigung und Gravitation sind nicht unterscheidbar.
Wenn der Sensor ohne daß du ihn beschleunigst hier -1 bis 1 liefert,
dann ist der Wert wohl auf die Erdbeschleunigung (9,81m/s²) normiert.
Das sollte dir aber das Datenblatt sagen.
labrador schrieb:> Und zum zweiten noch viel wichtiger wie komme ich zur Beschleunigung?
Bei z.B. ±16g und 10 bit Auflösung entspircht ein LSB 32g/2^10
1g=9.81m/s²
Udo Schmitt schrieb:> Der Sensor misst auch die Erdbeschleunigung, also das "Gewicht".> Beschleunigung und Gravitation sind nicht unterscheidbar.> Wenn der Sensor ohne daß du ihn beschleunigst hier -1 bis 1 liefert,> dann ist der Wert wohl auf die Erdbeschleunigung (9,81m/s²) normiert.
Ja und was heißt das für mich?
ich bin leider auf diesen Gebiet ein totaler Neuling!
Labrador
Drehe z.B. die x-Richtung zum Erdmittelpunkt.
Das Ausgangssignal entspricht dann 9,81m/s^2.
Das ist dann die Eichung deines Gerätes.
(Abweichungen am Äquator u.ä. möchte ich hier nicht vertiefen.)
Danach diese Achse in die Bewegungsrichtung und dabei genau senkrecht
zur Erdbeschleunigung stellen und das Ergebnis entsprechend umrechnen.
Joe
labrador schrieb:> Und zum zweiten noch viel wichtiger wie komme ich zur Beschleunigung?
Die Daten, die der Sensor ausgibt, sind die Beschleunigung in den drei
Raumrichtungen - welche steht im Datenblatt. Das was du dort mißt, ist
die Erdbescheschleunigung. Wenn du dich damit auf dem Frühlingsfest mit
dem Schlitten vom Freifallturm in die Tiefen fallen läßt, ist die
Vektorsumme bis auf den im Datenblatt angegebenen Offset nahezu 0. Und
die Einheit findest du - man will es kaum glauben - auch im Datenblatt.
labrador schrieb:> Ja und was heißt das für mich?> ich bin leider auf diesen Gebiet ein totaler Neuling!
Dass du dich erst mal mit den physikalischen Gesetzen auseinandersetzen
musst, bevor du sinnvolle Ergebnisse erhältst, die du auch verstehst.
Wenn der Wagen waagrecht beschleunigt wird, dann wird der Sensor dir die
senkrechte Erdbeschleunigung ausgeben und zusätzlich die
Vektorkomponenten der horizontalen Beschleunigung je nachdem wie du
deinen Sensor gedreht hast.
Im Idealfall z.B. in X Richtung deine Beschleunigung, wenn der Sensor
genau so gedreht ist daß seine X Achse in die Beschleunigungsrichtung
zeigt.
Willst du deinen Wert (der wohl in Erdbeschleunigung = g ausgegeben
wird) in m/s² umrechnen, dann musst du ihn mit 9,81m/s² multiplizieren.
Max H. schrieb:> Bei z.B. ±16g und 10 bit Auflösung entspircht ein LSB 32g/2^10> 1g=9.81m/s²
Entschuldige mich bitte aber ich bin etwas verwirrt.
Mit LSB ist least significant bit gemeint?
wie kommst du bei ±16g auf 32g/2^10?
ich verstehe diesbezüglich das Datenblatt nicht!
nufy schrieb:> Die Daten, die der Sensor ausgibt, sind die Beschleunigung in den drei> Raumrichtungen - welche steht im Datenblatt. Das was du dort mißt, ist> die Erdbescheschleunigung. Wenn du dich damit auf dem Frühlingsfest mit> dem Schlitten vom Freifallturm in die Tiefen fallen läßt, ist die> Vektorsumme bis auf den im Datenblatt angegebenen Offset nahezu 0. Und> die Einheit findest du - man will es kaum glauben - auch im Datenblatt.
Ach so ich hatte verstanden das die die Winkel wären!
Ich glaube ich habe mich etwas unglücklich ausgedrückt ich möchte
erkennen wenn der Leiterwagen in Bewegung gerät, praktisch der Moment
wenn der Leiterwagen vom stand in Bewegung wechselt. ist das möglich?
Udo Schmitt schrieb:> Dass du dich erst mal mit den physikalischen Gesetzen auseinandersetzen> musst, bevor du sinnvolle Ergebnisse erhältst, die du auch verstehst.
Ja das sehe ich ein welche Literatur kannst Du mir empfehlen?
Vielen Dank für Eure Hilfe und Geduld
Labrador
labrador schrieb:> Mit LSB ist least significant bit gemeint?
Ja
> wie kommst du bei ±16g auf 32g/2^10?
±16g Entspricht einem Bereich von 32g, dieser Wird bei 10bit in 2^10
Stufen geteilt.
labrador schrieb:> Ich glaube ich habe mich etwas unglücklich ausgedrückt ich möchte> erkennen wenn der Leiterwagen in Bewegung gerät, praktisch der Moment> wenn der Leiterwagen vom stand in Bewegung wechselt.
Kannst du nur mit Beschleunigungssensoren nicht erkennen. Wenn der Wagen
sich mit einer gleichförmigen Geschwindigkeit bewegt erfährt er auch
keine Beschleunigung und du kannst den Zustand nicht von dem eines
stehenden Wagens unterscheiden.
labrador schrieb:> Ja das sehe ich ein welche Literatur kannst Du mir empfehlen?
Physikbücher für Mittel und Oberstufe. Internet. Physikvideos.
Such z.B. mal nach "physik beschleunigung videos" auf google.
Max H. schrieb:> ±16g Entspricht einem Bereich von 32g, dieser Wird bei 10bit in 2^10> Stufen geteilt.
Schade auf mein Haupt!!!!
So wie du das jetzt erklärst absolut logisch!
Danke
Wenn der Wagen steht, dann kannst du erkennen ob er beschleunigt wird.
Die Geschwindigkeit selbst kannst du über eine Integration oder
Summation der Beschleunigungswerte annähernd berechnen WENN du eben die
Anfangsbedingung (Wagen ruht) hast.
Eine Bewegung könntest du z.B. über mehrere Messungen des Standorts via
GPS erkennen und auch messen.
Udo Schmitt schrieb:> Wenn der Wagen steht, dann kannst du erkennen ob er beschleunigt wird.
Ja das würde mir reichen!
Ich muß nur erkennen das der Wagen nicht mehr steht!
Ist das mit so einem Sensor möglich?
Wenn ja wie?
Danke und LG
Labrador
Udo Schmitt schrieb:> Die Geschwindigkeit selbst kannst du über eine Integration oder> Summation der Beschleunigungswerte annähernd berechnen WENN du eben die> Anfangsbedingung (Wagen ruht) hast.
Mit so eine billigem Beschleunigungssensor würde ich mir keine guten
Ergebnisse erwarten.
labrador schrieb:> Ich muß nur erkennen das der Wagen nicht mehr steht!> Ist das mit so einem Sensor möglich?
Der Sensor kann stillstand nicht von konstanter Geschwindigkeit
unterscheiden.
Alternativvorschlag: Man könnte eine Magneten an einem Rad anbringen und
diesen mit einem Reedkontakt auswerten, wie bei einem Fahrradtacho.
Max H. schrieb:> Alternativvorschlag: Man könnte eine Magneten an einem Rad anbringen und> diesen mit einem Reedkontakt auswerten, wie bei einem Fahrradtacho.
Nein das wäre zwar einfach und würde sicher auch funktionieren aber ist
in diesem Fall nicht geeignet.
Udo Schmitt schrieb:> Kannst du nur mit Beschleunigungssensoren nicht erkennen. Wenn der Wagen> sich mit einer gleichförmigen Geschwindigkeit bewegt erfährt er auch> keine Beschleunigung und du kannst den Zustand nicht von dem eines> stehenden Wagens unterscheiden.
Mit den physikalischen Gesetzen kennst du dich anscheinend aus. Leider
(oder zum Glück) sieht die Praxis anders aus.
Ob der Wagen fährt oder steht, erkennt man am Rauschen der Daten. Man
muss nur dafür sorgen, dass der Sensor halbwegs fest und in der Nähe
eine Achse mit dem Fahrzeugchassi verbunden ist. Die Straßenunebenheiten
sorgen beim Fahren für genügend gut erkennbare Schwankungen in den
Sensordaten.
Mike schrieb:> Ob der Wagen fährt oder steht, erkennt man am Rauschen der Daten. Man> muss nur dafür sorgen, dass der Sensor halbwegs fest und in der Nähe> eine Achse mit dem Fahrzeugchassi verbunden ist. Die Straßenunebenheiten> sorgen beim Fahren für genügend gut erkennbare Schwankungen in den> Sensordaten.
Was passiert beim mit den Werten beim losfahren?
vielen Dank für Deine Hilfe!
labrador schrieb:> Nein das wäre zwar einfach und würde sicher auch funktionieren aber ist> in diesem Fall nicht geeignet.
Ist es Mechanisch nicht möglich?
labrador schrieb:> Ich möchte erreichen das mein MC aufwacht wenn ich den Wagen in Bewegung> versetze!
Der ADXL345 hat eine Activity Interrupt, mit dem er den µC wecken
könnte:
> Activity> The activity bit is set when acceleration greater than the value stored> in the THRESH_ACT register (Address 0x24) is experienced on any> participating axis, set by the ACT_INACT_CTL register (Address 0x27)
Was soll das werden? Ein µC der irgendwelche Suffmusik spielt, wenn ihr
mit eurem Leiterwagen in den Mai zieht? :-)
Wenn du mit Leiterwagen einen ungefederten Holzkarren meinst, dann musst
du nur alle 3 Werte überwachen, sobald mindestens einer davon anfängt
wild rumzuzappeln dann bewegt sich der Wagen, da er ungefedert auf
Speichenrädern läuft hast du ständig jede Menge recht kräftige
Erschütterungen.
Probiers einfach mal aus.
Max H. schrieb:>> Activity>> The activity bit is set when acceleration greater than the value stored>> in the THRESH_ACT register (Address 0x24) is experienced on any>> participating axis, set by the ACT_INACT_CTL register (Address 0x27)
Mein Englisch ist nicht besonders gut aber das klingt vielversprechend!
Muß mir das etwas genauer durchlesen und versuchen es zu verstehen!
Danke
für deine Hilfe
labrador schrieb:> Was passiert beim mit den Werten beim losfahren?
Da wird es etwas kräftiger rucken und in den Daten werden entsprechende
Peaks sichtbar - das kommt auf den Fahrer an.
Außerdem wird die "nach hinten"-Komponente während der
Beschleunigungsphase systematisch vom 0-Rauschen abweichen.
wenn du den Sensor richtig orientierst muss dir ein Ausgang die 1 (oder
-1) zeigen (Erdbeschleunigung) und die anderen beiden Ausgänge 0 (System
ist in Ruhe). Wenn der Wagen anfährt wirst du auf einem der beiden
anderen Ausgänge etwas ungleich Null sehen ==> Wagen hat beschleunigt.
Das müsstest du auf jeden Fall durch Setzen eines Schwellewerts, der
überschritten werden muss,so einstellen können, dass man das Anfahren
erkennt. Die Höhe der tatsächlichen Beschleunigung ist dir ja
offensichtlich egal, du brauchst sie erst gar nicht auszurechnen.
Fährt der Wagen dann mit konstanter Geschwindigkeit gehen idealerweise
die beiden Horizontalsensoren wieder auf 0. Den Zustand kannst du dann
von Ruhe nicht unterscheiden.
Evtl. läuft aber der Leiterwagen nicht ganz rund und die
Beschleunigungssensoren geben konstanntes kleines Signal ab. Dann
könntest du das Fahren doch detektieren.
Fahr also mal den Leiterwagen mit unterschiedlichen Fahrzuständen und
protokolier die 3 Beschleunigungswerte oder besser Messwerte. Dann wirst
du schon sehen, ob du "Wagen in Ruhe", "Wagen angefahren" und "Wagen in
Bewegung" voneinander unterscheiden kannst.
Gerhard
Gerhard Z. schrieb:> Fahr also mal den Leiterwagen mit unterschiedlichen Fahrzuständen und> protokolier die 3 Beschleunigungswerte oder besser Messwerte. Dann wirst> du schon sehen, ob du "Wagen in Ruhe", "Wagen angefahren" und "Wagen in> Bewegung" voneinander unterscheiden kannst.
Ja das klingt vernünftig!
Danke