Forum: Mikrocontroller und Digitale Elektronik Ruckeln bei Start von Stepper Treiber


von Hans H. (hahi)


Lesenswert?

Hallo,

ich habe einen Schrittmotor-Treiber von Pololu 
(http://www.pololu.com/product/2133), den ich im 1/32 - microstep-Modus 
betreibe.

Mein Schrittmotor ist angeschlossen, Spannung liegt am Treiber. Wenn ich 
den Treiber einschalte, aber keine STEP-Information sende, kommt es 
trotzdem zu einem kurzen Ruck. Soweit ich weiss ist dies notwendig, 
damit der Treiber seine Microstep-Homeposition finden kann.

Mein Problem ist, dass ich dieses Ruckeln möglichst vermeiden möchte. 
Der Grund ist folgender:

Ich habe eine Maschine, die einen mechanischen Job ausführt, der ca. 2 
Min. dauert. Danach kann zwischen den Jobs eine längere Pause sein, 
weshalb ich den Treiber gerne vom Strom nehmen möchte, zur Vermeidung 
von Wärme und auch zum Stromsparen. Da es aber auch sein kann, dass 
mehrere Jobs hintereinander gemacht werden, ist es unschön, wenn bei 
jedem Starten eines Jobs die Mechanik ruckelt.

Daher meine Fragen:
1.kann man das Ruckeln irgendwie vermeiden?
2.Liegt das an dem spezifischen Treiber oder ist das Ruckeln bei 
ähnlichen Treibern immer vorhanden?
3. Ist das Ruckeln ein Phänomen, das nur beim Microstepping auftritt, 
oder ist es auch im Fullstep-Modus vorhanden?

danke für die Hilfe!

von Karl H. (kbuchegg)


Lesenswert?

Hans Hinterseer schrieb:

> 3. Ist das Ruckeln ein Phänomen, das nur beim Microstepping auftritt,
> oder ist es auch im Fullstep-Modus vorhanden?

Das müsste eigentlich praktisch immer vorhanden sein, denn der Treiber 
kann nicht wissen, wie die exakte Ausrichtung des Rotors in Bezug auf 
die Spulen genau ist. Daher bestromt er einfach mal eine Spule, so dass 
sich der Rotor entsprechend ausrichtet, bzw. macht ein paar Schritte, 
damit die Spulen den Rotor "einfangen".

Abstellen kannst du das Ruckeln meiner Ansicht nach nur dann, wenn du 
den Motor in einer Position abstellst, in die der Treiber nach dem 
Wiederanlegen der Spannung geht.

So ein Schrittmotor ist ja nichts anderes als ein Magnet um den herum 
eine Anzahl an Spulen angeordnet ist. Wenn der Motor einen Schritt 
machen soll, dann wird einfach die jeweils nächste Spule bestromt, die 
dann den Magneten (den Rotor) anzieht und so in eine neue Richtung 
dreht. OK, bei Microstepping bestromt man 2 nebeneinander liegende 
Spulen, so dass der Magnetpol im Verhätnis der Magnetfelder dazwischen 
stehen bleibt, aber das ändert nichts daran, dass man erst mal nicht 
weiß, wo denn jetzt der Magnet in Bezug auf die Spulen steht.

: Bearbeitet durch User
von Captain_Caipi (Gast)


Lesenswert?

Hallo  Hans Hinterseer,

ich würde den Strom absenken, im Stillstand benötig der Motor nicht den 
vollen Strom um seine Position zu halten.
Bei einigen Schrittmotor Endstufen wird das so gemacht, ein 
retiggerbares Monoflop am Step Eingang, wenn nach einer einstellbaren 
zeit keine Impulse mehr kommen wird der Strom abgesenkt.

Ciao
Captain Caipi

von Hans H. (hahi)


Lesenswert?

hallo,

danke, das klingt interessant. aber wie genau funktioniert das mit dem 
monoflop? ich dachte, das monoflop kennt nur aus/ein-zustände? wie 
bekomme ich den Strom aber abgesenkt und nicht einfach nur 
ausgeschalten?

ich hab dazu jetzt noch eine Idee: ich habe in meiner Vorrichtung einen 
uController mit freien pins, ich bin daher garnicht unbedingt von dem 
step-signlal zum triggern der beiden stromzustände "normal" und 
"niedrig" abhängig. ich könnte den Strom also auch über ein einfaches 
I/O-signal triggern, was den Vorteil hat, dass ich z.b. einige ns vor 
dem beginn der step-signalkette schon auf "I" ("normal") gehen kann, 
weil das hochfahren von "niedrig-" auf "normalstrom" sicher ein paar ns 
zeit braucht, oder?

aber die eigentliche frage für mich stellt dann für mich so:

wie bekomme ich den "niedrigen" Strom für meinen Treiber zustande?

ich habe am pololu-treiber 12V anliegen, der Treiber ist über den 
integrieten Poti auf 1.7A Maximalstrom eingestellt. gibt es einen IC, 
der das ermöglicht? also z.b. 12V 2A input und output, nach anlegen 
eines triggersignals immer noch 12V 2A input, aber nur 12 0.5A output. 
wäre das ein sinnvoller Zugang bzw. wie lässt sich so etwas realisieren? 
die Idee mit dem niedrigstrom gefällt mir sehr gut. ich glaube zwar, 
dass mein motor dann zu wenig haltekraft hat, weil nicht viel 
mechanischer widerstand dran ist, aber der sinn für mich wäre, dass der 
motor dann bestimmt immer auf einer step-position gehalten wird, und 
somit beim "hochfahren" nicht ruckelt. ist doch so, oder?




Captain_Caipi schrieb:

> Bei einigen Schrittmotor Endstufen wird das so gemacht, ein
> retiggerbares Monoflop am Step Eingang, wenn nach einer einstellbaren
> zeit keine Impulse mehr kommen wird der Strom abgesenkt.

von Waldi (Gast)


Lesenswert?

Du kannst den Strom in den Spulen abschalten mit dem Enable Pin und so 
den
Strom sparen. Nach einschlten des Enablepins macht der Treiber an der 
Stelle na der er Dissabelt wurde und das Ruckeln ist weg. Das Ruckeln 
entsteht nur nach jedem Neustart oder Reset des Treibers.

Waldemar

von Karl H. (kbuchegg)


Lesenswert?

Hans Hinterseer schrieb:

> ich habe am pololu-treiber 12V anliegen, der Treiber ist über den
> integrieten Poti auf 1.7A Maximalstrom eingestellt.

da ist dein Ansatzpunkt.

Wie ist das Poti angeschlossen?

(Ohne die Schaltung jetzt zu kennen)
In den allermeisten Fällen fungiert so ein Poti als Spannungsteiler. 
D.h. was die Steuerung eigentlich interessiert ist nicht der 
Wiserstandswert an sich, sondern die Spannung die sich aus dem Poti als 
Spannungsteiler ergibt. Verdreht man das Poti, dann verändert sich eine 
Spannung, die zu einem Pin der restlichen Steuerung geht. Anstelle des 
Poti kann man dann auch jeden anderen Mechanismus verwenden, der 
letztendlich in einer Spannungsänderung an genau diesem Schaltungsteil 
resultiert.
De facto kannst du dann mit deinem µC den Maximalstrom per Programm 
verändern, den die Steuerung zulässt. Wobei in deinem Fall 2 
verschiedene Werte reichen würden, was sich zb durch das 
programmgesteuerte Zusachalten eines Widerstands in einem 
Spannungsteiler realisieren liesse.

Aber erst mal muss man wissen, was dieses Poti elektrisch in der 
Steuerung macht. Dazu braucht man wieder die Schaltung bzw. die 
Datenblätter der beteiligten IC.

> ich glaube zwar, dass mein motor dann zu wenig haltekraft hat, weil
> nicht viel mechanischer widerstand dran ist,

Ja, was jetzt? Absenken oder nicht absenken?
Dein Hauptstromverbraucher wird der Motor sein. Das bischen Strom, dass 
dein µC verbraucht, kannst du in Relation dazu ignorieren. Wenn du Strom 
sparen willst, musst du schon beim Hauptverbraucher anfangen. Und das 
ist nun mal der Motor. Ob du bei gesammt 1.5A Stromverbrauch 20mA durch 
das Abschalten der Steuerung einsparen kannst, ist hingegen ziemlich 
irrelevant.

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Karl Heinz schrieb:

> da ist dein Ansatzpunkt.
>
> Wie ist das Poti angeschlossen?

Zur Not könnte man auch einfach mit einem Relais zwischen 2 
unterschiedlich eingestellten Potis hin und her schalten.
Im Ruhezustand des Relais ist auf niedrigen Strom geschaltet, wenn 'der 
Job' erledigt werden muss, wird das Relais eingeschaltet, die 
Schrittmotorsteuerung kriegt eine andere Vorgabe für den Maximalstrom 
und der Motor kann arbeiten.
Problematisch könnte der Zeitpunkt des Umschaltens sein, wenn kurzzeitig 
kein Poti für die Steuerung sichtbar ist. Aber auch das liese sich 
lösen, indem man nicht umschaltet, sondern mit dem Relais zuschaltet.

: Bearbeitet durch User
von Klaus (Gast)


Lesenswert?

Waldi schrieb:
> Das Ruckeln
> entsteht nur nach jedem Neustart oder Reset des Treibers.

Oder wenn der Motor von außen ein wenig verstellt wird, z.B. wenn sein 
stromloser Rastpunkt nicht mit der via Microschritt zuletzt 
eingestellten Position übereinstimmt.

MfG Klaus

von Hans H. (hahi)


Lesenswert?

ja, auf jeden fall absenken;-)

