Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert sind; Die von diesem Forum gesetzten Cookies düfen nur auf dieser Website verwendet werden und stellen kein Sicherheitsrisiko dar. Cookies auf diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.
  • Willkommen zur 3D-Druck-Community, einer nichtkommerziellen,
  • werbefreien und privaten Plattform rund um das Thema 3D-Drucken
  • vorrangig im deutschsprachigen Raum. Von User für User.
Hallo, Gast! Anmelden Registrieren


Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
TMC2208 per UART an Anycubic i3 Mega anbinden
#1
Hallo,

ich möchte bald meine 5x TMC2208 (Fystec) per UART an mein TriGorilla 1.4 Board anbinden und ich habe zwei Möglichkeiten gefunden.

Eine Sparsame, wo man insgesamt nur 5 Pins auf dem Mainboard benötigt.
Diese Möglichkeit ist hier zu sehen (gleiches Board wie meins): https://cdn.thingiverse.com/renders/4b/5e/c8/a6/ba/e2ac85a06a111b6b7c044d936fe50d8e_preview_featured.jpg
Quelle: https://www.thingiverse.com/thing:2901190

Zweite Möglichkeit, wo man insgesamt 10 Pins auf dem Mainboard benötigt, dort wird vom Stepper Treiber noch ein 1K Ohm Widerstand auf einem Pin zwischen geschaltet.
Quelle: https://www.instructables.com/id/UART-This-Serial-Control-of-Stepper-Motors-With-th/

Spricht gegen die Lösung mit den 5 Pins irgendwas dagegen, also hat man dadurch Nachteile?

Dann würde ich das eher begrüßen, als 10 Pins raus zu suchen. Ich habe zwar wohl genügend freie PINS: https://nopaste.xyz/?2bd3b7ee34406408#zo4cdwIRfezkoDLK2jQFk4u1WZFP1Z+Z72UUlIxO2aY=
Allerdings ob die auch alle auf der Platine zu finden sind, muss ich erst noch schauen.


Viele Grüße
Mark
 
to top
#2
Ich habe das jetzt erstmal so angeschlossen, also nur TX verbunden und RX ausgelassen und das scheint zu funktionieren.
Derjenige im Guide hat mir auch geantwortet: "TMC2208 has no super important features like sensorless homing, so in my opinion there is no need for RX from this driver."

Falls jemand mehr weiß, ob RX doch nützlich ist, nur raus damit. Smile

Code:
#if HAS_DRIVER(TMC2208)
  /**
   * TMC2208 stepper drivers
   *
   * Hardware serial communication ports.
   * If undefined software serial is used according to the pins below
   */
  #define X_SERIAL_TX_PIN    12
  #define X_SERIAL_RX_PIN    -1
  #define X2_SERIAL_TX_PIN   -1
  #define X2_SERIAL_RX_PIN   -1

  #define Y_SERIAL_TX_PIN    21
  #define Y_SERIAL_RX_PIN    -1
  #define Y2_SERIAL_TX_PIN   -1
  #define Y2_SERIAL_RX_PIN   -1

  #define Z_SERIAL_TX_PIN    6
  #define Z_SERIAL_RX_PIN    -1
  #define Z2_SERIAL_TX_PIN   -1
  #define Z2_SERIAL_RX_PIN   -1

  #define E0_SERIAL_TX_PIN   5
  #define E0_SERIAL_RX_PIN   -1
  #define E1_SERIAL_TX_PIN   -1
  #define E1_SERIAL_RX_PIN   -1
  #define E2_SERIAL_TX_PIN   -1
  #define E2_SERIAL_RX_PIN   -1
  #define E3_SERIAL_TX_PIN   -1
  #define E3_SERIAL_RX_PIN   -1
  #define E4_SERIAL_TX_PIN   -1
  #define E4_SERIAL_RX_PIN   -1
#endif
 
to top
#3
Hallo Mark79,

hast du deine Treiber exakt so angeschlossen wie auf der von dir verlinkten Thingiverse Seite? Oder hast du andere Pins verwendet? Die auf Thingiverse beschriebenen Pins sind D21, D14, D4 und D20. Du beschreibst in deinem Code Pin 12, 21, 6 und 5. Wie kommt es zu diesem Unterschied und wie fallen deine gesammelten Erfahrungen über die letzten Monate mit den angeschlossenen Treibern so aus?
Ich danke dir für deine Hilfe.

