Forum: Mikrocontroller und Digitale Elektronik Beschleunigungssensor für Neigungswinkel


von Bernhard (Gast)


Lesenswert?

Hallo,

ich suche einen Beschleunigungssensor, der über die Erdbeschleunigung 
den aktuellen Neigungswinkel messen kann.
Jetzt ist mein Problem einen zu finden der über meinen gesamten 
Messbereich eine Auflösung bietet welche Groß genug ist um so 5° 
Winkelunterschied zu erkenne.
Ich hab hier schon einen (ADXL330), aber mit dem ist das eher nicht 
möglich, ich hab mir ausgerechnet bei einem Atmega mir 10Bit ADC und der 
Empfindlichkeit des Sensors von 300mV/g kommt man im Bestenfall auf eine 
Auflösung von ca. 16mg/Bit.
Um auch im ungünstigsten Fall (oberer und unterer Totpunkt) 5° zu 
unterscheiden brauche ich mindestens eine Auflösung von 4mg/Bit.
Hat hier schon jemand Erfahrung mit entsprechenden Sensoren die so eine 
Auflösung bieten können? Anscheinend sollen die von ST ja am besten sein 
aber ist solch eine Auflösung von z.B. 1mg beim LIS331 auch realistisch 
(bei einem Messbereich von +-4g)?

Also am Besten wäre für mich ein kleines Board mit einem SMD-Sensor der 
einen Messbereich von vlt. +-3g (gravitation + auftretende 
Zentripedalbeschl.) hat und eine ausreichend gute Genauigkeit hat um 
Winkel von mindestens 5° zu erkennen.

Ist jetz mal ein bisschen viel für den Anfang aber ich hoffe es gibt ein 
paar die sich der Herausforderung stellen :)

Grüße Bernhard

von Rainer U. (r-u)


Lesenswert?

Wie groß darf denn Dein Meßgerät werden? Wie oft willst Du messen?

Für allerlei Fluggerät gibt es bestimmt fertige Sachen..

Ansonsten - eine Flüssigkeit?

von Bernhard (Gast)


Lesenswert?

ja im Endeffekt sollte es am Besten ein kleiner SMD Sensor sein den wir 
auf eine eigene Platine verbauen, aber zum Entwickeln brauchen wir eine 
Platine mit "normalen" Anschlüssen (Stiftleiste oder so...)
aja und die Messfrequenz sollte so ca. 1kHz sein.

von Jobst M. (jobstens-de)


Lesenswert?

Was für ein Totpunkt? Ein Sensor reicht nicht!
Bei Drehung um eine parallel zur Erdoberfläche liegende Achse werden 2, 
sonst 3 Sensoren benötigt!


Gruß

Jobst

von Bernhard (Gast)


Lesenswert?

Nein unser Sensor soll auf einer Scheibe montiert sein welche vertikal 
montiert wird (Drehachse liegt Horizontal). Ein sich dort befindlicher 
Beschleunigungssensor wird uns dementsprechen Sinusförmige Werte 
Liefern: oben und unten 1 bzw. -1 und an den Seiten 0
oben und unten falchen die Unterschiede zwischen jeweils 5° aber 
entsprechend der  Sinuskurve ab, das muss beachtet werden.

Alles in allem soll ein üblicher MEMS-Beschleunigungssensor verwendet 
werden, ich bin mir eben aber noch unsicher welche für mich passend 
sind?

Gruß
Bernhard

von Bernhard (Gast)


Lesenswert?

@ jobst
ok ich seh grad wir haben eh das selbe gemeint, aber das sollte doch mit 
einem Sensor auch möglich sein oder?

von Alex S. (thor368)


Lesenswert?

Tach Bernhard,

sehe ich das richtig, dass du ein Lagesensor in einem beschleunigten 
System bauen willst? Das wird mit einem Linearbeschleunigungssensor 
nicht gehen. Das funktioniert nur in ruhenden Systemen. Um das zu 
realisieren brauchst du Drehratensensoren alias Gyros.

Wenn es dir um eine Lageerkennung in einem unbeschleunigten System geht, 
kannst du mit einer maximalen Beschleunigung auf einer Achse mit 1g 
rechnen. Erdbeschleunigung halt. Bei 10bit hast du eine Auflösung besser 
als 1mg.

