Forum: Mikrocontroller und Digitale Elektronik Ruhestrom in CNC Steuerungen


von Eugen T. (weaver)


Lesenswert?

Hallo!

Ich habe ein Problem. Meine Steuerung funktioniert, aber meine
Anwendung verwendet lange Ruhepausen (10-30 Min) wenn der Motor nur
steht. Leider der Modul mit A4988 hat keine (Standby) Möglichkeit den
Ruhestrom zu senken. Ich habe eine Schaltung entwickelt, die in der
Pausen den Motorstrom abschaltet. Das ist auch nicht gut, denn ich
verliere Schritte.
Gibt es dazu irgendeine spezielle Technik, die Motoren nicht zu heizen
wenn sie stehen (Z.B. Die Z Achse in 3D Drucker)?
Wie behandelt man die Pausen in diesen einfachen Steuerungen ( in meine
CNC Maschine - keine Eigenbau - der Motorstrom sinkt wenn der Motor
steht, aber dort sind ganz andere Treibermodule (5A)).
Vielen Dank!
Eugen

von EGS (Gast)


Lesenswert?

Hallo Eugen,

normalerweise haben die Treiberbausteine einen „Enable“-Pin. Wenn dieser 
inaktiv ist, werden die Motortreiber abgeschaltet und die Motoren nicht 
bestromt. Eventuell unterstützt die Firmware des Druckers/CNC die 
Möglichkeit die Haltezeit für dieses Signal einzustellen (z.B. kann dies 
GRBL).

Vorteil ist das somit die Motoren und die Treiber nicht alzustark 
belastet sind im IDLE. Nachteil ist, dass die Mechanik dann per Hand 
verschoben werden kann (blöd wenn man z.B. nur was prüfen wollte am 
Werkstück und dann was verschiebt...)

Mit freundlichen Grüßen EGS

von EGS (Gast)


Lesenswert?

Nachtrag: du kannst aber auch auf die TMC Treiber wechseln (2930...) die 
StallGuard, StealthChop und so unterstützen. Die haben soweit ich weis 
auch ne IDLE Funktion um den Haltemoment nicht zu verlieren und dennoch 
den Motorstrom soweit abzusenken, dass diese nicht heiß werden.

Grüße

von MaWin (Gast)


Lesenswert?

Eugen T. schrieb:
> Gibt es dazu irgendeine spezielle Technik, die Motoren nicht zu heizen
> wenn sie stehen (Z.B. Die Z Achse in 3D Drucker)?

Man kann den Strom verringern, aber nicht abschalten, sonst springt der 
Schrittmotor auf die nächste Rastposition.
Deine Treiber taugen dafür nicht. Dann kauf halt nicht immer das 
billigste, sondern Treiber mit Haltestromabsenkung.

Du hättest aber auch die Möglichkeit, die Motoren absichtlich zu einer 
Rastposition (manche Treiber haben dafür bestimmte Ausgänge, beim L297 
z.B. HOME, bei anderne M0 etc.) zu fahren, und dann den Strom (Enable) 
komplett abzuschalten. Dann sollte es beim Wiedereinschalten keine 
fehlerhafte Schrittposition geben.

von Tany (Gast)


Lesenswert?

EGS schrieb:
> normalerweise haben die Treiberbausteine einen „Enable“-Pin. Wenn dieser
> inaktiv ist, werden die Motortreiber abgeschaltet und die Motoren nicht
> bestromt

Das ist Murks hoch 3.

von Eugen T. (weaver)


Lesenswert?

In 3D Drucker waren vom Hersteller solche Treibermodule und es 
funktioniert und die Motoren sind nicht sehr warm.
In meinem Gerät ist der Motor sehr warm wenn 10 Min lang steht. Die EN 
Funktion hilft nicht, hat die selbe Wirkung wie meine eigene Lösung, den 
Strom vom Motor abzuschalten.
Ich habe irgendwo eine Modifikation für die A4988 Chips gesehen, wo man 
mit einem extre Eingang den Ruhastrom einschalten kann, aber in meinem 
3D Drucker ist keine solche Änderung.