Gruß
 
to top
#4
Hallo kulfürst,

ich habe andere Pins verwendet, als in der Anleitung. Ich habe es später hinbekommen, die TMC2208 zusätzlich mit RX auf dem Trigorila Board zu verbinden.
Der Tick war, das bei RX die PINS interruptfähig sein müssen und davon gibt es nicht viele PINS auf dem Board.
Dazu muss man noch drauf achten, das es in Marlin zwei Datein für die PINS gibt und diese nicht für was anderes deklaiert sein dürfen. PINS.h und pins_TRIGORILLA_14.h

Jedoch habe ich das ganze wieder Rückgängig gemacht. Weil mir die Motoren dadurch zu laut wurden.
Dazu hat mich das Kabelwirrwarr genervt, als ich ein anderes Display eingebaut habe (smart full lcd controller), habe ich die UART Verbindung für die Stepper wieder rausgeruppt.

Ich meine, ich hatte das so deklariert:
#define X_SERIAL_TX_PIN 6
#define X_SERIAL_RX_PIN 12

#define Y_SERIAL_TX_PIN 5
#define Y_SERIAL_RX_PIN 11

#define E0_SERIAL_TX_PIN 21
#define E0_SERIAL_RX_PIN 51


Viele Grüße
Mark
 
to top
#5
Hallo,
ich möchte meinen Extruder TMC2208 per UART anbinden, ich habe mir von Mark die Pins genommen, genau genommen:
#define E0_SERIAL_TX_PIN 21
#define E0_SERIAL_RX_PIN 11

Ziel meiner ganzen Aktion ist Linear Advance benutzen zukönnen weswegen ich den Extruder mit spreadcycle laufen lassen muss.

Ich habe am Treiber die Pads zusammen gelötet und Kabel angeschlossen (TX mit 1 kOhm)

Nun habe ich die Firmware besten Wissens umgeschrieben, jedoch kann ich keine Verbindung mit UART herstellen.
Als Firmware Quellcode habe ich diese hier verwendet: https://www.thingiverse.com/thing:3249319
Nun zu den Änderungen die ich gemacht habe:
Code:
configuration.h

#define X_DRIVER_TYPE  TMC2208_STANDALONE
#define Y_DRIVER_TYPE  TMC2208_STANDALONE
#define Z_DRIVER_TYPE  TMC2208_STANDALONE
#define X2_DRIVER_TYPE TMC2208_STANDALONE
#define Y2_DRIVER_TYPE TMC2208_STANDALONE
#define Z2_DRIVER_TYPE TMC2208_STANDALONE
#define E0_DRIVER_TYPE TMC2208
#define E1_DRIVER_TYPE TMC2208_STANDALONE
#define E2_DRIVER_TYPE TMC2208_STANDALONE
#define E3_DRIVER_TYPE TMC2208_STANDALONE
#define E4_DRIVER_TYPE TMC2208_STANDALONE
Code:
configuration_adv.h

// @section tmc_smart

/**
 * To use TMC2130 stepper drivers in SPI mode connect your SPI pins to
 * the hardware SPI interface on your board and define the required CS pins
 * in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3 pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.).
 * You may also use software SPI if you wish to use general purpose IO pins.
 *
 * You'll also need the TMC2130Stepper Arduino library
 * (https://github.com/teemuatlut/TMC2130Stepper).
 *
 * To use TMC2208 stepper UART-configurable stepper drivers
 * connect #_SERIAL_TX_PIN to the driver side PDN_UART pin with a 1K resistor.
 * To use the reading capabilities, also connect #_SERIAL_RX_PIN
 * to PDN_UART without a resistor.
 * The drivers can also be used with hardware serial.
 *
 * You'll also need the TMC2208Stepper Arduino library
 * (https://github.com/teemuatlut/TMC2208Stepper).
 */
