Forum: Mikrocontroller und Digitale Elektronik Schrittmotor läuft nicht bei Belastung


You were forwarded to this site from EmbDev.net. Back to EmbDev.net
von Frank H. (meiland)


Lesenswert?

Hallo,
NEMA 17(C4335-9012-C1), Bipolar, 4 Drähte, 0,9 grd, 5,6 V, 0,64 A.
Steuerung mit arduino und DRV8825. Versorungsspannung 24 V mit Elko 
100µF.
GND-Versorgungsspannung mit GND-arduino verbunden. Kein Microstepping 
benutzt. Am DRV8825 Referenzspannung von 0,32 V eingestellt.
Verwendung von BasicStepperDriver.h und eingestellt auf 400 
Steps/Umdrehung.

Wenn ich den Motor mit move(1) x 360 schrittweise bewege oder mit 
rotate(360) ist  alles i.O.. Die Welle dreht so kräftig, dass ich diese 
mit den Fingern nicht anhalten kann!
Wenn ich auf die Motorwelle eine Aluscheibe(120mm Durchmesser, 90 g) 
anflansche, dann ruckt und vibriert der Motor nur noch bzw. macht zT. 
mal ein paar Grad.
Das habe ich mit 3 Motoren getestet.

Ich bin etwas am Verzweifeln. Was könnte die Ursache sein ?

Gruß Frank

von m.n. (Gast)


Lesenswert?

Frank H. schrieb:
> Was könnte die Ursache sein ?

Verwende Mikroschritte und eine Beschleunigungsrampe und spanne den 
Motor fest ein.

von Uwe (Gast)


Lesenswert?

Google: Schrittmotor Resonanz

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Frank H. schrieb:
> Wenn ich den Motor mit move(1) x 360 schrittweise bewege oder mit
> rotate(360) ist  alles i.O..
Und wie schnell dreht sich die Achse dann?

> Was könnte die Ursache sein ?
Du kannst mit Masse auf der Achse nicht mit voller Geschwindigkeit 
losfahren.

> Am DRV8825 Referenzspannung von 0,32 V eingestellt.
Das bedeutet welchen Strom? Was für Shunts hast du?

von Xerxes (Gast)


Lesenswert?

Frank H. schrieb:
> Ich bin etwas am Verzweifeln. Was könnte die Ursache sein ?

Wilde Vermutung: Massenträgheit !

von Frank H. (meiland)


Lesenswert?

Lothar M. schrieb:
> Und wie schnell dreht sich die Achse dann?

bei move(360) und einem delay(2) je step   weniger als 1 sec.

von tom (Gast)


Lesenswert?

Dein Motor wird ein Trägheitsmoment in der Größenordnung von 4-5*10-6 
kg*m² haben (~40-50 g*cm²), die Aluscheibe ca. 650*10-6 kg*m². Da ist 
der Faktor 100 dazwischen. Diese Trägheitsmasse muss der Motor 
beschleunigen. Das wird nur mit deutlich reduzierter Beschleunigung 
gehen, wie bereits erwähnt.

Gruß
Tom

von m.n. (Gast)


Lesenswert?

Frank H. schrieb:
> Steuerung mit arduino

Da hier in den letzten Tagen wiederholt Schrittmotorprobleme 
angesprochen wurden, hatte ich Testprogramme für Arduino verlinkt: 
http://mino-elektronik.de/Generator/takte_impulse.htm#bsp3a ff.
Damit könntest Du etwas gezielter Deinen Motor ansteuern und testen.

> bei move(360) und einem delay(2) je step
Da weiß man doch überhaupt nicht, was passiert.

von Frank H. (meiland)


Lesenswert?

m.n. schrieb:
> http://mino-elektronik.de/Generator/takte_impulse.htm#bsp3a ff.
> Damit könntest Du etwas gezielter Deinen Motor ansteuern und testen.

Danke, werde ich machen.
Ich nahm bisher an, dass bei nur einem Step bzw. der Folge mehrerer 
Einzelner  keine Anfahrrampe nötig ist.

von Xerxes (Gast)


Lesenswert?

Frank H. schrieb:
> Lothar M. schrieb:
>> Und wie schnell dreht sich die Achse dann?
>
> bei move(360) und einem delay(2) je step   weniger als 1 sec.

Rechne doch mal selber:
Du willst die Masse deiner Aluscheibe  in ca. 1/360 sec auf eine eine 
Geschwindigkeit von 1 Umdr. pro Sekunde beschleunigen ( Schrittmotoren 
haben "keinen" Schlupf)
Wie viel Leistung wird dafür maximal benötigt ?
Rechne mal !

von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

Frank H. schrieb:
> m.n. schrieb:
>> http://mino-elektronik.de/Generator/takte_impulse.htm#bsp3a ff.
>> Damit könntest Du etwas gezielter Deinen Motor ansteuern und testen.
>
> Danke, werde ich machen.
> Ich nahm bisher an, dass bei nur einem Step bzw. der Folge mehrerer
> Einzelner  keine Anfahrrampe nötig ist.

Für einen einzelnen Schritt kann es keine Anfahrrampe geben. Für mehrere 
hintereinder schon, sobald du oberhalb der Start-Stopp Frequenz 
startest. Und die ist eben abhängig von der angetriebenen Last. Wo soll 
man denn sonst eine Rampe benötigen?

