Gimbal aus Nano MPU6050 2Sevos

Hallo!

Ich bin neu hier und auch das ganze programmieren ist neu.

Ich habe mal einen 3D Drucker gebaut und diesen irgendwann auch zum laufen gebracht. Ein Deltadrucker steht noch rum weil ich ihn nicht kalibriert bekommen und ein Motor heiss wie eine Kochplatte wird. Das ist schon alles was ich an Erfahrung mit Arduino habe, bin ehr so für Mechanik und Konstruktion zu haben.

jetzt hatte ich wieder etwas gesehen und wollte es nachbauen

soll, wenn es denn funktioniert, die Hero Session auf dem Motorradhelm ausgleichen.
Da die kleinen Boards,Platienen und Servos nicht die Welt kosten; Nano, MPU6050 und Servos besorgt und losgelötet nach vorliegendem Plan. Die entsprechenden Libaries eingepflegt und den Sketch versucht auf s nano zu spielen.

War klar…massig Fehler.

Die Tutorials sind gut wenn man Ahnung hat.Nichts für Beginner ,gerade wenn sie auf englisch sind :confused:

Ich bin mir zB nicht sicher ob ich die Libaries richtig eingepflegt habe. Das wäre meine erste Frage wie das geht.

Dann hatte ich viele Fehler und bevor ich die Unmengen an Daten hochlade, habe ich ein zweites Tutorial gefunden was ebenso simpel aussieht, aber auch nicht funzt.

Zumindestens lässt sich der Sketch aufspielen. :smiley:

ich habe die letzten 4 Tage recherchiert und komme einfach nicht weiter.
Was mache ich falsch?
Was braucht ihr für Angaben, um mir helfen zu können die Idee zu verwirklichen?

ich freue mich auf einfach erklärte Antworten.

Ps: die INT Verbindung fehlt noch :astonished:

Für uns wäre Dein Sketch (im Beitrag mit Code-Tags) wichtig und Links zu den Libs, die Du benutzt (wir suchen uns das nicht im Web zusammen!)

Außerdem Deine Fehlermeldungen (als Text, auch in Codetags).

Gruß Tommy

Hi

'Nicht funzt' ist eine äußerst genaue Fehlerbeschreibung.
'Mach richtig' wäre dazu der passende Lösungsansatz.

Wenn uns Deine Fehler klarer werden, werden auch die Lösungen gängiger.

Gerade das 2.te Beispiel sollte doch zumindest 'laufen' - oder habe ich beim Überfliegen was gravierendes übersehen?

MfG

guten Abend!

folgende Libary habe ich installiert: GitHub - jrowberg/i2cdevlib: I2C device library collection for AVR/Arduino or other C++-based MCUs

Scetch zu diesem link: https://www.instructables.com/id/Gyro-Stabilizer-W-Arduino-and-Servo/

kann ich nicht hochladen, da zu viele Zeichen :slightly_frowning_face:

aber nachdem ich das INT Kabel angelötet habe bewegten sich die servos..Hurra

Servo1- D9 Y-Achse, sehr geringer Ausschlag bei großen Bewegungen des Sensors
Servo2-D10 X-Achse,sehr heftiger Ausschlag bei kleinen Bewegungen des Sensors

nach sehr heftigen hin und herbewegen hängt sich das ganze system auf und kann nur durch reset neu gestartet werden.das ist natürlich käse. das System soll ja möglichst ohne Ausfälle lange seinen Dienst tun und die Kamera stabilisieren.

Kann man den MPU6050 eigentlich kalibrieren?wenn ja wie?
Auch die MIN / MAX Winkel müssen eingestellt werden-Wo im scetch ist das möglich?

Was mich noch irritiert-im scetch steht:

// Servo Connection
// BROWN - gnd
// red - 5v
// yellow - d10 (pwm on Sero 1)
//        - d11 (servo 2)

aber im Schaltplan sind die an D9 und D10 dran oder ist das schräg fotografiert?
komisch das es trotzden funktioniert.

Naja wenigstens hat sich schonmal was bewegt...das ist ja schonmal ein Teilerfolg!

Hi

Wo hast Du diese Servos angeschlossen?
Es ist ja herrlich witzlos, wenn der Sketch was Anderes schwätzt, als Du verdrahtet hast.
Laut der Beschreibung wurden D10 und D11 benutzt - wenn bei Dir beide Servos ‘Leben zeigen’ - wird Das wohl auch passen - ohne Ansteuerung der Pins, an Denen das Servo hängt, macht Das nicht sonderlich viel.
Zucken=Gut - zumindest besser, als nicht Zucken!

Hast Du Dir angesehen, was von Deinem Sensor für Werte ausgespuckt werden?

MfG

Hallo und danke für die schnelle Rückmeldung.

D10 und D11 sind doch richtig verkabelt...

Werte aus serial monitor die ich schon eingetragen habe:

 mpu.setXGyroOffset(153);
  mpu.setYGyroOffset(-70);
  mpu.setZGyroOffset(5);
  mpu.setXAccelOffset(-2361);
  mpu.setYAccelOffset(-1722);
  mpu.setZAccelOffset(1225 );

damit läuft es. :astonished:

Aber!: Das System bleibt nach ca 1-2 minuten Stillstand hängen(?)

und gut wäre wenn man noch den Ausschlag einstellen könnte, damit mit der eine Dreharm nicht ans Gehäuse schlägt, wenn es mal heftige Bewegungen gibt.Wo kann man das einstellen, wenn überhaupt?

Hi

Irgendwo bekommst Du Messwerte, Die Du ans Servo schickst.
Wie in der PHP/mySQL-Programmierung: NIEMALS User-Daten ungeprüft ausführen - Ähnliches hier.
Die berechneten Winkel würde ich zumindest über constrain schicken - Das begrenzt auch auf die angegebenen Werte.
Innerhalb wird der Wert zurück gegeben, Außerhalb die Grenzwerte.
Finden kannst Du Das z.B., indem Du in Google (... oder einer Suchmaschine Deiner Wahl - bei mir DuckDuckGo) nach 'Arduino MIN' suchst - Ok, MIN gibt das Minimum zurück - AABER - dort werden ähnliche Funktionen ebenfalls genannt/verlinkt - weil das 'constrain' kann ich mir nicht merken oder gehe, während ich die korrekte Rechtschreibung ausprobiere, noch in Rente ...

MfG

ich habs nach einigen Seiten im WEB gefunden...es steht schon im code

 // display Euler angles in degrees
    mpu.dmpGetQuaternion(&q, fifoBuffer);
    mpu.dmpGetGravity(&gravity, &q);
    mpu.dmpGetYawPitchRoll(ypr, &q, &gravity);
    mpuPitch = ypr[PITCH] * 90 / M_PI;
    mpuRoll = ypr[ROLL] * 30 / M_PI;
    mpuYaw  = ypr[YAW] * 180 / M_PI;

Pitch=90°
Roll=30°
Z=180° (nicht angeschlossen)

es scheint alles zu funktionieren-vielen Dank!

ich baue das gimbal jetzt und lade dann noch ein kurzes Video hoch...stay tuned