Benutzer-Werkzeuge

Webseiten-Werkzeuge


playground:playground

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
playground:playground [2021/03/08 22:00] nessiplayground:playground [2021/11/22 14:12] nessi
Zeile 1: Zeile 1:
 ====== PlayGround ====== ====== PlayGround ======
- 
-====== Drehscheibe ====== 
- 
-===== Kalibrierung der Drehscheibe ===== 
- 
-Voraussetzung: 
-Die Drehscheibe wird sich nur im Idealfall spielfrei und völlig gleichmäßig ohne zu ruckeln drehen. Gerade bei Selbstbau-Drehscheiben, wie meiner, werden bei einer Umdrehung und bei Richtungswechsel durch Abbremsen und Beschleunigen sowie unterschiedliche Reibung Microsteps verloren gehen. Die Steuerung der Drehscheibe ist so ausgelegt, dass diese Ungenauigkeiten in einem großen Bereich ausgeglichen werden können. 
    
-Damit der Stepper aber 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. Die in den Datenblättern angegebenen Versorgungsspannungen sind für uns nicht wichtig. Diese bezieht sich auf den Betrieb mit einer einfachen, nicht Strom geregelten Stepper-Platine. Bei der A4988 und allen anderen dieser kleinen Platinen wird der Strom automatisch geregelt. Er wird über das Poti auf der Platine eingestellt (über die Spannung am Poti). +**Formsignale mit dem Mini-Stepper bewegen** 
- +
-Bei den relativ schnellen Geschwindigkeiten, welche wir verwenden, muss die Versorgungsspannung unbedingt größer sein, weil eine Spule den Strom beim Einschalten nicht sofort annimmt. Bei einer höheren Spannung geht das schneller. Dabei muss man beachten, dass die Spannung ständig ein und ausgeschaltet wird, wenn sich der Motor dreht. Wenn die Spannung zu gering ist, dann gehen Schritte verloren. +
- +
-=> **Die Schaltung sollte mit 14V (mindestens) und ca. 18V betrieben werden. +
-** +
- +
-Beispiele: +
-Flacher Stepper NEMA 23: +
-  * TMC2208 / TMC2100: **0.628V**  +
-  * DRV8825: **0.32V** +
-  * A4988: **0.512V** +
- +
-NEMA17: +
-  * TMC2208 / TMC2100: **1.20 V** +
-  * DRV8825: **0.60V** +
-  * A4988: **0.960V** +
- +
-Spielzeug Schrittmotor: +
-  * TMC2208 / TMC2100: 0.080V = **80mV** +
-  * DRV8825: 0.035V = **35mV** +
-  * A4988: 0.064V = **64mV** +
- +
-NEMA17 mit 27:1 Getriebe: +
-  * TMC2208 / TM2100: **0.314V** +
-  * DRV8825: **0.16V** +
-  * A4988: **0.128V** +
- +
- +
-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 wesentlichen: +
-  Anzahl der benötigten Ports (in meinem Fall sind vier Ports vorgesehen) #define PORT_CNT +
-  DCC_Port_Address_List anpassen #define DCC_PORT_ADDR_LIST +
-  * Polarisation ein/ausschalten je nach System #define POLARISATION_RELAIS_PIN  A1  // Polarisation Relais for dual rail system (Set to -1 if not used)  +
-  * Zur Kalibrierung den DEBUG-Mode einschalten, damit im seriellen Monitor die Werte ausgelesen werden können  +
- #define NABLE_DPRINTF 1 //Debug Ausgaben ein +
-  * Bei Bedarf Einstellungen der Ausrichtungen bzw Drehrichtung von Drehscheibe, Potentiometer, Dreh/Drückknopf und Display vornehmen +
-  * Bei Bedarf Änderungen an den Einstellungen der verschiedenen Drehgeschwindigkeiten vornehmen. +
- +
-Beispiel meiner Turntable_Config.h-Datei. +
- +
- +
-HIER EINFÜGEN +
- +
-==== 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 ist abgeschlossen sein, d.h. Hall-Sensor/Magnet und die Gleise müssen positioniert sein. Die Stromversorgung und der NANO über den USB-Port sind angeschlossen.  Über die ARDUINO IDE den seriellen Monitor mit der Einstellung „Neue Zeile und 9600 Baud“ starten.  
-  
-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.  
  