ich habe folgendes gemeint:

die Idee mit dem absenken gefällt mir gut, weil der motor zwar dann 
wieder bewegt werden kann, aber im vergleich zum kompletten ausschalten 
des motorstroms vermutlich immer in "magnetisch korrekten" Positionen 
einrasten wird, wenn ich ihn manuell weiterdrehe, sodass er beim 
weiterdrehen nicht ruckeln wird. oder sehe ich das falsch?

ein Beispiel:

steppertreiber gibt 1.7A an den motor weiter, empfängt step-signale und 
dreht sich. step-signal stoppt, motor bleibt in halteposition mit 1.7A. 
Treiber senkt haltestrom auf 0.5A ab, motor bleibt in schwächerer 
halteposition. in diesem zustand drehe ich nun den motor manuell um z.b. 
97 microsteps weiter. was passiert nun, wenn ich den Strom wieder auf 
1.7A erhöhe und stepsignale sende? ist der Treiber dann über die neue 
position irritiert und der motor springt, oder läuft er ruhig an??

Karl Heinz schrieb:

> Ja, was jetzt? Absenken oder nicht absenken?

von Hans H. (hahi)


Lesenswert?

ja genau, das mit dem enable-pin habe ich probiert. es ist besser als 
nichts, aber da mein motor kaum mechanisches haltemoment hat, ist er 
sehr anfällig auf manuelle weiterbewegung, wass dann beim weiterfahren 
wieder das problem darstellt. deshalb gefällt mir im moment die Idee mit 
dem runterfahren des Stomes sehr gut...


