Raspberry PI 4, MGG996R Servomotor dreht manchmal durch

  • Hallo zusammen:S

    Ich bin gerade dabei mir einen Raspberry Pi 6 DOF Robot Arm zusammenzubauen.

    Ich habe mir 6 MG996R Servomotoren gekauft welche über ein PCA9685 Treiber Board gemeinsam angesteuert werden.

    Angeschlossen habe ich das ganze wie im angehängten Bild.

    Ich habe nun versucht die Motoren über folgenden Code anzusteuern:

    Ich habe folgendes Problem. Starte ich das Skript läuft es manchmal genau so durch wie ich es möchte, d.h. die Servomotoren drehen nacheinander an ihre max. Position und danach an ihre min.Position. Das Problem ist aber das manchmal (warum auch immer) ein Servomotor nach starten des Skripts nicht an der gewünschten Position stoppt sondern einfach immer weiter dreht, auch nach Beendigung des Skripts. Das einzige was hilft, ist die Stromzufuhr zu unterbrechen. Oft passiert das auch sobald das Skript fertig ist.

    Ich habe wirklich keine Ahnung woran das liegt, da es eben manchmal auch normal funktioniert.

    Kann das irgendwie an den time.sleep() liegen, dass ich hier größere Wert nutzen muss, damit ich mit dem nächsten Kommando erst weiter mache, wenn der Servo an der richtigen Position ist?

    Des Weiteren ist mir aufgefallen, dass nach Beendigung des Skripts manchmal die Servomotoren "fest" sind, also dass sie versuchen ihre Position quasi zu halten und manchmal nicht. Kann es irgendwie sein, dass da im Hintergrund ein Thread gestartet wird, denn ich extra noch beenden muss?

    Danke für eure Hilfe!!

    LG

  • Raspberry PI 4, MGG996R Servomotor dreht manchmal durch? Schau mal ob du hier fündig wirst!

  • Hi:)

    Das hier ist mein Skript:

    Was ich zusätzlich noch versucht habe ist am Ende für alle pins dauerhaft PWM = 0 zusetzten, aber das hat auch nichts gebracht.

    Code
    while True:    
        pwm.set_pwm(7, 0, 0)
        pwm.set_pwm(4, 0, 0)
        pwm.set_pwm(2, 0, 0)

    Was mir außerdem aufgefallen ist, dass manchmal der Servo nicht reagiert also er fährt nicht an die Position. Trenne ich aber kurz die externe 5V Versorgung und schließe sie wieder, dann macht er die Bewegung. Ich bin sehr verwirrt, weil ich kein Muster erkennen, wann es funktioniert und wann nicht:/

  • Die 60 Hz sind schonmal falsch. Der Arbeitstakt von Servos liegt bei 50Hz. Und die Wertebereiche sind IMHO auch falsch. Normalerweise laufen Servos von 1-2ms Pulsbreite. Das wären bei 12Bit PWM Auflösung 200-400 Pulse in etwa. Nicht 150-600.

  • Wenn mit 50Hz und den 200-400 die Servos stabil laufen, ist das erstmal das wichtigere. Wenn das so ist, kannst du dich an die extreme herantasteten. Aber Servos mögen das nicht, wenn man sie falsch betreibt.

    Und der Code dort hat doch move_servo_to_percent?

  • Genau der Code nutzt move_servo_to_percent aber innerhalb der Methode wird dann auch 600 bzw.150 genutzt um den entsprechenden Wert in set_pwm einzusetzten.

    Mh okai aber der oberste Servo steuert ja bei dem Roboter den Greifarm und mit 400 bzw.200 ist er halt kaum geschlossen, also damit wird man so nichts greifen können:/

  • Ja ich habe es gelesen.

    Leider tritt auch hier der selbe Effekt auf.

    Gerade ist auch etwas sehr seltsames passiert. Nachdem ich das Skript beendet habe, hat der Motor einfach weiter die Bewegung durchgeführt.

    Ist vielleicht das PCA9685 Modul defekt? Oder der Ausgang vom PI?

    LG

  • Eher das Modul, sonst ginge denke ich gar nichts.

    Du kannst probieren eine der Steuerleitungen des Servos über einen PI PWM Pin anzusteuern. Strom muss natürlich vom Board kommen. Dadurch nimmst du den expander aus der Gleichung. Wenn das gut geht, kennst Du den Schuldigen.

  • Hallo,

    wurde das Problem behoben?

    Ich habe das Gleiche \ Ähnliche Problem.

    PCA9685 mit dem MG996R Servo

    Bei meinem Script kommt es vor, das die Servos nicht in die Ausgangposition zurück kehren oder nach dem Ende vom Script auch weiter laufen.

    Bei dem Weiterlaufen muss ich die Kabel am Treiberboard abstecken und wieder anstecken bevor der Servo sich irgendwie wieder bewegt.

    Ich nutze auch die Adafruit_PCA9685 Bibliothek.

    Vielen Dank im Vorfeld

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!