Mit freundlichen Grüßen
Thorsten Ostermann

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Thorsten O. schrieb:
> Für einen einzelnen Schritt kann es keine Anfahrrampe geben.
Und das wäre dann der erste Test: ein Schritt. Laaaaange Pause. Ein 
Schritt. Laaaaange Pause. Die laaaange Pause im Sekundenbereich ist 
dafür, dass sich das Ding nicht aufschwingt und in Resonanz kommt.

Frank H. schrieb:
> Ich nahm bisher an, dass bei nur einem Step bzw. der Folge mehrerer
> Einzelner  keine Anfahrrampe nötig ist.
Auch wenn du das Ding mit 4kHz Taktfrequenz ansteuerst, ist das nur eine 
"Folge mehrerer Einzelner" Impulse. Eine ziemlich schnelle Folge eben...

von Wolfgang (Gast)


Lesenswert?

Xerxes schrieb:
> Du willst die Masse deiner Aluscheibe  in ca. 1/360 sec auf eine eine
> Geschwindigkeit von 1 Umdr. pro Sekunde beschleunigen ( Schrittmotoren
> haben "keinen" Schlupf)

Aber sie haben einen Lastwinkel und wenn der über 90° steigt, hat man 
eigentlich so gut wie verloren.

von Frank H. (meiland)


Lesenswert?

Das Ziel ist eigentlich mit jedem Schritt ca. 0,5 grd Vorschub zu haben.
Das müßten dann mehrere Einzelschritte(Microsteps) sein. Dann wieder 
eine Pause  mit Messungen usw. Die Zeit ist nicht so entscheidend.
Meine Aluscheibe wollte ich aber von jetzt 90g auf ca. 200 bis 300g 
erhöhen. Ist das machbar ? Mit welcher arduino Library könnte man das 
machen ?

von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

Hallo Frank,

"Schritt" meint bei Schrittmotoren immer einen Voll- oder Mikroschritt. 
Du scheint eine Sequenz deiner Messung zu meinen. Unklares Wording führt 
zu Verwirrung. Ich würde es "pro Durchlauf" oder so ähnlich nennen, um 
Verwechselungen zu vermeiden.

Wenn deine Scheibe noch größer werden soll, benötigst du entweder einen 
größeren Motor, oder eine Untersetzung. Durch die Untersetzung reduziert 
sich das am Motor wirkende Massenträgheitsmoment quadratisch. Und du 
kommst einfacher auf deine 0,5° pro Durchlauf/Messung.

Mit freundlichen Grüßen
Thorsten Ostermann

von uwe (Gast)


Lesenswert?

Meine Aluscheibe wollte ich aber von jetzt 90g auf ca. 200 bis 300g
erhöhen. Ist das machbar ? Mit welcher arduino Library könnte man das
machen ?
?????

von uwe (Gast)


Lesenswert?

Mit gar keiner... Grundlagen lernen!

von Wolfgang (Gast)


Lesenswert?

uwe schrieb:
> Meine Aluscheibe wollte ich aber von jetzt 90g auf ca. 200 bis 300g
> erhöhen.

Die Masse ist völlig egal. Es kommt auf das Trägheitsmoment an.

von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

@Wolfgang,

die Masse geht aber ins Trägheitsmoment ein. Und da er Alu nicht durch 
Blei ersetzen wird, ist zu befürchten, dass die Scheibe nicht breiter 
wird, sondern einen größeren Durchmesser bekommt. Der Radius geht aber 
sogar quadratisch ein.

Mit freundlichen Grüßen
Thorsten Ostermann

von pegelwendler (Gast)


Lesenswert?

Für Stepper hat Arduino eine Kacklib.
Rausschmeißen und umbauen auf AccelStepper.
Da kannst du auch Beschleunigungen usw. einstellen.

von Timo N. (tnn85)


Lesenswert?

pegelwendler schrieb:
> Für Stepper hat Arduino eine Kacklib.

Die "Standard"-Arduino Lib meint er gar nicht, denn die Standard-Lib 
unterstützt gar keine Schrittmotortreiber mit STEP(PULSE) / DIR 
Signaleingang.

Er meint vermutlich die hier:
https://github.com/laurb9/StepperDriver

von Hugo H. (hugo_hu)


Lesenswert?

Thorsten O. schrieb:
> ist zu befürchten, dass die Scheibe nicht breiter
> wird, sondern einen größeren Durchmesser bekommt. Der Radius geht aber
> sogar quadratisch ein.

Da hilft sicher eine entsprechende Riemen-Übersetzung (-> 
Plattenspieler-Antrieb) oder ein Getriebe (auch eine Übersetzung), wenn 
man nicht (ausgefeilte Rampen) fahren kann oder will.

von Frank H. (meiland)


Lesenswert?

Also ich verstehe das jetzt so. Meine Aluscheibe mit Messeinrichtungen 
wiegt  zZ. 90g bei einem Durchmesser von 120 mm. Ich darf die Masse 
nicht erhöhen und muss den Durchmesser möglichst gering halten.
Das wäre mit Leichtbau konstruktiv event. machbar. Vielleicht 80 bis 
100mm Durchmesser und ca. 100 g Gesamtmasse.
Eine Untersetzung wäre in meinem Falle sehr aufwändig.
Kann man als Stepper-Library den AccelStepper benutzen. Bringt der die 
notwendige Ranmpe ?