Klaus schrieb:

> Oder wenn der Motor von außen ein wenig verstellt wird, z.B. wenn sein
> stromloser Rastpunkt nicht mit der via Microschritt zuletzt
> eingestellten Position übereinstimmt.
>
> MfG Klaus

von Hans H. (hahi)


Lesenswert?

das klingt interessant.

es gibt auf dem Treiber einen pin mit einer reverenzspannung, die 
proportional zum maximalstem ist. könnte ich da nicht direkt ansetzen 
und über einen analog output pin meines uControllers die entsprechende 
Spannung anbringen das wäre dann ein einziger lötvorgang und die Sache 
hat sich. oder ist das zu einfach gedacht?

hier ist auf jeden fall das datenglatt des Treibers. kannst du dir das 
mal ansehen, ob das so funktionieren würde? ich bin leider nicht 
gebildet genug, was das lesen von Schaltplänen betrifft. aber wenn du 
mir ein bissl auf die Sprünge hilfst, lerne ich gerne dazu;-)

http://www.pololu.com/file/0J603/drv8824-drv8825-stepper-motor-driver-carrier-schematic-diagram.pdf



Karl Heinz schrieb:

> Wie ist das Poti angeschlossen?
>
> De facto kannst du dann mit deinem µC den Maximalstrom per Programm
> verändern, den die Steuerung zulässt.