#if HAS_TRINAMIC

  #define R_SENSE           0.11  // R_sense resistor for SilentStepStick2130
  #define HOLD_MULTIPLIER    0.2  // Scales down the holding current from run current
  #define INTERPOLATE       true  // Interpolate X/Y/Z_MICROSTEPS to 256

  #define X_CURRENT          800  // rms current in mA. Multiply by 1.41 for peak current.
  #define X_MICROSTEPS        16  // 0..256

  #define Y_CURRENT          800
  #define Y_MICROSTEPS        16

  #define Z_CURRENT          800
  #define Z_MICROSTEPS        16

  #define X2_CURRENT         800
  #define X2_MICROSTEPS       16

  #define Y2_CURRENT         800
  #define Y2_MICROSTEPS       16

  #define Z2_CURRENT         800
  #define Z2_MICROSTEPS       16

  #define E0_CURRENT         850
  #define E0_MICROSTEPS       16

  #define E1_CURRENT         800
  #define E1_MICROSTEPS       16

  #define E2_CURRENT         800
  #define E2_MICROSTEPS       16

  #define E3_CURRENT         800
  #define E3_MICROSTEPS       16

  #define E4_CURRENT         800
  #define E4_MICROSTEPS       16

  /**
   * Use software SPI for TMC2130.
   * The default SW SPI pins are defined the respective pins files,
   * but you can override or define them here.
   */
  //#define TMC_USE_SW_SPI
  //#define TMC_SW_MOSI       -1
  //#define TMC_SW_MISO       -1
  //#define TMC_SW_SCK        -1

  /**
   * Use Trinamic's ultra quiet stepping mode.
   * When disabled, Marlin will use spreadCycle stepping mode.
   */
  //#define STEALTHCHOP

  /**
   * Monitor Trinamic TMC2130 and TMC2208 drivers for error conditions,
   * like overtemperature and short to ground. TMC2208 requires hardware serial.
   * In the case of overtemperature Marlin can decrease the driver current until error condition clears.
   * Other detected conditions can be used to stop the current print.
   * Relevant g-codes:
   * M906 - Set or get motor current in milliamps using axis codes X, Y, Z, E. Report values if no axis codes given.
   * M911 - Report stepper driver overtemperature pre-warn condition.
   * M912 - Clear stepper driver overtemperature pre-warn condition flag.
   * M122 S0/1 - Report driver parameters (Requires TMC_DEBUG)
   */
  #define MONITOR_DRIVER_STATUS

  #if ENABLED(MONITOR_DRIVER_STATUS)
    #define CURRENT_STEP_DOWN     50  // [mA]
    #define REPORT_CURRENT_CHANGE
    #define STOP_ON_ERROR
  #endif

  /**
   * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD.
   * This mode allows for faster movements at the expense of higher noise levels.
   * STEALTHCHOP needs to be enabled.
   * M913 X/Y/Z/E to live tune the setting
   */
  //#define HYBRID_THRESHOLD

  #define X_HYBRID_THRESHOLD     100  // [mm/s]
  #define X2_HYBRID_THRESHOLD    100
  #define Y_HYBRID_THRESHOLD     100
  #define Y2_HYBRID_THRESHOLD    100
  #define Z_HYBRID_THRESHOLD       4
  #define Z2_HYBRID_THRESHOLD      4
  #define E0_HYBRID_THRESHOLD     30
  #define E1_HYBRID_THRESHOLD     30
  #define E2_HYBRID_THRESHOLD     30
  #define E3_HYBRID_THRESHOLD     30
  #define E4_HYBRID_THRESHOLD     30

  /**
   * Use stallGuard2 to sense an obstacle and trigger an endstop.
   * You need to place a wire from the driver's DIAG1 pin to the X/Y endstop pin.
   * X, Y, and Z homing will always be done in spreadCycle mode.
   *
   * X/Y/Z_HOMING_SENSITIVITY is used for tuning the trigger sensitivity.
   * Higher values make the system LESS sensitive.
   * Lower value make the system MORE sensitive.
   * Too low values can lead to false positives, while too high values will collide the axis without triggering.
   * It is advised to set X/Y/Z_HOME_BUMP_MM to 0.
   * M914 X/Y/Z to live tune the setting
   */
  //#define SENSORLESS_HOMING // TMC2130 only

  #if ENABLED(SENSORLESS_HOMING)
    #define X_HOMING_SENSITIVITY  8
    #define Y_HOMING_SENSITIVITY  8
    #define Z_HOMING_SENSITIVITY  8
  #endif

  /**
   * Enable M122 debugging command for TMC stepper drivers.
   * M122 S0/1 will enable continous reporting.
   */
  #define TMC_DEBUG

  /**
   * M915 Z Axis Calibration
   *
   * - Adjust Z stepper current,
   * - Drive the Z axis to its physical maximum, and
   * - Home Z to account for the lost steps.
   *
   * Use M915 Snn to specify the current.
   * Use M925 Znn to add extra Z height to Z_MAX_POS.
   */
  //#define TMC_Z_CALIBRATION
  #if ENABLED(TMC_Z_CALIBRATION)
    #define CALIBRATION_CURRENT 250
    #define CALIBRATION_EXTRA_HEIGHT 10
  #endif

  /**
   * You can set your own advanced settings by filling in predefined functions.
   * A list of available functions can be found on the library github page
   * https://github.com/teemuatlut/TMC2130Stepper
   * https://github.com/teemuatlut/TMC2208Stepper
   *
   * Example:
   * #define TMC_ADV() { \
   *   stepperX.diag0_temp_prewarn(1); \
   *   stepperY.interpolate(0); \
   * }
   */
  #define TMC_ADV() {  }