Was das Rauschen angeht: Es kommt stark auf die sample rate an. Das 
Stichwort ist oversampling. Im Tausch gegen Abtastrate gewinnst du 
Auflösung und reduzierst das Rauschen. Du musst halt nur viel Zeit habe, 
denn für 4xoversampling erhälst du ein bit Auflösung.

Thor

von Karl H. (kbuchegg)


Lesenswert?

Bernhard schrieb:
> Nein unser Sensor soll auf einer Scheibe montiert sein welche vertikal
> montiert wird (Drehachse liegt Horizontal). Ein sich dort befindlicher
> Beschleunigungssensor wird uns dementsprechen Sinusförmige Werte
> Liefern: oben und unten 1 bzw. -1 und an den Seiten 0
> oben und unten falchen die Unterschiede zwischen jeweils 5° aber
> entsprechend der  Sinuskurve ab, das muss beachtet werden.

Und wie willst du da jetzt die Zentripetalbeschleunigung rausrechnen?
Oder machst du das rechnerisch über die bekannte Drehzahl?

von Bernhard (Gast)


Lesenswert?

Ja Hallo,

Eigentlich geht es um ein unbeschleunigtes System (außer der 
Gravitation), da bei der Drehbewegung die Zentripedalbeschleunigung 
porportional zur Drehzahl ist kann ich diese Herausrechnen und erhalte 
somit nur mehr die Gravitation, aber dafür brauche ich eben einen Sensor 
der einen höheren Messbereich (ca. 3g) hat als die Meisten (nur ca. 
1.5g).

Gruß

von Karl H. (kbuchegg)


Lesenswert?

Bernhard schrieb:
> Ja Hallo,
>
> Eigentlich geht es um ein unbeschleunigtes System (außer der
> Gravitation), da bei der Drehbewegung die Zentripedalbeschleunigung
> porportional zur Drehzahl ist kann ich diese Herausrechnen

das du dich da mal nicht täuscht.
Damit du die rausrechnen kannst, musst du für jeden Messpunkt den zu 
diesem Zeitpunkt vorliegenden Rotationswinkel kennen. Genau den willst 
du aber bestimmen.

Zentripetalkraft ist ein (bei dir) 2D Vektor
Graviation ist (bei dir) ein 2D Vektor

Was du misst ist die Resultierende aus der Vektoraddition der beiden 
(genauer misst du den Betrag der Resultierenden projeziert auf den 
Radiusvektor), weil du ja nur einen 1D Sensor hast).

Um die in die erzeugenden Teilvektoren zu zerlegen, genügt dir der 
Betrag aber nicht. Du musst mindestens noch die Richtung kennen. Die 
kannst du aber mit einem 1D Sensor nicht feststellen.

von Timmo H. (masterfx)


Lesenswert?

Mal ganz davon abgesehen ob das Vorhaben nun geht oder nicht, ein 
Beschleunigungssensor mit 2/4/8g sowie 14 Bit wäre ein MMA8451Q. Ich 
verwende ihn und bin recht zufrieden. Kostet auch nur 1€

von Bernhard (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Damit du die rausrechnen kannst, musst du für jeden Messpunkt den zu
> diesem Zeitpunkt vorliegenden Rotationswinkel kennen. Genau den willst
> du aber bestimmen.

Stimmt so nicht, ich Rechne aus der Gesamtbeschleunigung welche mir der 
Sensor liefert nicht die Gravitationsbeschleunigung heraus sondern die 
Zentripedalbeschleunigung:

Ages = Aerd *sin(alpha) + Azentripedal

"alpha" will ich wissen

Azentripedla = 2*Pi*n/60 * Radius

=> wenn ich nun Drehzahl und Radius kenne kann ich die Zentripedal 
beschleunigung berechnen:

Aerd = Ages - Azentripedal

und daraus kann ich nun den Winkel berechnen
Ich hoff da entdeckt jetzt keiner einen Fehler :)

Aber jetzt brauch ich eben noch einen Beschleunigungssensor

PS: Der Sensor wird so montiert dass die Messachse durch den Drehpunkt 
geht

von Jobst M. (jobstens-de)


Lesenswert?

Bernhard schrieb:
> aber das sollte doch mit
> einem Sensor auch möglich sein oder?

Ist Dir die Genauigkeit nur an den beiden Totpunkten wichtig? -> Sensor 
um 90° drehen