von Karl H. (kbuchegg)


Lesenswert?

Hans Hinterseer schrieb:
> das klingt interessant.
>
> es gibt auf dem Treiber einen pin mit einer reverenzspannung, die
> proportional zum maximalstem ist. könnte ich da nicht direkt ansetzen
> und über einen analog output pin meines uControllers

hat denn dein Controller einen echten analogen Ausgang?

> die entsprechende
> Spannung anbringen das wäre dann ein einziger lötvorgang und die Sache
> hat sich. oder ist das zu einfach gedacht?

prinzipiell schon richtig. Nur brauchst du einen echten analogen 
Ausgang. Ein PWM Ausgang ist nicht gut genug. Allerdings könnte man 
einen PWM Ausgang mit einem Tiefpass entsprechend beruhigen.
Das Poti muss dann allerdings von der Platine runter. Soviel zum Thema 
'einziger Lötvorgang'.

von Hans H. (hahi)


Lesenswert?

> hat denn dein Controller einen echten analogen Ausgang?

nein, nur pwm (arduino mega 2560)



> prinzipiell schon richtig. Nur brauchst du einen echten analogen
> Ausgang. Ein PWM Ausgang ist nicht gut genug. Allerdings könnte man
> einen PWM Ausgang mit einem Tiefpass entsprechend beruhigen.


aha, klingt logisch. tiefpass bedeutet was genau? gibts dafür wo eine 
Anleitung? ich nehme an, eine Kombination aus widerstand und Kondensator 
oder so?

> Das Poti muss dann allerdings von der Platine runter. Soviel zum Thema
> 'einziger Lötvorgang'.

ok, das ist kein problem.

nur nochmal zur Sicherheit, bevor wir hier weitermachen: was passiert, 
wenn der motor im wenig-strom-haltezustand weitergedreht wird? ruckelt 
er dann beim weiterfahren oder nicht??

von Karl H. (kbuchegg)


Lesenswert?

Hans Hinterseer schrieb:

> wenn der motor im wenig-strom-haltezustand weitergedreht wird? ruckelt
> er dann beim weiterfahren oder nicht??

Er wird immer ruckeln, wenn die tatsächliche Rotorstellung nicht mit der 
übereinstimmt, von der die Steuerung ausgeht. Das hat mit wenig Strom 
nur insofern zu tun, als du auch mit weniger Strom dem Motor noch soviel 
Haltemoment geben musst, dass er zumindest nicht von alleine 
weiterdreht. Aber wenn das zu wenig ist um zu verhindern, dass jemand 
mit der Hand den Motor weiter dreht, dann stimmet die Realität nun mal 
nicht mehr mit dem Modell überein, das sich die Steuerung von der 
tatsächlichen Motorposition macht. Beim erhöhen des Stroms wird dann dem 
Motor wieder die Sicht der Dinge der Steuerung aufgezwungen, woraufhin 
der Motor einen Satz in diese Position macht.

Du hast dir immer noch nicht angesehen, wie so ein Schrittmotor 
eingentlich funktioniert, oder? Sonst wär dir das nämlich längst klar, 
was da passiert und warum es da einen Ruckler gibt. Wenn Elektromagnete 
eingeschaltet werden, dann bleibt einem drehbar gelagertem 
Permanentmagneten nun mal nichts anderes übrig, als sich entlang der 
Feldlinien der Elektromagnete auszurichten. Schaltet man die 
Elektromagnete ab, dann passiert erst mal nichts. Verdreht man den 
Permanentmageneteen und schaltet dann den Strom der Elektromagnete 
wieder ein, dann rauscht der Permamentmagnet nun mal wieder in die 
Orientierung, die ihm die Feldlinien aufzwingen. Verdrehst du den 
Permanentmagneten nicht, dann wird ihm zwar auch diese Orientierung 
aufgezwungen, aber 'zufällig' steht er dann schon in der richtigen 
Orientierung.

