EWDuino: EWD Messung mit Arduino

Hallo Kalle,

abgleichen oder kalibrieren,hmm ... mit "eichen" hätte ich ein Problem, aber egal.
Warum sollte ich mehrere kaufen? Hier im Forum wird nur positives berichtet. Entweder hat sich nicht wirklich jemand damit befasst oder meine Sensoren sind für die Tonne.
Was den Preis anbelangt so kann man den bei Eckstein nach blättern. Im Gegensatz zu den Chinaprukten eher hochpreisig, das jedoch bringt mich jetzt nicht weiter.
Die unten aufgeführten Files kenne ich bereits bzw bringen keine Erhellung

Grundfrage ist, was passiert denn in/mit dem Kalibrierungs-Sketch?
Das Ergebnis ist auf jedenfall nicht befriedigend.
 
Klar ist das eine Spielerei :D
Das macht ja das ganze interessant, sich einzuarbeiten, zu verstehen und zu verbessern.
Fertig kaufen kann jeder ;)

Das war nicht böse gemeint, sondern zeigt auf, dass die Genauigkeit nicht gleichbleibend ist, sondern nur in der Stellung und zu dem Punkt passt, bei dem ich genullt habe. Sobald ich die Neigung der Messschienen verändere, passt es eher wenig. Sieht man auch ganz gut in deinen Bildern. Die Y-Achse ist da noch nicht mal berücksichtigt.
Ich gebe dir zu 100% recht, kaufen kann jeder, deshalb hab ich mich auch damit auseinandergesetzt und schreibe hier. Nur die Sketche stammen nicht von mir und ich gebe nur wider, was mir aufgefallen ist.
Ob ihr das auch so seht, weiß ich nicht??

Und nochmal, was macht der Kalibrierungs-Sketch den wirklich?
Dazu habe ich bisher keine Antwort bekommen.:rolleyes:
 
Erklärung Kalibriersketch

Erklärung Kalibriersketch

Welchen Sketch nutzt du für die Kalibrierung? Ich habe einen, beim dem der Sensor in alle Extrem-Positionen bewegt wird und dann durch eine Taste bestätigt (verlinkt beim Eintrag von RC-Maker.)

Bei der Kalibrierung wird der Sensor in eine Extrem-Positionen bewegt. Dabei sollte dann immer eine Achse den Messwert 1G haben und alle anderen Achsen 0G. Wird der Sensor auf den Kopf gelegt, ist der Messwert -1G.
Gehen wir mal davon aus, dass der Sensor flach auf dem Tisch liegt. Dann messen die X und Y-Achse jeweils 0G und Z=1G. Der theoretische Messbereich ist von -4095 für -1G bis +4095 für 1G.
In der Praxis ist dieses aber nicht der Fall. Liegt der Sensor mit flach auf dem Tisch wird z.B. ein Wert von 4050 angezeigt. Somit entspricht bei dem Sensor der Wert 4050 = 1G.
Liegt der Sensor umgedreht auf dem Tisch ergibt sich beispielsweise ein Wert von -3900 = -1G.
Das sind die Sensor-spezifischen Messwerte die dann jeweils für 1G gelten. Also -1G=-3900 / +1G=4050

Der Offset wird wie folgt berechnet:

Offset = (Max-Wert + Min-Wert)*0,5
Offset = (4050+(-3900))*0,5
Offset = 150 * 0,5
Offset = 75

Der Offset beschreibt also, wenn der Messbereich um 150 Einheiten abweicht, muss ich ihn um die hälfte nach oben korrigieren damit wieder 0 raus kommt.
Der Offset berechnet also den Wert den der Sensor bei 0G haben müsste (75). Der Offset wird dann jeweils vom Messwert abgezogen.

Min-Wert mit Offset = Min-Wert -75 = -3900-75 = -3975
Max-Wert mit Offset = Max-Wert - 75 = 4050-75= +3975

Somit ist der Messbereich nach oben und unten gleich.

Fehlt noch Gain(Verstärkungsfaktor). Wir wissen jetzt, dass unser Sensor den Messbereich -3900 bis 4050 hat. Der gesamte Messbereich ist hat also insgesamt 7950 Einheiten.
Messbereich = MaxWert - MinWert = 4050- (-3900) = 7950

