Schrittmotor Ein- und Ausschalten

OP #5996659
Lesenswert?

Hallo,
ich arbeite mit dem 5V Schrittmotor 28BYJ-48 (siehe Bilder), der über 
ein ATmega32 und einem Treiber ULN2803 angesteuert wird. Das 
funktioniert alles hervorragend und läuft im Full Step Mode mit bis zu 
400 Hz Schrittfrequenz.

Den Schrittmotor verwende ich für eine hochgenaue Anzeige. Da die 
Anzeige sich nicht ständig verändert, schalte ich den Strom während 
dieser Perioden ab. Zuvor merke ich mir noch den aktuellen Schritt.

Wenn sich die Anzeige wieder verändern soll, schalte ich den Strom exakt 
mit dem gemerkten Schritt wieder ein. Dies ist notwendig, da der Motor 
ansonsten konstant ca. 350 mA ziehen würde, auch wenn er sich nicht 
drehen soll.

Frage an Euch: kann es sein, dass sich beim Einschalten des Stromes 
(auch mit genau dem gemerkten letzten Schritt) der Rotor verstellen 
kann, da ich den Strom für die beiden Spulen ja sequentiell einschalten 
muß, d.h. es vergehen ca. 20 us zwischen den Einschalten des Stomes der 
ersten und zweiten Spule des Motors.
Angehängte Dateien:
Gast #5996666
Lesenswert?

Manfred L. schrieb:
> Frage an Euch: kann es sein, dass sich beim Einschalten des Stromes
> (auch mit genau dem gemerkten letzten Schritt) der Rotor verstellen
> kann ...

Aus dem Stand springt der Motor beim Abschalten des Stromes auf die 
Energiemäßig nächste Rastposition. Wenn du wieder sauber Einschalten 
willst, musst du also nicht das letzte Strommuster von vor dem 
Abschalten drauf geben, sondern mit dem Bestromungsmuster der 
Rastposition weiter machen.
Gast #5996676
Lesenswert?

Ausschalten ist OK, solange nix am Zeiger zerrt.

Wenn du dir die letzte Ansteuerungskombination gemerkt hast,
was hindert dich daran, mit genau der Ansteuerung einzuschalten,
die (je nach Richtung in die der Zeiger wandern soll) darauf folgt?
Spart auch schon mal Strom für mindestens 1/400 s.

Die 20 µs kommen nur daher, dass dein Programm nicht alle
Spulen gleichzeitig umschaltet, sondern jeden PortPin einzeln.
Das hat aber mit dem Motorlauf nur wenig zu tun:
400 Hz entspricht 2500 µs was sollen da 20 µs bewirken???
OP #5996683
Lesenswert?

Jakob schrieb:
> Wenn du dir die letzte Ansteuerungskombination gemerkt hast,
> was hindert dich daran, mit genau der Ansteuerung einzuschalten,
> die (je nach Richtung in die der Zeiger wandern soll) darauf folgt?
> Spart auch schon mal Strom für mindestens 1/400 s.

Genau so habe ich auch gedacht, aber nach einiger Zeit läuft mir der 
"Zeiger" aus dem Ruder. Deshalb habe ich die Vermutung, dass der Rotor 
unvohersehbare Sprünge macht, wenn er wieder bestromt wird.
Gast #5996696
Lesenswert?

Manfred L. schrieb:
> Habe ich das richtig verstanden: "nächste Rastposition" heißt bei Dir
> die nächste Position, die "ich mir vorher gemerkt habe" ?
Nein, er meint das anders. Die Rastposition kannst du bei abgeschaltetem 
Motor beim Drehen erfühlen. Wenn du den Motor abschältst, "rutscht" der 
Motor vermutlich in solche Rastpositionen, evtl. sogar darüber hinaus. 
Du solltest also dafür sorgen, dass du vor dem Abschalten eine solche 
stablie Position einnimmst, also auf jeden Fall keine Halbschritte 
fahren.
Wie es beim Vollschritt ist, weiß ich jetzt aus dem Stegreif auch nicht, 
vielleicht ist da auch nur jeder zweite stabil.
OP #5996704
Lesenswert?

Maxe schrieb:
> Du solltest also dafür sorgen, dass du vor dem Abschalten eine solche
> stablie Position einnimmst, also auf jeden Fall keine Halbschritte
> fahren.

Aha, jetzt habe auch ich es kapiert.

