Forum: Mikrocontroller und Digitale Elektronik Schiffsbewegung mittels Beschleunigungssensor bestimmen (AVR)


von Gina C. (gini)


Lesenswert?

Hey,
für ein Projekt haben wir vor eine Einheit zu bauen, die die Neigung 
eines Schiffes (roll pitch yaw) messen kann. Zunächst hatten wir vor 
dieses mit einen einfachen Beschleunigungssensor zu realisieren. Wie wir 
hier im Forum allerdings nachlesen konnten, ist dieses nur möglich, wenn 
der Beschleunigungssensor selbst nicht beschleunigt wird, sodass für die 
Neigungsberechnung zusätzlich ein Gyroskop verwendet werden muss. Das 
Schiff wird dabei eine relativ langsame Geschwindigkeit (4 Knoten) 
aufweisen, die Wellenhöhe wird nicht mehr als 2 m betragen.

Zunächst hatten wir vor das Ganze mit einem Raspberry Pi 2 zu bauen, bei 
dem die Datenübertragung direkt über WLAN stattfindet. Allerdings findet 
man im Internet hauptsächlich Tutorials bei denen Arduinos verwendet 
werden. Welche Vorteile haben diese im Vergleich zum Raspberry Pi?
Könnt ihr uns weiterhin bestimmte Sensoren empfehlen? Wir haben bei 
Amazon das Modul MPU6050 gefunden, das sowohl ein Gyro- als auch 
Beschleunigungssensor enthält.

Der Sensor ist dabei nur ein kleiner Teil unseres Projekts und könnte 
notfalls erstmal auch weggelassen werden, da das Schiff sehr genaue 
Daten liefert und unser Sensor zunächst nur als Vergleich dienen soll. 
Nun stellt sich uns die Frage, ob das Ganze in einen relativ kurzen 
Zeitraum (3 bis 4 Wochen) realistisch ist, zumal wir keinen technischen 
Studiengang studieren?

Danke im Voraus
Gini

von abcd (Gast)


Lesenswert?

Gina C. schrieb:
> Zunächst hatten wir vor das Ganze mit einem Raspberry Pi 2 zu bauen, bei
> dem die Datenübertragung direkt über WLAN stattfindet. Allerdings findet
> man im Internet hauptsächlich Tutorials bei denen Arduinos verwendet
> werden. Welche Vorteile haben diese im Vergleich zum Raspberry Pi?

Datenblätter lesen und im Anschluss daran eine Vergleichstabelle ist 
wohl zu viel gefordert?

Aber kurz: Das wird in 3-4 Wochen, ohne jegliche technische Grundlagen, 
nicht realisierbar sein.

von Pandur S. (jetztnicht)


Lesenswert?

Ich wuerde dafuer einen 3 Achsen Winkelbeschleunigungssensor und einen 3 
Achsen linear Beschleunigungssensor verwenden und miteinander 
verrechnen. Ein Arduino mit einem 8 Bit Prozessor sollte genuegen.

von oszi40 (Gast)


Lesenswert?

Gina C. schrieb:
> realistisch

Eher optimistisch. Eine Beschleunigung und eine statische Schräglage 
sind 2 verschieden Schuhe.

> Datenübertragung direkt über WLAN stattfindet

Entfernung? Abschirmung? Störungen?

von einer (Gast)


Lesenswert?

Falls nur um das Ergebnis geht ist euch vielleicht hiermit geholfen 
https://play.google.com/store/apps/details?id=de.lorenz_fenster.sensorstreamgps&hl=de

von pitschu (Gast)


Lesenswert?

Hallo gini,
die MPU6050 ist dafür sehr gut geeignet und wird vielfach im Bereich 
Quadrokopter etc. eingesetzt. Das Teil gibt es bereits fertig montiert 
mit ATmega328 Prozessor (z-B. Multiwii board) für ca. 20€. Jede Menge 
Software dafür ist verfügbar.
Wollt Ihr eigentlich was fertiges oder was zum selbst bauen?

pit

von Paul F. (zwanni)


Lesenswert?

Sofern es "nur" um die reine Funktion geht sich irgendwelche Werte 
ausgeben zu lassen und der Rest keine Rolle spielt, kann man mit 
Beispielen sicherlich in kurzer Zeit etwas zusammen stecken. Ob eure 
Technischen Fähigkeiten dann ausreichen um Fehler zu erkennen und etwas 
mit den Daten anzufangen ist wieder eine andere Sache.

Ich würde in jedem Fall dann auch zu einem Arduino raten, weil der 
Raspberry das ganze eher komplizierter macht bzw. einen mit viel mehr 
drum rum erschlägt. Grundsätzlich sind Arduinos wirkliche 
Mikrocontroller die in Echtzeit arbeiten und komplexe Zeitkritische 
Abläufe abwickeln können. Ein Raspberry ist ein Computer der auf dieser 
Ebene schwieriger klar kommt und eher mit fertigen Modulen Kommunizieren 
kann. Das wäre bei euch zwar der Fall aber wenn es kein WLAN sein muss 
ist ein Arduino der einfachere Weg. Auf jeden Fall sollte einer von euch 
in irgendeiner Form Programmiererfahrung haben um zumindest die 
Zusammenhänge zu verstehen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Gina C. schrieb:
> Zunächst hatten wir vor das Ganze mit einem Raspberry Pi 2 zu bauen, bei
> dem die Datenübertragung direkt über WLAN stattfindet. Allerdings findet
> man im Internet hauptsächlich Tutorials bei denen Arduinos verwendet
> werden. Welche Vorteile haben diese im Vergleich zum Raspberry Pi?
Im Arduino ist ein schnuckeliger kleiner uC ohne Betriebssystem 
eingebaut. Damit kann man schnell und deterministisch Daten abholen und 
auswerten. Mman muss ihn natürlich auch für solche Echtzeit 
programmieren (können). Als Beispiel: ein delay() ist nur 
Rechenzeitverschwendung und hat in so einem Programm nichts zu suchen.