: Bearbeitet durch User
von Hans H. (hahi)


Lesenswert?

> Er wird immer ruckeln, wenn die tatsächliche Rotorstellung nicht mit der
> übereinstimmt, von der die Steuerung ausgeht.

ok, aber bitte um Nachhilfe, wieviele verschiedene zustände die 
Steuerung kennt: dreht sich der motor bis zum nächsten angefangenen 
step,  wenn er manuell verdreht wurde? oder bis zum nächsten microstep - 
das wäre ja nicht gerade weit, kann also nicht sein...
ich dachte mir, wenn der motor in haltespannung ist, rastet er 
vielleicht automatisch beim nächsten step ein, wenn ich ihn von hand 
bewege?

von Karl H. (kbuchegg)


Lesenswert?

Hans Hinterseer schrieb:
>> Er wird immer ruckeln, wenn die tatsächliche Rotorstellung nicht mit der
>> übereinstimmt, von der die Steuerung ausgeht.
>
> ok, aber bitte um Nachhilfe, wieviele verschiedene zustände die
> Steuerung kennt: dreht sich der motor bis zum nächsten angefangenen
> step,  wenn er manuell verdreht wurde?

Er dreht sich so weit, bis er wieder mit der Sicht der Dinge der 
Steuerung übereinstimmt.
Da sich die Spulenanordnung im Motor alle paar Grad wiederholt, sind das 
auch ein paar Grad links bzw. rechts die er drehen kann.

> ich dachte mir, wenn der motor in haltespannung ist, rastet er
> vielleicht automatisch beim nächsten step ein, wenn ich ihn von hand
> bewege?

Kann sein, kann auch nicht sein. Musst du ausprobieren. Hängt auch davon 
ab, wie weit du den Strom reduzierst. Magnetfelder nehmen mit der 3. 
Potenz der Entfernung ab. Das geht also recht schnell, dass sich ein 
Magnet von einem anderen soweit entfernt, dass er nicht mehr auf das 
Magnetfeld reagiert, wenn die wegen des verringerten Stroms schwächer 
werden.

: Bearbeitet durch User
von Hans H. (hahi)


Lesenswert?

ok, verstehe. wenn ich den Strom über den potz halbiere, habe ich immer 
noch genug haltekraft, damit sich der motor nicht ungewollt weiterdreht. 
dafür würde sich der aufwand schon auszahlen:-)

dann wären wir jetzt so weit, dass ich das mit dem pwm-zu-analog 
konvertieren und an den platz vom poti - löten angehen sollte. kannst du 
mir bitte noch ein klein wenig bei dem tiefpass helfen? danke!


> Kann sein, kann auch nicht sein. Musst du ausprobieren. Hängt auch davon
> ab, wie weit du den Strom reduzierst. Magnetfelder nehmen mit der 3.
> Potenz der Entfernung ab. Das geht also recht schnell, dass sich ein
> Magnet von einem anderen soweit entfernt, dass er nicht mehr auf das
> Magnetfeld reagiert, wenn die wegen des verringerten Stroms schwächer
> werden.

von Waldemar P. (waldi_p)


Lesenswert?

Einem bestromten Schrittmotor kanst Du per Hand wenn daß ein 1.8° 
Stepper ist immer nur um 2 Vollschritte verdrehen das heißt um 3.6°.
Der hat dann immer 100 Rastpunkte. Bei Microstep zb. 1/16 sind das 32 
Microschritte pro Rastpunkt.

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


Lesenswert?

Das ist falsch. Man kann immer nur 4 Vollschritte weiterdrehen bzw. der 
Motor rastet erst nach 4 Vollschritten wieder ein. Nach 2 Vollschritten 
ist man gerade am instabilen Punkt angekommen. Siehe Bild in diesem 
Beitrag:
http://www.schrittmotor-blog.de/die-bedeutung-des-lastwinkels-bei-schrittmotoren/