Ist Dir die Genauigkeit überall wichtig -> 2. Sensor um 90° gedreht 
dazu.

Alex S. schrieb:
> Bei 10bit hast du eine Auflösung besser als 1mg.

Nein. Nur wenn der Sensor nur positive Werte liefert und einen 
Vollausschlag bei 1G hat.


Wenn Du den Sensor zentriert anbringst, hast Du auch keine Fliehkräfte.
Wenn Du den Sensor nicht zentriert anbringst, darfst Du nicht nur die 
Fliehkräfte herausrechnen, sondern auch die Drehbeschleunigung.
D.h. bei variabler Drehzahl hast Du kaum eine Chance.
Sensoren gibt es von AD bis (mindestens) 50G


Gruß

Jobst

von Karl H. (kbuchegg)


Lesenswert?

Bernhard schrieb:
> Karl Heinz Buchegger schrieb:
>> Damit du die rausrechnen kannst, musst du für jeden Messpunkt den zu
>> diesem Zeitpunkt vorliegenden Rotationswinkel kennen. Genau den willst
>> du aber bestimmen.
>
> Stimmt so nicht, ich Rechne aus der Gesamtbeschleunigung welche mir der
> Sensor liefert nicht die Gravitationsbeschleunigung heraus sondern die
> Zentripedalbeschleunigung:
>
> Ages = Aerd *sin(alpha) + Azentripedal
>
> "alpha" will ich wissen

Du kannst aber nicht links vom Totpunkt von rechts vom Totpunkt 
unterscheiden. Wenn dir das egal ist, ok

von Bernhard (Gast)


Lesenswert?

@ Timmo H.

Also der Sensor kling ganz gut, mit 800Hz sollte ich leben können, er 
hat anscheinen bei +-4g Messbereich noch eine Auflösung von 2048 Werte 
por g was wirklich gut kling, aber sind diese Werte auch realistisch 
oder verliert man die letzen Bits wegen dem Rauschen?
Und noch etwas: Gibt es den Sensor vlt. schon fertig auf einer Platine?

Gruß

von Timmo H. (masterfx)


Angehängte Dateien:

Lesenswert?

Bernhard schrieb:
> @ Timmo H.
>
> Also der Sensor kling ganz gut, mit 800Hz sollte ich leben können, er
> hat anscheinen bei +-4g Messbereich noch eine Auflösung von 2048 Werte
> por g was wirklich gut kling, aber sind diese Werte auch realistisch
> oder verliert man die letzen Bits wegen dem Rauschen?
> Und noch etwas: Gibt es den Sensor vlt. schon fertig auf einer Platine?
>
> Gruß

Bei 800 Hz rauscht er natürlich mehr als bei 100Hz. Mit dem eingebauten 
Oversampling und LowNoise aktiv ist er schon recht sauber. Absolut ruhig 
bekommt man ihn natürlich nicht, aber das betrifft ja alle Sensoren. 
Ich habe mir mal einen Deadbug gelötet (Bild 1 ) und später dann eine 
Platine dafür entwickelt (Bild 2). Da kommt dann auch ein Gyro, 
Magnetsensor und Luftdrucksensor mit rauf. Kann dir gerne eine 
verkaufen, nur habe ich momentan die Sensoren nicht auf Lager. Wobei 
einen habe ich noch liegen, aber nur die 12-Bit Variante.

von Bernhard (Gast)


Lesenswert?

@Timmo H.

Ja das muss ich noch abklären aber ich denke, wenn das geht wäre das auf 
jeden Fall interessant.
Für uns wären 2 am Besten, aber die hast du nicht oder?
Wieviel würde das denn kosten inkl. Versand nach Tirol/Österreich wenns 
geht?

Danke
Bernhard

von Timmo H. (masterfx)


Lesenswert?

Ich würde dir ja gerne 2 bestückte Platinen verkaufen, jedoch sind 
sowohl der MMA8451Q sowie der MMA8452Q nirgends lieferbar.
Da sind wohl irgendwelche Handy/Tablet Hersteller erstmal auf Prio.
Wie gesagt, eine Platine mit dem 8452Q könnte ich dir verkaufen, weil 
ich den noch hier habe. Könnte sie dir für 10€ + 1,45€ Versand.
Ansonsten heißt es warten bis wieder verfügbar.
Oder du kaufst dir halt das offizielle Modul "TWRPI-MMA845XQ"

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.