Welcome! Log In Create A New Profile

Advanced

MK4DUO 4.3.6 + TMC2130SPI e 2 motori Z

Posted by whitedavil 
MK4DUO 4.3.6 + TMC2130SPI e 2 motori Z
May 03, 2018 05:48AM
Buon giorno a tutti.

Forse qualcuno si è già trovato di fronte a questo problema.

In pratica ho acquistato una MKS Gen 1.4 + 5x TMC2130 da me modificati per andare in SPI.

Configuro MK4Duo online, lo apro con arduino IDE e vado ad impostare i dati per il controllo dei TMC2130.

Il problema è il seguente:

Se configuro tutto per 1 solo motore Z, compilo correttamente mentre se compilo deccomentando anche il secondo motore Z mi da errori e non riesco a compilare il Fw.

configurazione TMC:
#if ENABLED(HAVE_TMC2130)

  // Select this if use software SPI. Choose pins in Configuration_pins.h
  //#define SOFT_SPI_TMC2130

  // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY
  #define X_IS_TMC2130
  //#define X2_IS_TMC2130
  #define Y_IS_TMC2130
  //#define Y2_IS_TMC2130
  #define Z_IS_TMC2130
  #define Z2_IS_TMC2130
  #define E0_IS_TMC2130
  //#define E1_IS_TMC2130
  //#define E2_IS_TMC2130
  //#define E3_IS_TMC2130
  //#define E4_IS_TMC2130
  //#define E5_IS_TMC2130

  /**
   * Stepper driver settings
   */

  #define R_SENSE           0.11  // R_sense resistor for SilentStepStick2130
  #define HOLD_MULTIPLIER    0.5  // 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         800
  #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

  #define E5_CURRENT         800
  #define E5_MICROSTEPS       16

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

  /**
   * Monitor Trinamic TMC2130 drivers for error conditions,
   * like overtemperature and short to ground.
   * In the case of overtemperature MK4duo 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.
   * M922 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       2
  #define Z2_HYBRID_THRESHOLD      2
  #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
  #define E5_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

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

  /**
   * Enable M922 debugging command for TMC stepper drivers.
   * M922 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
   * [github.com]
   *
   * Example:
   * #define TMC_ADV() { \
   *   stepperX.diag0_temp_prewarn(1); \
   *   stepperY.interpolate(0); \
   * }
   */
  #define  TMC_ADV() {  }

#endif // ENABLED(HAVE_TMC2130)

questo invece è lerrore che riporta il compilatore:

"C:\Users\xxxx\Desktop\xxxx\arduino-1.8.5-windows\arduino-1.8.5\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR   "-IC:\Users\xxxx\Desktop\xxxx\arduino-1.8.5-windows\arduino-1.8.5\hardware\arduino\avr\cores\arduino" "-IC:\Users\xxxx\Desktop\xxxx\arduino-1.8.5-windows\arduino-1.8.5\hardware\arduino\avr\variants\mega" "-IC:\Users\xxxx\Desktop\xxxx\arduino-1.8.5-windows\arduino-1.8.5\hardware\arduino\avr\libraries\SPI\src" "-IC:\Users\xxxx\Documents\Arduino\libraries\TMC2130Stepper-master\src" "-IC:\Users\xxxx\Desktop\xxxx\arduino-1.8.5-windows\arduino-1.8.5\libraries\LiquidCrystal\src" "-IC:\Users\xxxx\Documents\Arduino\libraries\U8glib\src" "C:\Users\xxxx\AppData\Local\Temp\arduino_build_473987\sketch\src\core\commands\commands.cpp" -o "C:\Users\xxxx\AppData\Local\Temp\arduino_build_473987\sketch\src\core\commands\commands.cpp.o"
In file included from C:\Users\xxxx\AppData\Local\Temp\arduino_build_473987\sketch\src\core\commands\gcode/gcode.h:118:0,

                 from C:\Users\xxxx\AppData\Local\Temp\arduino_build_473987\sketch\src\core\commands\commands.cpp:30:

C:\Users\xxxx\AppData\Local\Temp\arduino_build_473987\sketch\src\core\commands\gcode/feature/m911_m915.h: In function 'void gcode_M912()':

C:\Users\xxxx\AppData\Local\Temp\arduino_build_473987\sketch\src\core\commands\gcode/feature/m911_m915.h:82:57: error: 'extended_axis_codes' was not declared in this scope

       if (clearZ || clearAll) tmc_clear_otpw(stepperZ2, extended_axis_codes[TMC_Z2]);

                                                         ^