Problem ist nur, dass der Motor ein internes Getriebe mit einer 
Übersetzung von 1:64 hat. Da wird es für mich schwer, herauszufinden, wo 
die "Rastpositionen" sind. Auch dachte ich, da ich im Full-Step Mode 
fahre, ist jede Position eine "Rastposition".

Danke Dir für den Tip.
Gast #5996717
Lesenswert?

Thomas Z. schrieb:
> Ich würde eher über eine Stromabsenkung im Stillstand nachdenken, so
> machen es jedenfalls professionelle Schrittmotor Endstufen.

Nachdenken ist zu wenig, man muß es auch machen ;-)
Ohne einen minimalen Ruhestrom ist die Sollposition weg. Die einfachste 
Möglichkeit wäre, die Bestromung zu takten. 10 % Tastverhältnis könnten 
reichen.
OP #5996722
Lesenswert?

m.n. schrieb:
> Ohne einen minimalen Ruhestrom ist die Sollposition weg. Die einfachste
> Möglichkeit wäre, die Bestromung zu takten. 10 % Tastverhältnis könnten
> reichen.

Jetzt wird es interessant !

Das mit dem Takten der Stromversorgung für einen gerade noch 
ausreichenden Haltestrom ist zumindest ein Gedanke wert.

Aber Frage: warum soll die Sollposition weg sein, wenn keine externen 
Kräfte an der Motorachse zerren (mal ganz abgesehen von dem 
nachgeschalteten 1:64 Getriebe) ?
Gast #5996727
Lesenswert?

Manfred L. schrieb:
> NichtWichtig schrieb:
>> Das sieht man doch ob der Motor beim Abschalten davon rastet oder brav
>> seine Stellung hält.
>
> Bei einem nachgeschalteten internen Getriebe mit einer Übersetzung von
> 1:64 sieht man aber leider nix.

Dann deutet das Wackeln beim erneuten Einschalten aber auf einen 
massiven Fehler hin, denn dort wirkt das Getriebe auch.
Gast #5996738
Lesenswert?

Thorsten O. schrieb:
> Wenn die Ansteuerung wie oben gezeigt erfolgt, reden wir ja über
> Vollschritt. Dann steht der Motor immer in einer Rastposition.

Die Abbildung hat der TO doch nicht erstellt, sondern kopiert. Welche 
Sequenz abläuft, würde sein Programm zeigen. Jetzt braucht man nur den 
noch den Quelltext von der LIB ;-)

Wenn der Motor immer einrasten würde, würde die Position nicht verloren 
gehen.
OP #5996743
Lesenswert?

NichtWichtig schrieb:
> Dann deutet das Wackeln beim erneuten Einschalten aber auf einen
> massiven Fehler hin, denn dort wirkt das Getriebe auch.

Wenn ich die Stromabschaltung nicht durchführe, ist der auf der 
Motor-Achse montierte Zeiger auch nach mehreren Hunderttausend Schritten 
(teilweise im Uhrzeigersinn, aber auch entgegengesetzt) immer exakt 
genau da, wo er stehen soll. Es wackelt also nix.

Nur mit dieser Stromabschaltung kommt es zu dem Problem, dass nach 
mehreren Hunderttausend Schritten der Zeiger so langsam aus dem "Ruder" 
läuft. Mit aus dem "Ruder" laufen meine ich so etwas wie 1 bis 2 Grad.
Gast #5996748
Lesenswert?

Ich hab mir neulich genau diesen Stepper mit Driver zum
Experimentieren besorgt.
Bei Vollschrittsteuerung - die der TO nach Grafik macht - kommt die
Achse immer in eine Rastposition - Schlaumeier könnten ja mal
erklären, wo sie sonst gelandet sein sollte... ;-)

Dass die Parallelansteuerung, oder die sequentielle Ansteuerung der
Spulen im 20 µS Bereich für einen Motor, der im 2500 µs Takt (400 Hz)
arbeitet keinen Unterschied macht, sollte auch einleuchten.

Vorstellbar für deine Probleme (bei max 400 Hz) wären eigentlich nur
Software-Probleme. Mit den LEDs solltest du doch sehen, ob da
zwischenzeitlich "Schweinereien" passieren.

Ansonsten:
Woher weißt du, wo der Zeiger gerade ist? Oder genauer:
Wie stellst du den Zeiger beim Einschalten eigentlich auf Null???
Gast #5996758
Lesenswert?

Wenn sich der Fehler so langsam (!) aufsummiert, käme noch eine
Frage auf: Schaltest du zu früh ab?