Für die Berechnungen der Winkel benötigen wir die G-Werte von allen Sensoren, die eigentlich die Messwerte -4095 bis +4095 haben sollten. Dadurch, dass die Sensoren diese Werte aber nicht haben müssen wir unseren gemessenen Wert so "verstärken", dass am Ende bei 1G wieder 4095 raus kommt.
Gain = 0,5*(Messbereich / 4095)
Gain = 0,5* (7950 / 4095)
Gain = 0,5* 1,941
Gain = 0,97

Somit habe wir jetzt den Offset und Gain für eine Achse berechnet.

Die Berechnung des G-Wertes lautet = ((Messwert - Offset) * Gain) * (1/4095)

Beispiel Messwert 0:
G-Wert = ((0-75)*0,97)* (1/4095)
G-Wert = (-75*0,97)* (0,0002442)
G-Wert = -0,0188G

Beispiel Messwert 4050
G-Wert = ((4050-75)*0,97)* (1/4095)
G-Wert = ((3975)*0,97)* (0,0002442)
G-Wert = 1


Der Offset berechnet also den Messwert, den der Sensor bei 0G ausgeben müsste.
Der Gain-Wert streckt gemessenen Wert so, dass der Messbereich am Ende wieder bei -4095 bis + 4095 liegt und alle Werte somit vergleichbar sind.

Der Kalibriersketch macht nichts anderes als die jeweiligen Min und Max-Werte pro Achse zu speichern und anhand der oben gezeigten Formeln den Offset und Gain zu berechnen.

Was ich an dieser Stelle jetzt nicht beurteilen kann, da ich gerade keinen Sensor zur Hand habe ist, ist die Abweichung positiv zu negativ wirklich gleich?
Dazu müsste man sich mal die unveränderten Messwerte ansehen. Wenn der Sensor beispielsweise bei 0G= Messwert 0 hat aber dennoch unterschiedliche Min/Max-Wert, dann müsste man für positive und negative Werte verschiedene Gain-Faktoren nutzen.

Ich hoffe ich konnte einigermaßen erklären wie die Werte zusammen hängen.
 

kalle123

User
Und nochmal, was macht der Kalibrierungs-Sketch den wirklich?
Dazu habe ich bisher keine Antwort bekommen.:rolleyes:

Dann 'versuch' ich das mal ;)

Sensormessprinzip des Sensors = Gravitation.

Und wird allg. mit g = 9.81 m/s² angegeben. Ist aber keine Konstante, sondern variiert auf unserer Erde. Und das bei Sensoren mit xx bit Auflösung.

https://de.wikipedia.org/wiki/Schwerefeld

So jetzt mal zum Abgleich selber.

Hab hier mal ein Bildchen gemacht. ADXL 345 Sensor.

Gescanntes Dokument.jpg

Der 'ideale' ADXL 345 Sensor sollte bei 9.81 m/s² 255 bit und bei -9.81 m/s² -255 bit ausgeben. GRÜNE Gerade. Nur, es gibt den 'ideale' Sensor nicht. Wenn du jetzt mit deinem Sensor die Punkte 9.81 m/s², 0 m/s² und -9.81 m/s² an fährst, wird da so was wie die drei ROTEN Punkte raus kommen.

Was jetzt gemacht wird, du bestimmst den GAIN und den OFFSET und 'biegst' DEINEN Sensor in Richtung GRÜNE (ideale) Gerade.

Hab da hier http://www.rc-network.de/forum/showthread.php/624334-Ruderweg-Messung-mit-Arduino?p=4327898&viewfull=1#post4327898

und hier http://www.rc-network.de/forum/showthread.php/624334-Ruderweg-Messung-mit-Arduino?p=4365025&viewfull=1#post4365025 was zu geschrieben.

Das Ganze ist jetzt natürlich ein Sebstbeschiss, weil zwischen den ROTEN Punkten 9.81 m/s², 0 m/s² und -9.81 m/s² sicher keine absoluten Geraden liegen werden, sondern irgendwas Krummes.