Uso la libreria SPI alla versione 1.0 nella cartella: C:\Users\xxxx\Desktop\xxxx\arduino-1.8.5-windows\arduino-1.8.5\hardware\arduino\avr\libraries\SPI 
Uso la libreria TMC2130Stepper-master alla versione 2.3.0 nella cartella: C:\Users\xxxx\Documents\Arduino\libraries\TMC2130Stepper-master 
Uso la libreria LiquidCrystal alla versione 1.0.7 nella cartella: C:\Users\xxxx\Desktop\xxxx\arduino-1.8.5-windows\arduino-1.8.5\libraries\LiquidCrystal 
Uso la libreria U8glib alla versione 1.19.1 nella cartella: C:\Users\xxxx\Documents\Arduino\libraries\U8glib 
exit status 1
Errore durante la compilazione per la scheda Arduino/Genuino Mega or Mega 2560.

Al momento sto usando la versione "portable" di arduino in quanto sono al lavoro e stavo facendo delle prove... winking smiley

Qualcuno, non necessariamente il @MagoKimbra, riesce a darmi un'indicazione di come risolvere questo problema?

Grazie a tutti
Re: MK4DUO 4.3.6 + TMC2130SPI e 2 motori Z
May 03, 2018 01:44PM
Ciao.

Scusa la domanda forse stupida, ma i due motori di Z li piloti con due drivers diversi?
se si, ...hai configurato opportunamente anche nel configuratore online?

Ciao

Edited 2 time(s). Last edit at 05/03/2018 01:45PM by laudix.


Salvatore.


--- Prusa i3 Steel (20x20x20)                        --- Prusa i3 Steel XL (30x30x30)
    Motori 200 passi                                     Motori 400 passi
    Stepper drive - DRV8825                              Stepper drive - DRV8825
    RAMPS 1.4                                            RADDS 1.5
    HotEnd IeC                                           HotEnd IeC
    FW MK4DUO 4.3.2                                      FW MK4DUO 4.3.5
Re: MK4DUO 4.3.6 + TMC2130SPI e 2 motori Z
May 03, 2018 04:51PM
Ciao, intanto grazie per la risposta.

Certamente, la scheda sopracitata è un upgrade.

Attualmente la stampante gira con una mks 1.3 sempre doppio z con un driver ciascuno e mk 4.3.5.

Ho provato a fare la stessa cosa nella 4.3.5 e mi da lo stesso errore, sempre e solo quando attivo il secondo tmc per il secondo motore z.

Analizzando il codice, mi sono reso conto che solo per il doppio z c'è una linea di codice diversa, mentre per esempio per il doppio x o y, questa linea di codice non è presente.

Ora scrivo da cell, ma domani posto la differenza del codice.

Il mio dubbio è :

Se "adeguo" il codice come per esempio per il doppio x, funzionerà o faccio danni....?

Mi sa che o mi risponde il sempre disponibile e gentile mago o non so se mi fido a provare.... Purtroppo arduino non lo conosco....
Re: MK4DUO 4.3.6 + TMC2130SPI e 2 motori Z
May 04, 2018 02:16AM
Ciao

Scusa ma per capire meglio... quindi provieni:
  • da una configurazione che prevedeva già due motori pilotati separatamente
  • da una configurazione con scheda e drivers che non hai indicato (ma non è importante)
  • da una configurazione con MK4DUO 4.3.5
E stai introducendo le seguenti modifiche:
  • Sostituzione vecchia scheda con una MKS Gen 1.4
  • Sostituzione dei drivers motore con 5x TMC2130 pilotati via SPI
  • Hai quindi preso il vecchio configuration_overall e da questo sei partito per generare la nuova configurazione
  • hai, quindi, introdotto le modifiche per i TMC2130 a mano (come previsto dato che non sono gestiti direttamente dal configuratore Online)

Corretto?

Potresti postare il tuo configuration_overall e i file che hai modificato per i TMC2130 per dargli una occhiata?

Ho dato poi una occhiata anche io al codice ed in effetti il vettore "extended_axis_codes" non è dichiarato e nei casi di X2 e Y2 alla funzione tmc_clear_otpw il secondo parametro viene passato in modo diverso.
Puoi provare a correggere la chiamata a quella funzione ma aspetterei una valutazione del mago prima di prenderla come buona.

Ho trovato questa segnalazione che sembra essere per un problema simile ma in altri punti del codice, mi sembra confermare la tua ipotesi... potresti collegarti a quella segnalazione e indicare che c'e' ancora una linea di codice con quello stesso problema.

Ciao

Edited 2 time(s). Last edit at 05/04/2018 02:27AM by laudix.


Salvatore.