-           Angezeigt werden im seriellen Monitor: +Quelle:** MLL Stammtisch Mai 2021**
-                      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+Tipps zu den Platinen, zum Einbau des Steppers und erste grundsätzliche Überlegungen zur Steuerung mit der MLL sind vom Anfang des Videos bis Minute 32 zu finden
-  * Diesen Vorgang mehrfach wiederholenum verschiedene Ergebnisse zu erhalten.+Ab Minute 33 wird die Steuerung des zweibegriffigen Formsignals vorgeführtdie im Folgenden erläutert wird.
  
-Bei mir sieht das Ergebnis so aus:+**Benötigte Teie:**
  
 +  * Hauptplatine über USB- Kabel mit PC verbunden
 +  * Stromversorgung für Steppermotor
 +  * Formsignal mit eingebautem Mini-Steppermotor
 +  * Bestückte Stepperplatine mit einer (550) oder drei Anschlussmöglichkeiten (551) für Stepper-Motoren
 +**
 +Ablauf:**
  
- (Bild SerMon_1 einfügen)+Den Pattern-Configurator aufrufen und, wenn bisher noch nicht durchgeführt, aus den Beispielen die Signale laden.  
 +Das „__Dep Signal4__“ Beispiel aufrufen und über die Schaltfläche **Neues Blatt**  eine Kopie anlegen. Die Einstellungen übernehmen und einen neuen Namen vergeben, hier "Formsignal“. Das Beispiel wird als Grundlage verwendet.
  
 +Nun in das Blatt „Formsignal“ wechseln. 
  
-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 den gleichen Korrekturfaktor. In der „EE Data“ Tabelle ist dann die zweite Spalte ausgefüllt (Nicht 2000000000). Die dritte Spalte ist für „reverse“, eine 180 Grad Drehung. Auch die kann man separat speichern. 
  
-Hört sich kompliziert an, ist aber mit etwas Konzentration recht leicht durchzuführen: +Für die Steuerung des Steppers brauchen wir zwei Steuerbefehle:
- +
-  - 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, da dann das Spiel beim Richtungswechsel ein exaktes Ergebnis verhindert und sich die Position nicht speichern lässt. Zum exaktem Ausrichten auf den letzten Millimetern kann auch über das Menü die Funktion „Move manual“ ausgewählt werden und die Drehscheibe in Microsteps bewegt werden. Aber auch hier nur in eine Richtung. Ist man über das Ziel hinausgeschossen, den ganzen Vorgang von Port 4 aus wiederholen. +
-  - Ist die Drehscheibe exakt positioniert über das Menü „Save Position“ auswählen. +
-  - Es erscheint „Select port to be saved“, nun über den Dreh/Drückknopf die gewünschte Port-Nummer auswählen, hier die „1“, und zur Bestätigung erscheint „Position saved to port 1“. +
-  - Nun zu Port 2 wechseln bzw. zu einer Position, die auf der anderen Seite von Port 1 liegt, um wie oben beschrieben, die Port-Position von beiden Seiten aus zu sichern. +
-  - 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.  +
- +
-(Bild SerMon_02 einfügen) +
- +
- +
- +
-==== 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, dann wird der Nullpunkt nur dann neu bestimmt, wenn sie bereits eine Umdrehung in negativer Richtung gedreht wurde.  +
- +
-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 über den seriellen Monitor === +
- +
-   m-1000  Move 1000 micro steps counter clock wise +
-   m+1000  Move 1000 micro steps clock wise +
-   p+123   Move to step position +123 +
-   s5000   Set the speed to 5000 +
-   ?       Print position +
-   w+2     Write port position 2 for the positive turning direction (w-2 write the neg. direction) +
-   ce      Clear EEProm and restart +
-         Next Port +
-         Prior Port +
-         Move to Port 7 +
-         Reverse turn Table +
-         Sound On/Off +
- +
  
