Probleme mit einem Stepper / Big Easy Driver

  • Hallo,


    für mein aktuelles Slider Projekt benötigte ich einen Stepper Motor mit hoher Haltekraft um den Kameraschlitten auch in der Schrägen / Vertikalen sicher in Position halten zu können. Meine Wahl fiel daher auf einen Nema 17 Stepper Motor mit 14:1 Planetengetriebe der laut Spezifikationen mit 12–36 V betrieben werden kann und maximal 1,68 A pro Phase benötigt. Als Treiber habe ich mich für den Big Easy Driver von Brian Schmalz entschieden, der ja mit 6-30 V betrieben werden und bis zu 2 A pro Phase bereitstellen kann. Zum Test läuft der Aufbau an einem 12V / 3 A Netzteil, gesteuert wird über einen Pi Zero.


    Im Testbetrieb musste ich leider feststellen, dass die Antriebsachse des Getriebes mitten im Lauf gerne mal stehen bleibt um dann weiter zu laufen - der Motor an sich scheint aber die ganze Zeit durchzulaufen. Um auszuschließen, das ich einen fehlerhaften Motor / ein fehlerhaftes Planetengetriebe bekommen habe, habe ich den Motor inzwischen umgetauscht. Der neue Motor bzw. das neue Planetengetriebe zeigt zwar ein anderes Verhalten (es bleibt weniger oft stehen, ganz toll) aber zu 100% kann ich mich leider nicht auf den Motor bzw. das Getriebe verlassen.


    Beispiel: Ich will eine ganze Umdrehung (360° / 1,8° = 200 Schritte) der Achse am Planetengetriebe (14:1, also 2800 volle Schritte). In acht von zehn Fällen passt das, manchmal bekomme ich aber nur 8/10 oder 9/10 Drehung der Achse des Planetengetriebes als Ergebnis. Für einen Slider, der in einer definierten Zeit eine definierte Strecke zurücklegen soll ist das kein erstrebenswerter Zustand. Es geht dabei nicht darum, das ein Stepper Motor auch mal schusselig ist und einen Schritt verbummeln kann, das ist mir schon klar.


    Hat einer von Euch schonmal mit diesem oder einem ähnlichen Motor (mit Planetengetriebe) gearbeitet? Über einen Erfahrungsaustausch oder Ideen zum debuggen (anderes Treiber Board, anderer Motor bzw. anderes Getriebe etc.) würde ich mich freuen. Oder bleibt am Ende nur die Kontrolle der angetriebenen Achse mit einer Gabellichtschranke?

  • Hallo doing,


    den Motortyp, dessen Steuerung und Programmierung kenne ich gar nicht. Deswegen kann ich nur von anderen Motortypen kommend ein paar Anregungen geben.


    WIE steuerst Du den Motor an? Sagst Du ihm singemäß

    Code
    mach jetzt 1000 Schritte = 5mal 360 °

    Und dann sofort

    Code
    mach jetzt nochmal 400 Schritte = 2mal 360 °


    Bei meinem Tischsonar habe ich einen Servomotor irgendwo befestigt, eine senkrechte Achse montiert, darauf eine Lochrasterplatine gesteckt und dort zwei US-Sensoren verschaltet. Diese Konstruktion kann dann Abstände in zwei Richtungen ermitteln und jedem Grad und Grad + 180 zwei Abstände zuordnen.


    Während der Entwicklung der Software habe ich recht bald festgestellt, dass die Korrelation zwischen Schritt und Winkel nicht immer gegeben ist, da teilweise der Servo nicht die Stelle erreicht hatte, die ich angesteuert hatte, weil dann schon wieder ein anderes Positionierkommando dazwischenfunkte. Erst nachdem ich die Winkelgeschindigkeit, Schrittzahl und die dafür erwartete Zeit berechnet habe und habe warten lassen, war diese Korrelation exakt gegeben.


    Kannst Du sowas ausschließen? Oder fühlst Du Dich ertappt?


    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Edited once, last by Andreas ().

  • Hallo Andreas,


    nö, ich fühl mich nicht ertappt...


    Ich sage dem Stepper einfach: Gude Stepper, nu mach mal 2800 Schritte (der Big Easy Driver läuft im Full Step Modus, dass die gewünscht sind sage ich ihm über den Pi Zero und die M1, M2 und M3 Pins des Driver Boards - der Default des Big Easy Drivers ist ja 1/16 Microstepping), danach warte mal brav 5 Sekunden, dann mach das Ganze wieder von Vorne (also wieder 2800 Schritte).


    Jetzt müsste (wenn alles richtig läuft) der zum Test an der Antriebsachse befestigte Tesakrepp Streifen immer an etwa der gleichen Stelle (sagen wir 12 Uhr) stehen bleiben. Macht er aber nicht - Plötzlich ist es 11:58, dann irgendwann (nach dem x-ten Durchlauf der Schleife) erst 11:55 Uhr usw. Das bedeutet für mich, dass die Antriebsachse nicht alle Schritte des Motors abbildet.


    Das kann IMHO eigentlich nur bedeuten, dass der Motor bzw. das Planetengetriebe von minderer Qualität oder der Big Easy Driver damit überfordert ist (was ich nicht glaube, denn der Motor läuft ja im Hintergrund weiter, nur die Achse dreht nicht und in ca. acht von zehn Fällen passt es ja auch).


    Viele Grüße
    Sebastian

  • Hi


    Grundsatzfrage: Warum nimmst du kein selbsthaltendes Getriebe wie z.B. ein Schneckengetriebe. Ich habe meinen Schlitten auch mit einem NEMA17 Motor gebaut und ein 1:40 Schneckengetriebe von Conrad eingebaut. Vorteil: Braucht keinen Strom, wenn der Schlitten anhält.


    Bye


  • Hi, ich beschäftige mich gerade mit Schrittmotoren. Habe eine XY-Steuerung in Python zusammengebastelt und auf verschiedenen Steppern erprobt.
    Hast du schon versucht, die Stepprate durch Einfügen einer DelayTime zwischen den Einzelschritten zu verlangsamen? Nimm mat eine ms. Dann sollte es zu keinem Fehler mehr kommen. Dann weiter verkürzen, bis Fehler auftreten. Falls bei einem ganz langsamen Lauf (1s/Step) der Motor nicht rund läuft können auch die Anschlüsse vertauscht sein.
    Kopf hoch, Peter
    lg Peter

  • Hallo Peter,


    das Problem ist nicht, dass der Stepper Motor nicht rund läuft, wenn er läuft. Das Problem ist das - selbst wenn der Motor läuft - die Antriebsachse des Planetengetriebes ab und an mal hängt bzw. stehen bleibt. Im Hintergrund läuft der Motor weiter (was man hören und sogar fühlen kann). Ich kann mir aber nicht vorstellen, dass das normal ist. Deshalb habe ich den Motor ja schonmal komplett umgetauscht, was aber nur eine Verminderung des Problems brachte.


    Hier die Klasse



    und mein Test Script



    Ich muss mir wohl mal einen 12 V Stepper Motor ohne Planetengetriebe zum Vergleich gönnen...

    Edited once, last by doing ().


  • Hallo Peter,


    das Problem ist nicht, dass der Stepper Motor nicht rund läuft, wenn er läuft. Das Problem ist das - selbst wenn der Motor läuft - die Antriebsachse des Planetengetriebes ab und an mal hängt bzw. stehen bleibt. Im Hintergrund läuft der Motor weiter (was man hören und sogar fühlen kann). Ich kann mir aber nicht vorstellen, dass das normal ist. Deshalb habe ich den Motor ja schonmal komplett umgetauscht, was aber nur eine Verminderung des Problems brachte.


    Hallo, der Motor dreht sich nicht, sondern deine Schritte sind zu klein. Hier rastet er immer in den gleichen Schritt und du meinst er dreht sich und brummt. Das hat was mit dem Drehmoment zu tun, sobald du in Microschritte gehst ist das Drehmoment wesentlich kleiner. Hinzu kommt die Reibung etc. dadurch bekommst du den nicht reproduzierbaren fehler.
    Die Periode der PWM größer machen, könnte helfen.

  • Hi, ich beschäftige mich gerade mit Schrittmotoren. Habe eine XY-Steuerung in Python zusammengebastelt und auf verschiedenen Steppern erprobt.
    Hast du schon versucht, die Stepprate durch Einfügen einer DelayTime zwischen den Einzelschritten zu verlangsamen? Nimm mat eine ms. Dann sollte es zu keinem Fehler mehr kommen. Dann weiter verkürzen, bis Fehler auftreten. Falls bei einem ganz langsamen Lauf (1s/Step) der Motor nicht rund läuft können auch die Anschlüsse vertauscht sein.
    Kopf hoch, Peter
    lg Peter


    Ich würde jetzt nicht die Flinte ins Korn werfen. Erste Maßnahme wäre, an die Motorkontakte jeweils eine LED mit Vorwiderstand schalte, da kannst du den Ablauf kontrollieren. Möglicherweise ist das, was du als "Laufen" hörst nur ein Zappeln des Ankers. Ich würde den Motor zerlegen und wenn möglich ohne Getriebe laufen lassen. Noch was, macht er das auch wenn er wiederholt in einer Richtung dreht? Versuch es mal mit einer höheren Spannung. Auch ein dicker Elko an der 12V Versorgung, direlt an der Steuerung kann Wunder bewirken. Wenn du ein Oszi hast, schau dir die 12V unter Last an.


    Die Software hab ich mir angesehen, schaut gut aus. Und nochmal, mach die Schrittverzögerung länger.


    Peter

  • Hallo maecki,


    ja klar selbstgebaut, darum geht es ja hier. Meinen PiSlider mit den DC Motoren und dem Remote Head findest du hier (aber in schlechter Bildqualität, da Abends und ohne Beleuchtung von einer RasPiCam v1.3 aufgenommen). Irgendwann gibt es auch mal Bilder von der fertigen Version mit der Steuerung über einen Touchscreen oder per Blauzahn über einen PS4 Controller ;)



    Hallo, der Motor dreht sich nicht, sondern deine Schritte sind zu klein. Hier rastet er immer in den gleichen Schritt und du meinst er dreht sich und brummt. Das hat was mit dem Drehmoment zu tun, sobald du in Microschritte gehst ist das Drehmoment wesentlich kleiner. Hinzu kommt die Reibung etc. dadurch bekommst du den nicht reproduzierbaren fehler.


    Hallo Semetex,


    in Beitrag #3 hatte ich geschrieben, dass ich den Big Easy Driver auf Full Steps gesetzt habe und keine Micro Steps verwende. Daran kann es also - meines Erachtens nach - nicht liegen. Ferner habe ich auf der Rückseite des Steppers, wo man die Welle sieht, einen weißen Punkt mit dem Edding auf die Welle gemacht. Die Welle dreht... daher gehe ich davon aus, dass es ein Problem im Planetengetriebe selbst gibt (ich vermute Metallspäne oder ein rutschendes Zahnrad).



    Ich würde jetzt nicht die Flinte ins Korn werfen. Erste Maßnahme wäre, an die Motorkontakte jeweils eine LED mit Vorwiderstand schalte, da kannst du den Ablauf kontrollieren. Möglicherweise ist das, was du als "Laufen" hörst nur ein Zappeln des Ankers. Ich würde den Motor zerlegen und wenn möglich ohne Getriebe laufen lassen. Noch was, macht er das auch wenn er wiederholt in einer Richtung dreht? Versuch es mal mit einer höheren Spannung. Auch ein dicker Elko an der 12V Versorgung, direlt an der Steuerung kann Wunder bewirken. Wenn du ein Oszi hast, schau dir die 12V unter Last an.


    Hallo Peter,


    ich bin weit davon entfernt die Flinte ins Korn zu werfen... ich habe Wochenlang an den Teilen für den Antrieb geplant und Monatelang auf die Olson Ruby Nozzle gewartet um die Teile mit Carbon Filament drucken zu können - so schnell gebe ich nicht auf. Glücklicherweise sieht mein Konzept vor, dass ich den Motor recht einfach tauschen kann.


    Der Stepper läuft schon - siehe meine Antwort an Semetex oben. Zerlegen ist eine Option, aber erstmal werde ich den identischen Motor ohne das angeflanschte Planetengetriebe testen. Ich habe ja nicht aus Jux diese Version gewählt, denn mit dem Getriebe hat der Stepper eine Haltekraft von schlappen 3 Nm und nicht (wie sonst üblich) nur ein paar Dutzend Ncm.


    Eine höhere Spannung werde ich bei Gelegenheit testen. Glücklicherweise verträgt der Motor ja bis zu 36 V, ich muss aber auf den Big Easy Driver Rücksicht nehmen - der kann nur bis 30 V. Leider habe ich hier kein Oszi stehen.


    Danke für Euren Input! :thumbs1:


    Viele Grüße
    Sebastian

    Edited once, last by doing ().

  • Hallöchen,
    Vielleicht ist es nur eine schlechte Wellenkupplung die herumzickt. Wenn der Motor definitiv dreht, würde ich den einfach mal vom Getriebe abnehmen und das checken. Dreh an der Eingangswelle vom Getriebe um zu prüfen ob das Getriebe leichtgängig geht. Dann würde ich mal prüfen wie das Haltemoment vom Motor unter Spannung ist. Schrittmotoren mögen es nicht wenn sie zu schnell drehen. Das höchste Drehmoment erreichen sie eher im unteren Drehzahlbereich (meist bis ca. 1000 U/min). Werden die Motoren zu schnell angesprochen, bleiben sie irgendwann einfach stehen und brummen nur noch. Für einen möglichst sanften Lauf sollte man wenn möglich Microstepping verwenden. Dazu benötigt man dann allerdings auch höhere Schrittfrequenzen die sauber generiert werden wollen. Takterzeugung auf Softwareebene ist aber auf einem nicht Echtzeitfähigen System praktisch unmöglich bzw. nicht sonderlich exakt, was unter Umständen zu Schrittverlusten insbesondere bei höheren Drehzahlen führen kann.
    Auch Beschleunigungsrampen sollte man bei Bewegung von Last gegebenenfalls berücksichtigen damit der Motor nicht schon beim loslaufen stehen bleibt.


    Viel Erfolg


    Gruß Mickes