#endif // TMC2130 || TMC2208
Code:
pins_TRIGORILLA_14.h

#define E0_STEP_PIN        26
#define E0_DIR_PIN         28
#define E0_ENABLE_PIN      24
#define E0_SERIAL_TX_PIN   21
#define E0_SERIAL_RX_PIN   11

// Servos
#if TRIGORILLA_VERSION == 0 // Default Trigorilla
  #ifdef NUM_SERVOS
  #define SERVO0_PIN      -1 //War vorher 11
 
to top
#6
Irgendwie erschliesst sich mir bei deiner Aktion nicht ganz der Sinn .......
Wenn du die TMC wegen der geplanten Linear Adv-Krücke eh im Spreadcycle laufen lassen musst kannst du, da es Lautstärkemässig dann eh keinen großen Unterschied macht, gleich zu z.B. LV8729 o.ä. greifen. Das spart dir einen Haufen zusätzlichen (unnötigen ?) Aufwand.
Gruß Markus



Sage es mir, und ich vergesse es. Zeige es mir, und ich erinnere mich. Lass es mich tun, und ich behalte es. (Konfuzius)

-> -> ->   Der Einstellfahrplan oder wie stellen wir unsere Drucker ein und mehr   <- <- <-
 
to top
#7
(21.05.2020, 22:02)Speedy schrieb: Irgendwie erschliesst sich mir bei deiner Aktion nicht ganz der Sinn .......
Wenn du die TMC wegen der geplanten Linear Adv-Krücke eh im Spreadcycle laufen lassen musst kannst du, da es Lautstärkemässig dann eh keinen großen Unterschied macht, gleich zu z.B. LV8729 o.ä. greifen. Das spart dir einen Haufen zusätzlichen (unnötigen ?) Aufwand.

Ja die TMCs hab ich schon lange Zeit, bin jetzt erst auf Linear Advance aufmerksam geworden und hab jetzt direkt nur die möglich mit Spreadcycle oder alten A4988 wieder rein. Was jetzt da sinnvoller ist weiß ich auch nicht aber da UART generell ja einige Vorteile hat wollte ich mal einen Schritt in die Richtung machen.
 
to top
#8
Ah,ok.
Check mal die Jumpersettings auf dem Board:
https://learn.watterott.com/de/silentstepstick/pinconfig/tmc2208/

Und schau mal hier rein, evtl. hilft dir das weiter:
https://www.3d-druck-community.de/thread-16195-page-12.html
Gruß Markus



Sage es mir, und ich vergesse es. Zeige es mir, und ich erinnere mich. Lass es mich tun, und ich behalte es. (Konfuzius)

-> -> ->   Der Einstellfahrplan oder wie stellen wir unsere Drucker ein und mehr   <- <- <-
 
to top
#9
(22.05.2020, 10:55)Speedy schrieb: Ah,ok.
Check mal die Jumpersettings auf dem Board:
https://learn.watterott.com/de/silentstepstick/pinconfig/tmc2208/

Und schau mal hier rein, evtl. hilft dir das weiter:
https://www.3d-druck-community.de/thread-16195-page-12.html

Ja, ich habe alle 3 mit einander verbunden sodass ich 2 getrennte Kabel von 2 Pins aus anschließen kann. Somit war es für mich einfacher den Widerstand einzulöten ohne dass ich mir ein Y-Kabel anfertigen muss.