-===== Meine Turntable_Config.h Datei =====+  * Stepper ein-/ausschalten – über den roten Kanal mit dem Wert 127 
 +  * Drehrichtung des Steppers – über den gelben Kanal, Wert 255 eine Drehrichtung, Wert 0 entgegengesetzt
  
-<code> +Der blaue Kanal kann zur Steuerung einer LED verwendet werden, z.B. der Signalbeleuchtung. Diese Funktion nutze ich im Prog-Gen, nicht hier im Pattern-Config.
-// Configuration for the stepper program +
-// +
-// Add all individual config lines in this file +
-//   Example: +
-//   #define PORT_CNT                       24          // Number of ports (Maximal 80)+
  
 +Daher den Wert für die **Ausgabekanäle auf „2“** einstellen. 
 +In der unteren Tabelle könne die Werte für die anderen Ausgabekanäle gelöscht werden.
  
 +Für die anderen Einstellungen sind folgende Werte einzutragen bzw. zu ändern:
  
 +  * Bits pro Wert: „8“ 
 +  * Mode: „PM_SEQUENZ_NO_RESTART“   (Flanken getriggerter einmalige Sequenz. Kein Neustart während der Laufzeit)
 +  * Analoges Überblenden: „0“  (abschaltet das Überblenden ab)
 +  * Goto Activierung: „Binary“ (Bild einfügen, mit dieser Einstellung kann dann im Prog-Gen der Ein/Aus-Schalter gewählt werden, um ein mehrfaches Bewegen der Signalflügel in die selbe Richtung auszuschließen.)
  
-#define ALLWAYS_CHECK_STEPS_ONE_TURN        0           // Always check the steps for one turn at power on +Bild Prog-Gen einfügen
-#define PORT_CNT                            4           // Number of ports +
-#define CIRCUMFERENCE                       527.84      // 178 mm * Pi = circumference of the turntable [mm] +
-#define ROTATIONSWITCH_DIRECTION            -1           // Set from 1 to -1 to change the direction of the rotation switch +
-#define ROTATIONSWITCH_MENU_DIR             -1          // Set from 1 to -1 to change the direction of the rotation switch in the menu +
-#define TURNTABLE_DIRECTION                           // Set to -1 to change the rotation / port number direction +
-#define TURNBACK_SPEED                      15000       // Speed used for TurnBackAndSetZero +
-#define NOT_ENABLE_PIN                      -1           // Set to -1 if the stepper driver has an automatic power mode like the TMC2100 +
-                                            // The pin of the module must be left open (std 6) +
-#define STEPPER_RAMP_LENGTH                 100         // Steps to speed up the stepper to prevent loosing steps +
-                                                         // Set to 50 if 1/16 steps are used (MS1 - MS3 connected do +5V) +
-#define MOVE_SPEED1                         5000       // Default speed and activated when DCC_SET_SPEED1_ADDR is received +
-#define MOVE_SPEED2                         4000       // Speed activated when DCC_SET_SPEED2_ADDR is received +
-#define MOVE_SPEED3                         3000       // Speed activated when DCC_SET_SPEED3_ADDR is received +
-#define MOVE_SPEED4                         2000        // Speed activated when DCC_SET_SPEED4_ADDR is received +
-#define POLARISATION_RELAIS_PIN             -1          // Polarisation Relais for dual rail system (Set to -1 if not used)  +
-#define OLED_TYP                            91          // Tested with the following displays +
-#define MOVING_FLASH_INVERS                           // Normal: 0 = LED connected to GND +
-#define MOVING_FLASH_MODE                             // 1 = Blink, 2 double flash +
-#define ENABLE_DPRINTF     1 //Debug Ausgaben ein +
-#define SPEED_POTI_DIRECTION                1           // Set to -1 to change the direction of the speed poti +
-#define SPEED_POTI_MID_RANGE                50         // Range of the speed poti which is 0  (Old 50) +
-#define SPEED_POTI_CENTER                   512         // Center position of the speed poti (Normaly 512) +
-#define ANALOG_SPEED_DIVISOR                30 // Divisor used to calculate the analog speed with the poti (std 8, 50) +
-#define CLEARENCE_TEST_SPEED                25000       // Speed used in the clearance test +
-#define CALIBRATE_SPEED                     25000       // Speed used for the zero point and total number of stepps detection+
  