von Timo N. (tnn85)


Lesenswert?

Frank H. schrieb:
> Kann man als Stepper-Library den AccelStepper benutzen. Bringt der die
> notwendige Ranmpe ?

Ja kann man und ja tut sie.

von Jobst Q. (joquis)


Lesenswert?

Frank H. schrieb:
> Das Ziel ist eigentlich mit jedem Schritt ca. 0,5 grd Vorschub zu haben.
> Das müßten dann mehrere Einzelschritte(Microsteps) sein. Dann wieder
> eine Pause  mit Messungen usw. Die Zeit ist nicht so entscheidend.
> Meine Aluscheibe wollte ich aber von jetzt 90g auf ca. 200 bis 300g
> erhöhen. Ist das machbar ? Mit welcher arduino Library könnte man das
> machen ?

Das ist nicht nur eine Frage der Library, sondern auch der Hardware.

Eine Schwungmasse bzw ein Trägheitsmoment wirkt an einem Motor wie ein 
Kondensator und zwar ein ziemlich großer. Also im Ruhezustand fast so 
gut wie ein Kurzschluss. Um eine solche Scheibe in Bewegung zu setzen, 
brauchst du mindestens:

1. Einen Motor, der stark genug ist.
2. Eine stabile Spannungversorgung, die viel Strom liefern kann.
3. Einen Treiber, der diese Ströme aushält.
4. Kabel und Verbindungen mit geringen Widerständen.

von Jobst Q. (joquis)


Lesenswert?

Ergänzend: Denke daran, dass die drehende Scheibe dann Energie enthält. 
Der Motor wirkt dann als Generator und erzeugt Spannungen, die 
berücksichtigt werden müssen, wenn sie keinen Schaden anrichten sollen.

Ganz allgemein ist es keine gute Idee, eine große Scheibe mit einem 
Schrittmotor zu bewegen.

von Wolfgang (Gast)


Lesenswert?

Jobst Q. schrieb:
> Eine Schwungmasse bzw ein Trägheitsmoment wirkt an einem Motor wie ein
> Kondensator und zwar ein ziemlich großer. Also im Ruhezustand fast so
> gut wie ein Kurzschluss.

Nicht alles was hinkt, ist ein Vergleich.
Probleme mit dem Loslaufen gibt es nur, wenn der Lastwinkel zu groß 
wird. Darum darf der nächste Schritt nicht zu früh kommen und damit eine 
Beschleunigung stattfindet, darf er auch nicht zu spät kommen, weil die 
Schwungmasse sonst wieder abgebremst wird.

Mit der Funktion von Schrittmotortreibern, wie dem DRV8825 scheinst du 
noch etwas auf Kriegsfuß zu stehen.
> 1. Einen Motor, der stark genug ist.
Unsinn, wenn die Schritte mit dem richtigen Timing kommen, ist es egal 
wie kräftig der Motor ist, solange es um die Bewegung der Schwungmasse 
geht (Lagerreibung etc. also außen vor gelassen).

> 2. Eine stabile Spannungversorgung, die viel Strom liefern kann.
Die muss bei einem Schrittmotortreiber, wie dem DRV8825 wesentlich 
weniger Strom liefern, als durch die Motorwicklungen fließt, solange die 
Ausgangsspannung ausreichend hoch gegenüber der Nennspannung des Motors 
ist. Und die Stabilität ist eher unkritisch. Es muss aber ein 
Pufferkondensator vorhanden sein, der Energie aus dem Magnetfeld der 
Spulen aufnehmen kann.

> 3. Einen Treiber, der diese Ströme aushält.
Bei Treibern, wie dem DRV8825 bestimmt der Treiber, wieviel Strom 
fließt, nicht der Motor und nicht das Netzgerät.

> 4. Kabel und Verbindungen mit geringen Widerständen.
Bei Treibern, wie dem DRV8825 bestimmt der Treiber, wieviel Strom 
fließt. Ein Serienwiderstand durch die Kabel ist eher unkritisch, 
solange vom Netzgerät ausreichend viel Spannung zur Verfügung gestellt 
wird.

von Jobst Q. (joquis)


Lesenswert?

Wolfgang schrieb:
> Mit der Funktion von Schrittmotortreibern, wie dem DRV8825 scheinst du
> noch etwas auf Kriegsfuß zu stehen.

Da hast du Recht. Von solchen Zaubertreibern, wo von Netzteil bis 
Motorstärke alles egal ist und es trotzdem funktioniert, hatte ich 
bisher noch nichts gehört.

von Wolfgang (Gast)


Lesenswert?

Jobst Q. schrieb:
> Von solchen Zaubertreibern, ...
Nur weil du es nicht verstehst, muss es sich nicht um Zauberei handeln.
Solange die vom Motor abzugebende Leistung nicht festgelegt ist, gibt es 
einige Spielräume für die Steuerung.

von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

Hallo Wolfgang,

