Forum: Mikrocontroller und Digitale Elektronik Beschleunigung von Leiterwagen messen


von labrador (Gast)


Lesenswert?

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

von Udo S. (urschmitt)


Lesenswert?

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.

: Bearbeitet durch User
von Max H. (hartl192)


Lesenswert?

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²

: Bearbeitet durch User
von labrador (Gast)


Lesenswert?

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

von Joe (Gast)


Lesenswert?

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

von nufy (Gast)


Lesenswert?

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.

von Udo S. (urschmitt)


Lesenswert?

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.

: Bearbeitet durch User
von Max H. (hartl192)


Lesenswert?

Meiner Meinung nach wäre es viel genauer, wenn du die Geschwindigkeit an 
Hand der Raddrehzahl ermittelst und diese nach der Zeit ableitest.

von labrador (Gast)


Lesenswert?

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

von Max H. (hartl192)


Lesenswert?

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.

von Udo S. (urschmitt)


Lesenswert?

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.

von labrador (Gast)


Lesenswert?

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

von Udo S. (urschmitt)


Lesenswert?

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.

von labrador (Gast)


Lesenswert?

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

von Max H. (hartl192)


Lesenswert?

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.

: Bearbeitet durch User
von labrador (Gast)


Lesenswert?

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.

von labrador (Gast)


Lesenswert?

Ich möchte erreichen das mein MC aufwacht wenn ich den Wagen in Bewegung 
versetze!
Vielen Dank für eure Hilfe

von Mike (Gast)


Lesenswert?

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.

von labrador (Gast)


Lesenswert?

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!

von Max H. (hartl192)


Lesenswert?

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)

von Udo S. (urschmitt)


Lesenswert?

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.

von labrador (Gast)


Lesenswert?

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

von Mike (Gast)


Lesenswert?

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.

von Gerhard Z. (germel)


Lesenswert?

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

von labrador (Gast)


Lesenswert?

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

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
Noch kein Account? Hier anmelden.