Die letzte Spulen-Ansteuerung muss natürlich auch deine bewährten
2,5 ms (1/400 Hz) lang anliegen.
Und die erste Ansteuerung nach Wiedereinschalten sollte auch nicht
kürzer ausfallen.

Schau mal, oder mess mal ... ob die Software das berücksichtigt!
Gast #5996760
Lesenswert?

Manfred L. schrieb:
>
> Nur mit dieser Stromabschaltung kommt es zu dem Problem, dass nach
> mehreren Hunderttausend Schritten der Zeiger so langsam aus dem "Ruder"
> läuft. Mit aus dem "Ruder" laufen meine ich so etwas wie 1 bis 2 Grad.

Eben, mehrere Hunderttausend kleine Fehler addierern sich zum dem was Du 
zu sehen bekommst.

Endweder man stellt sicher das der gemachte Step garantiert ist oder man 
implementiert eine IST-Wert-Meßung.

Schrittverlust beim Stepper ist meistens Schei**e und kostet Aufwand.
OP #5996778
Lesenswert?

Jakob schrieb:
> Die letzte Spulen-Ansteuerung muss natürlich auch deine bewährten
> 2,5 ms (1/400 Hz) lang anliegen.
> Und die erste Ansteuerung nach Wiedereinschalten sollte auch nicht
> kürzer ausfallen.

Au Mann, das ist richtig !

Vielleicht habe ich da einen Fehler im "System" eingebaut. Speziell der 
zweite Satz kann der Knackpunkt sein. Ich werde das morgen mal 
nachprüfen und mich dann wieder melden.

Ich danke Dir jedenfalls für diesen tollen Tip !!!!

P.S.: Übrigens, ich verwende keine LIBs oder sonstiges China-Zeug (mit 
der Ausnahme vom Motor selber), was ich nicht kenne, nicht verstehe und 
nicht verifizieren kann, alles handgestrickt und über Monate getestet.
Gast #5996800
Lesenswert?

Jakob schrieb:
> Bei Vollschrittsteuerung - die der TO nach Grafik macht - kommt die
> Achse immer in eine Rastposition - Schlaumeier könnten ja mal
> erklären, wo sie sonst gelandet sein sollte... ;-)
Gerne.

Ist es nicht so, dass gerade bei der der Vollschrittsteuerung die 
Schrittpositionen zwangsläufig außerhallb der Rastpositionen liegen?
Beide Spulen müssen ja 90° Phasenverschoben angeordnet sein, sonst 
könnte keine Richtung vorgegeben werden. Oder anders ausgedrückt, es 
können nicht beide Spulen gleichzeitig in einer Rastposition liegen, 
sonst käme der Motor dort nicht mehr weg.

Was ich mal probieren würde: Beim Abschalten tatsächlich bewusst zuerst 
die Eine Spule abschalten und die Andere noch eine kurze Zeit halten um 
sicher die zugehörige Rastposition anzufahren. Beim Wiedereinschalten 
genau die umgekehrte Reihenfolge fahren, also erst die Andere und dann 
nach gegebener Zeit die Eine bestromen.
OP #5996803
Lesenswert?

Maxe schrieb:
> Was ich mal probieren würde: Beim Abschalten tatsächlich bewusst zuerst
> die Eine Spule abschalten und die Andere noch eine kurze Zeit halten um
> sicher die zugehörige Rastposition anzufahren. Beim Wiedereinschalten
> genau die umgekehrte Reihenfolge fahren, also erst die Andere und dann
> nach gegebener Zeit die Eine bestromen.

Dieser Vorschlag ist auch nicht von schlechtern Eltern. Macht irgendwie 
Sinn.
Ich werde das jedenfalls morgen genau so mal ausprobieren. Vielleicht 
hilft das weiter.

Ich danke Dir für den Hinweis !!

Grüße Manni
OP #5996821
Lesenswert?

Jakob schrieb:
> oher weißt du, wo der Zeiger gerade ist? Oder genauer:
> Wie stellst du den Zeiger beim Einschalten eigentlich auf Null???

Ganz einfach: auf der Motor-Achse ist ein schmaler Zeiger installiert, 
der durch eine IR Lichtschranke läuft. Ich glaubte anfangs auch nicht, 
dass das funktionieren kann. Aber damit kann ichdie Position des 
Schrittmotors bis auf ca. 0.05 Grad exakt feststellen, siehe attached 
Diagramm.
Angehängte Dateien:
Gast #5997597
Lesenswert?