--- Prusa i3 Steel (20x20x20)                        --- Prusa i3 Steel XL (30x30x30)
    Motori 200 passi                                     Motori 400 passi
    Stepper drive - DRV8825                              Stepper drive - DRV8825
    RAMPS 1.4                                            RADDS 1.5
    HotEnd IeC                                           HotEnd IeC
    FW MK4DUO 4.3.2                                      FW MK4DUO 4.3.5
Re: MK4DUO 4.3.6 + TMC2130SPI e 2 motori Z
May 04, 2018 03:11AM
Ciao, scusami per la risposta frettolosa.

ora argomento meglio il tutto.

Attualmente la stampante gira con una MKS 1.3 con doppio driver e doppio motore su Z con FW 4.3.5 senza alcun problema.

Ora, per espandere le potenzialità della stampante (taglio laser) e per questioni di silenziosità ho acquistato il seguente materiale CHE DEVO ANCORA MONTARE:
1) MKS gen 1.4
2) 5x TMC2130 con mod per SPI
3) 5x modulo protezione TMC con diodi di ricircolo

Ora stavo provando a configurare il tutto e sono incappato nel problema segnalato nel primo post.

Scusatemi, essendo un programmatore di MCU Picmicro, a volte do troppe cose per scontato.

Comunque, ho spulciato i file e ho trovato queste differenze:

nel seguente path: MK4duo\src\core\commands\gcode\feature nel file m911_m915.h trovo questa differenza (che dovrebbe essere quella a generare l'errore):

Per il doppio X viene gestita così:
#if ENABLED(X2_IS_TMC2130) || (ENABLED(X2_IS_TMC2208) && PIN_EXISTS(X2_SERIAL_RX))
      if (clearX || clearAll) tmc_clear_otpw(stepperX2, TMC_X2);
    #endif

Mentre per il doppio Z così:
    #if ENABLED(Z2_IS_TMC2130) || (ENABLED(Z2_IS_TMC2208) && PIN_EXISTS(Z2_SERIAL_RX))
      if (clearZ || clearAll) tmc_clear_otpw(stepperZ2, extended_axis_codes[TMC_Z2]);

Ciò che genera l'errore è questa stringa/variabile:
extended_axis_codes[TMC_Z2]
La quale non risulta essere dichiarata da nessuna parte, ho spulciato quasi tutti i file del FW senza trovare la dichiarazione necessaria.

Ho provato a ad adeguare la stringa come quella del doppio X e il Fw compila, ma purtroppo non posso provarlo.

Non conoscendo la logica del FW, ho qualche remora a fare modifiche alla cieca.

Di seguito allego il CONFIG_overall, non guardate gli endstop e qualche piccola altra cosetta, che devo aggiustare ma che non crea differenze con il problema che riscontro.

Quella segnalazione l'avevo vista, e considerando la data del "ticket" ho provato a configurare nel medesimo modo la ver. 4.3.5 ma riscontro sempre la stessa anomalia.

Spero di essere stato il più esaustivo possibile in modo da aiutare anche il Mago se passa a vedere, non voglio passare a Marlin, non mi piace smiling smiley

Un grazie di nuovo per il supporto.

PS: Come si può vedere nel config_overall ho selezionato la board MKS gen L, in quanto la mia non è presente, ma dando una rapida occhiata allo schema elettrico, le differenze sono irrilevanti.

Oltre al file per la configurazione dei TMC postato nel primo post e il config_overall in allegato non ho modificato altro, il resto l'ho configurato a mano online direttamente, senza usare il vecchio overall che in molti casi mi crea più problemi che benefici.

Edited 1 time(s). Last edit at 05/04/2018 03:17AM by whitedavil.
Attachments:
open | download - Configuration_Overall.h (43.8 KB)
Re: MK4DUO 4.3.6 + TMC2130SPI e 2 motori Z
May 04, 2018 03:38AM
Ciao

Quote
whitedavil

PS: Come si può vedere nel config_overall ho selezionato la board MKS gen L, in quanto la mia non è presente, ma dando una rapida occhiata allo schema elettrico, le differenze sono irrilevanti.

Oltre al file per la configurazione dei TMC postato nel primo post e il config_overall in allegato non ho modificato altro, il resto l'ho configurato a mano online direttamente, senza usare il vecchio overall che in molti casi mi crea più problemi che benefici.

Perche dici che la MKS Gen 1.4 non c'e'...?
C'e', devi selezionare MKS 1.3 or 1.4 (maybe higher) la sto usando io in un progetto, poi secondo me non è questo che ti da il problema.

comunque secondo me è una correzione sfuggita al Mago, aspettiamo un suo commento.

Ciao


Salvatore.


--- Prusa i3 Steel (20x20x20)                        --- Prusa i3 Steel XL (30x30x30)
    Motori 200 passi                                     Motori 400 passi
    Stepper drive - DRV8825                              Stepper drive - DRV8825
    RAMPS 1.4                                            RADDS 1.5
    HotEnd IeC                                           HotEnd IeC
    FW MK4DUO 4.3.2                                      FW MK4DUO 4.3.5
Re: MK4DUO 4.3.6 + TMC2130SPI e 2 motori Z
May 04, 2018 06:11AM
Infatti, il modello della scheda non dovrebbe essere importante.

Onestamente, la mks ha fatto un bel casino con tutte ste schede diverse ma uguali....

Grazie ancora per l'aiuto.

Ora la mia speranza è riposta nel Mago sperando che oltre a fixare, me la spieghi pure.... Ma solo per avido interesse di conoscenza....! :-)
Re: MK4DUO 4.3.6 + TMC2130SPI e 2 motori Z
May 04, 2018 03:54PM
Nulla è un residuo di roba vecchia, non ci deve stare
extended_axis_codes[TMC_Z2]

