Adafruit PWM/Servo Driver

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo ihr,

    ich beschäftige bereits eine Weile mit der Aufgabe mit einem Rasberry, einem Adafruit PWM/Servo Driver und der Library von Adafruit vorerst einen Servo zu steuern.

    Grundsätzlich scheint es zu funktionieren aber beim Einsatz der Methode zum Senden des PWMs ist bei mir der Groschen noch nicht gefallen.

    Ich habe jetzt mittels

    [code=php]
    tick = 200
    pwm = PWM(0x40)
    pwm.setPWMFreq(100)

    while True:
    pwm.setPWM(0, 0, tick)
    print "%d is the tick" % tick
    tick = tick + 5
    time.sleep(.5)
    [/php]
    festmachen können, dass sich der Servo von 250 bis 925 als Pulslänge jeweils ein Stückchen nach links dreht - vorausgesetzt ich habe ihn vorher manuell komplett nach rechts gedreht.

    Ich würde mir ja einen Wrapper schreiben, der Winkel und Dauer oder Geschwindigkeit oder ähnliches erwartet und das entsprechend umrechnet aber was setPWM da jetzt wirklich anstellt ist mir halt nicht klar.

    Habe diesen Artikel gefunden, der genau meinen Wrapper beschreibt - allerdings tuts das auch nicht...

    Im Beispiel werden on und off übergeben.
    Bei mir rührt sich der Servo nur wenn ich für on 0 übergebe.

    Und wenn ich das Tutorial richtig verstehe müsste doch sowas hier

    [code=php]
    pwm = PWM(0x40, debug=True)
    pwm.setPWMFreq(100)

    while True:
    pwm.setPWM(0, 0, input('Enter a pulse width value between 250 and 925: '))
    print '------------------------------------------'
    [/php]

    bewirken, dass sich der Servo entsprechend dreht... Tut er aber eher selten und nicht repoduzierbar...

    Kann mir jemand evtl. weiterhelfen?

    Vielen Dank im Vorraus

  • Erstelle doch bitte erst einen Schaltplan, z.B. mit -> Fritzing <-. Das ist kinderleicht, kostenlos, es bleibt kein Raum für Spekulationen und möglicherweise findest Du einen Fehler beim abzeichnen.
    Vielleicht ist es ja nur eine Kleinigkeit (fehlende, gemeinsame Masse oder so) ...
    cu,
    -ds-

  • Hier meiner:
    Lazius-v03_Steckplatine1.png

    Hier das Beispiel von Adafruit:
    raspberry_pi_ServoSketch.png?1396775653

    An den Leitungen scheint es nicht zu liegen.

    Ich habe gerade mal einen anderen Servo (Graupner C 507) verwendet und das klappt ganz hervorragend.

    Der vorherige ist ein Torcster Servo NR-645 MG BB.

    Könnte es sein, dass es an dem optionalen Kondensator liegt?

    Einmal editiert, zuletzt von vern_da_coda (15. April 2015 um 23:50)

  • Ja guten Morgen,


    ...
    Könnte es sein, dass es an dem optionalen Kondensator liegt?

    hm ... das glaube ich nicht. Ich habe eher den Verdacht dass Deine Stromversorgung nicht ausreicht. Wie wird der Servo mit Strom versorgt?

    cheers,
    -ds-

  • Naja ... mit 6V bist Du schon am oberen Grenzwert.
    Leider konnte ich nichts zum Stromverbrauch des Servos finden. Der hat aber eine relativ hohe Stellkraft und dürfte dementsprechend Saft ziehen - das wird gerne unterschätzt.
    Der Elko dürfte als Stütz-Elko dienen - also um kurze Spannunsgeinbrüche auszugleichen. Du kannst mal probieren einen einzubauen - aber im Moment sehe ich das Problem eher in der Stromversorgung und glaube auch nicht, dass Dir der Elko viel bringt.

    cu,
    -ds-

  • Vielen Dank für die Antworten erstmal.

    Der Servo läuft mit 4,8 bis 6,0 Volt.

    Das Netzgerät ist auf 3,0 Amper limitiert.

    Ich werde heute noch mal kontrollieren wieviel Amper gezogen werden. Aber der Servo läuft unter minimaler Last.

    In dem Robot sind 18 Servos verbaut.
    Vielleicht teste ich die ganze Zeit mit einem defekten...
    Ich werde es ausprobieren.

Jetzt mitmachen!

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