Also macht man, wenn es sehr gut sein soll, Messreihen, wo du den Sensor in einem bekannten Gravitationsfeld jeweils um x.xx° bewegst und dabei die Ausgabewerte aufzeichnest. Dann baut man die Werte in eine hash Tabelle ein und arbeitet bei DIESEM Sensor in DIESEM Gravitationsfeld mit DIESER hash Tabelle. Bitte auch für alle drei Achsen.

Hoffe, es ist jetzt etwas klarer.

Nebenbei, ich hab hier einige ADXL 345 und MMA 8451 und da gibt es bessere und schlechtere ;)

Gruß KH

Jetzt seh ich gerade, Master1866, war schneller ...:D
 

kalle123

User
Hi,

na, die 'Rechnerei' hab ich in den gelinkten Posts von mir schon in 2017 gemacht. :D

Aber doppelt schadet ja nicht. Außerdem hat Robert ja laut nach nach Erklärungen verlangt.

Vielleicht wird in dem Zusammenhang auch etwas klarer, warum ich mich gegen den Begriff 'Kalibrierung' wende. Ich nenne so was DIY Abgleich 'home made'. ;)

Gruß KH
 
@Master1866 und @kalle123,
das ist eine Erklärung, die ich auch verstehe.
Respekt,da habt ihr euch viel Arbeit gemacht um es auch dem nicht so bewanderten Anwender begreiflich zu machen und ja, ich hab den Sketch von RC-Maker verwendet.

Jetzt kann ich mir die Abweichungen nur noch dadurch erklären, dass die Sensoren, trotz dem relativen hohen Preis, ungenau sind. Weil am Abgleichen wird es nicht liegen.

Wo bekomme ich nun die MMA8451 her, welcher einigermaßen passen?

Danke noch mal, jetzt sehe ich deutlich klarer und kann auch das Verhalten der Sensoren besser einschätzen!
 

RayX

User
Meine letzten 4 Bestellungen von 8451 ging bis jetzt immer in die Hose und waren jedesmal 8452, anscheinend gibt es keine mehr.
ich versuche schon 6 Monate welche zu bekommen
 
Hi,
sorry dass ich erst jetzt antworte, war ein paar Tage außer Gefecht gesetzt. Die bestellten 8451er und dann gelieferten 8452er vom Chinesen, liegen hier rum. Also ein Schuss in den Ofen. Die von Eckstein sind preislich gleich wie die von Reichelt.
Von da her spielt es keine Rolle. Jetzt bestelle ich einfach einen Satz bei Reichelt obwohl hier noch GY521 rum liegen. Nur dazu fehlen mir die entsprechenden Sketche.
 
Dann würde ich mir das hier

http://www.rc-network.de/forum/showthread.php/771252-RC-Einstell-Tool-zum-Vermessen-von-Ruderausschl%C3%A4gen-und-zur-Ansteuerung-eines-Servos

mal näher anschauen.

Damit kann man auch Winkel messen und nix anderes ist eine EWD Messung doch.

cu KH

Ich hab den Thread studiert. Klasse gemacht und führt auch für den Einsteiger ratz fatz zum Ziel. Das bau ich auf jeden Fall mal nach, nein hab den ESP 8266 bereits bestellt :-)

Eine Anpassung der EWD Messung, an den GY-521, wäre trotzdem eine tolle Sache.
 

S_a_S

User
Eine Anpassung der EWD Messung, an den GY-521
habe heute mal die MPU6050 lib eingebunden, verwende aber direkt LCD ohne I2C an den Arduino nano Ports 2-7. Die Bauteile hab ich beim Pollin gefunden.

Scheint zu funktionieren, ~0,1° Rauschen. Was mich etwas wundert, dass ich beim Kalibriersketch für die beiden Sensoren stark unterschiedliche gain-Werte bekomme.

Aluschiene ist gekauft, muss mal den Drucker abstauben... Wenn die Sensoren mal nicht nur am Kabel/Steckbrett hängen, werde ich das nochmal "vermessen" und hier hochladen.

Grüße Stefan
 

S_a_S