Was ich auch mal irgendwo gelesen habe weil ja die UART Pins durchgängig sind heißt nach oben und unten zeigen, man dann die Pins nach unten abknipsen soll, damit das Board die Kommunikation nicht stört. Ist da was dran?
 
to top
#10
Hallo zusammen,

darf ich mich der Diskussion anschließen? Ich bin eigentlich nur ein Leser und versuche mir immer - soweit es geht - selbst zu helfen.

Dieses mal komme ich aber einfach nicht alleine weiter und benötige ein wenig Hilfe.

Ich habe einen Trigorilla14 mit Marlin 1.1.9 und vorschnell diese KOOKYE TMC2208 gekauft um meinen Kossel LP leiser zu machen. Dabei habe ich aber übersehen, dass diese V2.0 sind und keine solderpads, wie die sonst üblichen 2208 welche haben. Auch finde ich online keine Schaltplan dafür um herauszufinden wie ich den Treiber an den MB anschließen muss.

Ich möchte lediglich E0 auf Spreadcycle mode bringen um Linear Advance zu nutzen. Teaching Tech sagt zwar auf seinen Video dass 2208 auf Lagacy, Stealthchop und Standalone mode nicht mit Linear Advance funktionieren, gilt das ebenfalls für den Spreadcycle mode? Habe irgendwo gelesen dass es funktionieren soll - habe den link dazu nicht mehr - der Treiber muss aber dafür über UART angesprochen und entsprechend verlötet werden

Dazu habe ich die Pins NC, UART und der neben UART, der mit einen Strich und R8 verbunden ist, nach oben verlötet.

Ich habe in pins_ramps.h E0 RX & TX auf D42 & D43 gesetzt. Mit den Standard D14 D15 funktioniert es nicht, da D15 gleichzeitig auf Y+ gesetzt ist und so mein Endstop funktionslos stellt (Delta).

Weiter habe ich die sonstigen Installationsschritte wie auf der Marlin Trinamic drivers befolgt:
- in config.h X,Y,Z auf TMC2208_standalone und E0 aud TMC2208
- Bibliothek TMCStepper installiert.

Ich bin mir nicht sicher ob ich in config_acv.h  #define STEALTHCHOP aktivieren soll oder nicht.

Weiter habe ich einen Y-Kabel mit einen 1kOhm Widerstand gelötet und an D42 und D43 entsprechend angeschlossen.

Über Pronterface versuche ich dann mit M122 den status des Treibers abzulesen, aber egal wie ich ihn verbinde, ich lese nur Driver registers: E0 = 0x00:00:00:00

Die Beispiele der library wie bei Marlin troubleshooting vorgeschlagen habe ich noch nicht ausprobiert, da es ein bisschen umständlich wäre.

Ich bin einfach nur verwirrt über den gelabelten UART Pin der mit R8 (0,1Ohm) auf dessen Rückseite verbunden ist. Ich weiß, DAS ist der fehlende Solderpad den ich vermisse. Aber wieso funktioniert es denn nicht?!  

Von Haus aus bin ich weder E.Ing. noch Programmierer - bastle einfach nur gerne mit arduinos etc. Mit der IDE bin ich also schon vertraut. Ich hoffe nur das ich etwas völlig banales übersehen habe...

Würde mich über jeden Input freuen.

Danke

Edit_: Habe das Video nicht einbetten wollen ,sry.
 
to top
  


Möglicherweise verwandte Themen...
Thread Verfasser Replies Views Last Post
  Anycubic I3 - Mega S - X-Achse laut hörbar bei Geschwindigkeit Smarrel 9 487 07.01.2021, 12:25
Last Post: Smarrel
  MKC mit SKR 1.4 Turbo und TMC 2208 UART Fragen. Cupra-Bo 11 681 29.12.2020, 16:48
Last Post: PePa
  [Frage] TMC2208 Z Achse sackt ab Xanthan 4 389 26.12.2020, 13:34
Last Post: gafu
  Anycubic I3 Mega S - LED Ring um Hotend geht aus bei ca 65 °C HeadchargerNY 14 877 16.11.2020, 21:15
Last Post: gafu
  TMC2209 auf ein Ramps integrieren (UART + Sensorless Homing) Helge 3 659 06.10.2020, 10:22
Last Post: Helge



Browsing: 1 Gast/Gäste