- Labornetzteil AliExpress         
Ergebnis 1 bis 6 von 6

Thema: Probleme mit Servomotoren für Förderband und Beaglebone blue

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    08.01.2007
    Ort
    München
    Alter
    45
    Beiträge
    11

    Probleme mit Servomotoren für Förderband und Beaglebone blue

    Anzeige

    E-Bike
    Hallo,

    ich brauche mal euren Ratschlag. Ich möchte gerade ein Förderband mit fünf Segmenten über einen Computer steuern lassen. Dazu soll ein Linux PC mit einem kleinen Board kommunizieren und bei Bedarf das Förderband ein bzw wieder aus schalten. Ich habe mir für diese Aufgabe einen Beaglebone blue gekauft, da ich dachte, dass ich hier ohne großen Aufwand bis zu sechs Servos ansteuern kann.

    Als Servos habe ich mir recht günstige 360 Grad Servos von Amazon geholt. Wenn ich das Sampleprogamm mit einem Servo laufen lasse, dann dreht dieser sich nicht sonderlich schnell, aber in einen akzeptabelen Rahmen. Füge ich jedoch einen zweiten Servo an den nächsten Anschluss hinzu drehen sich beide nur noch sehr langsam. Bei drei ist die Bewegung fast gar nicht mehr zu erkennen und vier und fünf gehen eigentlich gar nicht...

    Ich habe vermutet das der Strom nicht ausreichend ist. Ich betreibe den Beaglebone mit einem 12V 2A Netzteil. Um das Problem zu lösen habe ich mir nach dieser Anleitung eine zusätzliche Stromversorgung für die Servos gebastelt, aber leider hat das die Situation nicht verbessert.

    Ich weiß jetzt nicht genau woran es liegt... Am Beaglebone blue oder an den Servos... Deshalb wollte ich fragen, ob mir jemand einen (Schritt-) Motor empfehlen kann der sich kontinuierlich drehen lässt und ein bisschen Drehmoment mitbringt. Die Drehzahl sollte nicht allzu hoch sein, aber das Drehmoment wäre schon ganz wichtig.

    Ideal wäre es natürlich, wenn sichergestellt wäre, das der Motor mit einem Beaglebone blue zusammenarbeitet. Ich würde aber auch einen anderen Computer zur Steuerung kaufen, wenn der Beaglebone blue das Problem ist. Über eine Empfehlung von Motor in Kombination mit Controller, die sicher läuft (ideal wäre eine kleine Referenz zum Nachbauen) würde ich mich aber auch sehr freuen...

    Vielen lieben Dank!

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.687
    Hallo Elias,
    willkommen im Forum.
    .. Förderband mit fünf Segmenten .. steuern .. Beaglebone blue .. mit einem Servo .. nicht sonderlich schnell .. zweiten Servo .. sehr langsam.
    ..
    Ich habe vermutet das der Strom nicht ausreichend ist. Ich betreibe den Beaglebone mit einem 12V 2A Netzteil ..
    Leider ist Deine Projektbeschreibung etwas dünn. Wie groß ist das Förderband (besser : wieviel Antriebsmoment braucht es), wie groß sind Deine Servos - wieder sollte das Antriebsmoment da stehen, zumindest der genaue Typ (aber ich fände es besser wenn hier niemand nach Datenblättern für DEINE Ausrüstung suchen müsste um Dir ne Antwort geben zu können).

    Generell gibt es den nicht unüblichen Fehler, dass Servos von Controllerplatinen betrieben werden. Geht fast immer schief - der Strom reicht nicht. Ich habe schon "kleinere" Servos betrieben, die bei Versorgung mit Stromlimitierung auf 1 A (für einen Servo) sehr schlecht laufen. Ihre Anfahrströme sind erheblich über dem sowieso selten genannten Strombedarf, bei höheren Momenten ziehen auch kleine gern mal ein halbes bis ein Ampere. Betreibt man Controllerboard und Servo an derselben Stromleitung sind Störungen sowieso vorprogrammiert.

    Deine Servos laufen sowieso ".. nicht sonderlich schnell ..". Klar, üblicherweise lauten entsprechende Angaben so um die 0,1 sec für 60°, das ist etwas mehr als eine Umdrehung pro Sekunde. Is nicht schnell! Ich hatte schon Servos auf höhere (Leerlauf-) Drehzahl umgebaut, 500+ Upm, siehe hier; das geht aber so nicht bei allen Servos.

    Ein zweiter, nicht unüblicher Fehler ist es die Servoleitungen und den Controller NICHT auf gleichem GND laufen zu lassen (siehe hier, etwas runterscrollen).

    Fragen:
    - Welches Drehmoment braucht Dein Förderband (bzw. ein Segment) für die vorgesehene Funktion?
    - Welches Drehmoment haben Deine Servos?
    - Wie sind Controller und Servos verschaltet?

    Fazit:
    Bitte nötige Angaben machen, auch nen Übersichts-Schaltplan.
    Bitte Servos mit ausreichendem Strom (siehe oben, verbindlich aber nur deren Datenblatt) versorgen. Wenn alle Servos gleichzeitig starten oder höhere Lasten bewegen sollen sind gut 1 Ampere pro Servo nicht zuviel.

    BTW: EIN beaglebone für fünf Servos? Ich habe ne Platine mit nem Atmel Mega1284 für zehn Servos - schon das ist ziemlich oversized! Ich verwende den, weil ich neben Servobetrieb viel Kommunikation mit I²C und UART habe, früher hatte ich gute Funktion mit zehn Servos mit einer Platine mit mega328 - nur war der Speicher mit allen Testmöglichkeiten dann schon ziemlich voll geworden.
    Ciao sagt der JoeamBerg

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    08.01.2007
    Ort
    München
    Alter
    45
    Beiträge
    11
    Hallo oberallgeier,

    erst mal danke für deine Unterstützung. Ich versuche jetzt mal das ganze Projekt noch etwas besser zu erklären:

    Das Förderband wird aus den bereits erwähnten 5 Segmenten bestehen, wobei jedes Segment von einem Servo angetrieben werden soll. Jedes Segment wiederum besteht aus 6 mit Zahnrädern verbundenen PVC Rohren, die als Förderwalzen dienen. Ziel ist es alle Servos die je ein Segment antreiben mit gleicher Geschwindigkeit laufen zu lassen und gemeinsam an und auszuschalten.

    Die Servos die ich jetzt bei Amazon gekauft habe haben folgende Daten:

    Andoer SpringRC SM-S4315R.
    Spezifikationen:
    Geschwindigkeit: 0,14s/60°-0,16s/60° (4.8V - 6V)
    Drehmoment: 14,8 kg.cm - 15,4 kg.cm (4.8V - 6V)
    Ich hoffe das reicht an Informationen.

    Die Geschwindigkeit ist, wie schon gesagt, nicht gerade berauschend aber das Drehmoment von 13kg.cm scheint ausreichend zu sein. Bei Tests mit einem einzelnen Servo, der sauber läuft, habe ich überprüft, dass dieser Servo ein Segment gut antreiben kann. Von daher passen die Servos von den Parameters so schon einigermaßen, eventuelle Alternativen sollten aber zumindest nicht nicht wesentlich schwächer sein.

    Die Schaltung sieht in etwa so aus: https://drive.google.com/open?id=1iO...s_tBFDWDGi783v


    Im Schaltplan wird veranschaulicht, wie der Adapter die Stromversorgung zu den Servos durchschaltet. Das Signal wird so wie es sich ja eigentlich gehört direkt vom Board zum Servo durchgeschaltet. Der Ground der Servos ist auch mit dem Board verbunden aber auch gleichzeitig mit der Stromversorgung für die Servos (da intern der Ground der einzelnen Pins eh zusammengeschlossen ist, reicht es an dieser Stelle den GRND von einem einzelnen Pin mit der Stromversorgung zu verbinden). Und der Pluspol der Servos ist vom Board isoliert und nur mit dem Netzteil verbunden.

    Das es sich bei der Stromversorgung von den Servos um ein Laborschaltnetzteil handelt, das den Verbrauch misst, kann man sehen, dass jeder Servo ca. 1.5A zieht. Das Netzteil hat Spielraum bis 20A, so dass die Servos von hier ausreichend mit Strom versorgt werden sollten.

    Alle Servos werden auf dem Beaglebone auf die gleiche Art und Weise angesprochen. Beispielsweise wird jeder Servo für insgesamt 50 Sekunden angeschaltet, nach jeweils 10 Sekunden wird ein weiterer Servo zu oder abgeschaltet. Hier mal der Auszug vom wesentlichen:

    q1, q2, q3, q4 = Queue(), Queue(), Queue(), Queue() Thread(target=wrapper, args=(set_motion, (1, 0,50), q1)).start()
    Thread(target=wrapper, args=(set_motion, (2, 10,60), q2)).start()
    Thread(target=wrapper, args=(set_motion, (3, 20,70), q3)).start()
    Thread(target=wrapper, args=(set_motion, (4, 30,80), q4)).start()

    Das ganze läuft über eine Schleife:

    while(rc_get_state()!=EXITING){
    if ((time_diff < predefined_end_time) && (time_diff >= predefined_start_time)) {
    rc_send_servo_pulse_normalized(servo, servo_pos);
    rc_usleep(1000000/frequency_hz);
    }
    else if ((time_diff > predefined_end_time)) {
    printf("Count value : %i\n",count_val);
    rc_set_state(EXITING);
    break;
    }
    end_seconds = time(NULL);
    time_diff = difftime(end_seconds,start_seconds);
    }
    rc_cleanup();

    Das Problem ist aber, dass die Servos trotz gleichen Steuerbefehls sich unterschiedlich verhalten. So richtig flüssig läuft es eigentlich nie, sie ruckeln immer, bzw. halten kurz (<0.1s) und laufen dann wieder an. Insbesondere wenn ich einen Servo hinzu schalte oder abschalte kann sich das Bild drastisch ändern. Obwohl die Servos die ganze Zeit mit konstanter Drehzahl gleichmäßig laufen sollten drehen die Servos im nachfolgenden Beispiel erst super langsam um dann, wenn alle vier anspringen, richtig Gas zu geben und dann wieder in Lethargie zurück zu fallen wenn ich wieder einen Servo ausschalte. Aber selbst wenn vier Servos laufen sieht die Bewegung noch nicht richtig aus...

    <span style="font-size:12.0pt;font-family:&quot;Times New Roman&quot;,serif">https://drive.google.com/open?id=1FD...Fm7yTHsin1a55r
    Geändert von Elias (01.12.2017 um 20:36 Uhr)

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.04.2013
    Beiträge
    526
    Ich kenne mich mit Beaglebones und der verwendeten Programmiersprache leider nicht aus, also wenn im Programm der Fehler liegt, muss dir das jemand anderes sagen. Ich würde es aber hilfreich finden, wenn du da ein paar Kommentare einpflegst. Oft wird einem beim kommentieren schon der eigene Fehler bewusst, den man vorher übersehen hat.

    Ein paar Tests würde ich noch vorschlagen:
    - Servos an anderer Signalquelle testen, also RC-Fernsteuerung oder Servotester, und prüfen, ob diese bei Vollausschlag die vorgesehene Drehgeschwindigkeit laut Datenblatt erreichen
    - Signalausgang am Beaglebone prüfen, entweder per Oszilloskop, oder, wenn du keines hast, dort vier normale Servos anschließen, von denen du weißt, das sie funkionieren und welchen max. Winkelausschlag sie normalerweise machen. Dann ist nämlich der Winkelausschlag ein Maß für das Signal.

    In deinem Video laufen die Servos ohne Last, das sollte wenig Probleme von der Stromaufnahme machen, DENNOCH: laut deinem Schaltplan kriegen alle Servos zwar ihr Plus vom Netzteil, GND wird aber durch das Board durchgeschleift. Das ist auch nicht ideal, besser wäre es, für alle Servos je eine großzügig dimensionierte Plus- und Minus-Sammelschiene bereitzustellen, die direkt am Netzteil hängt, dann brauchst du nur noch eine Leitung von der Minus-Sammelschiene zum Board-GND. So bleiben dem Board große Ströme komplett erspart.

    Letzter Vorschlag, wenn es mit den Servos gar nichts wird: Einfache Getriebemotoren und Motorcontroller verwenden ? Wobei dort dann ähnliche Probleme auftreten könnten, also du solltest schon rausfinden, woran es bei dir hakt.

    Viel Erfolg!
    Nils
    Geändert von hbquax (02.12.2017 um 12:26 Uhr)

  5. #5
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.687
    Ich kenne mich mit Beaglebones und der verwendeten Programmiersprache leider nicht aus .. Plus- und Minus-Sammelschiene ..
    Mir gehts wie Nils - aber Du hast hoffentlich das Datenblatt von Deinem Beaglebone (ist da einer wie der andere? gleiches Datenblatt??) gelesen und weißt wieviel Ampere ein Pin ziehen oder abgeben darf UND wieviel die ganze Platine (oder der ganze Controller - wie geschrieben - ich kenn diese Platinen nicht) an Strom insgesamt abgeben darf. Jedenfalls sehe ich Deine Installation mit dem (-) zu den Servos von den GPIO´s als kritisch an. Denk doch - ein Servo kann beim Anfahren aber auch bei zittrigem Stillstand Ströme weit über dem üblichen Laststrom ziehen.

    Dringender Vorschlag: Servos vollständig von separater Stromquelle versorgen, GND der STROMQUELLE, der Servos und mit dem GND des Beaglebones verbinden. Dann neuer Test. Dann entweder freuen und uns berichten oder enttäuscht sein und uns berichten.

    Evtl. (mach ich in ähnlichen Fällen immer) mal die Boardspannung des Beaglebones mit dem Oszilloskop ansehen.

    Nachtrag: Meine Programme haben IMMER zu Beginn eine Schleife mit Blinken von Leuchtdioden (bei mir Heartbeat und Test-LED) . Diese Schleife läuft VOR allen sonstigen Abschnitten und Interruptfreigaben, ausgenommen Portinitialisierungen. Wenns bei mir auffällig blinkt - so etwa 10 bis 20 Wechselblinken der beiden LEDs in hohem Tempo, dann weiß ich, dass der Controller aus einem Reset kommt. Bei plötzlichen Spannungseinbrüchen ist das oft der Fall - und ich seh das dann sofort . . . *gg*.
    Geändert von oberallgeier (02.12.2017 um 16:53 Uhr) Grund: Startblink als Reseterkennung
    Ciao sagt der JoeamBerg

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.04.2013
    Beiträge
    526
    Zitat Zitat von Elias Beitrag anzeigen
    Das es sich bei der Stromversorgung von den Servos um ein Laborschaltnetzteil handelt, das den Verbrauch misst, kann man sehen, dass jeder Servo ca. 1.5A zieht.
    Dafür, daß deine Servos ja im Moment noch gar keine mechanische Last haben (wie in deinem Video zu sehen), scheint mir das eigentlich etwas viel...

    Allerletzter Gedanke: Du schreibst ja, daß es eigentlich mit einem Servo schon nicht richtig funktioniert. Dann würde ich die anderen erstmal weglassen und solange forschen, bis du ein Servo zuverlässig und sauber von 0% bis 100% Geschwindigkeit vorwärts und rückwärts steuern kannst. Danach würde ich erst mit mehreren Servos anfangen. Hast du evtl. im Programm eine Variabel, die eigentlich für jedes Servo einen anderen Wert haben soll, aus Versehen mehrmals verwendet?
    Geändert von hbquax (02.12.2017 um 20:02 Uhr)

Ähnliche Themen

  1. Beaglebone Blue: Bastelrechner speziell zur Robotersteuerung erschienen
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 1
    Letzter Beitrag: 16.03.2017, 10:02
  2. Antworten: 0
    Letzter Beitrag: 13.01.2016, 12:51
  3. kleines Förderband
    Von malthy im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 16
    Letzter Beitrag: 03.08.2011, 15:06
  4. Förderband - Höhenmessung von Objekten - welcher Sensor?
    Von a3092937 im Forum Sensoren / Sensorik
    Antworten: 15
    Letzter Beitrag: 21.04.2010, 07:01
  5. [ERLEDIGT] Förderband kaput?
    Von im Forum Sensoren / Sensorik
    Antworten: 12
    Letzter Beitrag: 19.11.2005, 06:23

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress