Ruderweg Messung mit Arduino

kalle123

User
Dank dir für die schnelle Antwort, Udo.

Für die 'eierlegende Wollmilchsau' wäre aber sicher ein neuer thread angebracht. :)

Zwei Fragen noch.

-
Code:
//   		{Xoff, Yoff, Zoff,   Xgain, 		Ygain, 		Zgain	, 	maxmin dummies}

	ImuCAL[0] =		{   0,    0,    0, 1.000000000, 1.000000000, 1.000000000,	1,-1,1,-1,1,-1};

1,-1,1,-1,1,-1 ?? Sensorwirkrichtung oder was?

- MPU6050 Abgleich

Hab bei mir hier 2 sketches gefunden dazu

/
Code:
/ Arduino sketch that returns calibration offsets for MPU6050 //   Version 1.1  (31th January 2014)
// Done by Luis Ródenas <luisrodenaslorda@gmail.com>
// Based on the I2Cdev library and previous work by Jeff Rowberg <jeff@rowberg.net>
// Updates (of the library) should (hopefully) always be available at https://github.com/jrowberg/i2cdevlib

// These offsets were meant to calibrate MPU6050's internal DMP, but can be also useful for reading sensors. 
// The effect of temperature has not been taken into account so I can't promise that it will work if you 
// calibrate indoors and then use it outdoors. Best is to calibrate and use at the same room temperature.

und

Code:
// MPU6050 offset-finder, based on Jeff Rowberg's MPU6050_RAW
// 2016-10-19 by Robert R. Fenichel (bob@fenichel.net)

// I2C device class (I2Cdev) demonstration Arduino sketch for MPU6050 class
// 10/7/2011 by Jeff Rowberg <jeff@rowberg.net>
// Updates should (hopefully) always be available at https://github.com/jrowberg/i2cdevlib

Was hast du da vor, was 'eigenes'?

Gruß KH
 
Hallo Kalle,

zur Kalibrierung, also Bestimmung von Gain & Offset Werten, benötigt man zu jeder Achsausrichtung die Minmal und Maximalwerte, die ein Sensor liefert.
Also den Wert bei +90Grad sowie -90Grad.


theoretisches Bsp:

Ein Sensor liefert "idealerweise" für +90Grad den Wert 100 und für -90Grad den Wert -100 (Range =100)
Offset:0
Gain:1.0

Real misst man aber 120 und -140.
Der Nullwert (Offset) liegt daher bei (120-140)/2 = -10
Der Gain (Empfindlichkeit) bei (120+140)/(2xRange) = 1.3


Die Min & Max Werte aus dem Kalbrierprozess lege ich in "der grossen Lösung" temporaer in der von dir hinterfragten Struktur ab & kalkuliere dann die CAL Werte.
Bei Ekkis angepasster Version sind die eingetragenen Dummies unerheblich, nicht weiter beachten...

Ich glaube in den von Dir gezeigten sketchen werden nur Offsetwerte kalkuliert.
Falls du nichts anderes findest muss ich Abends mal auf meinem Rechner schauen, was ich da an "externer" MPU Kalibrierroutine noch habe....

Gruß
 

Robinhood

Vereinsmitglied
Klasse Arbeit Udo! Ich bin schon gespannt auf Deine finale Version, die wir hoffentlich zum privaten Gebrauch verwenden können. Der Anschluss eines zweiten Sensors zur Ruderwegsmessung gleichzeitig an beiden Flächenhälften wäre allerdings noch ein großer Wunsch.
 
Hallo Robin,

klar, wenn die letzten Kleinigkeiten umgesetzt sind, die Doku steht und mein Kumpel die 3D Plots designed hat wird das alles eingestellt.
Das war ja der "Sinn der Übung".
Bin aber nä Woche im Ausland, dauert noch etwas.

Der Anschluss eines zweiten Sensors zur Ruderwegsmessung gleichzeitig....

Nicht das wir uns mißverstehen,
Zwei Sensoren sind ja angeschlossen, im Video ist nur einer davon zu sehen, Messwerte werden unter Flap0 & Flap1 dargestellt
Die Grossen Zahlen sind der Differenzwert.

flap01b.png

oder meinst Du 2 Sensorpaare, also 4 Sensoren parallel?
Hatte die Nachfrage schon im Bekanntenkreis, macht aber deutlich mehr Aufwand, da die Arduinos nur einen i2C Bus implementiert haben.
Daher benötigt man zum Ansteuern von mehr als zwei Lagesensoren gleicher Ausführung einen zusätzlichen Multiplexer, um sie einzeln addressieren zu können.
Macht die Sache "Lötungstechnisch" komplizierter , benötigt Platz im Gehäuse und bedeutet noch deutlichen Zusatz am Programmieraufwand, habe ich mir für den ersten Anlauf erspart (-;

Fuer eine erweiterte Ausführung denkbar, aber da würde ich es spannender finden einen automatischen Abgleich zu programmieren.
Idee ist den Differenzwert über einen Telemetriebus (bei mir SPORT) in den Empfänger einzuspeisen. Dadurch weiß der Sender wie unterschiedlich die Flaps stehen.
Am Sender dann ein lua-script ablaufen lassen, dass den Abgleich zweier Servos (bzw. Servokanäle) anhand der Anpassung einer z.B. 11 Punkt Kurve vornimmt.
Kurve wird quasi Punkt für Punkt angefahren und das script korrigiert den Y Wert so, dass beide Flaps innerhalb einer gewünschten Toleranz positionieren.
Ist aber Zukunftsmusik für den nächsten Winter :)