Der Ansatz, den Treiber nicht ganz abzuschalten, sondern nur den Strom 
zu reduzieren ist schon richtig. Der Motor wird ja in den meisten Fällen 
nicht durch externe Einflüsse verdreht, sondern fällt nach dem 
Abschalten einfach in die nächste Vollschrittposition. Eine andere 
Möglichkeit wäre es also, den Motor nur in einer Vollschrittposition 
abzuschalten.

Um die Refenzspannung anzupassen kann man auch einfach einen 
Spannungsteiler verwenden. Für die 2 Stufen wäre ein DAC oder PWM etwas 
übertrieben. Wie das geht ist hier beschrieben (S. 4-5):
http://www.mechapro.de/pdf/Funktionsbeschreibung_3D-Step_20120819.pdf
Schaltplan dazu siehe:
http://www.mechapro.de/pdf/3D-Step_Doku_20120915.pdf

Mit freundlichen Grüßen
Thorsten Ostermann

: Bearbeitet durch User
von Uwe (Gast)


Lesenswert?

Hi,
Strom absenken ist immer gut, geht aber nur wenn die Position auch 
verlassen werden darf weil die Lage bei Microstep nur über die 
Stromanteile der beiden Spulen erreicht wird. Eine Stromabsenkung kann 
da schon eine Lageänderung bringen.
Oder du hast eine Refposition wo I=0 keine Lageänderung hervorruft.
Dein Treiber hat einen Ausgang Namens nHom(27).
Der sagt dir wenn du eine solche Pos. erreicht hast.
Die SW könnte den Motor an diesem Punkt anhalten.
Solltest du dann aber nach I=0 mit der Hand eine andere Lage erzeugen 
ist der Ruck auch zu 75% da. ):( -> Bremse einbauen oder nicht bewegen.

Viel Erfolg, Uwe

von Hans H. (hahi)


Lesenswert?

bitte bitte erklärt mir jetzt nochmal ganz genau die zusammenhänge, ich 
Papiers einfach nicht:

mein derzeitiger Wissensstand:

der Treiber erzeugt einen Zyklus von spannungsverhältnissen zwischen 
zwei Magneten. wenn der Zyklus abgeschlossen ist, wäre ein stabiler 
Punkt erreicht, von dem aus ich den motor aus-und einschalten kann, 
ohne, dass er ruckelt. diesen Punkt nennst du, Uwe nHom. stimmt das so? 
und wann ist so ein Zyklus jetzt fertig? nach 4 steps? oder nach einem?

und was passiert, wenn kein Strom anliegt? wenn ich direkt an der 
motorwelle drehe, spüre ich ja die einzelnen steps einrasten. warum 
ruckelt der motor dann trotzdem beim einschalten? sind diese rastpunkte 
nicht identisch mit den punkten, an denen der Treiber von einer 
home-position spricht? oder ist die home-position für den Treiber eben 
nur alle 4 punkte, und deswegen das Risiko, dass es ruckelt, eben 75% 
hab ich das so richtig verstanden?

bei meinem pololu-treiber kann ich diese nHom-Position auslesen? wie 
geht das???

danke, dank, danke!

> Oder du hast eine Refposition wo I=0 keine Lageänderung hervorruft.
> Dein Treiber hat einen Ausgang Namens nHom(27).
> Der sagt dir wenn du eine solche Pos. erreicht hast.
> Die SW könnte den Motor an diesem Punkt anhalten.
> Solltest du dann aber nach I=0 mit der Hand eine andere Lage erzeugen
> ist der Ruck auch zu 75% da. ):( -> Bremse einbauen oder nicht bewegen.
>
> Viel Erfolg, Uwe

von Georg (Gast)


Lesenswert?

Hans Hinterseer schrieb:
> wann ist so ein Zyklus jetzt fertig? nach 4 steps?

RTFM - sieh im Datenblatt des Motors in einem Schaubild der anzulegenden 
Signale, nach wieviel Schritten sich das Muster wiederholt, 
normalerweise 4. Microsteps zählen nicht.

Hans Hinterseer schrieb:
> sind diese rastpunkte
> nicht identisch mit den punkten, an denen der Treiber von einer
> home-position spricht?

Nicht unbedint, das hängt ja auch davon ab, wo du welche Wicklung 
angeschlossen hast. Da wirst du wohl experimentieren müssen.

Den Motor mit reduziertem Strom halten lassen finde ich nach wie vor die 
beste Idee. Beim ersten Einschalten kannst du das Ruckeln nur nach Punkt 
2 vermeiden, wenn du Home und Rastung in Übereinstimmung bringst.

Nebenbei bemerkt: wenn dir der Begriff Tiefpass schon fremd ist, ist 
eine Schrittmotorsteuerung schon eine harte Nuss, jedenfalls wenn sie 
nicht out of the box funktioniert. Vielleicht solltest du jemand 
zuziehen, der sich mit Widerständen, Kondensatoren und dem ganzen Kram 
auskennt.

Georg

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


Lesenswert?

Hallo Hans,

> der Treiber erzeugt einen Zyklus von spannungsverhältnissen zwischen
> zwei Magneten. wenn der Zyklus abgeschlossen ist, wäre ein stabiler
> Punkt erreicht, von dem aus ich den motor aus-und einschalten kann,
> ohne, dass er ruckelt.

Genau.

> diesen Punkt nennst du, Uwe nHom. stimmt das so?

Nein. Erstens ist das keine Erfindung von Uwe, zweitens ist das ein 
Ausgang des Treibers. Und der schaltet nicht in jeder 
Vollschrittposition, sondern nur in jeder 4., nämlich dann wenn sich das 
Bestromungsmuster wiederholt. Typisch ist das auch genau die Position, 
die der Treiber nach dem Einschalten vorgibt. Mit Einschalten ist jetzt 
Einschalten der Versorgungsspannung gemeint, also ein Reset. Wenn man 
nur das Enable wegnimmt, bleibt die aktuelle Position in der 
Mikroschritt-Tabelle erhalten. Das steht aber alles im Datenblatt zum 
A4988. Einfach mal reinschauen. ;)

