für ein Projekt muss ich mehrere Schrittmotoren gleichzeitig betreiben, über einen Arduino Mega. Dafür habe ich mehrere Motorcontroller parallel angeschlossen und die 24 Volt Versorgungsspannung mit einem Relais versehen, da mir aufgefallen ist, dass die Motoren trotz Verwendung eines Enablepins beim Anschalten rattern. Nun lässt sich aber immer nur ein Motor gleichzeitig steuern, versucht man ein Signal an mehrere zu senden geraten die Motoren scheinbar aus dem Takt und "zappeln" auf der Stelle. Steuert man die Motoren einen nach dem anderen an funktioniert es problemlos.
Hat jemand von euch eine Idee, was der Grund für das "zappeln" sein könnte?
Etwas entscheidendes fehlt: Dein Sketch wie die verwendete Library.
Auch wäre einSchaltplan, wie die Komponenten zusammengeklemmt sind, nicht schlecht.
Rodeba:
für ein Projekt muss ich mehrere Schrittmotoren gleichzeitig betreiben, über einen Arduino Mega. Dafür habe ich mehrere Motorcontroller parallel angeschlossen und die 24 Volt Versorgungsspannung mit einem Relais versehen, da mir aufgefallen ist, dass die Motoren trotz Verwendung eines Enablepins beim Anschalten rattern. Nun lässt sich aber immer nur ein Motor gleichzeitig steuern, versucht man ein Signal an mehrere zu senden geraten die Motoren scheinbar aus dem Takt und "zappeln" auf der Stelle. Steuert man die Motoren einen nach dem anderen an funktioniert es problemlos.
Hat jemand von euch eine Idee, was der Grund für das "zappeln" sein könnte?
Ich hatte bei einem 5-Achsen Kamera Robot gerade das gleiche Problem, und habe im englischen Forum die Erklärung gefunden. Betreibst du einen Stepper Treiber mit Microstepping (z.B. A4988, DRV8825), so sucht der Treiber nach "enable" oder"sleep" zuerst seine Microstepping Home Position auf. Das ist das Zucken. Wenn du z.B. mit 4-fach Microstepping arbeitest, so solltest du die Motoren nur an echten Full-Step Positionen disablen. Beim dann folgenden neuen "enable" zucken meine Motoren nicht mehr. Wichtig ist ebenfalls, dass du dem Treiber Zeit zum wach werden lässt. Beim DRV8825 sind dies mindestens 650 ns via "enable" bzw. 1,7 ms via "sleep". Ohne diese Wartezeit zuckt es ebenfalls, und der interne Step-Counter verschluckt sich.
Entschuldigt, dass meine Antwort etwas gedauert hat.
Ich verwende nicht die Stepper Library sondern generiere eigene Signale mittels des angehängten Codes. Wird der Controller enabled beginnt er auch die Funktion auszuführen. Ich glaube allerdings nicht, dass es am Code liegt, da sich sonst die Motoren ja auch nicht einzeln steuern lassen sollten.
Zu meiner Schaltung kann ich nur sagen, dass alle Motorcontroller parallel geschalten sind, sonst ist nichts besonderes daran. Kann es vielleicht daran liegen, dass unterschiedliche Controllermodelle parallel verwendet werden, postmaster-ino?
Ich hoffe, ich habe nichts weiteres vergessen.
Die Antwort macht schon Sinn, erklärt aber nur das Rattern, welches ich sowieso durch das Relais unterbunden habe, hast du eine Idee bezüglich meines Problems, dass ich nicht zwei Motoren gleichzeitig betreiben kann, Demokit? Oder habe ich deine Antwort irgendwie falsch verstanden?
Ich sollte vielleicht noch dazusagen, dass sobal ein Motor von den 4 Anschlüssen des Treibers abgeschlossen wir das ruckeln des anderen Motors aufhört. Deshalb nehme ich stark an, dass es kein Problem des Programms ist.
Rodeba:
Ich sollte vielleicht noch dazusagen, dass sobal ein Motor von den 4 Anschlüssen des Treibers abgeschlossen wir das ruckeln des anderen Motors aufhört. Deshalb nehme ich stark an, dass es kein Problem des Programms ist.
Dann ist es ein Problem der Spannungsversorgung.
Mach uns mal ein paar Fotos Deines Aufbaus.
Grüße Uwe
Die gleichzeitige Nutzung unterschiedlicher Motortreiber (A4988, DRV8825) hat keinen Einfluss. Ich habe aktuell 5 Motoren an A4988 (2x Nema14), DRV8825 (2x Nema17) und TB6560 (1x Nema23), ohne Relais und ohne Zucken beim wach werden.
Mir ist noch völlig unklar, was du mit den "parallel" angeschlossenen Motortreibern meinst. Mach doch mal eine Skizze mit deiner derzeitigen Schaltung. Wie betreibst du die Stepper? Im Full-Step Mode oder per Microstepping? Nutzt du bei den A4988 und DRV8825 "enable" oder "sleep" zum wecken/schlafen schicken?
Ich weiß nicht, wie sich der DRV8825 beim Kappen des Motorstroms verhält. Im Gegensatz zum A4988 benötigt er keine 5V vom MC, und könnte ggf. alles "vergessen", wenn man ihm den Motorstrom kappt. Betonung auf: Ich weiß es nicht.
EDIT: Ich vergas: Das Kappen/Wiederherstellen der 4 Motorleitungen während der Treiber aktiv ist, kann zum sofortigen Ableben des Motortreibers führen.
Die Spannung wird nicht während des Betriebs gekappt, sondern nur um das anfängliche Zittern zu verhindern. Ab da gibt es permanente Motorspannung
Ich benutze die Enable Pins während die Motoren keine Signale bekommen um sie ruhig zu stellen.
Mit Parallelschaltung meine ich, dass der Strom am Vmot immer der gleiche ist. Momentan betreibe ich die A4988 über ein Separates Netzteil und die Motoren lassen sich immerhin gezielt in eine Richtung bewegen. Allerdings nur mit einem Rattern und sehr unpräzise. Stecke ich den Motor (nicht Triber) ab kann ich sie allerdings präzise steuern, wie gewünscht.
Ich setzte mich heute Abend wahrscheinlich hin und Versuche mal alles aufzuzeichnen. Bilder machen recht wenig Sinn, da ich bereits alles verbaut habe und man nur ein riesiges Kabelchaos sehen würde.
Glaubt ihr, dass es noch irgendwie am Code liegen könnte? In dem Fall würde ich heute Abend auch den Code hochladen, minus die Teile, welche z.B. für Display oder andere Komponenten gedacht sind, sonst wären es über 10000 Zeilen.
Edit:
-Fast vergessen, DRV 8825 Motoren werden im Halbschritt und A4988 Motoren im 16-tel Schritt betrieben.
Ich habe probehalber die A4988 zu DRV825 Treiber gewechselt und sie wieder ans selbe Netzteil angeschlossen. Dies führt zum gleichen Ergebnis, wie zwei getrennte Netzteile.
Die Spannung wird nicht während des Betriebs gekappt, sondern nur um das anfängliche Zittern zu verhindern. Ab da gibt es permanente Motorspannung
Störungseinstreuungen kann man mittels Pulldown-Widerstände an den Eingängen verhindern. Pin 13 ist für die Steuerzng nicht empfehlendswert da dieses vom Bootloader angesprochen wird.
Mit Parallelschaltung meine ich, dass der Strom am Vmot immer der gleiche ist.
Du meinst wohl hoffentlich die Motor-Versorgungs-SPANNUNG der verschiedenen Treiber.
Momentan betreibe ich die A4988 über ein Separates Netzteil und die Motoren lassen sich immerhin gezielt in eine Richtung bewegen
Hast Du die Masse des Netzteils mit der Masse des Arduinos verbunden?
Hi, hast Du an den Motor-Treibern am Spannungseingang für die Motorversorgung (VMot-Eingang) jeweils zwischen VMOT und GND den vorgeschriebenen 100uF Kondensator drangebaut?
Bezüglich PULL Down: Ich habe im Programm alles richtig definiert und im Setup eingestellt. Du meinst also wahrscheilich externe Pull-Downs.
Ich habe die Massen nicht verbunden, da ich die Spannung des 24 V Netzteils runterschraube und daraus die 5 V für den Arduino bzw. die Logik mache.
Den Kondensator habe ich mir tatsächlich bisher gespaart. Kann ich auch einen größeren verwenden, da an Vmot ja mehrere Controller verwende? Eigentlich sollte der Kondensator doch nur eine momentane Unterversorgung abfedern, oder? Den Fall Unterversorgung habe ich doch eigentlich schon durch das zweite Netzteil ausgeschlossen, oder ?
Ich habe gerade die beiden GND-Anschlüsse miteinander verbunden, daraufhin ist einer der Triber von mir gegangen, also nicht sehr erfolgreich.
Ich habe auch schon versucht einen 470 uF, 25 V Kondensator anzuschließen, der Kondensator ist jetzt wahrscheinlich hin, das Netzteil hat dann wahrscheinlich den Kurzschluss gespürt und hat sich abgeschaltet.
Deine Beschreibungen des Aufbaus sind so konfus, da hilft nur noch, dass Du einen Schaltplan zeichnest (Bleistift genügt), wie Du alles angeschlossen hast.
was heist auf 5V "runterschraube" was ist das für ein Teil . In der Regel ist bei einem Stepp_down Regler GND_in und GND_out identisch. Jedenfalls muss GND übnerall das gleiche Potential haben.
Strombegrenzung hast Du richtig eingestellt. ?
Du schreibst mehrere Motore , was passiert wenn Du einen, zwei , drei mal Schrittweise mit verwendest. gibt es einen Grund warum Du keine Lib verwendest.
Erst einmal Danke, dass ihr mir weiter versucht zu helfen. Ich weis, dass alles etwas konfus wirkt, ich selber arbeite seit über einem halben Jahr an dem Projekt.
Ja, ich verwende einen Step Down auf 5 V, der richtig eingestellt ist. Die Strombegrenzer auf den Controllern habe ich auch richtig eingestellt.
Als ich mit dem Projekt angefangen habe habe ich mir die Lib mal angesehen, ich muss allerdings eine sehr genaue Verfahrgeschwindigkeit einstellen können, deshalb war es einfacher die Differenz zwischen Flanken zu berechnen, anstatt die Lib zu verwenden.
Ich hoffe man erkennt alles auf dem Bild. Tut mir leid, meine Handschrift ist wirklich nicht die beste.
Das Anschließen von zwei Motoren an einen Controller scheint zu funktionieren, zumindest deutlichst weniger Rattern und das bischen denke ich kommt davon, dass ich für den Test nicht den Strom nachgestellt habe. Ich kann es aber leider für das Projekt nicht so lassen.
Du kannst nicht 2 Schrittmotore an einen Steppertreiber anschließen! Da funktioniert die Stromregelung nicht mehr. Auch die Pufferkondensatoren am Eingang von jedem Steppertreiber sind essentiell und für die Stromregelfunktion sehr wichtig. Die darf man nicht einfach weglassen.
Bei der Stromregelung arbeiten der Pufferkondensator, die Treiberelektronik und die Spulen im Schrittmotor sehr eng zusammen.
Ich verstehe auch nicht was Du immer mit 'Rattern' meinst. Hier müsstest Du erstmal ansetzen, und feststellen woher das kommt. Das mit dem Relais, dass Du im Ausgangspost erwähnt hat, scheint mir eher ein rumdoktorn an Symptomen zu sein, ohne die eigentliche Ursache zu suchen und abzustellen.
Mit deinem 'Schaltbild' kann man leider auch nicht wirklich viel anfangen. Hast Du die Step- und und Dir- Eingänge aller Treiber zusammengschaltet, und an jeweils einen Arduino-Pin angeschlossen? D.h. alle Motore sollen sich gleichzeitig, in gleicher Richtung und mit der gleichen Steprate bewegen?
Rodeba:
Momentan betreibe ich die A4988 über ein Separates Netzteil und die Motoren lassen sich immerhin gezielt in eine Richtung bewegen. Allerdings nur mit einem Rattern und sehr unpräzise. Stecke ich den Motor (nicht Triber) ab kann ich sie allerdings präzise steuern, wie gewünscht.
Was steckst Du ab, und was geht dann? Wenn Du den Motor absteckst, kannst Du ihn doch nicht mehr steuern???
Rodeba:
Als ich mit dem Projekt angefangen habe habe ich mir die Lib mal angesehen, ich muss allerdings eine sehr genaue Verfahrgeschwindigkeit einstellen können, deshalb war es einfacher die Differenz zwischen Flanken zu berechnen, anstatt die Lib zu verwenden.
Welche Lib hast Du dir da angesehen? Es gibt ein ganze Reihe Stepper Libraries. Und die können die Steprate i.A. schon sehr gut einstellen. Um welche Stepraten geht es hier denn?
Das Relais ist nur dazu da um die Bewegungen der Motoren zu verhindern, bevor der Mega die Enable-Pins setzten kann und Bewegungen so verhindert werden. Das war ein Problem, bevor mir das jetzige aufgefallen ist.
Kann mir jemand einen Kondensator empfehlen, den ich dafür an das Breadboard anschließen kann? Bzw. welche Spezifikationen ein solcher haben muss, ich habe mich mit Kondensatoren noch nicht wirklich viel beschäftigt, da er in meinen bisherigen Versuchen nicht nötig war.
Das "Rattern" ist ein unrundlaufen des Motors, welches in meinem Fall dazu führt, dass die Motoren scheinbar zu weit laufen. Ich nehme an, dass der Controller anstatt einem halben Schritt zu einem gewissen Prozentsatz einen ganzen macht.
Das das Schaltbild nicht gut ist ist mir klar, ich musste es in kurzer Zeit und ohne Internetanschluss zeichnen. Jeder Stepper hat einen eigenen Dir, Step und Enable Pin am Mega. Die Modi müssen allerdings nicht gewechselt werden, weshalb ich diese permanent verdrahtet habe. Sleep und Reset sind miteinander verbunden.
Gehe ich recht in der Annahme, dass der Großteil hier davon ausgeht, dass meine Probleme vom fehlenden Kondensator stammen? Es wäre schön, wenn mir nochmal jemand antworten würde, damit ich nichts falsches oder unnützes kaufe.
Wenn Dir beim Verbinden der GND-Anschlüsse etwas abgeraucht ist, vermute ich eher eine falsche Schaltung, die man aber in Deinem "Schaltbild" nicht erkennen kann.
Nachtrag, da ich eine Frage überlesen habe:
Für den Test bewege ich zwei Motoren gleichzeitig, einen im Halbschritt und einen im 32-tel Schritt, das Laufverhalten des 32-tel schrittmotors kann ich nicht gut beobachten.
Ich steuere beide separat an und es kommt zum Rattern, stecke ich den 32-Motor am Controller ab läuft der andere ruhig weiter.
Ich habe nach dem Abtauchen nachgemessen, zwischen den GND's ist eine Spannungsdifferenz von 0.15 V. Meinem Bauchgefühl nach sollte das nichts ausmachen, oder?