Grüße
udo
 

Robinhood

Vereinsmitglied
Nicht das wir uns mißverstehen,
Zwei Sensoren sind ja angeschlossen, im Video ist nur einer davon zu sehen, Messwerte werden unter Flap0 & Flap1 dargestellt
Die Grossen Zahlen sind der Differenzwert.

Das hatte ich gemeint, also alles gut! :)


oder meinst Du 2 Sensorpaare, also 4 Sensoren parallel?

Nein. Alles gut so.

...aber da würde ich es spannender finden einen automatischen Abgleich zu programmieren.
Idee ist den Differenzwert über einen Telemetriebus (bei mir SPORT) in den Empfänger einzuspeisen. Dadurch weiß der Sender wie unterschiedlich die Flaps stehen.
Am Sender dann ein lua-script ablaufen lassen, dass den Abgleich zweier Servos (bzw. Servokanäle) anhand der Anpassung einer z.B. 11 Punkt Kurve vornimmt.
Kurve wird quasi Punkt für Punkt angefahren und das script korrigiert den Y Wert so, dass beide Flaps innerhalb einer gewünschten Toleranz positionieren.
Ist aber Zukunftsmusik für den nächsten Winter :)

Verstehe ich das richtig: Die Abweichungen der Klappenpositionen beim Durchlaufen des Weges von Neutral bis Maximal werden durch ein Programm berechnet, egalisiert und dann als Kurve in den Sender eingespielt? Das ist genial. Wie wäre es damit: Über einen Servopositioner (vulgo Servotester) in Deinem Kästchen werden die Ruder manuell in die gewünschte Endposition gefahren. Das Programm errechnet einen optimalen Verlauf und spielt dies in den Sender ein.

Beispiel: Ein nagelneuer Segler mit Wölbklappen, eine Wölbklappe wird mittels Servopositioner in die Endposition "Butterfly maximal unten" gefahren. Der Prozessor merkt sich den nötigen Servoimpuls und den erreichten Winkel. Die andere Wölbklappe wird auch auf den Winkel der ersten gebracht. Ein automatisierter Durchlauf von Neutral bis Endposition ermittelt auf beiden Klappen Differenzen bei Weg und Winkel. Das Programm egalisiert die Differenzen und programmiert den Sender.

Bei Querrudern kann die Differenzierung auch so ermittelt und angeglichen werden.

DAS wäre ganz großes Kino :D.

Aber ich freue mich schon auf die Basisversion!!!!
 

TBAS

User
MMA8451

MMA8451

Hallo Zusammen,
Ich habe seit einiger Zeit die hier beschriebene Version mit dem Sketch
RC_ANGLE_THROW_KeypadShield_5 in gebrauch.

An dieser Stelle erst mal ein gorßes DANKE an die Entwickler!

So, nochmal Steffen.

Du besorgst dir diese Teile.

tRMNP1Il.png


Lädst dir die Arduino IDE von hier

https://www.arduino.cc/en/Main/Software

auf deinen Rechner.

Keyboardshield auf den Uno packen, USB Kabel anschliessen und mal etwas mit der Arduino IDE und dem Kontroller "spielen", um ein Gefühl für die Sache zu kriegen.

Gibt da einfache Programme (sketches), in der Art, Taste drücken ---> Anzeige.

Dann Eckehards Schaltung mit den beiden Sensoren so aufbauen. Hab mal mit Fritzing gezeichnet ;)

5lBkPPQl.png


Eckehards Programm (Link hab ich oben reingesetzt) aufspielen.

Halterungen für die Sensoren machen und Gehäuse für die Elektronik drucken. DAS ISSES. Feddig!

Also wenn du Servos an einen Empfänger stecken kannst, dann kannst du das auch :D

Gruß KH


Das funktioniert auch alles super. Jetzt habe ich mir zwei MMA8451 bestellt damit ich die Anzeige mit einer Nachkommastelle machen kann.
Hier haben ja schon einige mit den MMA8451 Sensoren Erfahrungen gesammelt.
Evtl. könnt ihr mir helfen.

Was muss ich an dem Sketch ändern, dass ich statt den ADXL die MMA8451 Sensoren verwenden kann ?
Oder gibt es das Sketch schon an auf die MMA8451 angepasst?

Schon mal vielen Dank für eure Hilfe!

Viele Grüße
Tobi
 

kalle123

User

Rätl

User
Servus,