Wolfgang schrieb:
> Probleme mit dem Loslaufen gibt es nur, wenn der Lastwinkel zu groß
> wird. Darum darf der nächste Schritt nicht zu früh kommen und damit eine
> Beschleunigung stattfindet, darf er auch nicht zu spät kommen, weil die
> Schwungmasse sonst wieder abgebremst wird.

Soweit, so gut...

> Mit der Funktion von Schrittmotortreibern, wie dem DRV8825 scheinst du
> noch etwas auf Kriegsfuß zu stehen.
>> 1. Einen Motor, der stark genug ist.
> Unsinn, wenn die Schritte mit dem richtigen Timing kommen, ist es egal
> wie kräftig der Motor ist, solange es um die Bewegung der Schwungmasse
> geht (Lagerreibung etc. also außen vor gelassen).

Das stimmt so nicht. Die Trägheitsmasse der Last muss schon grob in der 
gleichen Größenordnung liegen wie die des Rotors. Es hat schon seinen 
Grund, dass es unterschiedliche Motorgrößen und Bauformen gibt. Bei 
Oriental Motor gibt es sogar eine Serie mit extra höherer Rotorträgheit.

>> 2. Eine stabile Spannungversorgung, die viel Strom liefern kann.
> Die muss bei einem Schrittmotortreiber, wie dem DRV8825 wesentlich
> weniger Strom liefern, als durch die Motorwicklungen fließt, solange die
> Ausgangsspannung ausreichend hoch gegenüber der Nennspannung des Motors
> ist. Und die Stabilität ist eher unkritisch. Es muss aber ein
> Pufferkondensator vorhanden sein, der Energie aus dem Magnetfeld der
> Spulen aufnehmen kann.

Ihr habt beide Recht. Niemand sprach von einem Netzteil, das 10A 
Dauerstrom liefern kann. Aber kurze Stromspitzen -und zwar in beide 
Richtungen, also Sink und Source- muss das Netzteil zulassen. Daran 
gehen viele der billigen Motorshields kaputt. Der Elko auf der Platine 
ist viel zu klein, der Motor speist in die Versorgung zurück, die 
Spannung steigt kurzzeitig stark an und schon war es das.

>> 3. Einen Treiber, der diese Ströme aushält.
> Bei Treibern, wie dem DRV8825 bestimmt der Treiber, wieviel Strom
> fließt, nicht der Motor und nicht das Netzgerät.

Das ist zwar richtig, aber beim Rückspeisen muss der Treiber mit den 
höheren Spannungen klarkommen (s.o.). Wenn alles auf Kante genäht ist, 
sind große Schwungmassen ein Problem.

>> 4. Kabel und Verbindungen mit geringen Widerständen.
> Bei Treibern, wie dem DRV8825 bestimmt der Treiber, wieviel Strom
> fließt. Ein Serienwiderstand durch die Kabel ist eher unkritisch,
> solange vom Netzgerät ausreichend viel Spannung zur Verfügung gestellt
> wird.

Auch falsch, siehe oben. Sonst steigt lokal am Treiber die Spannung 
stark an, weil die Ladung nicht schnell genug in Richtung Netzteil 
abfließen kann.

Mit freundlichen Grüßen
Thorsten Ostermann

von Timo N. (tnn85)


Lesenswert?

Thorsten O. schrieb:
> Auch falsch, siehe oben. Sonst steigt lokal am Treiber die Spannung
> stark an, weil die Ladung nicht schnell genug in Richtung Netzteil
> abfließen kann.

Beim DRV8825 bzw. den darauf basierenden Treiberplatinchen ist der 
Kondensator sowieso extern. Könnte man ja einfach parallel zu den 
üblichen 100µF noch ein paar weitere µF dranhängen um das Problem zu 
lösen. Die Kabel zum Netzteil würde der Strom dann gar nicht mehr 
erreichen.

von Wolfgang (Gast)


Lesenswert?

Frank H. schrieb:
> Bringt der die notwendige Ranmpe ?

Bring erstmal Ordnung in deine Gedanken.
Eine Rampe benötigst du nur, wenn der Schrittmotor zwischen zwei 
Messpositionen mehr als einen Vollschritt machen muss.

Du schreibst hier von "0,5 grd" Vorschub.
Ist das der Abstand zwischen zwei Messpositionen?
Wieviel Vollschritte braucht dein Motor für eine 360°-Drehung?

Frank H. schrieb:
> Das Ziel ist eigentlich mit jedem Schritt ca. 0,5 grd Vorschub zu haben.

Thorsten O. schrieb:
> Die Trägheitsmasse der Last muss schon grob in der
> gleichen Größenordnung liegen wie die des Rotors.

Sehe ich nicht so. Nimm einen stehenden Rotor und lege das nächste 
Schrittmuster an. Dann entsteht ein tangential wirkender Kraftvektor, 
der den Rotor beschleunigt. Bevor der Rotor sich so weit gedreht hat, 
dass der Vektor nur noch radial oder gar tangential in Gegenrichtung 
wirkt, muss der nächste Schritt anliegen (sonst wird er wieder 
gebremst). Das ist für BLDC-Motoren (mit Sensoren) die normale 
Betriebart und funktioniert wunderbar.

> Niemand sprach von einem Netzteil, das 10A
> Dauerstrom liefern kann. Aber kurze Stromspitzen -und zwar in beide
> Richtungen, also Sink und Source- muss das Netzteil zulassen.

