Ruderweg Messung mit Arduino

kalle123

User
Hallo zusammen,


habe mir auch eine Ruderweg Messung mit dem MMA 8452 gebaut.
Funktioniert soweit gut, aber ich glaube das ist ein Fehler drinnen.
Mir ist aufgefallen das wenn man die Ruderlänge auf 10mm stellt und dann den Sensor um 90° kippt dann wird 14,4mm angezeigt.
Müssten das nicht 10mm sein ?

Meine Logik dahinter wenn ich ein 10mm Langes Streichholz auf den Tisch lege oder es senkrecht stelle hat es immer 10mm. oder habe ich da einen Denkfehler ??


Gruß

Ich tippe mal einfach auf Sekantenmessung ;)

Siehe meinen post #46 hier im thread. GRÜN wäre die 10 mm, ROT 14.1 mm bei 90°.

Gruß KH
 
Hallo zusammen,


habe mir auch eine Ruderweg Messung mit dem MMA 8452 gebaut.
Funktioniert soweit gut, aber ich glaube das ist ein Fehler drinnen.
Mir ist aufgefallen das wenn man die Ruderlänge auf 10mm stellt und dann den Sensor um 90° kippt dann wird 14,4mm angezeigt.
Müssten das nicht 10mm sein ?

Meine Logik dahinter wenn ich ein 10mm Langes Streichholz auf den Tisch lege oder es senkrecht stelle hat es immer 10mm. oder habe ich da einen Denkfehler ??


Gruß

Wie Kalle schon geschrieben hat, wird es sich bei Deiner Messung um eine Messung im Sekantenmodus gehandelt haben. Diese folgt folgender Logik: a2 + b2 = c2. Die Seitenlängen deines Dreiecks betragen jeweils 10mm, das Ergebnis ist daher c2=200mm oder c = 14,14mm. Es ist also alles in Ordnung!
 

RayX

User
Super, danke für die info.


Noch eine Frage:
Ich wollte gerne den Sketch von @I3uLL3t verwenden, allerdings bleibt das Display dunkel.
Ich tippe mal auf die U8G lib, da gibt es einige, allerdings habe ich bis jetzt keine Gefunden bei der das 128X64 etwas anzeigt (komplett dunkel)
Welche Version ist die richtige ????

Andere Sketche die die neue U8g2 Lib verwenden funktionieren, haben aber nicht die Änderungen die I3uLL3t vorgenommen hat und sind nur für das 128X32

Wenn mir da noch mal jemand auf die Sprünge helfen könnte...

Danke

Gruß
Ray
 

Blamer

User
Eckehards Version mit MMA8451

Eckehards Version mit MMA8451

Hallo, zusammen,

ich möchte das Projekt von Eckehard gerne nachbauen mit den Sensoren MMA8451, die ich von einem anderen Projekt noch zur Verfügung habe. Hat jemand den Code an die Sensoren angepasst und könnte mir das Arduino file zur Verfügung stellen?

Ich danke Euch!

Frank
 
Hilfestellung

Hilfestellung

habe mir die Ruderwegsmessung mit dem Arduino und den ADXL345 nachgebaut, dabei sind 2 Fragen aufgetaucht. Dazu gleich mehr.
Da ich nicht nur profitieren will, anbei der Link für 3 STL-Files für ein 3D-Druck Gehäuse für den Sensor ADXL345, bestehend aus Gehäuse, Deckel und einer Gegenplatte (wegen Druckstellen). Das Ganze wird komplettiert durch die meist vorhandene Wolfcraft-Klemme. Fixieren mit 2 Tropfen Heißkleber, damits wieder lösbar ist.
http://www.rhttp://www.rc-network.d...tachmentid=2235416&d=1577729786&thumb=1&stc=1
http://www.rc-network.de/forum/attachment.php?attachmentid=2235417&d=1577729786&thumb=1&stc=1
Link für die Dateien: https://www.dropbox.com/sh/wu23penabjzzuxl/AADrmuAjl_stVWERQ_ZSBS5oa?dl=0
Nun meine Probleme: die beiden Sensoren weichen wertemäßig trotz mehrfacher Kalibrierung bei 45° Winkel nach oben und unten um 7° voneinander ab, immer der 2. Sensor, durchtauschen ergibt gleiches Ergebnis.
Solange ich den Sensor auf Adresse 0x1D stelle, alles gut, sobald Pin SD0 auf high steht (Adresse 0x53), stimmt mein Messergebnis nicht mehr. Auch Kalibrieren mit der 2. Adresse ergibt kein abweichendes Ergebnis.
Hab auch schon geprüft, ob das Programm beim Berechnen der 2. Adresse andere Werte zugrundelegt - Fehlanzeige.
Meine Versionsnummer:ino_version 52, ino_date 171230. Arduino Uno mit keypadshield und LCD-Anzeige, Sensoren ADXL345.
Hat schon mal jemand dieses Fehlerbild gehabt ?
2. Frage: Kalibrierprozedur habe ich 2 Versionen gefunden: SparkFun und Arduino. Ergeben unterschiedliche Offset und Gainwerte, habs mit beiden schon probiert, Ergebnis ist marginal dasselbe mit eben der Wertedifferenz.
Im Downloadordner ist mein Excel-Rechensheet hinterlegt zur besseren Erklärung.

Vielleicht seh ich auch den Wald vor lauter Bäumen nicht mehr !

Hans-Peter
 

Anhänge

  • IMG_20191230_190758.jpg
    IMG_20191230_190758.jpg
    224,5 KB · Aufrufe: 193
  • IMG_20191230_190702.jpg
    IMG_20191230_190702.jpg
    236,4 KB · Aufrufe: 221

kalle123

User
Hallo Hans-Peter.

Wie sich das anhört, hast du Eckehards Version nach gebaut. Wenn ich deine Äußerungen mit den Abweichungen bei 45° richtig verstehe, liegt das nicht an den ADXL345?! Und da die Sensoren über den I2C Bus auf den Arduino gehen, müsste das eine Sache des Codes sein. Mal schaun, ob sich Eckehard dazu meldet.

Gruß KH
 
Hallo KH,
ja ist Ekkehardts Version, hatte ich vergessen zu erwähnen.
Die Sensoren möchte ich inzwischen eigentlich ausschliessen, von der Logik her dachte ich an eine unterschiedliche Berechnungsweise je Sensor innerhalb des Programmes, finde hierzu aber keinen Hinweis.
Habe versuchsweise schon mal die Adressen der beiden Sensoren im Programm vertauscht, der Fehler findet definitiv beim zweiten Sensor statt.
Habe noch 2 MMA8452 da, weiss aber noch nicht, wie ich die probeweise im Sketch verankern kann (trotz Alter Newbi bei C++ - sorry).
Wahrscheinlich habe ich einen dummen Fehler gemacht, der mir nicht auffällt.

Der Bau der Arduino Schwerpunktwaage hat perfekt geklappt, die Waage erleichtert doch erheblich das Auswiegen der Modelle (vermeidet besonders das Herunterfallen bei nicht stimmigem Schwerpunkt von der bisherigen mechanischen Multiplex-Waage).
 

kalle123

User
Hans-Peter.

Ich mag und will nicht in Eckehards Code 'rein Fummeln'. Bin Vertreter von 1 Sensor, 1 Arduino und 1 Display. ;)

Und zum MMA8452. Ich hab mit dem 8451 gearbeitet und meine Sketches hier sind für diesen Sensor ausgelegt.

Ich habe keine 8452 hier, müsste man aber haben, um den Code anzupassen .... Sorry.

Gruß KH
 
Fehler wohl lokalisiert

Fehler wohl lokalisiert

Hallo KH,

danke für Deine schnellen Antworten.
Habe noch ein bischen probiert und die beiden Sensoren direkt ausgelesen, gibt es eine Funktion unter Arduino.
Mit der Standardadresse ist alles gut, die Sensoren laufen sauber in ihren Beschleunigungsebenen, was das rc-meter ja auch ausgibt.
Lege ich Pin SD0 auf High für die zweite Adresse, so liefern beide Sensoren verfälschte Werte, wie wenn eine Kurve hinterlegt wäre. Deswegen auch bei zunehmender Schräglage eine größer werdende Differenz.
Pin SD0 wieder unbeschaltet (Adresse 0x53) ist alles wieder gut.
Da muss man erst mal darauf kommen, mein Sohn hat es dank seiner Programmierkenntnisse erkannt.
Werde jetzt erst mal neue Sensoren bestellen in der Hoffnung, die kommen nicht aus derselben Produktion.

Hans-Peter
 

Eckehard

User
Hallo Hans-Peter,

fein das nach sooo langer Zeit mein Sketch noch so anregend wirkt, die Idee von Kalle nachzubauen ;-)...

Nur um nicht an der falschen Stelle zu suchen...

Verwendest Du den Sketch

- mit dem Dateiname RC_ANGLE_THROW_KeypadShield_5.ino und
- den ersten 5 Code Zeilen:
+++
/*
STATUS OK
Version */
int ino_version = 52;
long ino_date = 171230;
/*
+++


????


und....

Mit "Habe noch ein bischen probiert und die beiden Sensoren direkt ausgelesen..." meinst Du einen anderen Sketch, oder?

Danke und Grüße

Eckehard
 
Hallo Eckehard,

folgender Sketch findet Verwendung (dürfte derselbe sein), siehe Anhang, habs nicht anders einfügen können.

Als Sketch für direktes Werteauslesen hab ich in der Arduino-Bibliothek unter Beispiele eine Datei gefunden, die mit geringer Anpassung für meine Zwecke dient. Damit konnte ich erkennen, dass die von mir verwendeten Sensoren bei der zweiten Adressierung andere Werte liefern als mit der Standardadresse. Kommt mir sehr komisch vor, habe, wie geschrieben, nochmals zwei bestellt. Ich hoffe, dass damit der Fehler weg ist. Erklären kann ich mir dieses Verhalten nicht, weichen aber tatsächlich bei 45° Winkel um ca. 7° ab, und zwar in beide Richtungen (und nur bei Adressierung 0x1D).
Wir haben auf dem Notebook meines Sohnes eine neue Arduino-Umgebung aufgebaut, um auszuschliessen, dass andere Libraries "reinfunken" - Ergebnis dasselbe.
Melde mich, wenn ich die Sensoren probiert habe.

Hans-Peter
 

Anhänge

  • Header.docx
    49,8 KB · Aufrufe: 174

Eckehard

User
Hallo Hans-Peter,

ich konnte nun Deine ursprüngliche Nachricht nocheinma lesen und verstehen... Damit sind meine Fragen auch beantwortet.... Ich hatte das vorhin noch nicht , vermutlich hängt das mit der gestrigen Feier zusammen.. :-)

Wäre toll, wenn Du von Deinen weiteren Erfahrungen mit den ADXL Sensoren berichten würdest....

Danke und Grüße
Eckehard

Upps, da hat sich meien Antwort mit Deiner wohl überschnitten..... :-)
 
Ruderwegmessung

Ruderwegmessung

Liebe Kollegen,
ich bin dabei mir die Ruderwegmessung mit dem Arduino nachzubauen.
Soweit ist auch alles fertig, nur bekomme ich ums verrecken nicht den Sketch fehlerfrei kompiliert, geschweige denn in den Arduino.

Zuerst weiß ich nicht welche Library eingebunden werdeb muß für die LCD.h Datei, und er meckert auch die LiquidCrystal_I2C Lib an.
Vielleicht hat jemand einen vollständigen Sketch für mich :-)

Gruß
Dietmar


RC_ANGLE_THROW:37:49: error: no matching function for call to 'LiquidCrystal_I2C::LiquidCrystal_I2C(int, int, int, int, int, int, int, int)'

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7); // PCF8754 - 0x27, PCF8754A - 0x3F !

^

In file included from C:\Modellbau\arduino-1.6.12\Ruderwege\123-1\RC_ANGLE_THROW\RC_ANGLE_THROW.ino:34:0:

C:\Users\Skippy\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:57:3: note: candidate: LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t, uint8_t, uint8_t)

LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows);

^~~~~~~~~~~~~~~~~

C:\Users\Skippy\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:57:3: note: candidate expects 3 arguments, 8 provided

C:\Users\Skippy\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:55:7: note: candidate: constexpr LiquidCrystal_I2C::LiquidCrystal_I2C(const LiquidCrystal_I2C&)

class LiquidCrystal_I2C : public Print {

^~~~~~~~~~~~~~~~~

C:\Users\Skippy\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:55:7: note: candidate expects 1 argument, 8 provided

C:\Users\Skippy\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:55:7: note: candidate: constexpr LiquidCrystal_I2C::LiquidCrystal_I2C(LiquidCrystal_I2C&&)

C:\Users\Skippy\Documents\Arduino\libraries\LiquidCrystal_I2C/LiquidCrystal_I2C.h:55:7: note: candidate expects 1 argument, 8 provided

C:\Modellbau\arduino-1.6.12\Ruderwege\123-1\RC_ANGLE_THROW\RC_ANGLE_THROW.ino: In function 'void setup()':

RC_ANGLE_THROW:85:7: error: 'class LiquidCrystal_I2C' has no member named 'setBacklightPin'; did you mean 'setBacklight'?

lcd.setBacklightPin(3, POSITIVE);

^~~~~~~~~~~~~~~

setBacklight

RC_ANGLE_THROW:85:26: error: 'POSITIVE' was not declared in this scope

lcd.setBacklightPin(3, POSITIVE);

^~~~~~~~


 

kalle123

User
Hallo Dietmar.

WAS baust du den da auf? Was hast du denn da?

Windows xx? Arduino IDE Ver. xx? Arduino UNO, Nano, Micro oder xx?

Sensor ADXL 345, MMA 845x?

LCD 1602 oder was?

Gruß KH

PS. ... und wenn du Auszüge oder ähnliche Dinge hier rein setzt, pack die Sachen bitte in nen Codeblock, kann man besser lesen ;)
rakeQKCl.png
 
Hallo Kalle,
Ich möchte eine Ruderwegmessung wie hier im Thread beschrieben aufbauen.
Als Komponenten habe ich den Arduino Nano mit dem LCD Display 1602 IC2 und dem ADXL 345 Sensor.
Alles läuft unter W10. Meine Arduino Vers. ist die 1.8.10

Soweit so gut, nur fehlen mir die Angaben welches die richtigen Librarys sind. Zum Beispiel LCD.h (dort wird nach einem Wprogramm.h gefragt) etc.
Ich habe den 123 Sketch runtergeladen, aber damit gibt es bei mir verschiedene Fehler.

Gruß
 
Ansicht hell / dunkel umschalten
Oben Unten