-#define STEP_PIN                            9        // New Pin 9, Testboard 4 +Über die Taste **„Programm Generator“** die Daten zum Prog-Gen schicken. 
-#define DCC_PORT_ADDR_LIST                  DCC_PORT_ADDR(1, 229, RED), \ +Im Prog-Gen die Funktion an die gewünschte Stelle einfügen. 
-     DCC_PORT_ADDR(2, 229, GRN), \ +
-                                            DCC_PORT_ADDR(3, 230, RED), \ +
-                                            DCC_PORT_ADDR(4, 230, GRN)+
  
-#define LAST_USED_DCC_ADDR                  DCC_CHKADDR(230GRN      // If wrong limmits are used an "warning: division by zero" will be generated+Hier ist ein neues BlattDCC Test(2), für Testzwecke angelegt worden. 
  
 +  * Zunächst nur die Zeilen  **4** (Heartbeat) und 11 bis 13 aktivieren und zum Arduino schicken. Diese Zeilen sind zur erstmaligen Einstellung des Signals. 
 +  * Zeile **11** ist der rote Kanal, der den Stepper über „ ROT/GRÜN) ein- bzw. ausschaltet. 
 +  * Über Zeile **12** kann die Drehrichtung bestimmt werden. Eingeschaltet (GRÜN) wird der Wert 255 gesendet, ausgeschaltet (ROT) der Wert 0 und damit die entgegengesetzte Drehrichtung. 
 +  * Zeile **13** dient zum Schalter der Signalbeleuchtung. Diese Funktion hat keinen Einfluss auf den Stepper und muss nicht genutzt werden. 
  
  
-TEXT+Nach der Einstellung des Signals können die Zeilen __11 bis 13 deaktiviert__ und die __Zeilen 6, 8, 9 aktiviert__ werden.
  
-</code>+  * Mit der Zeile **6** wird der letzte Zustand gespeichert „#define ENABLE_STORE_STATUS()“. Damit wird erreicht, dass beim nächsten Einschalten der Anlage, bei einem Reset des Nano oder nach Unterbrechung der Stromversorgung der letzte definierte Zustand wieder eingenommen wird. (Die letzten Zustände bei Signalen oder anderen per DCC, Selectrix oder CAN gesteuerten Funktionen werden gespeichert und beim nächsten Start wieder aktiviert. Wenn der Modus nicht aktiviert ist, dann sind die entsprechenden Funktionen abgeschaltet bzw. beginnen mit dem in in der Spalte "Start Wert" definierten Zustand.) 
 +  * Zeile** 8** beinhaltet die vom Pattern-Config erzeugte Funktion. Nach der Eingabe der Adresse muss der Typ als „Ein/Aus“ definiert werden, nicht als Taster!, um eine mehrfache Bewegung der Flügel des Signals in eine Richtung auszuschließen. 
 +  * Mit Zeile **9** kann bei Bedarf eine LED, z.B. die Signalbeleuchtung, geschaltet werden. 
  
playground/playground.txt · Zuletzt geändert: 2021/11/22 15:31 von 127.0.0.1