Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
anleitungen:bauanleitungen:drehscheibe_v06:150de:150_drehscheibe_einrichtung [2023/01/26 17:53] – gelöscht - Externe Bearbeitung (Unknown date) 127.0.0.1 | anleitungen:bauanleitungen:drehscheibe_v06:150de:150_drehscheibe_einrichtung [2023/02/06 17:58] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Einrichtung und Verwendung der Drehscheibe ====== | ||
+ | |||
+ | ===== Kalibrierung der Drehscheibe ===== | ||
+ | |||
+ | Die Drehscheibe wird sich nur im Idealfall spielfrei und völlig gleichmäßig ohne zu ruckeln drehen. Gerade bei Selbstbau-Drehscheiben, | ||
+ | |||
+ | Damit der Stepper aber keine oder möglichst wenige dieser Microsteps „verliert“, | ||
+ | |||
+ | Bei den relativ schnellen Geschwindigkeiten, | ||
+ | |||
+ | => **Die Schaltung sollte daher zwischen 14V (mindestens) und ca. 18V betrieben werden. | ||
+ | ** | ||
+ | |||
+ | Beispiele für am Modul einzustellende Spannungen: | ||
+ | |||
+ | ^ Modul ^ NEMA 23 flach ^ NEMA 17 ^ Spielzeug Schrittmotor ^ NEMA17 mit 17:1 Getriebe^ | ||
+ | | TMC2208 | ||
+ | | TMC2100 | ||
+ | | DRV8825 | ||
+ | | A4988 | 0.512V | ||
+ | |||
+ | Vor dem Kalibriervorgang müssen die notwendigen Anpassungen der Konfiguration an die eigene Drehscheibe in der **Turntable_Config.h**-Datei vorgenommen werden. | ||
+ | Änderungen in der Turntable.ino würden bei einem zukünftigen Software-Update verloren gehen. | ||
+ | |||
+ | Aus der Vielzahl der Konfigurationsvarialen hier die für mich, als Märklin-Nutzer, | ||
+ | * Anzahl der benötigten Ports (in meinem Fall sind vier Ports vorgesehen) #define PORT_CNT | ||
+ | * Erste verwendete DCC Adresse eingeben, wenn man von dem im Programm vorgegebenen DCC_Adressraum abweichen will. #define FIRST_USED_DCC_ADDR | ||
+ | * Letzte verwendete DCC Adresse eingeben, wenn man nicht alle vorgesehenen DCC-Adressen benötigt und vom vorgegebenen DCC_Adressraum abweicht. #define LAST_USED_DCC_ADDR | ||
+ | * DCC_Port_Address_List anpassen #define DCC_PORT_ADDR_LIST | ||
+ | * Polarisation ein/ | ||
+ | * Zur Kalibrierung den DEBUG-Mode einschalten, | ||
+ | #define ENABLE_DPRINTF 1 //Debug Ausgaben ein | ||
+ | * Bei Bedarf Einstellungen der Ausrichtungen bzw Drehrichtung von Drehscheibe, | ||
+ | * Bei Bedarf Änderungen an den Einstellungen der verschiedenen Drehgeschwindigkeiten vornehmen. | ||
+ | |||
+ | Beispiel meiner [[anleitungen: | ||
+ | |||
+ | ==== Kalibriervorgang ==== | ||
+ | |||
+ | |||
+ | Ich habe für einen ersten Test eine Scheibe mit vier Ports gewählt. Die Software berechnet dann automatisch vier symmetrische Ports. Wenn man einen Port exakt eingestellt hat und die Qualität der Scheibe gut ist, muss man die anderen Ports nicht mehr anpassen. Die Einstellung wird automatisch angepasst. | ||
+ | |||
+ | Zur Kalibrierung muss der (Test-)Aufbau abgeschlossen sein, d.h. Hall-Sensor/ | ||
+ | |||
+ | Da es wichtig ist, dass möglichst keine Microsteps verloren gehen, muss zunächst mehrfach geprüft werden wieviel Spiel die Drehscheibe hat. | ||
+ | |||
+ | * Über den Drehimpulsgeber im Menü „Reset all“ auswählen. Damit wird das EEPROM gelöscht und die Anzahl der benötigten Microsteps ermittelt. | ||
+ | * Nachdem der Vorgang abgeschlossen ist, über den seriellen Monitor ein „?“ senden. | ||
+ | |||
+ | | ||
+ | * die Position an der sich die Drehscheibe befindet, | ||
+ | * die im Programm automatisch gesetzte Port-Nummer für diese Position, | ||
+ | * die Anzahl der Microsteps für OneTurn, | ||
+ | * die Einstellung des Poti und das Spiel durch die Anzahl der Microsteps (StpHasCont = Stepps has Contact) | ||
+ | |||
+ | * Über den Drehimpulsgeber im Menü erneut „Reset all“ auswählen. | ||
+ | * Diesen Vorgang mehrfach wiederholen, | ||
+ | |||
+ | Bei mir sieht das Ergebnis so aus: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Liefern „OneTurn“ und „StpHasCont“ immer das gleiche Ergebnis, herzlichen Glückwunsch! Der Antrieb der Drehscheibe ist von guter Qualität. | ||
+ | |||
+ | Bei meiner Konstruktion ist das erwartungsgemäß nicht der Fall. Ich habe ein Spiel von ca. 3.1 °. Aber auch dieses recht große Spiel kann das Programm automatisch berücksichtigen und korrigieren. Wenn man in der einen Richtung an einen Port fährt, sollte das Programm automatisch das Spiel berücksichtigen und die notwendigen Microsteps mehr ausführen als beim Anfahren aus der anderen Richtung. Dazu werden die Ports von beiden Seiten aus angefahren und die Positionen gespeichert. | ||
+ | |||
+ | Wenn man das für Anschluss 1 machst, dann bekommen zunächst alle anderen Ports den gleichen Korrekturfaktor. In der „EE Data“ Tabelle ist dann die zweite Spalte ausgefüllt (Nicht 2000000000). Die dritte Spalte zeigt den Wert für „reverse“ an, eine 180 Grad Drehung. Auch diesen Wert kann man separat speichern. | ||
+ | |||
+ | Hört sich kompliziert an, ist aber mit etwas Konzentration recht leicht durchzuführen: | ||
+ | |||
+ | - Die Drehscheibe steht nach dem obigen mehrfachen Reset auf Port 4. Ich will Port 1 einstellen. | ||
+ | - Mit dem Poti die Drehscheibe in Richtung Port 1 drehen. Dabei immer diese Drehrichtung beibehalten und auf keinen Fall zurückdrehen, | ||
+ | - Ist die Drehscheibe exakt positioniert über das Menü „Save Position“ auswählen. | ||
+ | - Es erscheint „Select port to be saved“, nun über den Dreh/ | ||
+ | - Nun zu Port 2 wechseln bzw. zu einer Position, die auf der anderen Seite von Port 1 liegt, um wie oben beschrieben, | ||
+ | - Die Vorgänge wie unter 2 – 4 beschrieben auch von dieser Seite durchführen. | ||
+ | - Nach dem Erreichen der exakten Port 1 Position diese wieder sichern. Im Menü erscheint dann „Update Ports?“ mit dem Untermenü „ Only this“ und „All port“. In diesem Fall „Only this“ auswählen. Mit der Funktion „All ports“ werden die gespeicherten Werte für alle Ports korrigiert. | ||
+ | - Mit den anderen Port entsprechend verfahren. | ||
+ | - Über den Menüpunkt „Reverse“ dreht sich die Drehscheibe um 180 Grad. Im Display wird „~3 und 1 reverse“ angezeigt. Die Tilde zeigt an, dass sich die Drehscheibe im Bereich von Port 3 befindet, jedoch nicht exakt positioniert ist. | ||
+ | - Wieder den Menüpunkt „Save“ anklicken. Es stehen drei Möglichkeiten zur Auswahl: „Reverse side“, „Normal side“ und „Abort“. Nach dem Anklicken von „Reverse side“ kommt man wieder zur Auswahl „Only this“ und „All ports“. Nach dem Anklicken von „Only this“ erhält man die Meldung „Position saved to port 1“ | ||
+ | |||
+ | |||
+ | Damit ist die Einstellung für Port 1 durchgeführt und die anderen Ports können bei Bedarf entsprechend kalibriert werden. | ||
+ | Durch Drücken der Reset-Taste des NANO wird das EEPROM ausgelesen und die Werte für die Ports angezeigt. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | |||
+ | ===== Ergänzungen ===== | ||
+ | |||
+ | Der Nullpunkt wird immer dann neu gesetzt, wenn die Scheibe in positiver Richtung am Hall-Sensor = Nullpunkt vorbeikommt. Die positive Richtung ist die Richtung welche beim Re-Kalibrieren zum Start verwendet wird. | ||
+ | |||
+ | Wenn sie in negativer Richtung am Hall-Sensor vorbeikommt, | ||
+ | |||
+ | Die Kalibrierung wird aber auch dann nur in Positiver Richtung vorgenommen. Darum dreht sie sich zunächst ein Stück zurück bevor die Kalibrierung in positiver Richtung beginnt. Dabei wird „Turn back and set zero pos.“ angezeigt. | ||
+ | |||
+ | ===== Steuerung der Drehscheibe ===== | ||
+ | |||
+ | |||
+ | Die Drehscheibe läßt z.Zt. über Poti/ | ||
+ | |||
+ | ==== Steuerung über DCC ==== | ||
+ | |||
+ | In der Turntabel.ino Datei sind folgende DCC-Adressen voreingestellt. Die Anpassung an die eigene Anlage sollte in der Turntable_config.h -Datei vorgenommen werden. | ||
+ | |||
+ | < | ||
+ | // Use negativ addresses to disable the corrosponding command | ||
+ | #ifndef DCC_DISABLE_SOUND_ADDR | ||
+ | #define DCC_DISABLE_SOUND_ADDR | ||
+ | #endif | ||
+ | #ifndef DCC_ENABLE_SOUND_ADDR | ||
+ | #define DCC_ENABLE_SOUND_ADDR | ||
+ | #endif | ||
+ | #ifndef DCC_VOLUME_DN_ADDR | ||
+ | #define DCC_VOLUME_DN_ADDR | ||
+ | #endif | ||
+ | #ifndef DCC_VOLUME_UP_ADDR | ||
+ | #define DCC_VOLUME_UP_ADDR | ||
+ | #endif | ||
+ | #ifndef DCC_VOLUME_1_ADDR | ||
+ | #define DCC_VOLUME_1_ADDR | ||
+ | #endif | ||
+ | #ifndef DCC_VOLUME_2_ADDR | ||
+ | #define DCC_VOLUME_2_ADDR | ||
+ | #endif | ||
+ | |||
+ | #ifndef DCC_PLAY_SOUND1_ADDR | ||
+ | #define DCC_PLAY_SOUND1_ADDR | ||
+ | #endif | ||
+ | #ifndef DCC_PLAY_SOUND2_ADDR | ||
+ | #define DCC_PLAY_SOUND2_ADDR | ||
+ | #endif | ||
+ | #ifndef DCC_PLAY_SOUND3_ADDR | ||
+ | #define DCC_PLAY_SOUND3_ADDR | ||
+ | #endif | ||
+ | #ifndef DCC_PLAY_SOUND4_ADDR | ||
+ | #define DCC_PLAY_SOUND4_ADDR | ||
+ | #endif | ||
+ | #ifndef DCC_PLAY_SOUND5_ADDR | ||
+ | #define DCC_PLAY_SOUND5_ADDR | ||
+ | #endif | ||
+ | #ifndef DCC_PLAY_SOUND6_ADDR | ||
+ | #define DCC_PLAY_SOUND6_ADDR | ||
+ | #endif | ||
+ | #ifndef DCC_PLAY_SOUND7_ADDR | ||
+ | #define DCC_PLAY_SOUND7_ADDR | ||
+ | #endif | ||
+ | #ifndef DCC_PLAY_SOUND8_ADDR | ||
+ | #define DCC_PLAY_SOUND8_ADDR | ||
+ | #endif | ||
+ | #ifndef DCC_DISABLE_LIGHT_ADDR | ||
+ | #define DCC_DISABLE_LIGHT_ADDR | ||
+ | #endif | ||
+ | #ifndef DCC_ENABLE_LIGHT_ADDR | ||
+ | #define DCC_ENABLE_LIGHT_ADDR | ||
+ | #endif | ||
+ | #ifndef DCC_SET_SPEED1_ADDR | ||
+ | #define DCC_SET_SPEED1_ADDR | ||
+ | #endif | ||
+ | #ifndef DCC_SET_SPEED2_ADDR | ||
+ | #define DCC_SET_SPEED2_ADDR | ||
+ | #endif | ||
+ | #ifndef DCC_SET_SPEED3_ADDR | ||
+ | #define DCC_SET_SPEED3_ADDR | ||
+ | #endif | ||
+ | #ifndef DCC_SET_SPEED4_ADDR | ||
+ | #define DCC_SET_SPEED4_ADDR | ||
+ | #endif | ||
+ | #ifndef DCC_STEP_POS_DIR_ADDR | ||
+ | #define DCC_STEP_POS_DIR_ADDR | ||
+ | #endif | ||
+ | #ifndef DCC_STEP_NEG_DIR_ADDR | ||
+ | #define DCC_STEP_NEG_DIR_ADDR | ||
+ | #endif | ||
+ | #ifndef DCC_ROTATE_POS_DIR_ADDR | ||
+ | #define DCC_ROTATE_POS_DIR_ADDR | ||
+ | #endif | ||
+ | #ifndef DCC_ROTATE_NEG_DIR_ADDR | ||
+ | #define DCC_ROTATE_NEG_DIR_ADDR | ||
+ | #endif | ||
+ | #ifndef DCC_STOPP_ADDR | ||
+ | #define DCC_STOPP_ADDR | ||
+ | #endif | ||
+ | #ifndef DCC_CALIBRATE_ADDR | ||
+ | #define DCC_CALIBRATE_ADDR | ||
+ | #endif | ||
+ | #ifndef DCC_SET_POL_REL0_ADDR | ||
+ | #define DCC_SET_POL_REL0_ADDR | ||
+ | #endif | ||
+ | #ifndef DCC_SET_POL_REL1_ADDR | ||
+ | #define DCC_SET_POL_REL1_ADDR | ||
+ | #endif | ||
+ | #ifndef DCC_AUTO_POL_REL_ADDR | ||
+ | #define DCC_AUTO_POL_REL_ADDR | ||
+ | #endif | ||
+ | #ifndef DCC_REVERSE_TABLE_ADDR | ||
+ | #define DCC_REVERSE_TABLE_ADDR | ||
+ | #endif | ||
+ | |||
+ | // List of DCC adresses to move to the desired port. Must contain exact PORT_CNT entries. If not a compiler error is generated. | ||
+ | #ifndef DCC_PORT_ADDR_LIST | ||
+ | #define DCC_PORT_ADDR_LIST | ||
+ | DCC_PORT_ADDR(2, | ||
+ | DCC_PORT_ADDR(3, | ||
+ | DCC_PORT_ADDR(4, | ||
+ | DCC_PORT_ADDR(5, | ||
+ | DCC_PORT_ADDR(6, | ||
+ | DCC_PORT_ADDR(7, | ||
+ | DCC_PORT_ADDR(8, | ||
+ | DCC_PORT_ADDR(9, | ||
+ | DCC_PORT_ADDR(10, | ||
+ | DCC_PORT_ADDR(11, | ||
+ | DCC_PORT_ADDR(12, | ||
+ | DCC_PORT_ADDR(13, | ||
+ | DCC_PORT_ADDR(14, | ||
+ | DCC_PORT_ADDR(15, | ||
+ | DCC_PORT_ADDR(16, | ||
+ | DCC_PORT_ADDR(17, | ||
+ | DCC_PORT_ADDR(18, | ||
+ | DCC_PORT_ADDR(19, | ||
+ | DCC_PORT_ADDR(20, | ||
+ | DCC_PORT_ADDR(21, | ||
+ | DCC_PORT_ADDR(22, | ||
+ | DCC_PORT_ADDR(23, | ||
+ | DCC_PORT_ADDR(24, | ||
+ | #endif | ||
+ | |||
+ | #ifndef LAST_USED_DCC_ADDR | ||
+ | #define LAST_USED_DCC_ADDR | ||
+ | # | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Steuerung über den seriellen Monitor ==== | ||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ? | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== Meine Turntable_Config.h Datei ==== | ||
+ | |||
+ | < | ||
+ | // Configuration for the stepper program | ||
+ | // | ||
+ | // Add all individual config lines in this file | ||
+ | // | ||
+ | // # | ||
+ | |||
+ | #define ALLWAYS_CHECK_STEPS_ONE_TURN | ||
+ | #define PORT_CNT | ||
+ | #define CIRCUMFERENCE | ||
+ | #define ROTATIONSWITCH_DIRECTION | ||
+ | #define ROTATIONSWITCH_MENU_DIR | ||
+ | #define TURNTABLE_DIRECTION | ||
+ | #define TURNBACK_SPEED | ||
+ | #define NOT_ENABLE_PIN | ||
+ | // The pin of the module must be left open (std 6) | ||
+ | #define STEPPER_RAMP_LENGTH | ||
+ | // Set to 50 if 1/16 steps are used (MS1 - MS3 connected do +5V) | ||
+ | #define MOVE_SPEED1 | ||
+ | #define MOVE_SPEED2 | ||
+ | #define MOVE_SPEED3 | ||
+ | #define MOVE_SPEED4 | ||
+ | #define POLARISATION_RELAIS_PIN | ||
+ | #define OLED_TYP | ||
+ | #define MOVING_FLASH_INVERS | ||
+ | #define MOVING_FLASH_MODE | ||
+ | #define ENABLE_DPRINTF | ||
+ | #define SPEED_POTI_DIRECTION | ||
+ | #define SPEED_POTI_MID_RANGE | ||
+ | #define SPEED_POTI_CENTER | ||
+ | #define ANALOG_SPEED_DIVISOR | ||
+ | #define CLEARENCE_TEST_SPEED | ||
+ | #define CALIBRATE_SPEED | ||
+ | |||
+ | #define STEP_PIN | ||
+ | #define FIRST_USED_DCC_ADDR | ||
+ | #define DCC_PORT_ADDR_LIST | ||
+ | DCC_PORT_ADDR(2, | ||
+ | DCC_PORT_ADDR(3, | ||
+ | DCC_PORT_ADDR(4, | ||
+ | |||
+ | #define LAST_USED_DCC_ADDR | ||
+ | </ | ||