Gute Erfahrungen bezüglich ruckelfreiem Bewegen der Bühne haben wir mit industriell gefertigten Drehscheiben, z.B. von Fleischmann, gemacht. Diese haben eine hohe Fertigungsgenauigkeit, sie sind sehr symmetrisch und lassen sich mit hoher Genauigkeit wiederholbar positionieren.
Selbstbau-Drehscheiben werden sich nur im Idealfall spielfrei und völlig gleichmäßig ohne zu ruckeln drehen. Bei einer Umdrehung und bei Richtungswechsel gehen durch Abbremsen und Beschleunigen sowie unterschiedliche Reibung Microsteps verloren. Die Steuerungssoftware der Drehscheibe ist jedoch so ausgelegt, dass diese Ungenauigkeiten in einem großen Bereich ausgeglichen werden können.
Damit der Stepper keine oder möglichst wenige dieser Microsteps „verliert“, sollten die Einstellungen der Werte für den Stepper den Vorgaben der Datenblätter entsprechen und sorgfältig eingestellt werden.
Wichtig ist hier die Stromstärke, die der Motor benötigt. Sie wird über das Poti auf der Treiber-Platine eingestellt, indem die Referenz-Spannung über das Poti justiert wird (siehe Stepper-Treiber).
Bei den hier verwendeten, relativ schnellen Dreh-Geschwindigkeiten, muss die Versorgungsspannung unbedingt größer gewählt werden, weil eine Spule beim Einschalten den Strom erst bei höherer Spannung ausreichend schnell fließen läßt. Beim Drehen des Motors wird die Spannung ständig ein- und ausgeschaltet. Wenn die Spannung zu gering ist, dann gehen hier Schritte verloren.
Die Schaltung sollte daher zwischen mind. 14V - 20V betrieben werden. Bewährt hat sich z.B. ein Laptop-Netzteil mit 19V.
Beim allerersten Start der Steuerung ist der Null-Punkt (= Referenzpunkt) der Drehscheibe noch nicht definiert. Dieser ist die Position des Hall-Sensors (TLE4905). Ebenso fehlt die Anzahl Steps pro Umdrehung, es sei denn, man kennt die Anzahl Steps des Motors sowie die Getriebeuntersetzung und hat diese manuell in den Sketch eingetragen.
Schaltet man die Steuerung erstmalig ein, so wird eine Kalibrierung durchgeführt und die Bühne dreht sich im Uhrzeigersinn (falls die Drehrichtung nicht stimmt, ist der Motor falsch angeschlossen). Die Bühne dreht solange, bis der Hallsensor TLE4905 am Rand oder unter der Drehscheiben-Grube ein Signal liefert. Das ist der Fall, wenn sich der eingebaute Magnet am Bühnenende auf der Höhe des Hallsensors befindet (die entsprechende LED leuchtet, solange der Magnet den Hallsensor triggert). Diese Position ist der Referenz-/Nullpunkt, ab dem letztendlich die Schritte gezählt werden.
Es ist empfehlenswert, den Hallsensor links von Port 1 zu montieren (also ein Stückchen entfernt im Gegenuhrzeigersinn). Dann werden die Ports mit aufsteigenden Positionswerten gespeichert. Man kann den Hallsensor theoretisch auch komplett an einer anderen Stelle einbauen.
Pro Port gibt es 4 Positionswerte in Abhängigkeit der Drehrichtung, also von welcher Seite der Port angefahren wird (dies erhöht später die Positioniergenauigkeit):
Es gibt also 4 Sets für Positionsdaten; alle Werte werden im EEPROM des Nano gespeichert, damit sie beim nächsten Einschalten gleich wieder zur Verfügung stehen.
Zunächst sehen die Positionswerte folgendermaßen aus („2000000000“ = Defaultwert, d.h. diese Position wurde noch nicht fein eingestellt):
Port | positive | negative | U-Turn pos. | U-Turn neg. | berechneter Wert aus Anzahl Steps/Umdrehung |
---|---|---|---|---|---|
1 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | n.a. |
2 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | n.a. |
3 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | n.a. |
4 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | n.a. |
5 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | n.a. |
6 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | n.a. |
7 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | n.a. |
8 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | n.a. |
9 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | n.a. |
10 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | n.a. |
11 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | n.a. |
12 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | n.a. |
13 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | n.a. |
14 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | n.a. |
15 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | n.a. |
16 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | n.a. |
17 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | n.a. |
18 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | n.a. |
19 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | n.a. |
20 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | n.a. |
21 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | n.a. |
22 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | n.a. |
23 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | n.a. |
24 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | n.a. |
Falls die Anzahl Steps pro Umdrehung (Parameter FIXED_STEPS_PER_ROUND) nicht fest definiert ist, ist der berechnete Standardwert aus Anzahl Steps/Umdrehung noch nicht verfügbar („n.a.“), er kann erst nach dem Kalibrieren angezeigt werden, da dann die Anzahl Steps pro Umdrehung bekannt ist.
Daher wird zuerst eine Kalibrierung der Drehscheibe durchgeführt:
Das Getriebespiel wird in positiver Drehrichtung gemessen und später folgendermaßen berücksichtigt:
Die Positionswerte sehen nun wie folgt aus (Beispiel Steppermotor mit 6400 Steps, 48 Ports davon 24 genutzt):
Port | positive | negative | U-Turn pos. | U-Turn neg. | berechneter Wert aus Anzahl Steps/Umdrehung |
---|---|---|---|---|---|
1 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | 133 |
2 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | 266 |
3 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | 400 |
4 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | 666 |
5 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | 1066 |
6 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | 1466 |
7 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | 1733 |
8 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | 2000 |
9 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | 2266 |
10 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | 2533 |
11 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | 2800 |
12 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | 3066 |
13 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | 3333 |
14 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | 3466 |
15 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | 3600 |
16 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | 3866 |
17 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | 4266 |
18 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | 4666 |
19 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | 4933 |
20 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | 5200 |
21 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | 5466 |
22 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | 5733 |
23 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | 6000 |
24 | 2000000000 | 2000000000 | 2000000000 | 2000000000 | 6266 |
Nach der Kalibrierung fährt die DS zum Port 1. I.d.R. wird der Gleisabgang jedoch nicht exakt angefahren, so dass die Schienen erst einmal nicht sauber fluchten. Die Bühne wird daher ein bisschen links oder rechts vom Port stehen bleiben.
Mit den berechneten Grobwerten (rechte Spalte) kann man jedoch schon die DS-Bewegungen testen. Die DS arbeitet aktuell mit den berechneten gleichverteilten Werten.
Um die Schienen exakt fluchten zu lassen, muss eine Fein-Einstellung der Portpositionen durchgeführt werden (siehe unten).
Die interne 0-Position (= Lage des Hallsensors) wird jedes Mal korrigiert, wenn die Scheibe in der (positiven, i.d.R. CW) Kalibrierrichtung am Nullpunkt vorbeikommt.
Wenn die Scheibe in Gegenrichtung am Nullpunkt vorbeikommt, dann wird, wenn mehr als eine Umdrehung seit dem letzten Abgleich gedreht wurde, die Drehrichtung kurz umgekehrt und der Nullpunkt noch mal überprüft (diese Umkehr-Funktion lässt sich auch abschalten: USE_TURNBACK 0).
Nach der Kalibrierung werden die Gleisabgänge noch nicht exakt angefahren. Die Bühne wird daher ein bisschen links oder rechts vom Port stehen bleiben. Um die Schienen exakt fluchten zu lassen, muss nun eine Fein-Einstellung der Portpositionen durchgeführt werden.
Hierzu nimmt man die Feineinstellung eines ersten Ports in positiver Richtung (i.d.R. CW) vor, indem man den Port mit dem Drehencoder manuell exakt anfährt (Menü „Manuell/Speich.“), dabei nie die Drehrichtung ändert, sonst wird das Getriebespiel falsch berücksichtigt und anschließend die Position dieses Ports speichert. Die Port-Nr. beim allerersten Abspeichern kann im OLED per Drehencoder ausgewählt werden. Aus der Position des ersten, kalibrierten Ports wird die Stepperposition aller anderen Ports für diese Bewegungsrichtung neu berechnet.
Das Feintuning, d.h. manuelles Anfahren eines Ports zur Feineinstellung, sollte über den Drehencoder durchgeführt werden und nur in Ausnahmefällen mit dem Poti.
Im Beispiel unten wurde die Position für Port 1 um 24 Mikrosteps vergrößert, diese 24 Mikrosteps werden auf alle anderen Ports addiert.
Die im EEPROM gespeicherten Port-Positionen sehen dann wie folgt aus (nach finetuning in positiver Richtung):
Port | positive | negative | U-Turn pos. | U-Turn neg. | berechneter Wert aus Anzahl Steps/Umdrehung |
---|---|---|---|---|---|
1 | 157 | 2000000000 | 2000000000 | 2000000000 | 133 |
2 | 290 | 2000000000 | 2000000000 | 2000000000 | 266 |
3 | 424 | 2000000000 | 2000000000 | 2000000000 | 400 |
4 | 690 | 2000000000 | 2000000000 | 2000000000 | 666 |
5 | 1090 | 2000000000 | 2000000000 | 2000000000 | 1066 |
6 | 1490 | 2000000000 | 2000000000 | 2000000000 | 1466 |
7 | 1757 | 2000000000 | 2000000000 | 2000000000 | 1733 |
8 | 2024 | 2000000000 | 2000000000 | 2000000000 | 2000 |
9 | 2290 | 2000000000 | 2000000000 | 2000000000 | 2266 |
10 | 2557 | 2000000000 | 2000000000 | 2000000000 | 2533 |
11 | 2824 | 2000000000 | 2000000000 | 2000000000 | 2800 |
12 | 3090 | 2000000000 | 2000000000 | 2000000000 | 3066 |
13 | 3357 | 2000000000 | 2000000000 | 2000000000 | 3333 |
14 | 3490 | 2000000000 | 2000000000 | 2000000000 | 3466 |
15 | 3624 | 2000000000 | 2000000000 | 2000000000 | 3600 |
16 | 3890 | 2000000000 | 2000000000 | 2000000000 | 3866 |
17 | 4290 | 2000000000 | 2000000000 | 2000000000 | 4266 |
18 | 4690 | 2000000000 | 2000000000 | 2000000000 | 4666 |
19 | 4957 | 2000000000 | 2000000000 | 2000000000 | 4933 |
20 | 5224 | 2000000000 | 2000000000 | 2000000000 | 5200 |
21 | 5490 | 2000000000 | 2000000000 | 2000000000 | 5466 |
22 | 5757 | 2000000000 | 2000000000 | 2000000000 | 5733 |
23 | 6024 | 2000000000 | 2000000000 | 2000000000 | 6000 |
24 | 6290 | 2000000000 | 2000000000 | 2000000000 | 6266 |
Bei jedem weiteren Port, dessen Position in positiver Richtung abgespeichert wird, speichert der Sketch nur diese eine Position, alle anderen Ports werden nicht berücksichtigt. Es kommt auch keine Abfrage der Port-Nr. mehr; diese entspricht dem zuletzt angefahrenen Port. Auf diese Weise kann man alle benötigten Ports individuell drehrichtungsabhängig einstellen.
Falls die DS absolut symmetrische Abgänge hat und sich die Fertigungstoleranzen in Grenzen halten, reicht es u.U. aus, nur einen Port fein einzustellen. Für höhere Positionier-Genauigkeiten sollten alle Ports in jeder Fahrtrichtung plus beide U-Turn-Richtungen eingestellt werden.
Sind z.B. die ersten Werte gefüllt (Spalte „positive“), dann sind die Werte 2, 3 und 4 immer noch auf Default „2000…00“. Bei einer komplett konfigurierten DS sollten alle Werte pro Port fein eingestellt sein.
Hierzu lassen sich die Parameter OFFSET_PORT_POSITION und OFFSET_PORT_POSITION_U_TURN nutzen.
Die Offset-Parameter können auch auf 0 gesetzt werden, dies empfiehlt sich, wenn die DS sehr symmetrisch ist und kein Getriebe verwendet wird. Daher am besten mit 0 starten und prüfen, wie genau die Ports angefahren werden. Dann evtl. einen Offset verwenden, um das Feinjustieren zu erleichtern.
Bei der Fleischmann Drehscheibe und einem 400 Step Motor ohne Getriebe sollte man beide Parameter auf 0 setzen.
Nach dem Kalibrieren von 0-Punkt, Steps pro Umdrehung und Getriebespiel muss man die Ports in positiver, negativer und als U-Turn Richtung (positiv und negativ) feingetuned abspeichern, um möglichst genau positionieren zu können.
Beim Speichern des ersten Ports in einer Drehrichtung werden auch die Positionen der restlichen Ports für die jeweilige Richtung ins EEPROM geschrieben. Bei positiver Richtung (z.B. im Uhrzeigersinn) wird der OFFSET_PORT_POSITION bei den anderen Ports abgezogen, dann kann man anschließend jeden Port mit dem Drehencoder in positiver Richtung anfahren, die DS bleibt ein Stückchen vor dem Port stehen und man kann manuell in positiver Richtung das Feintuning mit Poti oder Drehencoder machen, dann abspeichern. Auf diese Weise kann die Drehrichtung beibehalten werden und es kommt nicht zum lästigen Fehler, „dass die Drehrichtung geändert wurde“.
In negativer Richtung wird entsprechend verfahren, ergo OFFSET_PORT_POSITION addiert.
Bei U-Turns wird der Offset ebenfalls in beiden Richtungen berücksichtigt. Die Speicherung der restlichen Port ist ebenfalls aktiv.
Der Ablauf zum Einstellen der DS ist dann: