Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Der Einstieg in die MobaLedLib:

Stammtische

aktuell verwendete Versionen


Python MobaLedLib

Workshops

Verwendung mit der MoBa-Zentrale

Steuerung der MobaLedLib-Effekte

Erste Hilfe

Bewegung mit der MLL

Servoplatine

Relaisplatine

WS2811-BiPol


Sound mit der MLL

JQ6500

MP3-TF-16P

Hauptplatine

Servoplatine

Sounddateien

Anwendungsbeispiele:

3D-Druck

Entwicklungen MoBa-Universum

Platinen van Theo

MobaLedLib Sonderplatinen

Drehscheibensteuerung LocoTurn V 1.4

Drehscheibe (V0.6)

Lok-Platinen

OLED Displays

Infrared to Z21 Bridge

Hilfereiche Themen

Wissen für Fortgeschrittene

Impressum & Datenschutz

Für Wiki-Editoren:

Server online

anleitungen:bauanleitungen:locoturn_v10:150_locoturn_kalibrierung

Kalibrierung

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.

Erstinstallation

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):

  1. positive Drehrichtung, im Uhrzeigersinn (die Richtung hängt von verschiedenen Parametern ab, u.a. auch dem Anschluss des Motors)
  2. negative Drehrichtung (gegen den Uhrzeigersinn)
  3. anzufahrende Position bei einer 180° Drehung (U-Turn) in positiver Richtung (i.d.R. CW)
  4. U-Turn in negativer Richtung (CCW)

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:

  • Hierzu wird die Drehscheibe gedreht und der Sketch sucht den Null-Punkt (= Position des Hall-Sensors) und speichert ihn ab. Die Null-Punkt-Suche geht entweder mit hoher Geschwindigkeit (ADVANCED_REFERENCE_DETECTION = 0) oder mit einer angepassten Logik (ADVANCED_REFERENCE_DETECTION = 1), bei der der Null-Punkt zuerst mit hoher Geschwindigkeit gesucht wird, dann dreht die DS ein Stück zurück und fährt den 0-Punkt nochmals langsam an. Danach wird die Referenzposition gespeichert.

  • Ab da zählt die Steuerung die Schritte, bis der Sensor das zweite Mal passiert wird. Damit wird die Anzahl der Schritte für eine Umdrehung ermittelt. Der Wert kann auch manuell vorgegeben werden (FIXED_STEPS_PER_ROUND).
  • Zuletzt ermittelt er das Getriebespiel durch zweimaliges Hin- und Herfahren links/rechts vom Nullpunkt (der Sensor wird von zwei Seiten aus angefahren). Zum Spiel kommt auch noch die Hysterese des Sensors dazu (der Sensor schaltet nicht immer beim gleichen Punkt an oder aus). Das Getriebespiel kann auch manuell vorgegeben werden (Wert FIXED_STEPS_HAS_CONTACT >= 0).
  • Wird der Null-Punkt sprich Hall-Sensor gefunden, dann wird ausgehend von dieser Position die Lage der Ports in Microsteps berechnet (dies sind die Standardwerte ganz rechts in der Tabelle unten).
  • Standardwert bedeutet, dass die Steuerung die DS-Positionen anhand einfacher Division ermittelt: Anzahl Steps pro Umdrehung geteilt durch Anzahl Ports. Das ist dann der Abstand zwischen je 2 Ports mit dem gerechnet wird. Port 1 (intern 0) ist dann genau um diese Anzahl vom Hall-Sensor entfernt. Es wird also mit einer Gleichverteilung der Ports gerechnet.
  • Die 4 Positionswerte im EEPROM bleiben jedoch zunächst noch auf einem Defaultwert (2000000000).
  • Die Messwerte und die aktuelle Position werden im EEPROM abgespeichert, sodass die Daten nicht bei jedem Programmstart neu ermittelt werden müssen.
  • Über ALWAYS_CALIBRATE_AT_START = 1 kann eingestellt werden, dass bei einem Neustart der Steuerung zuerst eine Referenzfahrt durchgeführt wird, um den 0-Punkt zu kalibrieren. Dies empfiehlt sich insbesondere für Direktantriebe ohne Getriebe, da die Bühne oftmals einen kleinen „Einschaltruck“ macht und damit die Positionen nicht mehr stimmen können.

Das Getriebespiel wird in positiver Drehrichtung gemessen und später folgendermaßen berücksichtigt:

  • Wird eine Position im positiver Richtung angefahren, dann können die gespeicherten Port-Positionen direkt angefahren werden.
  • Wenn die Scheibe in negativer Richtung gedreht wird, dann muss das Getriebespiel (Clearance) von der Sollposition abgezogen werden.

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).

Kalibrierung im lfd. Betrieb

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).

Finetuning der Portpositionen

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.

Vorgehensweise zur effizienten Feineinstellung der DS-Abgänge

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:

  1. Kalibrieren von 0-Punkt, Steps pro Umdrehung und Getriebespiel
  2. Anfahren eines ersten Ports in positiver Richtung, Feintuning und Speichern der Position
  3. Anfahren aller weiteren Ports in positiver Richtung, Feintuning und Speichern (aufgrund der Offsets stoppt die DS ein Stückchen früher)
  4. Anfahren eines ersten Ports in negativer Richtung, Feintuning und Speichern der Position
  5. Anfahren aller weiteren Ports in negativer Richtung, Feintuning und Speichern (aufgrund der Offsets stoppt die DS ein Stückchen früher)
  6. Das gleiche pro Port für die U-Turn Positionen durchführen; dies geht in positiver und in negativer Richtung
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
anleitungen/bauanleitungen/locoturn_v10/150_locoturn_kalibrierung.txt · Zuletzt geändert: 2024/09/02 06:59 von domapi