User
anbei mal der Arbeitsstand (mit zwei Stellen Auflösung, aber nicht besonders schön formatiert).
Hab das als .doc benannt, ist aber ein .zip (lässt sich nicht direkt hochladen).
Also wieder umbenennen. Enthält die benutzten Bibliotheken in Unterordnern.

Grüße Stefan
 

Anhänge

  • ewd6050.doc
    104,4 KB · Aufrufe: 203

S_a_S

User
Heute habe ich mir die Halter (aus PLA) gedruckt und die GY521 / MPU6050 von Joy-it eingeschraubt - passt wie angegossen, wenn man die gewinkelten Stiftleisten auslötet. Den letzten Halter (ohne Sensor) muss ich noch ans Rohr anpassen (so präzise/eingerichtet ist der Drucker nicht).
Dabei habe ich festgestellt, dass das Koordinatensystem anders ausgerichtet ist, muss also an die Software nochmals ran. Aktuell wird bei vorgesehenem Anbau ein ~90° Winkel gezeigt. Weil da aber die Polstelle vom Tangens liegt, wird die Differenzrechnung recht ungenau.

Grüße Stefan
 

S_a_S

User
Hi Stefan,
läßt du uns an deinem Projekt teilhaben?
Was heisst ohne I2C am LCD und wie sehen deine Halter aus?

Hallo Robert,

aber gerne.

Ohne I2C am LCD ist im Arduino Tutorial beschrieben.

Technisch hier auf der Lochrasterplatine realisiert.

lcd_verdrahtung.png

Das LCD-Modul hat zwar Flachkabelanschluss, könnte aber auch direkt verlötet werden. Das Gehäuse hab ich dazu abgezwickt. Habe aber trotzdem einen Sockel genommen, ist noch ein fliegender Versuchsaufbau.

lcd.png

Auf der Rückseite ist dann der Nano gesockelt und eine Doppelstock-USB-Buchse für den Sensoranschluss geplant. Auch zu sehen das Poti für die Kontrasteinstellung.

nano_usb_poti.png

Die Halter sind direkt von Thingiverse (ein dickes Danke Max !!!) ohne Nachbearbeitung. Aluschiene vom Bauhaus.

halter.png

Eine Schraube schon eingedreht, das Kabel mit Kabelbinder als (Pseudo-) Zugentlastung. Mal gespannt, wie lange die Drähtchen das aushalten.
Kabel ist von einer USB-Verlängerung (hab ich mal Buchsen gebraucht, lagen also rum).

gy521_einbau.png

Probeweise mal auf den Tisch gestellt

testaufbau.png

und Anzeige (wie im oben angehängten Sketch implementiert).

anzeige.png

Vorher steckten die GY-521 mit X-Pfeil nach oben über gekröpfte Stiftleiste im Steckbrett.
(und wenn ich mir Bilder vom Adafruit und Joy-it nebeneinander lege, ist das aufgedruckte Koordinatensystem um 90° gegen den Uhrzeigersinn weitergedreht).


Grüße Stefan
 
Hallo Stefan,
die Doppel USB-Leiste für den Sensoranschluss ich auch eine Option nur nimmt die ein wenig Platz ein.
Deine Psyeudozugentlastung wird effektiver wenn du Heisskleber verwendest.
Als Zuleitung zu den Messhalterungen haben sich Kabel von Mäusen bewährt.

Angenommen ich habe eine komplette LCD Anzeige, also mit I2C Schnittstelle. Wie muß ich deinen Sketch ummodeln,
damit ich mir die vielen Verbindungen zum LCD Modul spare?

Ich weiß ja nicht wie weit du mit deinen Versuchen bist, jedoch hast du schon mal versucht deine Messbrücken nach links und rechts
um 45° - 90° zu Kippen?
Würde mich interessieren was dann anzeigt wird. Meine Versuche in der Beziehung waren enttäuschend. Zumindest mit den 8451ern.
Dies habe ich weiter oben schon mal beschrieben. Aussagekräftige Rückmeldungen von anderen habe ich nicht bekommen!!
Danke Stefan für deine Ausführungen.
 
Ansicht hell / dunkel umschalten
Oben Unten