Mit freundlichen Grüßen
Thorsten Ostermann

: Bearbeitet durch User
von Waldemar P. (waldi_p)


Lesenswert?

Hans Hinterseer schrieb:
> Ich habe eine Maschine, die einen mechanischen Job ausführt, der ca. 2
> Min. dauert. Danach kann zwischen den Jobs eine längere Pause sein,
> weshalb ich den Treiber gerne vom Strom nehmen möchte, zur Vermeidung
> von Wärme und auch zum Stromsparen.

Es were interesant zu erfahren was die Maschine macht, was ist die 
Aufgabe des Schrittmotors wie ist der angeschlossen ( Zahnriemen -> 
Heben und halten ) oder Spindelantrieb ( dann auch welche 
Kugelgewindetrieb oder Metrisch oder Trapez ). dann ist es möglich dir 
ein Vorschlag zu unterbreiten wie es am besten zu lösen ist.

Waldemar

von Hans H. (hahi)


Lesenswert?

die Maschine hat eine Vorrichtung, die ca. 1/2 kg schwer ist und 
kreisförmig bewegt wird.der stepper ist über einen zahnriemen 
angeschlossen, es gibt kaum Reibungswiderstand und nur ein geringes 
übersetzungsverhältnis, d.h. der 0.5 kg-teil drückt nach unten.
wenn das Gewicht unten ist, liegt es auf einer begrenzungsfläche auf, 
das Gewicht liegt dann nicht am zahnriemen.

wenn ich den ENABL-pin auf high setze, um den motor zu stoppen, 
funktioniert das ruckfreie starten immer dann ganz gut, wenn der 
zahnriemen durch die begrenzungsfläche des Gewichtes entlastet ist. ist 
das Gewicht jedoch oben, drückt es am zahnriemen und verändert die 
position, wenn der motor ausgeschalten ist. deswegen wäre es vermutlich 
die beste Lösung, mit halbem Strom eingeschalten zu bleiben, weil bei 
dieser Stromstärke das Gewicht die position nicht verändert.