> bis auf ca. 0.05 Grad

Das kann ich mir nicht vorstellen. Der übliche 28BYJ-48 macht eine
Umdrehung mit 2048 Full-Steps.

360° / 2048 ~= 0,18°

So genau kann man aber auch kein Zeigerinstrument mit Spiegelskala
ablesen.
Bei einem 270°-Tacho mit 0...270 km/h würde der Zeiger theoretisch
auf < 0,2 km/h auflösen.
OP #5997599
Lesenswert?

Hallo Jakob,

Jakob schrieb:
> Die letzte Spulen-Ansteuerung muss natürlich auch deine bewährten
> 2,5 ms (1/400 Hz) lang anliegen.
> Und die erste Ansteuerung nach Wiedereinschalten sollte auch nicht
> kürzer ausfallen.

Du hast ins Schwarze getroffen. Mein S/W Fehler lag einfach daran, dass 
ich beim Wiederanlegen der Spannung an die Spulen nicht den "alten" 
Schritt genommen habe, sondern gleich auf den nächsten gesprungen bin.

Bis gestern Abend war noch Tabelle 7-3 gültig, ab heute gilt Tabelle 
7-4, siehe attached Bild.

Somit wird Dir die Ehre zuteil, dass Dein Code-Vorschlag ab heute in dem 
im Bild dargestellten Instrument verankert ist. Dies ist ein Horizontal 
Situation Indicator, der in einem Flugsimulator verbaut ist. Besteht aus 
3 Schrittmotoren mit zusätzlichen Getrieben, zwei Micro-Servos und zwei 
15-LED Dotbar Graphs. Frag mich aber nicht, wieviel Stunden da drin 
stecken.

Nochmals vielen Dank für Deinen wertvollen Beitrag !!

Grüße
Manni
Angehängte Dateien:
Gast #5997627
Lesenswert?

Genau betrachtet hatte ich in meinem zweiten Beitrag aber
vorgeschlagen, ruhig mit der (je nach Drehrichtung) nächsten
Voll-Schrittkombination wiedereinzuschalten.

Also entweder zuviel der Ehre, oder das Problem war eher ein
Zählproblem, weil der erste Step nach Wiedereinschalten nicht
mitgezählt wurde. - Und mit Tabelle 7-4 kann der Fehler nun nicht
mehr wirksam werden.

???
OP #5997659
Lesenswert?

Jakob schrieb:
> Also entweder zuviel der Ehre, oder das Problem war eher ein
> Zählproblem,

Also keine falsche Bescheidenheit.

Anscheinend mag der Schrittmotor es nicht, wenn man ihn aus dem Schlaf 
(0,0,0,0) aufweckt und ihn unmittelbar in eine Schrittposition versetzt, 
die er beim Ausschalten nicht inne hatte.

Wie auch immer, das Aus- und Einschalten funktioniert jetzt ordentlich 
und ich kann die Supply Power (W) erheblich reduzieren, denn ich habe 
bereits 11 Instrumente mit diversen Motoren laufen.
Gast #5997666
Lesenswert?

Aber eine echte Herausforderung, so einen HSI realitätsnah
nachzuempfinden. Bestimmt auch viel mechanische Tüftelei.
Toll!

Ich war ja (in der Realität) auf der anderen Seite von
solchen Istrumenten: ILS- und VOR-Betrieb.
OP #5997678
Lesenswert?

Jakob schrieb:
> Ich war ja (in der Realität)

Ah ja, bestimmt bei der Firma, die mit Sie anfängt und mit mens endet.
Ich war (in der Realität) etwas weiter oben angesiedelt, so in etwa bei 
500 - 384400 km. Da habe ich gelernt, nie etwas aus der Hand zu geben, 
was Du nicht auf Herz und Nieren verifiziert und getestet hast. Wenn das 
Ding einmal oben ist, ist's vobei mit Reparieren. Dann hilft nur noch 
Beten.
Gast #5997837
Lesenswert?

Manfred L. schrieb:
> Wenn sich die Anzeige wieder verändern soll, schalte ich den Strom exakt
> mit dem gemerkten Schritt wieder ein.

Manfred L. schrieb:
> Mein S/W Fehler lag einfach daran, dass
> ich beim Wiederanlegen der Spannung an die Spulen nicht den "alten"
> Schritt genommen habe, sondern gleich auf den nächsten gesprungen bin.

Soviel zum Thema "exakt" und "geheimes" Programm.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren