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.
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.
Manfred L. schrieb: > da ich den Strom für die beiden Spulen ja sequentiell einschalten > muß Warum?
Danke Dir für die schnelle Antwort !! Habe ich das richtig verstanden: "nächste Rastposition" heißt bei Dir die nächste Position, die "ich mir vorher gemerkt habe" ?
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???
Max M. schrieb: > Warum? Mein Controller kann jedenfalls nur sequentiell arbeiten. Arbeitetst Du mit solchen, die parallel arbeiten ?
Manfred L. schrieb: > Max M. schrieb: >> Warum? > > Mein Controller kann jedenfalls nur sequentiell arbeiten. Arbeitetst Du > mit solchen, die parallel arbeiten ? Du kannst doch die neuen Pegel aller 4 Pins berechnen und dann auf einmal setzen (Byte-Zugriff), wenn die im gleichen Port sind.
:
Bearbeitet durch User
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.
Helmut S. schrieb: > Du kannst doch die neuen Pegel aller 4 Pins berechnen und dann auf > einmal setzen (Byte-Zugriff), wenn die im gleichen Port sind. Jetzt sind wir wieder eins! Da hast Du vollkommen Recht, aber mein Board ist voll mit Leiterbahnen und da konnte ich die Pins zum Treiber nicht alle an das selbe Port legen. Trotzdem Danke für Deinen Tip.
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.
Ich würde eher über eine Stromabsenkung im Stillstand nachdenken, so machen es jedenfalls professionelle Schrittmotor Endstufen. Thomas
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.
Das sieht man doch ob der Motor beim Abschalten davon rastet oder brav seine Stellung hält.
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.
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.
Wenn die Ansteuerung wie oben gezeigt erfolgt, reden wir ja über Vollschritt. Dann steht der Motor immer in einer Rastposition. Stromabsenkung dürfte bei einer simplen Ansteuerung mit ULN mangels Stromregelung wohl ausfallen. Was spricht dagegen, den Treiber zu wechseln? Mit freundlichen Grüßen Thorsten Ostermann
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) ?
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.
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.
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.
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???
Ich würde in die 5V Leitung einen Widerstand schalten der im Betrieb mit einem PNP-Transistor gebrückt wird. Einfache Version der oben schon genannten Stromabsenkung.
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!
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.
Manfred L. schrieb: > konnte ich die Pins zum Treiber nicht alle an das selbe Port > legen. Designfehler!
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.
Max M. schrieb: > Designfehler! Bei einseitigen Platinen im DIY Verfahren hat man halt nicht immer die besten Voraussetzungen, siehe attached Layout. Das Wichtigste ist aber, dass die gesamte Schaltung ohne Stromabschaltung einwandfrei funktioniert !!
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.
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
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.
> 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.
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
Jakob schrieb: > 360° / 2048 ~= 0,18° Wie üblich hast Du mal wieder Recht. Da noch ein externes Getriebe mit 1:1.5 hinter dem Motor hängt, liegt die Genauigkeit also bei 360 / 3072 = 0.1171875 Da war ich wohl zu überheblich.
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. ???
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.
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.
Thomas Z. schrieb: > Ich würde eher über eine Stromabsenkung im Stillstand nachdenken, so > machen es jedenfalls professionelle Schrittmotor Endstufen. Mit so einem Treiber wird das eher schwierig. Da sollte man dann schon etwas moderneres nehmem, was wirklich in der Lage ist, den Strom zu regeln. Manfred L. schrieb: > ... und einem Treiber ULN2803
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.