von EGS (Gast)


Lesenswert?

Tany schrieb:
> EGS schrieb:
> normalerweise haben die Treiberbausteine einen „Enable“-Pin. Wenn dieser
> inaktiv ist, werden die Motortreiber abgeschaltet und die Motoren nicht
> bestromt
>
> Das ist Murks hoch 3.

Echt? Erkläre das doch mal TMC oder den anderen Herstellern der 
Motortreiber 🤔

Hast sicherlich ne bessere Idee 💡

von EGS (Gast)


Lesenswert?

Eugen T. schrieb:
> Die EN Funktion hilft nicht, hat die selbe Wirkung wie meine eigene
> Lösung, den Strom vom Motor abzuschalten.
> Ich habe irgendwo eine Modifikation für die A4988 Chips gesehen,...

Also dann muss entweder dein Motorstrom zu hoch eingestellt sein (Rsens 
beachten und den Poti korrekt einstellen)

Man kann über einen MC auch den Sleep-Eingang verwenden, aber die 
meisten Controllerboards haben entweder keinen IO mehr frei oder die 
Treiberbausteine haben den Sleep und den Reset zusammengeschaltet an 5 V 
um diese auf definierten High zu halten. Kann man ändern, denke aber 
nicht im Bereich deiner Möglichkeit.

Kannst ja mal hier ins DB schaun:

https://www.pololu.com/file/0J450/a4988_DMOS_microstepping_driver_with_translator.pdf

Auf Seite 10 ist der Sleep erläutert.

MFG

von Eugen T. (weaver)


Lesenswert?

Danke, ich habe genug Ports, aber der Sleep hat auch den Motorstrom fast 
zum Null reduziert, also der Motor blieb nicht auf der Position genau 
wie in meiner Schaltung, welche auch den Motorstrom abschaltet. Ich kann 
es natürlich modifizieren, Anstelle von der Abschaltung kann ich auch 
einen Ruhestrom einstellen.
Ich wollte nur wissen ob es ein anderes Trick gibt, denn in meinem 
Drucker sind keine solche Sachen, und auch die viele publizierte 
Lösungen beschäftigen sich mit diesem Problem kaum und die funktionieren 
trotzdem. Also muss etwas in Code sein.

von Thomas Z. (usbman)


Lesenswert?

Was du suchst nennt sich Stromabsenkung. Dazu könntest du, wenn eine 
bestimmte Zeit ohne Pulse abgelaufen ist, einfach Vref ändern. Ein 
retrigerbares Monoflop und ein Analogswitch sollten dazu reichen. 
Berechnungen zu Vref sind im Datenblatt zu finden.

Der Sleep Anschluss ist dafür ungeeignet.

von Timmo H. (masterfx)


Lesenswert?

Du könntest an dem Vref Pin einen Widerstand zum Poti im "Idle" parallel 
schalten, welcher dann bei Bedarf über einen Port Pin gegen GND gezogen 
wird. Bei Normalbetrieb schaltest du den Port pin wieder auf Eingang, 
also hochohmig. Damit ist der Widerstand dann quasi nicht mehr vorhanden

von Eugen T. (weaver)


Lesenswert?

Ja das kenne ich, das funktioniert.

von EGS (Gast)


Lesenswert?

Eugen T. schrieb:
> Danke, ich habe genug Ports, aber der Sleep hat auch den Motorstrom fast
> zum Null reduziert, also der Motor blieb nicht auf der Position genau
> wie in meiner Schaltung, welche auch den Motorstrom abschaltet. Ich kann
> es natürlich modifizieren, Anstelle von der Abschaltung kann ich auch
> einen Ruhestrom einstellen.

Ja was anderes bieten die A4988 Treiber nicht. Die Reduzierung des 
Motorstroms wird immer mit dem Verlust von Haltemoment erkauft. Die 
einzige Lösung um dies zu umgehen sind dann mechanischer Art 
(selbsthemmende Spindelantriebe o.ä.).

In den Codes der Drucker läuft auch nur eine abgewandelte GRBL Firmware. 
Die hat die Möglichkeit den Zeitpunkt wie lange die Motoren bestromt 
werden nachdem sie bewegt wurden einzustellen.

$1=25 (step idle delay, msec) Wird hier 255 eingegeben sind die Motoren 
dauerhaft aktiv (Enable bleibt aktiv). Bei den alten Treibern wie 
A4988/DRV88XX ist da normalerweise der Sleep nicht verwendet und alles 
wird hier mit dem Enable gemacht. Neuere Treiberboqrds von TMC
2209 und so bieten die Möglichkeit per UART zu kommunizieren und den 
Strom hier zu senken. Dein Drucker hat sicherlich auch Stepper, die so 
geringe Ströme brauchen, dass die nicht warm werden. Deine anderen 
brauchen sicherlich mehr Strom (also mehr Leistung und höhere 
Drehmomente), dass es hier jetzt überhaupt auffällt.

MFG

von Uwe (Gast)


Lesenswert?

Hi,
>Gibt es dazu irgendeine spezielle Technik, die Motoren nicht zu heizen
>wenn sie stehen (Z.B. Die Z Achse in 3D Drucker)?
Jein. Die meisten sind schon genannt worden aber 1ne fehlt noch, Bremse 
einlegen dann Strom abschalten. Das ist aber eine recht harte Methode 
die Position zu halten. Sollte deine Z-Achse ohne Strom in Rastposition 
selber halten müsstst du nur bei Start mit Vollstep die Ref. holen, dann 
auf deine gewünschte Stepauflösung umschalten und von da an sauber alle 
Impulse bis zum nächste Vollstep mitzählen. Bei Stop gehst du auf eine 
volle Steppos.
und kannst den Strom entweder abschalten oder absenken.
Eigentlich war alles schon genannt, man muss nur etwas Hirnschmalz 
einsetzen dann wird das auch.

Viel Erfolg, Uwe

von Eugen T. (weaver)


Lesenswert?

Danke für die Tips.

Auf dieser Seite

https://hackaday.io/project/159190-dual-current-modes-idling-on-a4988-stepper-motor

Ein Comment von Martinez beschreibt eine andere Lösung, eventuell hat 
das jemand ausprobiert?

