UMTS gesteuerter Roboter

  • Hallo zusammen,

    seit einigen Tagen habe ich einige Probleme damit meinem Raspberry via RPi.GPIO beizubringen meine Motoren in verschiedenen Geschwindigkeiten drehen zu lassen. Bisher kann ich nur Vollgas oder aus.

    Meine Hardware:

    Ein Raspberry Pi Modell B 512 MB

    Vier Getriebemotoren jeweils zwei an einem Modellbauregler (ESC).

    Versucht hatte ich es in Python mit:

    import RPi.GPIO as GPIO
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(22, GPIO.OUT)

    Servo = GPIO.PWM(22, 50)
    Servo.start(10)

    Da dieser Versuchsaufbau schon nicht geklappt hatte, habe ich auch noch keine aufwändigere Programmierung gebastelt. Dieses Skript sollte doch eigentlich dafür sorgen, dann sich zwei der 4 Motoren in die gleiche Richtung drehen oder?? Wenn ich aber an der Duty Cycle Einstellung herumspiele (z.b. 7.5 5 3 oder 9) tut sich garnichts oder halt wieder Vollgas.

    Vielleicht fällt ja einem von euch ein, wie man das am besten programmiert.

  • Hi,

    hast du den DutyCycle über Servo.ChangeDutyCycle() geändert?
    probier mal Folgendes aus:

    Einmal editiert, zuletzt von infinit3 (5. Februar 2014 um 13:22)

  • Hallo Infinit3,

    Danke für die schnelle Antwort und die gute Idee!

    Ich lass es grade in deiner Version laufen, glaube aber dass es nicht viel bringt (werde es später noch abändern). Ich vermute, dass die Modellbauregler wie Servos angesteuert werden. D.h. 1 ms ist Vollausschlag rechts 2 ms ist Vollausschlag links 1.5 ms ist neutral und alles dazwischen ist halt was dazwischen. Deswegen glaube ich dass der DutyCycle auf 100 garnichts bewirken wird, bzw. erst am Ende, wenn auf 2.5-12.5 heruntergezählt wurde.

    Wenn ich die Motoren mtit H-Brücken ansteuern würde, würde ich dir recht geben!

    Hast du sonst noch eine Idee woran es liegen könnte?

    Glaubt ihr dass es sinnvoll wäre gleich ein Adafruit zu kaufen? Damit sollte das ja alle Reibungslos klappen oder?

    Hat jemand Erfahrungen damit gemacht?

    Einmal editiert, zuletzt von Fogellegof (5. Februar 2014 um 14:45)

  • Einmal editiert, zuletzt von infinit3 (5. Februar 2014 um 16:09)

  • Hallo Infinit3,

    ja so wie du das grade beschreibst hab ich das auch verstanden. Das Komische ist, dass das zu nichts führt wenn man das in dem geringen Bereich ändert.
    Was aber noch viel verblüffender ist ist dass anscheinend bei 20 die Ausgangsspannung recht gering ist, d.h. der Motor dreht langsam. Das ist aber auch bei jedem Vielfachen von 20 <100 der Fall und das verwundert mich doch sehr stark.

    Außerdem dreht der Motor sehr unregelmäßig wenn er langsam läuft und ich nebenher nur einen "top" oder ein "du" ausführe. CPU Last ist bei ~90%

    Vielleicht ist es wirklich am schlausten das Adafruit 16 channel pwm Dings zu kaufen und es damit mal zu versuchen. Hat damit jemand Erfahrungen?

  • Hallo morob65,

    Die ESC sind natürlich an eine eigene Stormversorgung angeschlossen. Um das kurz zu erklären: Die Regler (ESCs) hängen an der einen Seite an einer Autobatterie und an der anderen Seite an den Motoren. Das Raspberry hängt nach nem Spannungswandler auf 5v auch an der Autobatterie.

    Das Problem ist auch nicht mehr die Ansteuerung der Servos sondern die Präzision mit der die PWM Signale ausgeführt werden.

    Aber danke für deine Hilfe, die Seite mit den Programmierbeispielen finde ich durchaus spannend!

    Grüße

    Fogellegof

  • Hallo,

    wenn man die Servos oder ESCs via RPI PWM ansteuert, dann laufen die Motoren nicht gleichzeitig bzw. die Servos zittern. Wenn man das mit der Adafruit Platine macht, ist das Problem aktuell noch entweder meine Dummheit oder das Skirpt oder beides.

    Wenn vorhanden, kann mir mal jemand einen genauen Plan geben, welche Pins wo an dem Adafruit Servo Driver angeschlossen werden müssen? In der Doku ist das nicht eindeutig erklärt.

    Grüße

    Fogellegof

  • Hallöle Fogellegof,

    mein Verdacht geht in Richtung Library ... was verwendest Du um die Pulsweiten zu erzeugen?
    Der guhdsde Gordaon schrub mal zu seiner wiringPi, dass es problematisch ist, mit dieser mehrere Pulsweiten synchron zu erzeugen.
    Alternativ dazu kann ich Dir die -> pigpio <- Bibliothek empfehlen. Die erzeugt saubere Pulse ... auch parallel ...
    Im Übrigen wirst Du imho um eine Synchronisierung der Motoren nicht umhin kommen ... aber das ist dann eine andere Baustelle ...
    cheers,
    -ds-

Jetzt mitmachen!

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