Die wenigsten Netzteile können Strom (Sink) aufnehmen und trotzdem 
laufen Schrittmotoren ;-)
Es ist genau die Aufgabe der Kondensatoren auf der Motorspannung, dies 
Spitzen (in beide Richtungen) zu puffern. Die Ladungen fließen sowieso 
nur hin- und her.

> Das ist zwar richtig, aber beim Rückspeisen muss der Treiber mit den
> höheren Spannungen klarkommen (s.o.).
Klar, aber soviel höher ist die nicht, wenn das Verhältnis von 
Versorgungs- zu Nennspannung z.B. 4:1 beträgt und der rückgespeiste 
Strom vernünftig von der Versorgungsschiene aufgenommen wird.

> Sonst steigt lokal am Treiber die Spannung stark an, weil die Ladung
> nicht schnell genug in Richtung Netzteil abfließen kann.
Die Spannung über dem Kabel steigt an. Beim Treiber kommt das nicht an, 
weil der fließende Strom einen Spannungsabfall über dem 
Leitungswiderstand erzeugt. Ohne ausreichenden Kondensator auf der 
Versorgung macht es wenig Sinn, sich über andere Wenn und Abers die 
Haare zu raufen.

von m.n. (Gast)


Lesenswert?

Wolfgang schrieb:
> Die wenigsten Netzteile können Strom (Sink) aufnehmen und trotzdem
> laufen Schrittmotoren ;-)

Aufpassen: Schaltnetzteile schalten in der Regel ab, wenn die 
Ausgangsspannung extern erhöht wird. Eine Diode in Reihe zur 
Ausgangsspannung verhindert dies. Ein dickerer Elko oder eine 
elektronische Last/Zenerdiode verhindern Überspannung für den 
Motortreiber.

von Frank H. (meiland)


Lesenswert?

Wolfgang schrieb:
> Eine Rampe benötigst du nur, wenn der Schrittmotor zwischen zwei
> Messpositionen mehr als einen Vollschritt machen muss.
> Du schreibst hier von "0,5 grd" Vorschub.
> Ist das der Abstand zwischen zwei Messpositionen?
> Wieviel Vollschritte braucht dein Motor für eine 360°-Drehung?

Mein Schrittmotor hat, wie ich unter #1 schrieb 0,9 grd, also 400 
Schritte je Umdrehung.
Meine gedachten Messpositionen von 0,5 grd Abstand wären mit 
Vollschritten also nicht erreichbar. Mit Microschritten schon aber da 
ist das Drehmoment wohl auch deutlich geringer ? Da meine Motoren 
sowieso grenzwertig sind sollte ich als Messposition vielleicht 1 grd 
anstreben. Nach Deiner Aussage ist eine Rampe erst bei mehr als 1 
Vollschritt möglich. Dann würden die weiter oben vorgeschlagenen 
Microschritte keinen Vorteil bringen ?
Wie kann ich den vorhanden Schrittmotor in 1 grd Sprüngen vorwärts 
bewegen ?
Sollte das mit Vollschritten oder mehreren Microschritten passieren ?
Auf jeden Fall maximale Reduzierung der Schwungmasse.

Bei der obigen Diskussion über Spannungen, Stromstärken, Rückspeisung 
usw. überlege ich mir, dass mir bereits 2 DRV8825 kaputt gegangen 
sind...
Bringt  es etwas, wenn ich zu dem vorhanden Elko 100 µF an der 
Spanungsversorgung einen weiteren gleichen parallel schalte ?

von Wolfgang (Gast)


Lesenswert?

Frank H. schrieb:
> Mit Microschritten schon aber da ist das Drehmoment wohl auch
> deutlich geringer ?

Wie kommst du darauf?

> Dann würden die weiter oben vorgeschlagenen
> Microschritte keinen Vorteil bringen ?

Eine Rampe brauchst du nur, wenn du auf Grund der Trägheit andernfalls 
einen Lastwinkel von elektrisch 90° Überschreiten würdest. Wenn deine 
Gesamtbewegung sowieso kleiner ist, besteht keine Gefahr. Bei 1° und 
einem Vollschrittwinkel von 0.9° wäre sie das aber schon nicht mehr. Es 
besteht dann zwar noch keine Gefahr, dass der Motor den Schritt 
verliert, aber das Drehmoment ist zu Anfang reduziert, wenn die Schritte 
zu schnell kommen.

Ist dein Motor überhaupt für Mikroschrittbetrieb in der Form geeignet? 
Nicht jeder Motor macht bei Mikroschrittansteuerung schön gleichmäßige 
Winkelschritte.

> usw. überlege ich mir, dass mir bereits 2 DRV8825 kaputt gegangen
> sind...

Wobei sind sie dir kaputt gegangen?
Ziemlich tödlich ist, wenn du an den elektrischen Verbindungen zum Motor 
rumfummelst, solange der unter Strom steht.

von dfIas (Gast)


Lesenswert?

Jobst Q. schrieb:
> Ganz allgemein ist es keine gute Idee, eine große Scheibe mit einem
> Schrittmotor zu bewegen.
Schrittmotoren sind überhaupt keine gute Idee!
Der einzige Vorteil besteht preislich. Ansonsten haben Stepper einen 
schlechten Wirkungsgrad, müssen mit reichlich Margin betrieben werden, 
damit sie nicht ausrasten, sind zwangskommutiert, benötigen Startrampen 
usw., EMF kaum nachweisbar, fehlende Rückmeldung.
Je nach Getriebe (kritisch bspw. Harmonic Drive, das ein größeres 
Losreißmoment benötigt) kann es für Stepper erforderlich sein, neben der 
Startrampe auch mit einem höheren Spulenstrom anzufahren und nach 
Beendigung der Rampe wieder abzusenken.
Wenn der Preis nicht ganz so wichtig ist, auf 3-Phasen-BLDC umstellen! 
Dann gelten auch die Umrechnungen Strom <=> Moment, Spannung <=> 
Drehzahl wieder in der Praxis. Kaskadierte Regelung dran für Strom 
(Moment), Drehzahl und ggf. Position.
Für alle Motorentypen wäre zur Steuerung des Stroms PWM und eine höhere 
Eingangsspannung zu empfehlen.
Man stelle sich ein E-Auto vor, das von einem Stepper-Motor angetrieben 
würde: Reichweite 5 km, kein 4Q, keine Rekuperation, das Ende der 
Energiewende ...

von Wolfgang (Gast)


Lesenswert?

dfIas schrieb:
> Man stelle sich ein E-Auto vor, das von einem Stepper-Motor angetrieben
> würde: Reichweite 5 km, kein 4Q, keine Rekuperation, das Ende der
> Energiewende ...

Das ist egal, wenn man nur 10cm-Strecken fahren will.

von Egon D. (Gast)


Lesenswert?

dfIas schrieb:

> Schrittmotoren sind überhaupt keine gute Idee!
> Der einzige Vorteil besteht preislich. Ansonsten haben
> Stepper einen schlechten Wirkungsgrad, müssen mit
> reichlich Margin betrieben werden, damit sie nicht
> ausrasten, sind zwangskommutiert, benötigen Startrampen
> usw., EMF kaum nachweisbar, fehlende Rückmeldung.

Hmm.
Kann das sein, dass Du das Prinzip nicht verstanden
hast?

von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

Hallo Wolfgang,

Wolfgang schrieb:
> Thorsten O. schrieb:
>> Die Trägheitsmasse der Last muss schon grob in der
>> gleichen Größenordnung liegen wie die des Rotors.
>
> Sehe ich nicht so. Nimm einen stehenden Rotor und lege das nächste
> Schrittmuster an. Dann entsteht ein tangential wirkender Kraftvektor,
> der den Rotor beschleunigt. Bevor der Rotor sich so weit gedreht hat,
> dass der Vektor nur noch radial oder gar tangential in Gegenrichtung
> wirkt, muss der nächste Schritt anliegen (sonst wird er wieder
> gebremst). Das ist für BLDC-Motoren (mit Sensoren) die normale
> Betriebart und funktioniert wunderbar.

Du musst mir nicht erklären wie ein Schrittmotor funktioniert. Ich 
entwickle seit 25 Jahren Schrittmotorsteuerungen. Es geht hier auch 
nicht um deine Meinung oder Sicht der Dinge, sondern um Physik. Wenn die 
Trägheitsmasse der Last deutlich (also um Faktor 100 oder mehr) kleiner 
ist als der Motor, läuft der Motor quasi leer und beschleunigt in erster 
Linie sich selbst. Das ist sehr ineffizient. Ist die Last deutlich 
größer, "wedelt der Schwanz mit dem Hund", um es mal bildlich 
auszudrücken. Das Beschleunigungsvermögen des Antriebs leidet spürbar. 
Gerade beim ungeregelten Schrittmotor gibt es kaum Möglichkeiten, dass 
zu kompensieren.

>> Niemand sprach von einem Netzteil, das 10A
>> Dauerstrom liefern kann. Aber kurze Stromspitzen -und zwar in beide
>> Richtungen, also Sink und Source- muss das Netzteil zulassen.
>
> Die wenigsten Netzteile können Strom (Sink) aufnehmen und trotzdem
> laufen Schrittmotoren ;-)
> Es ist genau die Aufgabe der Kondensatoren auf der Motorspannung, dies
> Spitzen (in beide Richtungen) zu puffern. Die Ladungen fließen sowieso
> nur hin- und her.

Was du nicht sagst. Und Widerstand und Induktivität der Zuleitung 
zwischen Netzteil und Treiber stehen diesem Energieausgleich im Wege...

>> Das ist zwar richtig, aber beim Rückspeisen muss der Treiber mit den
>> höheren Spannungen klarkommen (s.o.).
> Klar, aber soviel höher ist die nicht, wenn das Verhältnis von
> Versorgungs- zu Nennspannung z.B. 4:1 beträgt und der rückgespeiste
> Strom vernünftig von der Versorgungsschiene aufgenommen wird.

Es geht aber nicht um das Verhältnis von Versorgungsspannung zu 
Nennspannung des Motors, sondern des Treibers. Und da bleibt man selten 
Faktor 4 unter dem möglichen, sondern versucht im Sinne einer guten 
Dynamik mit der Spannung möglichst hoch zu gehen. Ein paar Volt Reserve 
sind da schnell aufgebraucht.