ich hatte vor einiger Zeit dieses schöne Tool hier von einem User erworben. Scheinbar ist nun der Beschleunigungs-Sensor defekt, das Board funktioniert noch.

Kann mir jemand sowas passend passend herstellen? Ich weiß leider nicht mehr, von wem ich das Teil habe. Vielleicht erkennt derjenige das wieder ;)

Vlg
Matthias

24260045-66B4-4BB4-97C9-4555DAB46C54.jpeg
 

kalle123

User
Hallo Matthias.

Was ich so zu erkennen glaube. MPU 6050 auf nen Nano. Dann mit I2C Bus rüber zum 16x2 LCD. 4 Taster und ein Schalter, aber da müsste auch noch ein Controller zu finden sein.

Für einen Dritten, der das Teil nicht gebaut hat und sich Notizen dazu gemacht hat, sicher eine sehr aufwendige Sache.

Aber die MPU 6050 zu wechseln dürfte nicht so schwierig sein. Es wäre besser gewesen, du hättest den Schrumpfschlauch runter gemacht und das LCD board auseinander genommen und von den Komponenten von mehreren Seiten Fotos gemacht .....

Gruß KH
 
Zuletzt bearbeitet:

Rätl

User
Guten morgen,

das kann ich gerne machen, wenn ich wieder zuhause bin. Ist mir auch ein Rätsel, warum das Teil plötzlich den Geist aufgegeben hat. Ich mach den Schrumpfschlauch dann mal ab und stelle Detailbilder hier ein.


Viele Grüße
Matthias
 

kalle123

User
Ach ein ADLX-345 auf nem leeren board als Träger drauf. Den ADLX kriegst du in der Bucht für ein paar Euros.

Dann ein 16x2 LCD mit Wandlermodul I2C, ein Nano, 4 Taster und ein Schalter. Dass war es.

Ich würde auch mal daran gehen und die Kabelverbindungen zwischen Anzeigeeinheit, Prozessorbord und Sensorplatine ohmsch durch messen.

Vielleicht hast du ja Glück, wenn du den ADXL wechselst. Sind dann wohl die Kalibrierwerte vom 1. ADXL weg und das passt dann nicht mehr so, aber was solls. Ansonsten, das LCD Display kannst du ja für andere Basteleien verwenden und den Nano eventuell auslöten und ebenso verwenden.

Gruß KH
 

kalle123

User
Wo ich noch drüber rätsle, wozu ist der Schiebeschalter? Die 4 Taster haben meine hier auch. Und alle 5 Eingabemöglichkeiten gehen auf den Nano. Mit 10k Widerständen. Kannst du bitte auch noch ein Bild von der Unterseite der Prozessorplatine einstellen. Die Stromversorgung sehe ich so auch noch nicht ....

01. Angle_Meter.jpg

und auch der ADXL auf der Leerplatine ist seltsam. Wie klemmt der denn an der Klappe?

Hier mal, wie das bei mir ausschaut, was ich in Benutzung da hab.

2 Auswerteeinheiten und oben die 2 ADXL Sensoren auf Wäscheklammer ;) und links die MMA Sensoren (sind nen ticken besser als die ADXL) mit Sperrholzklemmung.

20230508_100833.jpg

Drück dir die Daumen, dass es mit dem Wechsel klappt und schön zu hören, dass du das immer noch verwendest.

Gruß KH
 

Rätl

User
Servus Kalle,

mit dem Schiebeschalter wechselt man zwischen Grad/Sekante? und mm/Grad

Auf der Leerplatine klebt doppelseitiges Klebeband, somit komme ich dann sehr nahe an die Scharnierlinie mit dem Sensor.

Das Bauteil ist schon auf dem Weg, vllt kommt es morgen schon, dann kann ich vor meiner Dienstreise nochmal testen.

Bild mach ich dann heute Abend

Viele Grüße
Matthias
 

kalle123

User
Matthias, jetzt versteh ich zumindest die Verschaltung des Ganzen.

Stromversorgung über die USB Buchse des Nanos. SW GND, RT 5V, OR I2C und WS ist der zusätzliche Schalter.

Die Taster und der Schalter von rechts nach links (allererstes Bild) Taster D6, Taster D4, Taster D3, Taster D2 und Schalter D5.

Das LCD Display funktioniert? Zeigt was an ....

Liegt am ADXL 5V an? Also am ADXL: GND zu VCC messen.

Schau dir mal die orangen Strippen genau an. Alles ok? Nix lose?

Dann messe mal ohmsch von hier am Nano (A4 und A5) nach hier am ADXL (SCA und SCL)

Bildschirmfoto_2023-05-08_23-09-17.png
Bildschirmfoto_2023-05-08_23-05-33.png


Also wenn das LCD Display geht, ist der I2C Bus ok, dann kann eigentlich nur die Verkabelung ADXL <> Nano was haben oder der ADXL selbst ist defekt..

Meine laienhafte Ferndiagnose. ;)

Grüße - KH
 
Ansicht hell / dunkel umschalten
Oben Unten