Meine Getriebe ist selbstsperrend, das ist nicht das Problem. Mein 
Problem war nach der Stromabsschaltung und Neustart verliere ich immer 
2-3 Schritte also die Positionierung stimmt nach Ruhepause nicht mehr. 
(die Stromabschaltung erfolgt etwa nach 2 Sekunden und der erste Schritt 
nach Neustart kommt auch erst nach zwei Sekunden. Für das Gerät ist die 
Genauigkeit der Schritte absolut wichtig.
Ich brauche auch relative wenig Strom (<0,8A) aber auch dieser Strom 
langfristig erwärmt sehr den Motor. Bei weniger Strom wieder verliert 
schon Schritte in der Bewegung. Der 0,8 A ist das Minimum wenn der Moror 
genau läuft.
Ich habe schon 3 verschiedene Motoren probiert. Jetzt habe ich einen 
Motor aus einem HP Drucker, kleiner als NEMA, etwa 33x33 mm.

von m.n. (Gast)


Lesenswert?

Auch beim A4988 sollte es kein Problem sein, eine Stromabsenkung durch 
Verringern von Vref zu erhalten. Beim A4982 lasse ich das den µC 
(PWM-DAC) erledigen.
Beitrag "Schrittmotoransteuerung mit A4982 und ATmega328"
Vref durch die Taktimpulse zu verändern wäre - wie oben geschrieben - 
eine Alternative; es ginge auch ohne Monoflop.

von EGS (Gast)


Lesenswert?

Eugen, hast du den Hack aus deinem Link gelesen? Ich zitiere mal:

„... Furthermore, the A4988 ran cool in this mode so I feel confident it 
can last the test of time. ...“

Es geht darum den Motortreiber zu schonen, nicht den Motor. Als 
Nebenwirkungen ist auch der Motorstrom geringer aber dennoch auf Niveau, 
dass er Haltemoment hat.

Meine Schrittmotoren sind immer bestromt und werden nichtmal handwarm 
(Pollin 0,8 Grad 1,7 A). Ich hatte eher Probleme mit den DV8825. Aktive 
Kühlung und vernünftiger Wärmeleitkleber für die Kühlkörper und dann 
lupte es.

Gruss

von Eugen T. (weaver)


Lesenswert?

Danke. Deswegen habe ich gefragt. Ich habe keine Probleme mit A4988 ( 
Kühlkörper ist aufgeklebt.). Nur mit dem Motor, etwa nach 20-30 Minuten 
ist schon sicher um 60Grad heiß. Zwei Wicklungen sind  unter Strom ( 
zusammen etwa 0,8 A). Deswegen muss ich irgendeine Lösung finden.

Ich kann natürlich meine Stromversorgung modifizieren, nur verstehe ich 
nicht wieso funktionieren diese Geräte ohne solche Massnahmen.
Ich glaube wir können diesen Thread schließen.

von Wolfgang (Gast)


Lesenswert?

Eugen T. schrieb:
> Ich kann natürlich meine Stromversorgung modifizieren ...

Du sollst nicht deine Stromversorgung modifizieren, sondern zur 
Verringerung des Motorstromes einfach die Referenzspannung vom A4988 
absenken.

von Sebastian S. (amateur)


Lesenswert?

Den Motorstrom auf null zu bringen halte ich auch nicht für eine gute 
Idee!
Der Schrittverlust - ohne eine Positionserkennung - ist damit bereits 
vorprogrammiert.
Kommst Du aber an das Netzteil ran, so könntest Du die Motorspannung 
senken. Das muss aber unbedingt Synchron passieren, damit der Motor 
nicht durch Unterspannung Schritte verliert. Der CNC-Befehlssatz lässt 
"eigene", programmierte Schalter zu. So wie "Kühlwasser" an/aus. Viele 
Steuerungen haben hierfür Schaltausgänge.
Wie weit sich die Spannung - problemlos senken lässt hängt von einem 
ganzen Sack voll Bedingungen ab. Hier gilt wohl: Studieren geht über 
probieren - oder so.

von Eugen T. (weaver)


Lesenswert?

Das Problem ist, dann muss ich auf dem Modul die Modifikation 
durchführen ( Kompatibilitätsfrage). Deswegen scheint mir einfacher, die 
Stromversorgung zu modifizieren. Ich überlege die ganze Steuerung zu 
modifizieren (closed loop), dann werde ich unabhängig von Motorschritten 
und so kann ich den Motor in Pausen völlig abschalten.

von EGS (Gast)


Lesenswert?

Closed Loop ist natürlich die beste Lösung. Dann weiss dein System immer 
wo es ist und regelt Schrittverluste nach.

Wenn du nur die Modifikation in Betracht ziehst, wechsel die 
Motortreiber aus TMC2208/9 oder besser dann kannst du per SPI oder UART 
die Treiber einstellen und hast ohne Closed loop gute Möglichkeiten. 
Informier dich da mal, die sind großteils Pin-kompatibel.

So ich trink jetzt noch den Wiskey Sour aus und dann is ruh 😋

von Eugen T. (weaver)


Lesenswert?

Ich werde noch weiter zurückschalten. Ursprünglich ich brauchte nicht 
einmal den A4988 Treiber, habe ich die Schritte direkt in AVR 
geschrieben. Das verkleinert auch meine Elektronik und kann ich noch 
kleineren Motor einsetzen. Der Platz ist leider zu knapp.
Schönen Abend noch.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.