>> Sonst steigt lokal am Treiber die Spannung stark an, weil die Ladung
>> nicht schnell genug in Richtung Netzteil abfließen kann.
> Die Spannung über dem Kabel steigt an. Beim Treiber kommt das nicht an,
> weil der fließende Strom einen Spannungsabfall über dem
> Leitungswiderstand erzeugt. Ohne ausreichenden Kondensator auf der
> Versorgung macht es wenig Sinn, sich über andere Wenn und Abers die
> Haare zu raufen.

Genau. Und wenn die Leitungen zu dünn sind hast du einen hohen 
Widerstand, inbesondere im oberen Frequenzbereich, also für die 
Stromspitzen. Da die Spannung am Netzteil konstant bleibt, steigt aber 
nicht nur die Spannung im Kabel an, sondern auch die am Treiber. Ich 
habe in den letzten 25 Jahren genug Fälle gesehen, wo genau das Probleme 
gemacht hat. Je größer die Last, desto mehr mechanische Energie ist im 
System, die beim Bremsen in elektrische Energie umgewandelt und 
zwischengespeichert werden muss.

Mit freundlichen Grüßen
Thorsten Ostermann

von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

Hallo Frank,

Frank H. schrieb:
> Wolfgang schrieb:
>> Eine Rampe benötigst du nur, wenn der Schrittmotor zwischen zwei
>> Messpositionen mehr als einen Vollschritt machen muss.
>> Du schreibst hier von "0,5 grd" Vorschub.
>> Ist das der Abstand zwischen zwei Messpositionen?
>> Wieviel Vollschritte braucht dein Motor für eine 360°-Drehung?
>
> Mein Schrittmotor hat, wie ich unter #1 schrieb 0,9 grd, also 400
> Schritte je Umdrehung.
[...]
> Wie kann ich den vorhanden Schrittmotor in 1 grd Sprüngen vorwärts
> bewegen ?

Du kannst den Motor in 0,9° oder 0,45°-Schritten bewegen. Bei der hohen 
Last ist Mikroschritt keine gute Idee. Der Motor ist ja ungeregelt. Im 
schlechtesten Fall macht der Motor bei den ersten 10 Mikroschritten 
garnichts, um dann irgendwann einen kräftigen Schritt zu machen und dann 
wieder gar nichts.

> Sollte das mit Vollschritten oder mehreren Microschritten passieren ?
> Auf jeden Fall maximale Reduzierung der Schwungmasse.

Durch ein Getriebe oder eine Unterstung mit einem Riemen o.ä., ja.

Mit freundlichen Grüßen
Thorsten Ostermann

von Hugo H. (hugo_hu)


Angehängte Dateien:

Lesenswert?

Weil es mich interessiert hat und ich es nicht so ganz nachvollziehen 
kann habe ich einen kleinen Testaufbau mit 7 gestapelten (und 
zusammengeklebten) CDs - mit Flansch für den Motor (altes 
Riementriebrad) - ca. 118g und 120mm Durchmesser.

Ein 08/15 Nema 17 Schrittmotor (JK42HM 40-1684) und ein A4988-Treiber 
mit 100µF Elko in Zusammenspiel mit einem Arduino Nano und einer 12V 
Spannungsversorgung (Labornetzteil) bilden die technische Basis. Der 
Treiber ist auf ca. 300mA (lt. Labornetzteil) eingestellt - das reicht 
vollkommen aus um Schrittweise "Messpositionen" im Abstand von 0,9 Grad 
(1 Vollschritt) mit ca. 20 Hertz (weniger ist natürlich 
"vibratiosärmer") nachvollziehbar ohne Schrittverlust anzufahren. Bei 
ca. 5 Hertz reichen 200 mA auch locker aus.

Natürlich muss der Schrittmotor bei der zu bewegenden Masse sicher 
befestigt sein, sonst führt der Aufbau ein reges Eigenleben.

Der "Sketch" ist minimalistisch - ohne Library:
1
int Schritte = 0;
2
3
void setup()
4
{
5
  pinMode(8, OUTPUT);        //Step
6
  pinMode(9, OUTPUT);        //Dir
7
8
  digitalWrite(8, LOW);
9
  digitalWrite(9, LOW);
10
}
11
12
void loop()
13
{
14
  digitalWrite(8, HIGH);
15
  delay(25);
16
17
  digitalWrite(8, LOW);
18
  delay(25);
19
20
  Schritte = Schritte + 1;
21
22
  if (Schritte >= 400)
23
  {
24
    delay(1000);
25
    digitalWrite(9,!digitalRead(9));
26
27
    Schritte = 0;
28
  }
29
}

Mehr Sicherheit gibt natürlich ein Getriebe / Untersetzung (hatte ich 
auch schon mal drauf hingewiesen) - aber grundsätzlich ist das für den 
geplanten Einsatzzweck kurzfristig "ausreichend". Ob das auch 
langfristig gilt (die Welle wird schon ordentlich belastet) wage ich 
allerdings zu bezweifeln.

von Frank H. (meiland)


Lesenswert?

Hallo Hugo H.

