"3in1": DIY Schwerpunktwaage, EWD Winkel- und Ruderwegmessung in einem Gerät

Hallo zusammen,

ich möchte hier endlich mein aktuelles Arduino Projekt vorstellen,
ein Kombinations-Messgerät zum Ermitteln von Schwerpunkt, EWD und Ruderausschlägen.

Bedient wird das ganze über eine "headunit" mit TFT Touch Display.
Kalibrierroutinen sind integriert, die Korrekturdaten werden in den nicht flüchtigen Speicher zurückgeschrieben,
so dass nicht erst über andere Programme diese Daten ermittelt und in den Quellcode transferiert werden müssen.

Grundidee war es, etliche dedizierte Apparate auf Basis eines Arduino in eine Umgebung zu verheiraten.
Die EWD Messung kann mit zwei verschiedene Heckwaagen durchgeführt werden, somit können sowohl konventionelle als auch V-Leitwerke vermessen werden.
Der hier verwendete Mega2560 lässt genügend Ressourcen frei, um Raum für weitere Ergänzungen zu lassen,
das Touch Panel garantiert dann genügend Flexibilität für die Umsetzung.


Coding unter Github
github 3in1

Zur Bedienung habe ich ein Video aufgenommen.
Video 3in1 Einfuehrung

Hier wird gezeigt, wie die IMUs kalibriert werden:
Video IMU Kalibrierung




3in1_mid.jpg


Die Anleitung in jetziger Fassung befindet sich im Anhang, aktuell wird sie unter Github weitergepflegt werden.

Für das ganze sind auf Git auch die 3d Plots hinterlegt.
Ein guter Freund hat das Gehäuse für die Headunit, die Rudersensoren sowie die SP Waage designed.
Die SP Waage ist etwas grösser als die, die ich üblicherweise "gefunden" hatte und besitzt variable Anschläge, um exakt auf die Wurzelanformung zu gehen.
Das fördert die Nachvollziehbarkeit der Messung bei Flächen mit starker Pfeilung.

Zur Präzision:

Ich habe jetzt etliches durchprobiert, es ist keine neue Erkenntnis, das die Exaktheit massgeblich von der Kalibrierung abhängt.
Wenn Sorgfältig kalibriert wurde, wage ich folgende Aussagen:

Schwerpunktwaage:
Idealerweise kalibriere ich mit rnd 80% des Messbereichs einer Wiegezelle, das Kalibriergewicht wurde zuvor auf einer Präzisionswaage aus der Industrie auf 1/10g definiert.
Über den Messbereich von 10-100% des Maximalgewichts erziele ich Abweichungen von schlimmstenfalls +/- 2g per Zelle.
Rechnerisch liege ich damit bei einer Schwerpunktauflösung von unter 0,1mm
Der grössere "Messfehler" wird dann durch nicht genaue Ausrichtung an den Anschlägen, nicht genaue Konfiguration der geometrischen Werte (Abmessungen der Waage, Angaben möglich auf 1/10mm) und etwas Materialnachgiebigkeit generiert.
Bei sorgfältiger Anwendung ist eine reproduzierbare Genauigkeit von 0,2mm sicherlich möglich.
Das entspricht auch den Abweichungen, die aus 3, teilweise verschiedenen, Konstruktionen ermittelt habe.

Winkelmessungen (EWD & Ruderauschläge)
Ich kalibriere immer mit einem Klotz auf ausgerichteter Unterlage.
Auf dem Klotz sind zwei Sensoren plan aufgeschraubt, durch einen Anschlag parallel ausgerichtet.
Die Kalibrierung erfolgt dann hintereinander,
Die Sensoren bilden danach ein Paar zur EWD oder zur Ausschlagsmessung.

So kalibriert erziele ich folgende "Gangunterschiede":
Messwinkel:
Bis 10 Grad: eigentlich nie einen Unterschied
Bis 30 Grad: 0.2 Grad, bei 45 Grad meistens wieder etwas besser
ab 60..70 Grad 0.3 Grad bis schlimmstenfalls steigend auf 0,5Grad ab 80 Grad

Nach einigen hin&her bin ich mit dem Ergebnis jetzt zufrieden und "biete" es als DIY Projekt hier an.
In der Doku sind genauere Beschreibungen & Erklärungen, Stücklisten und Bezugsquellen sowie Kostenübersichten.


Und nun viel Spass bei der Diskussion
(falls eine aufkommt)

Grüße

Udo
 

Anhänge

Hallo Udo,
das war nicht nur "viel" Arbeit, sondern auch "sehr gute" Arbeit. Als ich die Waage erhalten habe, habe ich mit Hilfe von meiner " aus Holz geklöppelten" SP Waage und einer digitalen Küchenwaage mein Modell noch einmal genau ausgemessen und gewogen.
Habe dann die Waage von Dir angeschlossen und das Modell darauf gelegt.
Ich war sehr freudig überrascht. Exakt die gleichen Werte. Man kann sofort den SP und das Gesamtgewicht ablesen. Natürlich logisch! Richtig eingestellte und funktionierende Elektronik ist immer genauer und zeigt den Wert sofort in Zahlen an. Als eine "analoge" aufgedruckte mm Skala die man dann noch etwas unterschiedlich ablesen kann. Trotzdem war ich skeptisch. Aber das ist sofort vorbei gewesen.
Auch habe ich die "Aufsteckklipse" für die Ruder Einstellung sofort ausprobiert. Super! Diese sind sehr leicht und ziehen das Ruder nicht gleich (im Spiel) nach unten. Meine vorher benutzter Digi Winkelmesser ist relativ schwer und ich hatte immer Bedenken, daß er je nach Stellung der Klappe den Winkel genau anzeigte. Aber wenn man nichts anderes hat....
Deine Meßteile habe ich nebeneinander an einer Klappe kalibriert. Dann an die entsprechenden Ruder gesteckt. Im Programm habe ich dann die Klappentiefe eingegeben an der das Teil steckt. Jetzt kann man super genau sehen welchen Winkel und welche Abweichung die Ruder zueinander haben. SUPER! so wünscht man sich die Anzeige.
Zudem kann man jetzt erst mal sehen, welche Abweichende Wege die einzelnen Servos machen. Vorher hatte ich die Null- und Endstellung der WK bei Butterfly eingestellt. Die waren auch mit Deiner Anzeige gleich Aber die Zwischenstellungen der Ruder waren ganz schön unterschiedlich. Jetzt könnte man diese Stellungen genau mit Kurven gleich machen.
Für viele ist das nichts neues. Ich habe auch immer gedacht: "Brauche ich nicht." Aber jetzt würde ich sie nicht mehr hergeben.
Ich bin jedenfalls sehr von der "Drei in eins" Waage überzeugt. Die EWD habe ich wegen noch fehlender Ansteckwinkel noch nicht gemessen.
Gutes Teil.
Gruß Manfred
 
Hallo zusammen und Danke für die aufmunternden Worte,
yepp, da steckten einige Stunden hinter !


im Anschluss ein kleiner Tipp aus Erfahrungen des Wochenendes.

Thema IMU Befestigen/Verschrauben:
Ich hatte hier am Wochenende das Set eines Freundes liegen, was bei Einstecken eines IMU Sensors den kompletten Ausfall verursachte.
(Bildschirm wurde schwarz, Spannung brach zusammen).
Die erste Vermutung eines Kabelproblems im Stecker bestätigte sich nicht.
Nach etlicher Sucherei bin ich dahintergestiegen:

Die meisten, zumindestens viele IMUs haben in der Nähe der Befestigungsbohrung einen SMD Widerstand.
Wird die IMU mit einer Flanschschraube oder Unterlegscheibe befestigt, kann es passieren, dass der Kopf bzw Flansch auf den Widerstand drückt.
Dann noch eine halbe Umdrehung und der Widerstand wird abgeschert (Abbildung links),
die Schraube bildet nun einen Kurzschluss auf den Pads und die Versorgung geht in die Knie (Abbildung mitte)
Eigentlich sollte da ein Widerstand sein (rechts).


imu_short.png


Daher:
wer kleine Schrauben mit Flansch verwendet sollte darauf achten, dass der Flansch nicht auf den Widerstand drückt, meistens ist genug "Spiel" in der Öffnung um die PCB etwas "wegzuziehen".
oder halt Schrauben mit schmalen Köpfen verwenden.



BTW
wer sich das Projekt vorgenommen hat:
ich bekomme die Tage noch neue STL Dateien für die Headunit, der CAD Designer hat sich nochmal die Öffnungen der Connectoren vorgenommen,
da wird man demnächst die GX12 Buchsen problemlos ohne Lötarbeiten im Gehäuse ein- & ausbauen können.


Grüsse

Udo
 

kalle123

User
Das Ding sitzt aber auch verdammt knapp zur Bohrung. Ich hab die Sensoren bisher immer mit Spiegelband befestigt.

Shit happens. :)

Gruß KH
 
Halllo Udo,

Zunächst, vielen Dank dass du die Information mit uns teilst. Ein wirklich interessantes Projekt das ich jetzt auch begonnen habe nachzubauen.
Da ich derzeit noch auf Wägezellen warte habe ich mit der Ruderfunktion begonnen.
Das Hochladen des Binary Files ging ohne Probleme. Die Kalibierroutine funtioniert tadellos und Sensorwerte werden angezeigt.
Jetzt wollte ich die Schriftfarbe ändern (BUTCOLOUR). Neu compilieren des Projekt und hochladen ergibt hier keine Fehlermeldung.
Jedoch funktioniert die Kalibrierroutine nicht mehr. Die eigelesenen Werte ergeben keine Sinn. Hast du eine Eklärung?

/Grüße Jürgen
 
Hi Jürgen,

"eigentlich" sollte das Ändern der Farbe kein Problem sein, hatte ich selbst ein paar mal durchgespielt.
Kannst du das Problem mit der Kalibrierroutine (welche, CG oder IMU Kalibrierung?) etwas näher erläutern ?
Werde das am WE nochmal selbst durchspielen.

Danke & Gruß
Udo
 
