Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
anleitungen:bauanleitungen:locoturn_v10:150_locoturn_parameter [2023/05/28 15:12] – [Parameter zur Einstellung der Drehscheibe] domapi | anleitungen:bauanleitungen:locoturn_v10:150_locoturn_parameter [2024/02/10 15:54] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 61: | Zeile 61: | ||
- | ====== | + | ====== |
==== LocoTurn V1.0 ==== | ==== LocoTurn V1.0 ==== | ||
Hier stehen alle wichtigen Parameter für den Betrieb einer Fleischmann-Drehscheibe mit einem Direktantrieb über einen 400 Step Motor. Genutzt werden 26 von 48 Ports. Am einfachsten orientiert man sich an diesem Beispiel und nimmt ggf. Änderungen vor: | Hier stehen alle wichtigen Parameter für den Betrieb einer Fleischmann-Drehscheibe mit einem Direktantrieb über einen 400 Step Motor. Genutzt werden 26 von 48 Ports. Am einfachsten orientiert man sich an diesem Beispiel und nimmt ggf. Änderungen vor: | ||
Zeile 484: | Zeile 484: | ||
</ | </ | ||
- | ==== LocoTurn V1.1 ==== | + | ==== LocoTurn V1.1 / V1.2 ==== |
+ | |||
+ | In der Version V1.1 sind einige #defines dazugekommen oder wurden umbenannt. Die folgende Turntable_config.h ist nur mit der entsprechenden ino-Version (1.1 oder 1.2) lauffähig. | ||
< | < | ||
- | coming soon | + | // |
+ | // Benutzer-spezifische Parameter | ||
+ | // | ||
+ | /* | ||
+ | Die Parameter hier dominieren diejenigen aus dem Hauptprogramm " | ||
+ | Falls ein bestimmter Parameter hier nicht definiert wurde, wird ein default-Wert aus dem Hauptsketch verwendet! | ||
+ | Hier stehen nur die wichtigsten Parameter, die am häufigsten benutzerindividuell eingestellt werden müssen. | ||
+ | |||
+ | Intention: Bei eine neuen Version des Hauptprogrammes bleiben die Einstellungen aus diesem Reiter erhalten! | ||
+ | */ | ||
+ | |||
+ | |||
+ | // | ||
+ | // Parameterset 1: Wantai-Stepper oder StepperOnline-Stepper ohne Getriebe, 400 Steps pro Umdrehung, 6400 Micro-Steps | ||
+ | // 26 Gleisabgänge (= Ports) domapi-Anlage | ||
+ | // | ||
+ | |||
+ | // | ||
+ | // Zentrale #defines zum Ein-/ | ||
+ | // | ||
+ | |||
+ | #define USE_DCC | ||
+ | |||
+ | #define USE_SOUND | ||
+ | |||
+ | #define USE_SERIAL_INPUT | ||
+ | #define USE_VERBOSE | ||
+ | |||
+ | #define USE_OLED | ||
+ | #define USE_BUTTONS | ||
+ | |||
+ | #define SHOW_STATUS | ||
+ | |||
+ | #define USE_POTI | ||
+ | | ||
+ | |||
+ | // | ||
+ | // *** Debugging*** | ||
+ | // | ||
+ | #define ENABLE_DPRINTF | ||
+ | |||
+ | |||
+ | // Typische Konfigurationen: | ||
+ | // ========================= | ||
+ | // Normalbetrieb auf der Anlage | ||
+ | // | ||
+ | //#define USE_DCC | ||
+ | //#define USE_SOUND | ||
+ | //#define USE_SERIAL_INPUT | ||
+ | //#define USE_VERBOSE | ||
+ | //define SHOW_STATUS | ||
+ | //#define ENABLE_DPRINTF | ||
+ | |||
+ | // Test der Steuerung und Einstellung der DS | ||
+ | // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
+ | //#define USE_DCC | ||
+ | //#define USE_SOUND | ||
+ | //#define USE_SERIAL_INPUT | ||
+ | //#define USE_VERBOSE | ||
+ | //#define SHOW_STATUS | ||
+ | //#define ENABLE_DPRINTF | ||
+ | |||
+ | |||
+ | // | ||
+ | // Steuerung Beleuchtungseffekte | ||
+ | // | ||
+ | #define LEDS_ON_BOARD | ||
+ | #define WS281X_BOARD | ||
+ | #define MOBALEDLIB | ||
+ | |||
+ | #define LIGHT_CONTROL | ||
+ | |||
+ | #define HOUSE_LIGHT_MODUS | ||
+ | |||
+ | // | ||
+ | // *** Turntable *** | ||
+ | // | ||
+ | |||
+ | /* - Die Anzahl verwendeter Ports muss bei PORT_CNT, die Portnummern bei PARTLY_USED_PORTS_TAB eingetragen werden | ||
+ | - Weiterhin pro Port 0 oder 1 bei der Signalsteuerung PORT_TYPE. | ||
+ | - Die letzte genutzte DCC-Adresse wird automatisch über eine Formel anhand der Anzahl Pors berechnet (LAST_USED_DCC_ADDR). | ||
+ | - Und die Polarisierung muss unten eingestellt werden. POLARISATION_CHANGE_PORT oder POLARISATION_RELAIS_LIST. | ||
+ | */ | ||
+ | |||
+ | #define PORT_CNT | ||
+ | #define PARTLY_USED_PORTS | ||
+ | |||
+ | #if PARTLY_USED_PORTS | ||
+ | #define PARTLY_USED_PORTS_REFERENCE | ||
+ | # | ||
+ | #define PORT_CNT | ||
+ | |||
+ | // Gleis 1 = 9: | ||
+ | #define PARTLY_USED_PORTS_TAB | ||
+ | |||
+ | #define SHOW_REAL_PORT | ||
+ | |||
+ | #endif | ||
+ | |||
+ | #define CIRCUMFERENCE | ||
+ | |||
+ | |||
+ | #define OFFSET_PORT_POSITION | ||
+ | #define OFFSET_PORT_POSITION_U_TURN | ||
+ | |||
+ | |||
+ | /* | ||
+ | Tipp: | ||
+ | ----- | ||
+ | |||
+ | Man kann das Raster, in dem die Ports initial angelegt werden auch kleiner machen, z.B. 0,1 Grad genau. Hierzu muss man folgendes eintragen: | ||
+ | |||
+ | #define PORT_CNT | ||
+ | #define PARTLY_USED_PORTS | ||
+ | |||
+ | #if PARTLY_USED_PORTS | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | # | ||
+ | #endif | ||
+ | |||
+ | Im Prinzip teilt das den Vollkreis in 3600 Ports/ | ||
+ | |||
+ | Grad | ||
+ | 30° 1 | ||
+ | 135° " | ||
+ | 210° 7 | ||
+ | 315° " | ||
+ | */ | ||
+ | |||
+ | |||
+ | // | ||
+ | // *** Signalsteuerung *** | ||
+ | // | ||
+ | #define ADVANCED_SIGNAL_CONTROL | ||
+ | |||
+ | // Option 1: wenn PARTLY_USE_PORTS = 0 | ||
+ | // Gleisabgang | ||
+ | // #define PORT_TYPE | ||
+ | |||
+ | // Option 2: wenn PARTLY_USE_PORTS = 1 | ||
+ | #define PORT_TYPE | ||
+ | // als Beispiel hier: bei 26 Ports sind einige aktiv, einige sind blind! | ||
+ | |||
+ | |||
+ | // | ||
+ | // *** Polarization relays *** | ||
+ | // | ||
+ | #define POLARISATION_RELAIS_PIN | ||
+ | #define POLARISATION_RELAIS_INVERS | ||
+ | |||
+ | #define POLARISATION_CHANGE_PORT_START | ||
+ | #define POLARISATION_CHANGE_PORT_END | ||
+ | |||
+ | /* Teilt die Drehscheibe für die Polarisierung quasi in 2 Hälften. | ||
+ | Ab dem hier definierten START-Port (externe Nummerierung) wird das Polarisationsrelais bis zum i.d.R. gegenüberliegenden END-Port eingeschaltet. | ||
+ | Die hier eingegebenen Zahlen müssen zwischen 1 und PORT_CNT liegen! START muss < END sein! | ||
+ | Die eine Hälfte der Scheibe ist Polung 1, die andere Polung 2. | ||
+ | Spart einige Bytes ;-) | ||
+ | -1 = Polarisation gemäß der unten stehenden Liste | ||
+ | */ | ||
+ | |||
+ | //#define POLARISATION_RELAIS_LIST | ||
+ | |||
+ | |||
+ | // | ||
+ | // *** Direction and control settings *** | ||
+ | // | ||
+ | #define ROTATIONSWITCH_DIRECTION | ||
+ | -1 = Drehen nach rechts höhere Port-Nr.; links = niedrigere Port-Nr.*/ | ||
+ | |||
+ | #define USE_ROTARY_ENCODER_MOVEMENT | ||
+ | |||
+ | #define SPEED_POTI_DIRECTION | ||
+ | |||
+ | #define ROTATIONSWITCH_MENU_DIR | ||
+ | #define TURNTABLE_DIRECTION | ||
+ | |||
+ | |||
+ | // Wenn fahrtdauerabhängige Sounds verwendet werden, dann muss ENCODER_LOGIC = 1 sein, sonst passen die Sounds nicht zur Bewegung ;-) | ||
+ | #define ENCODER_LOGIC | ||
+ | - Bewegung wird erst gestartet, wenn Encoder-Taste gedrückt wird | ||
+ | - während der Bewegung kann die anzufahrende Portnummer nicht mehr geändert werden | ||
+ | - Taste während Bewegung ruft das Menü auf und stoppt die Bewegung | ||
+ | 0 = Encoder startet Bewegung, während Bewegung kann weiter gedreht werden*/ | ||
+ | |||
+ | #define DIRECTION_CHANGE_POSSIBLE | ||
+ | |||
+ | #define MOVE_STATUS_INVERS | ||
+ | - 1 and turntable moving = Optokoppler sperrt. | ||
+ | - 1 + Stillstand: OK steuert durch und erzeugt eine Rückmeldung. | ||
+ | Viele Steuerungssoftwarepakete erwarten ein Signal, wenn die DS steht (d.h. angekommen ist)*/ | ||
+ | |||
+ | // | ||
+ | // *** Schrittmotor *** | ||
+ | // | ||
+ | #define FIXED_STEPS_PER_ROUND | ||
+ | |||
+ | #define FIXED_STEPS_HAS_CONTACT | ||
+ | |||
+ | #define NOT_ENABLE_PIN | ||
+ | The pin of the module must be left open (std 6) | ||
+ | Use Pin 6 for TMC2208 */ | ||
+ | #define ENABLE_ALWAYS_ON | ||
+ | | ||
+ | Set to 1 for a powerful stepper without gearbox because the magnetic field will change the position when powered of | ||
+ | If a stepper driver like the TMC2100 is used it's better to disable the NOT_ENABLE_PIN (-1) to activate the automatic power saving mode instead. | ||
+ | Bei Einsatz TMC2208 sollte man den Wert 1 verwenden! */ | ||
+ | |||
+ | #define STEPPER_RAMP_LENGTH | ||
+ | Set to 50 if 1/16 steps are used (MS1 - MS3 connected do +5V)*/ | ||
+ | |||
+ | #define MOVE_SPEED1 | ||
+ | #define TURNBACK_SPEED | ||
+ | |||
+ | #define USE_TURNBACK | ||
+ | |||
+ | #define MOVE_SPEED2 | ||
+ | #define MOVE_SPEED3 | ||
+ | #define MOVE_SPEED4 | ||
+ | |||
+ | #define CLEARANCE_TEST_SPEED | ||
+ | #define CALIBRATE_SPEED_FAST | ||
+ | #define CALIBRATE_SPEED_SLOW | ||
+ | #define ZERO_DETECTION_OFFSET | ||
+ | |||
+ | #define MIN_STEPS_HAS_CONTACT | ||
+ | | ||
+ | is below this value. Set to 0 to disable the check (Always move fast to the contact point) | ||
+ | | ||
+ | 0 = kein Anfahrruckler | ||
+ | TODO: evtl. muss die Routine, die das Getriebespiel " | ||
+ | |||
+ | #define ALWAYS_CALIBRATE_AT_START | ||
+ | |||
+ | #define ADVANCED_REFERENCE_DETECTION | ||
+ | |||
+ | |||
+ | // | ||
+ | // *** OLED *** | ||
+ | // | ||
+ | #define OLED_TYP | ||
+ | #define USE_u8x8 | ||
+ | #define SHOW_POSITION_MAINSCREEN | ||
+ | |||
+ | // | ||
+ | // ** Flashing & light setup *** | ||
+ | // | ||
+ | #define MOVING_FLASH_INVERS | ||
+ | #define MOVING_FLASH_MODE | ||
+ | #define HOUSE_BRIGHTNESS | ||
+ | |||
+ | // | ||
+ | // *** sketch internal parameters *** | ||
+ | // | ||
+ | #define BITSCHIEBER | ||
+ | #define SPEED_POTI_MID_RANGE | ||
+ | #define SPEED_POTI_CENTER | ||
+ | |||
+ | #define ANALOG_SPEED_DIVISOR | ||
+ | #define MIN_ANALOG_SPEED | ||
+ | |||
+ | #define ALWAYS_CHECK_STEPS_ONE_TURN | ||
+ | |||
+ | #define ASK_TO_UPDATE_ALL | ||
+ | |||
+ | #define ALWAYS_SET_ZERO_IN_POS_DIR | ||
+ | |||
+ | |||
+ | // | ||
+ | // *** Sound Setup *** | ||
+ | // | ||
+ | #define DFPLAYER | ||
+ | #define JQ6500 | ||
+ | #define USE_SOUNDMODULE | ||
+ | |||
+ | #define USE_SOUND_SERIAL | ||
+ | |||
+ | #define SOUNDMODULE_VOLUME | ||
+ | #define DELAY_TURN_START_SOUND | ||
+ | Bei Verwendung eines DFPlayers ca. 300 ms dazu addieren, da dieses Soundmodul verzögert startet über softwareserial*/ | ||
+ | #define SOUND1_FILENR | ||
+ | #define SOUND2_FILENR | ||
+ | #define SOUND_CONTINUOUS_MOVE | ||
+ | |||
+ | #define FAHRTDAUER_MESSEN | ||
+ | #define ADVANCED_SOUND | ||
+ | |||
+ | 1 = die Fahrtdauer wird berechnet und ein entsprechender langer Sound gestartet, hierfür brauchen wir mehrere Files auf dem Soundmodul. | ||
+ | Jedes file entält Hupen, Anfahren, Fahren, Bremsen bis zum Stopp und abschließendes Hupen. Der variable Anteil ist das Fahren, das muss solange hintereinander kopiert werden, dass es für die entsprechende Fahrtstrecke reicht | ||
+ | Ein separater Sound beim Stoppen (Hupen) wird nur bei manuellem Stopp abgespielt, beim auto. Fahren ist der sound bereits im Fahrgeräusch enthalten | ||
+ | ENCODER_LOGIC dann auf 1 setzen (siehe oben)*/ | ||
+ | |||
+ | #define DCC_SOUNDFILE_1 | ||
+ | #define DCC_SOUNDFILE_2 | ||
+ | #define DCC_SOUNDFILE_3 | ||
+ | #define DCC_SOUNDFILE_4 | ||
+ | #define DCC_SOUNDFILE_5 | ||
+ | #define DCC_SOUNDFILE_6 | ||
+ | // | ||
+ | // *** Pins *** | ||
+ | // | ||
+ | |||
+ | // n/a --> alle aus dem Hauptsketch verwenden! | ||
+ | |||
+ | |||
+ | // | ||
+ | // *** DCC *** | ||
+ | // | ||
+ | |||
+ | #define DCC_OFFSET | ||
+ | |||
+ | #define DCC_WAITING_TIME | ||
+ | |||
+ | #define DCC_MAERKLIN_7687_COMPATIBLE | ||
+ | |||
+ | #if DCC_MAERKLIN_7687_COMPATIBLE == 1 | ||
+ | #define LAST_USED_DCC_ADDR | ||
+ | #else | ||
+ | #define LAST_USED_DCC_ADDR | ||
+ | #endif | ||
+ | |||
+ | // Momentan 26 (von 48) genutzte Ports = { 1, 2, 3, 5, 6, 8, 11, 13, 15, 17, 19, 21, 23, 25, 26, 27, 29, 30, 32, 35, 37, 39, 41, 43, 45, 47 } | ||
+ | |||
+ | #if DCC_MAERKLIN_7687_COMPATIBLE == 1 | ||
+ | // Es werden nur für die Ports im ersten Halbkreis DCC-Adressen benötigt | ||
+ | // Bei 26 Ports braucht man hier also 13 DCC-Adressen (= 13 Zeilen) | ||
+ | |||
+ | #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, | ||
+ | |||
+ | #else | ||
+ | // DCC-Adressen für den kompletten Vollkreis notwendig! | ||
+ | // Bei 26 Ports braucht man hier auch 26 DCC-Adressen (= 26 Zeilen) | ||
+ | |||
+ | #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, | ||
+ | DCC_PORT_ADDR(25, | ||
+ | DCC_PORT_ADDR(26, | ||
+ | |||
+ | // Bei mehr als 41 Einträgen/ | ||
+ | // Workaround: dann müssen die zusätzlichen Zeilen in das #define ... LIST_2 aufgenommen werden ;-) | ||
+ | |||
+ | /* #define DCC_PORT_ADDR_LIST_2 | ||
+ | DCC_PORT_ADDR(28, | ||
+ | DCC_PORT_ADDR(29, | ||
+ | DCC_PORT_ADDR(30, | ||
+ | DCC_PORT_ADDR(31, | ||
+ | DCC_PORT_ADDR(32, | ||
+ | DCC_PORT_ADDR(33, | ||
+ | DCC_PORT_ADDR(34, | ||
+ | DCC_PORT_ADDR(35, | ||
+ | DCC_PORT_ADDR(36, | ||
+ | DCC_PORT_ADDR(37, | ||
+ | DCC_PORT_ADDR(38, | ||
+ | DCC_PORT_ADDR(39, | ||
+ | DCC_PORT_ADDR(40, | ||
+ | DCC_PORT_ADDR(41, | ||
+ | DCC_PORT_ADDR(42, | ||
+ | DCC_PORT_ADDR(43, | ||
+ | DCC_PORT_ADDR(44, | ||
+ | DCC_PORT_ADDR(45, | ||
+ | DCC_PORT_ADDR(46, | ||
+ | DCC_PORT_ADDR(47, | ||
+ | DCC_PORT_ADDR(48, | ||
+ | */ | ||
+ | |||
+ | #endif | ||
+ | |||
+ | // ggf. hier weitere Zeilen ergänzen, wenn zusätzliche DCC-Befehle für weitere Ports benötigt werden | ||
+ | // die letzte DCC-Adresse (hier 241) muss sich oben aus der # | ||
+ | |||
+ | |||
+ | // | ||
+ | // *** Tastenauswertung *** | ||
+ | // | ||
+ | |||
+ | // Das #define definiert die 4 Schwellwerte für die 4 Taster auf der Panelplatine hier in der Config-Datei | ||
+ | // Bei Änderungen | ||
+ | |||
+ | #define BUTTON_THRESHOLDS | ||
+ | |||
+ | #define HOME_RUN_PORT 26 // wird bei der Tastersteuerung verwendet, bei einem entsprechenden Tastendruck fährt die DS zum angegebenen Port | ||
+ | |||
+ | /* folgende Aktionen stehen für die Taster zur Verfügung: | ||
+ | |||
+ | B_Toggle_House() | ||
+ | B_Toggle_Sound() | ||
+ | B_Toggle_Signal_House() | ||
+ | B_Toggle_Signal_Opposite() | ||
+ | B_Signal_House_red() | ||
+ | B_Signal_House_white() | ||
+ | B_Signal_Opp_red() | ||
+ | B_Signal_Opp_white() | ||
+ | B_U_Turn_CW() | ||
+ | B_U_Turn_CCW() | ||
+ | B_Home_Run() | ||
+ | B_Toggle_Flash() | ||
+ | Play_Sound(n) | ||
+ | Auto_Calibrate(1) | ||
+ | */ | ||
+ | |||
+ | // Hier den Tastern die Aktion zuordnen (kann man auch mehrfach machen, dann ";" | ||
+ | |||
+ | // kurzer Tastendruck: | ||
+ | #define BUTTON_1 | ||
+ | #define BUTTON_2 | ||
+ | #define BUTTON_3 | ||
+ | #define BUTTON_4 | ||
+ | |||
+ | // langer Tastendruck: | ||
+ | #define BUTTON_1_L | ||
+ | #define BUTTON_2_L | ||
+ | #define BUTTON_3_L | ||
+ | #define BUTTON_4_L | ||
</ | </ | ||