Ma come hai detto bene solo TMC_Z2. Ora correggo!!!


COMPRA ITALIANO - sostieni le nostre aziende - sostieni la nostra gente - sostieni il tuo popolo - sosterrai te stesso.
Alberto C. felice possessore di una Kossel K2
My Blog - My Thingiverse
Re: MK4DUO 4.3.6 + TMC2130SPI e 2 motori Z
May 05, 2018 03:22AM
Comunque le MKS GEN almeno dalla V1.2 in poi dal punto di vista dei pin sembrano uguali, ad esempio io uso una MKS GEN v1.2 con le impostazione della v1.3 / v.14.

Dove differiscono sono nella parte di alimentazione dove le v1.3 e 1.4 a quanto pare dalle foto hanno due alimentatori switching, mentre la 1.2 ne ha uno solo per tutto.

Dove c'è casino è come al solito nella documentazione e nel fatto che i nomi portano a confusione:

MKS GEN .... = i driver sono separati
MKS BASE = ha i driver integrati

MKS sBASE = dovrebbe essere a 32 bit e con i driver integrati


C'è un errore sullo schema dei pin che si trova in giro, almeno per la v1.2 i pin della AUX1 sono indicati male, D1 e D2 non sono i "veri" D1 e D2 ma D0 e D1 che poi sono la porta ci comunicazione RX0 e TX0 dell'Atmega 2560.

Almeno sulla mia Keyestudio dietro sul silk screen sono serigrafati i pin corretti di ogni porta anche di alcuni connettori non collegati.

Saluti

Carlo D.

Edited 1 time(s). Last edit at 05/05/2018 03:27AM by onekk.


P3Steel - MKS GEN v1.2 e REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER + Gen 7 MOSFET (HotBed) + alimentatore step-down 12V -> 5V
Firmware MK4duo 4.3.6 con ABL induttivo con LJ18A3 - Slic3R (Originale) ed ESP3D per controllare la stampante da remoto.
HotEnd Cinese V6 clone con ugello da 0.4mm.

[My Building Log]
Re: MK4DUO 4.3.6 + TMC2130SPI e 2 motori Z
May 05, 2018 08:08AM
Grazie Mago per il fix e per aver confermato i miei sospetti.

Per sfizio ho buttato un occhio a Marlin, relativo alla stessa parte di codice. Si nota subito che sono 2 fw completamente differenti.

Onekk, infatti ho preso la 1.4 proprio perché avevo alimentazioni diverse.
Grazie per il chiarimento riguardo le mks.

La Sbase è 32bit e volevo prenderla, ma non mi convinceva il fw.
Meglio così, mk4duo su gen 1.4 + octoprint e gira una favola, faccio addirittura gli aggiornamenti della mks direttamente da octoprint senza trafficare con le USB
Re: MK4DUO 4.3.6 + TMC2130SPI e 2 motori Z
May 06, 2018 12:12PM
Quote
whitedavil
Per sfizio ho buttato un occhio a Marlin, relativo alla stessa parte di codice. Si nota subito che sono 2 fw completamente differenti.

Mii Quella parte li è uguale a quella di Marlin...


COMPRA ITALIANO - sostieni le nostre aziende - sostieni la nostra gente - sostieni il tuo popolo - sosterrai te stesso.
Alberto C. felice possessore di una Kossel K2
My Blog - My Thingiverse
Sorry, only registered users may post in this forum.

Click here to login