Der Schrittmotor selbst hat 48 Schritte pro Umdrehung. Das Getriebe eine Untersetzung von 1:85 Also braucht die Achse 48 * 85 = 4080 Schritte pro Umdrehung.
Also statt
const int stepsPerRevolution = 4;
const int stepsPerRevolution = 4080;
coden.
Dann musst du aber mit der Drehzahl runtergehen. Weil ja jetzt die Anzahl Schritte pro Umdrehung hochgestetzt wurden.
Um wieder die gleiche Drehzahl wie vorher zu erreichen
myStepper.setSpeed(3);
Aber irgendwo steckt da noch ein Faktor zwei
Weil 4080*3 = 12240 Schritte pro Minute. Und postmaster-ino kam auf 6000 pro Minute.
1500 U/min : 60 = 25 U/sec. 4 Schritte pro Umdrehung (in deinem Sketch) = 25*4= 100 Schritte pro Sekunde.
100 Schritte / Sec 20 Sekunden = 2000 Schritte.
Waren es vielleicht keine zwanzig Sekunden sondern eher 40 Sekunden? Oder war es nur eine halbe Umdrehung?
Also mit obengenannten einstellungen: stepsPerRevolution = 4080 und myStepper.setSpeed(3) braucht er für 360 Grad etwa 10 Skunden. Läuft auch deutlich schneller als vorher.
Mich würde jetzt noch interessieren wie dies nun aussieht eurer Meinung nach, betreffend der Eingangs angesprochenen Gefahr wegen der Induktion beim 0-schalten der Steuerschaltung. Sollte ich da mit meinen Tip 121 nicht auf der sicheren Seite sein?
Da der Stepper wohl nur ein Uni-polarer Zeitgenosse ist, wird Dem laufend irgend eine Spule weggeschaltet.
Kann sein, daß Du den Stepper erst von der Stepper-Lib trennen musst, da Die ja 'weiß', wie der Stepper angesteuert wird und genau DA beim nächsten Schritt weiter machen will.
Wenn Du nun extern die Pins auf LOW setzt (oder HIGH?), wird zwar der Stepper nicht mehr durch den ULN bestromt, aber in einer Minute, wenn die Stepper-Lib ein/zwei Tausend Schritte machen will, fehlt die Start-Situation - hier könntest Du Schritte verlieren.
Work-Around:
Die 4 Pins einlesen (digital Read) und diese Zustände merken.
Pins ab (oder an) schalten
warten
bevor der Stepper wieder zuschlägt die Pins auf den ursprünglichen Zustand bringen.
Wie gesagt - die Stepperlib miß die Pins dafür 'in Ruhe lassen'.
Was Du NIE machen darfst: Die Drähte von Stepper abziehen, wenn der Kram unter Spannung ist - DAS killt dir zuverlässig irgendwas, wenn die Spule unter Spannung stand!
Dazu müsste man die Induktivität der Motorspulen messen. Dann könnte man halbwegs etwas rechnen und doch noch daneben liegen.
Der Transistor Tip121 kann maximal 80V ab. Das ist als Induktions-Spannungsspitze nix besonderes.
Also aus der Tatsache das du ja schon und so viele Tests gemacht hast kann man sehen, dass es jedenfalls nicht sofort
kaputt geht. Die Vier Transisotren bilden eine H-Bridge. Richtig? Da bin ich im Thema nicht tief genug drin.
Frage an die H-Bridge-Spezialisten: hat man beim Umschalten/Abschalten einer Spule nicht sowieso die ganze Zeit
Induktionsspitzen?
Hast du ein Digitalmultimeter das auch Induktivitäten messen kann(Das ist eher selten)
Hast du ein Oszilloskop mit dem man sich die evtl. Spannungsspitzen beim normalen Motorlauf anschauen kann?
postmaster-ino:
Was Du NIE machen darfst: Die Drähte von Stepper abziehen, wenn der Kram unter Spannung ist - DAS killt dir zuverlässig irgendwas, wenn die Spule unter Spannung stand!
MfG
Ups! - das hab ich jetzt zig mal gemacht, vorallem um die Kabelreihenfolge zu ergründen
Hmm tönt alles etwas kompliziert für mich. Gäbe es denn eine andere Möglichkeit - statt die Steuerung zu kappen - um mit meiner Uhr nicht unbedingt noch die Wohnung zu heizen?
Du hast momentan 4 Pins, Die an die Basen der Transitoren gehen.
Diese werden von der Stepper-Lib bespaßt.
Wenn der Stepper zum Stehen gekommen ist, fragst Du per digitalRead() diese vier Pins ab und merkst Dir die Zustände.
Nun schaltest Du diese 4 Pins ab (oder an - je nachdem, was AUS ist).
Bevor die Stepper-Lib den nächsten Schritt ausführen soll, schaltest Du die Pins wieder auf die Pegel, Die Du zuvor gemessen hast.
1 Array, eine For mit 4 digitalRead / digitalWrite auf AUS.
Bevpr der Stepper wieder los surrt eine FOR mit 4 digitalWrite auf die Zustände, Die Du Dir in dem Array gemerkt hast.
Viel einfacher wird's nicht - dann doch lieber heizen, wenn's hier schon klemmt.
Die Vier Transisotren bilden eine H-Bridge. Richtig? Da bin ich im Thema nicht tief genug drin.
Nein. Rechtes Bild.
Ein bipolarer Schrittmotor braucht 2 H-Brücken.
Zu den drehenden Kellen:
Auch wenn die Konstruktion ausgewuchtet ist und darum es keine Kraft / Drehmoment braucht um mit konstanter Drehzahl zu drehen. Es braucht aber eine Kraft / Drehmoment um die Drehscheibe zu beschleunigen. Bei relativ schweren Kellen die ein relativ großer Durchmesser macht ein beträchtiges Massenmoment.
Ich glaube Du brauchst eine Anlauf/Bremsrampe.
Ja, das ist möglich und waren resp. sind auch etwas meine Bedenken. Ich werde es testen müssen. Leider ist meine Apparatur noch nicht ganz so weit. Irgendwie habe ich aber das Gefühl, dass es reichen sollte. Die Kellen haben nur einen Durchmesser von 6 cm und sind aus 0.5mm Alu, also da ist nicht allzu viel Gewicht.
Also das Prinzip habe ich verstanden. Ich werde sehen müsse, ob ich das so in Code-Form umsetzen kann, mit meinen bescheidenen c++ Kenntnissen.
Da ich das ohne Hilfe nicht hinbekomme und ich aber auch nach etlichen Versuchen keine Stepp-Verschiebungen feststellen konnte, werde ich es mal so lassen und erst versuchen zu ändern, sollte es dies bezüglich Probleme geben.