Der RPi hat ein mächtiges Linux mit allen Vor- und Nachteilen. In der 
embedded-Umgebung ist so ein Rechenbolide eher das Frontend für das 
User-Interface und die Connectivity. Wegen des aufwändigen 
Multitasking-OS hat ein delay() hier die Auswirkung, dass der Prozessor 
solange irgendwas anderes macht. Und hoffentlich rechtzeitig damit 
fertig wird...

von Jonathan (Gast)


Lesenswert?

@Gina
Ruf bei Measurment Specialties in Dortmund an. Die bieten solche 
Sensoren als fertiges Produkt mit gewünschter Schnittstelle an. Bei nur 
3-4 Wochen ist das die sicherste Variante. Dazu dann einen 
Mikrocontroller nach Wahl und WLAN Modul. Fertig.

von lrep (Gast)


Lesenswert?

Lothar M. schrieb:
> Der RPi hat ein mächtiges Linux mit allen Vor- und Nachteilen.

... und dafür braucht und hat er die vielfache Rechenleistung eines 
ATMega.
Allerdings ist auch die Leistungsaufnahme dementsprechend höher und ist 
meist nicht als nebensächlich abzuhaken.
Rechne mal mit 5W.
Das ist zwar viel weniger als ein PC verschlingt, aber selbst eine 
Autobatterie wird damit in ein paar Tagen leer.

von Norbert S. (norberts)


Lesenswert?

Hi,

einer schrieb:
> Falls nur um das Ergebnis geht...

In einem Android ist das alles drin was Du brauchst, inkl Wlan.
Wenn Ihr ein Problem habt eine passende App zu schreiben, such mal nach 
RFO Basic, das ist super simpel.
Der Stromverbrauch ist natürlich auch nicht ohne.

Gruß,
Norbert

von Gina C. (gini)


Lesenswert?

Hey,
vielen Dank für die vielen sehr hilfreichen Antworten! Da im Projekt 
eher der Weg zu dem Ergebnis als das Ergebnis selbst zählt, wäre die 
Lösung mit Android bzw. einer bereits fertig montierten Einheit nur im 
Notfall eine Option. Wir würden also schon gerne versuchen das Ganze 
selbst zu bauen.
Dafür werden wir nun den Arduino sowie den MPU6050 verwenden. Die 
Datenübertragung über WLAN ist nicht unbedingt notwendig, sodass wir den 
Arduino einfach an einen PC verbinden werden.
Später wäre es eventuell denkbar, die Daten direkt auf einer SD Karte zu 
speichern. Da wir dann allerdings die Uhrzeit  benötigen, müssten wir 
noch ein RTC Modul einbauen. Ich denke mal das würde den Zeitrahmen des 
Projekts übersteigen.

von Horsti (Gast)


Lesenswert?

Hy

Warum mittels Beschleunigungssensor? Mit einem Inclinometer lässt sich 
das doch einfacher bewerkstelligen.

Gruß Horsti

von Hp M. (nachtmix)


Lesenswert?

Gina C. schrieb:
> Da wir dann allerdings die Uhrzeit  benötigen, müssten wir
> noch ein RTC Modul einbauen.

So schlimm ist das nun auch wieder nicht.
Die "dicken" Betriebssysteme haben eine Uhr eingebaut, die vom Quarz des 
Prozessors gesteuert wird, und die du nur abzurufen brauchst.
Wenn du WLAN benutzt, wirst du auch die Zeit aus dem Internet beziehen 
können, und sonst steht evtl. GPS mit seiner überaus genauen Zeit zur 
Verfügung.

von Der Andere (Gast)


Lesenswert?

Gina C. schrieb:
> Das
> Schiff wird dabei eine relativ langsame Geschwindigkeit (4 Knoten)
> aufweisen, die Wellenhöhe wird nicht mehr als 2 m betragen.

Die Frage ist doch inwieweit die kleinen Beschleunigungen eines Schiffs 
wirklich die Messwerte des 3 Achsen-Beschleunigungssensors verfälschen. 
Ein Schiff hat zunächst mal relativ kleine Beschleunigungen, am ehesten 
würde ein Versatz bei starkem Wellenschlag das Ergebnis verfälschen.
Ihr könnt ja im ersten Schritt erst mal nur aus den Werten des 
Beschleunigungssensors eure Schräglagen berechnen und dann im zweiten 
Schritt schauen inwieweit sich das ändert wenn ihr die Gyrowerte 
dazurechnet.

Zum Verrechnen sucht mal nach Kalman Filter

von temp (Gast)


Lesenswert?

Lothar M. schrieb:
> Als Beispiel: ein delay() ist nur
> Rechenzeitverschwendung und hat in so einem Programm nichts zu suchen.

Solche pauschalen Verallgemeinerungen sind eines Programmierers nicht 
würdig. Es kann für alles gute Gründe geben. Auch für ein delay() oder 
noch provokanter: goto. Irgendwas macht die CPU immer. Ob sie nun in 
einer main-Loop im Kreis läuft oder an einer anderen Stelle spielt 
überhaupt keine Rolle. Alles ist nur von der konkreten Anwendung 
abhängig und nicht von irgendwelche Lehrbuchmeinungen.

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.