Hi Jürgen,

gerade folgendes getestet:

- coding von git heruntergeladen
- in custom.h "BUTCOLOUR" auf BLUE geändert: #define BUTCOLOUR BLUE
- kompiliert
- problemlos durch die Kalibrierung der Schwerpunktwaage gekommen

Gruss
 
Hi Jürgen,

"eigentlich" sollte das Ändern der Farbe kein Problem sein, hatte ich selbst ein paar mal durchgespielt.
Kannst du das Problem mit der Kalibrierroutine (welche, CG oder IMU Kalibrierung?) etwas näher erläutern ?
Werde das am WE nochmal selbst durchspielen.

Danke & Gruß
Udo
Hallo Udo,

Sorry für verspätete Rückmeldung, bin beruflich unterwegs und kam erst jetzt wieder dazu hier nachzulesen.
Danke für deine Mühe mir etwas Erhellung hier zu verschaffen.

habe noch keine Wägesensoren, daher nur die Kalibrierroutine der Ruderausschläge benutzt.
Bei der Binärversion kein Problem. Das kompilieren der Code Version vom Git geht ohne Fehlermeldung.
Aber, es werden in der Kalibrierroutine für Ruderausschläge nicht reproduzierbare unsinnige Werte ausgelesen.
Dies unabhängig ob Originalversion oder in custom.h "BUTCOLOUR" auf BLUE geändert.

Auch, wird der CG Programmpunkt angewählt geht das Programm in eine Endlosschleife.
Die Wägesensoren sind noch nicht angeschlossen!
Soweit ich den Haupt Code nachvollziehen konnte sollte das aber abgefangen werden.

Wird die Binärversion geladen geht das Kalibrieren ohne Probleme.
Der CG Programmpunkt kann auch angewählt werden und geht dabei nicht in eine Programmschleife.


/vG Jürgen
 
Hi,

hört sich fast so an, als ob die Adressierung der IMUs durcheinander ist
was steht in der imu.h , ca Zeile 40 in dem Bereich:

// IMU specific:
#define IMUSCALE 16384 // IMU resolution / scaling of sensor (mpu6050=16bit, so 90 degree=14bit >> 2^14=16384)
int angSensor_Addr[5]={0x69,0x68,0x69,0x68,0x68}; // enter addresses from sensor0, 1, 2, 3, 4 i.e. GY521: 0x68 or 0x69

#define FLAP_0 0 // IMU 0 data
#define FLAP_1 1
#define IMU_Wing 2
#define IMU_eleS 3
#define IMU_eleV 4

Hier wird dafür "gesorgt", dass der eine Flap Sensor (Flap_0) an "Stelle" 0 im Array über Adresse 0x69 abgefragt wird
Flap_1 also über Adresse 0x68

Bei EWD Messung hat die "Flächen" Imu 0x69,
die Leitwerks-IMUs 0x68

Da die Abfrage der Sensoren via i2c in der kompilierten Version funktioniert gehe ich mal davon aus, dass die Verkabelung korrekt ist und ein Sensor auch via Brücke von Dir auf 0x69 umadressiert wurde, richtig ?
 
Hallo Udo,

die fraglichen Zeile in imu.h sind identisch:

// IMU specific:
#define IMUSCALE 16384 // IMU resolution / scaling of sensor (mpu6050=16bit, so 90 degree=14bit >> 2^14=16384)
int angSensor_Addr[5]={0x69,0x68,0x69,0x68,0x68}; // enter addresses from sensor0, 1, 2, 3, 4 i.e. GY521: 0x68 or 0x69

#define FLAP_0 0 // IMU 0 data
#define FLAP_1 1
#define IMU_Wing 2
#define IMU_eleS 3
#define IMU_eleV 4

richtig, ein Sensor wurde per Brücke anders adressiert. Habe auch schon mit IMUs aus einer anderen Serie getestet, selbe Problem.
Beide Sensoren werden unter den Menüpunkten EWD und Ruder gelesen.
Nur bekomme ich in beiden Untermenüs keine vernünftige Kalibrierung hin.
Mit der Binärversion geht dies alles tadellos.

/vG Jürgen
 
Hi,

da mit den Hex Files alles funktioniert ist ja ein HW Problem / falsches Pinning auszuschliessen.
Die Imus werden an den SCA/SDL Pins angeschlossen und kommunizieren via i2c.
Wenn's einmal funzt muss es immer funzen.

Das einzige, was mir noch einfällt, ist dass dein Compiler "etwas anderes" aus dem Coding macht als meiner.

Da könnte ich mir als Ursache eigentlich nur andere Versionen / Bezugsquellen der 3rd party libs vorstellen.
Ich sende dir mal eine PM dazu.

Du hast definitiv Mega2560 in der IDE gewählt?

ansonsten:
Einfach nochmal von github den Code runterziehen, ggf noch TFT Typ anpassen und Compilieren ohne weitere Änderung hast du sicherlich schon mal versucht, oder?
Evtl waere noch eine genauere Beschreibung zu "kalibrierung funzt nicht" hilfreich.


Grüsse
 
Oben Unten