ich hab jetzt folgende Idee:

wie wäre es, wenn ich den poti rausnehme, eine kleine Platine löte, auf 
der sich zwei dieser potis befinden. beide verbinde ich wieder mit dem 
motor-treiber. jeder poti bekommt ein eigenes 5v-signal vom uController, 
und je nachdem, welcher poti dann angesteuert wird, liefert er dann 
unterschiedlichen strom. ich brauche ja nur zwei stromzustände, aber es 
wäre ein Vorteil, wenn ich die genauen werte weiterhin über den potz 
einstellen könnte.

klappt das so, oder hab ich da einen Denkfehler?

ich weiß, es ist ein bissl schwierig mit Kandidaten wie mir: sie wollen, 
dass man ihnen beinahe eine fertige Lösung liefert und kennen sich 
garnicht aus. ich möchte kurz etwas dazu sagen:

meine Maschine ist ein Prototyp, der viele verschieden Techniken vereint 
(Mechanik, Pneumatik, Elektronik,...). gelernt habe ich ganz etwas 
anderes. ich versuche hier, mit lainenwissen eine funktionierende 
Maschine zusammenzuzimmern, und kann es mir nicht leisten, auf allen 
Fachgebieten Experten hinzuzuziehen. deswegen strapaziere ich u.a. auch 
hier euer expertenwissen;-)


> Es were interesant zu erfahren was die Maschine macht, was ist die
> Aufgabe des Schrittmotors wie ist der angeschlossen ( Zahnriemen ->
> Heben und halten ) oder Spindelantrieb ( dann auch welche
> Kugelgewindetrieb oder Metrisch oder Trapez ). dann ist es möglich dir
> ein Vorschlag zu unterbreiten wie es am besten zu lösen ist.
>
> Waldemar

von Uwe (Gast)


Lesenswert?

Hi,
>jeder poti bekommt ein eigenes 5v-signal vom uController,
>und je nachdem, welcher poti dann angesteuert wird, liefert er dann
>unterschiedlichen strom. ich brauche ja nur zwei stromzustände
jain, Vref(A/B) soll max 3,3V sein (eigentlich 1V)
entweder auf 3,3V begrenzen oder mit cd4066 oä aus der treibereigenen 
V3P3Out speisen.
oder eben:
> -> Bremse einbauen

Viel Erfolg, Uwe

von Hans H. (hahi)


Lesenswert?

aber genau das kann ich ja am poti einstellen, oder? oder meinst du nur 
als Schutz, falls ich den poti zu stark aufdrehe?

> jain, Vref(A/B) soll max 3,3V sein (eigentlich 1V)

von Hans H. (hahi)


Lesenswert?

hallo,

ich hab das standby-problem nun mit einem pwm-signal am pin vom 
weggelöteten poti gelöst, funktioniert wunderbar (und ich hab inzwischen 
auch gelernt, was ein tiefpass-filter ist;-)

ein problem habe ich allerdings noch:

ich habe zwei unterschiedliche schrittmotoren. ein größerer mit 1.7A, 
bei dem funktioniert das absenken wunderbar, er hält die position und es 
gibt auch keine Geräusche und motor und Treiber bleiben relativ kühl.

beim zweiten motor ist es etwas anders. er macht im standby-modus 
Geräusche, auch wenn ich über den potz die Leistung absenke. es handelt 
sich bei den Geräuschen um keinen (sinus-) ton, sondern mehr um ein 
zischen. es wird stärker und schwächer, wenn ich händisch an der Achse 
drehe. am schwächsten ist das Geräusch kurz bevor der motor in den 
nächsten haltemoment springen würde. was ist die Ursache für so eine art 
Geräusch? ich habe es auch mit dem etwas schwächern Treiber DRV8824 
probiert, ist aber das gleiche. macht es sinn, die nHome-position 
auszulesen und in dieser zu stoppen? was könnte ich sonst noch 
probieren?

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.