Ich hatte erst jetzt Gelegenheit Deinen Test nachzuvollziehen.
Mit Deinem Sketch verbessert sich erst mal nichts. Ich habe mit den 
Delay's gespielt und konnte eine Verbesserung des Ruckeln erreichen aber 
immer noch nicht praktikabel. Eventuell ist mein Motor schwächer ?

Jetzt habe ich die zu bewegende Masse von 90 g auf 50 g verringert, den 
Durchmesser des Ganzen auf 100 mm reduziert und die Aufbauteile 
hauptsächlich mittig angebracht. So läuft es ruckelfrei. Es gibt aber 
noch ganz einzelne Situationen, bei welchen der Start verzögert beginnt.

Wäre es eine Möglichkeit die Befestigung der Masse am Flansch in kleinen 
Gummielementen/Scheibe zu lagern ? So dass der Gummi nur die harten 
Startschläge etwas puffert. Aufschaukeln darf sich das natürlich nicht. 
Oder ist das Quatsch ?

Ein Untersetzungsgetriebe für den Schrittmotor geht an dieser Stelle aus 
Kostengründen nicht, ich benötige 25 Stück dieser Vorrichtungen.

Versuche mit 360 grd Servo habe ich auch gemacht aber das Spiel beträgt 
bei bezahlbaren Servos mehrere Grad.

An anderer Stelle arbeite ich mit Schrittmotor und 
Zahnriemenuntersetzung.

Gruß Frank

von Hugo H. (hugo_hu)


Lesenswert?

Frank H. schrieb:
> Eventuell ist mein Motor schwächer ?

Hast Du SLP und RST am A4988 verbunden? Ist der Motor irgendwo fest 
eingespannt? Woher genau beziehst Du die 24V?

von Amps skillen (Gast)


Lesenswert?

Thorsten O. schrieb:
> Und da bleibt man selten Faktor 4 unter dem möglichen, sondern versucht
> im Sinne einer guten Dynamik mit der Spannung möglichst hoch zu gehen.
> Ein paar Volt Reserve sind da schnell aufgebraucht.

Das ist wichtig gib dem Motor soviel Spannung wie der gerade noch abkann 
Stromreglung soll der Treiber machen.

Und nimm verdammt noch mal microsteps um die Belschleunigung gering 
zuhalten, da soll nichts rucken.

von Amps skillen (Gast)


Lesenswert?

Ach ja 100uF sind ein schlechter Scherz, du musst die Energie aus der 
Bewegung ja irgentwo zwischen speichern.

von Frank H. (meiland)


Angehängte Dateien:

Lesenswert?

Hugo H. schrieb:
> Hast Du SLP und RST am A4988 verbunden? Ist der Motor irgendwo fest
> eingespannt? Woher genau beziehst Du die 24V?

Wie im #1 beschrieben benutze ich einen DRV8825.
NEMA 17(C4335-9012-C1), 0,9 grd, 5,6 V, 0,64 A.
Am DRV8825 Referenzspannung von 0,32 V eingestellt.

RESET und SLEEP am Plus.
Motor absolut fest geschraubt. 24V vom Schaltnetzteil 4A.
5V arduino über USB.

von Frank H. (meiland)


Lesenswert?

Amps skillen schrieb:
> Ach ja 100uF sind ein schlechter Scherz, du musst die Energie aus der
> Bewegung ja irgentwo zwischen speichern.

Allgemein wird 100µF empfohlen. Was ist daran so falsch? Was ist 
richtig?

von Amps skillen (Gast)


Lesenswert?

Alle microstep pins auf 1 für 1/32 steps und dann mit der accelstepper 
lib  https://www.arduino.cc/reference/en/libraries/accelstepper/ ne 
schöne Rampe fahren dann rück es auch nicht mehr.

Ach ja und gib dem Motor schön 40v mit nem Kühler regelt der Treiber den 
ruhe Strom schön ein.

von Amps skillen (Gast)


Lesenswert?

Frank H. schrieb:
> Allgemein wird 100µF empfohlen

Im allgemeinen hängen da auch keine schweren Aluscheiben auf der Achse, 
deshalb kann man hier ruhig etwas mehr Kapazität verwenden um beim 
Abbremsen das Netzteil nicht so sehr zu belasten.

von Hugo H. (hugo_hu)


Lesenswert?

Frank H. schrieb:
> Wie im #1 beschrieben benutze ich einen DRV8825.

Sorry - vergessen :-/.

Ich habe leider keinen DRV8825. Deine Beschaltung lt. Schema scheint 
korrekt zu sein. Wie sieht die denn konkret aus (Bild)? Die Idee mit den 
Microsteps halte ich jetzt nicht unbedingt für Zielführend bei dem 
erforderlichen Drehmoment zum "Anfahren".

von Frank H. (meiland)


Lesenswert?

Amps skillen schrieb:
> Und nimm verdammt noch mal microsteps um die Belschleunigung gering
> zuhalten, da soll nichts rucken.

Danke, das wars. Mit Microsteps funktioniert es.

von Amps skillen (Gast)


Lesenswert?

Frank H. schrieb:
> Danke, das wars. Mit Microsteps funktioniert es.

Das freut mich. Verwendest du jetzt auch die accelstepper lib? Wenn nein 
mach das mal das Ergebniss ist nicht nur ein bisschen besser sondern 
deutlich besser und signifikant zuverlässiger.

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.