Aller au contenu

GO Print

BTT SKR PRO, TMC2208 et Marlin 2.0


joyeufetar

Messages recommandés

Bonsoir à tous,

Je suis en train de finir le montage d'une nouvelle imprimante. Elle contient entre autre :
 - Carte Bigtreetech SKR PRO V1.1
 - Driver TMC2208 Fysetc v1.2
 - Firmware Marlin 2.0

J'ai parcouru la totalité de ce sujet qui m'a bien aidé : Lien

J'ai préconfiguré le firmware et le build fonctionne sans soucis.

Pour le montage des drivers, j'ai essayé de vérifier que chaque pin du driver correspondait bien avec ceux de la carte, mais je n'arrive pas à en être certain.
Déjà, j'ai beau cherché dans la doc de la carte, impossible de trouver la correspondance avec les pins des drivers.
Si quelqu'un à ça (ou peut me donner les infos), ça serait super  🙂

Voila des photos des drivers que j'ai :
driver.png.8145e593969c76cca63e2faf59ff5191.png

D'après ce qui est indiqué sur les PCB des drivers, le mode UART semble actif par défaut.
Donc je suppose que je n'ai pas de soudure à faire dessus comme sur certaines anciennes versions.
Est ce ça vous parait correct ?

Ensuite, vient le paramétrage des drivers.
Je souhaite utiliser les 2208 en UART sans interpolation (en 256 pas réel), j'ai donc pour ça mis le jumper unique comme indiqué dans le doc de la carte SKR.
Ils piloteront des moteurs NEMA17 dont voici les caractéristiques :
 -> Modèle : LDO-42STH47-1684AC
 -> Couple : 50 N.cm
 -> Rated voltage : 2.8V
 -> Rated current : 1.68A
 -> Inductance : 2.8 mH

Si je comprends bien, il me suffit de paramétrer Marlin pour utiliser ces drivers dans le mode souhaité.
Dans le fichier Configuration.h, il faut donc que je modifie cette partie la (en définissant les drivers que je veux utiliser pour chaque axe) : 

/**
 * Stepper Drivers
 *
 * These settings allow Marlin to tune stepper driver timing and enable advanced options for
 * stepper drivers that support them. You may also override timing options in Configuration_adv.h.
 *
 * A4988 is assumed for unspecified drivers.
 *
 * Options: A4988, A5984, DRV8825, LV8729, L6470, L6474, POWERSTEP01,
 *          TB6560, TB6600, TMC2100,
 *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
 *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
 *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
 *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
 * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'L6474', 'POWERSTEP01', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
 */
#define X_DRIVER_TYPE  TMC2208
#define Y_DRIVER_TYPE  TMC2208
#define Z_DRIVER_TYPE  TMC2208
//#define X2_DRIVER_TYPE A4988
//#define Y2_DRIVER_TYPE A4988
//#define Z2_DRIVER_TYPE A4988
//#define Z3_DRIVER_TYPE A4988
//#define Z4_DRIVER_TYPE A4988
#define E0_DRIVER_TYPE TMC2208
//#define E1_DRIVER_TYPE A4988
//#define E2_DRIVER_TYPE A4988
//#define E3_DRIVER_TYPE A4988
//#define E4_DRIVER_TYPE A4988
//#define E5_DRIVER_TYPE A4988
//#define E6_DRIVER_TYPE A4988
//#define E7_DRIVER_TYPE A4988

A quoi correspondent les lignes X2, Y2, Z2... ?
Y a t'il autre chose à modifier dans ce fichier la ?
Sachant que j'ai un moteur pour l'axe X, un pour Y, 2 pour Z et 1 seul extrudeur.

Et dans le fichier Configuration_adv.h, il faut modifier aussi cette partie la (pour chaque groupe de ligne défini dans le code ci-dessus) :

/**
 * To use TMC2130, TMC2160, TMC2660, TMC5130, TMC5160 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.
 *
 * 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.
 *
 * TMCStepper library is required to use TMC stepper drivers.
 * https://github.com/teemuatlut/TMCStepper
 */
#if HAS_TRINAMIC_CONFIG

  #define HOLD_MULTIPLIER    0.5  // Scales down the holding current from run current
  #define INTERPOLATE       false  // Interpolate X/Y/Z_MICROSTEPS to 256

  #if AXIS_IS_TMC(X)
    #define X_CURRENT       800        // (mA) RMS current. Multiply by 1.414 for peak current.
    #define X_CURRENT_HOME  X_CURRENT  // (mA) RMS current for sensorless homing
    #define X_MICROSTEPS     256    // 0..256
    #define X_RSENSE          0.11
    #define X_CHAIN_POS      -1    // <=0 : Not chained. 1 : MCU MOSI connected. 2 : Next in chain, ...
  #endif

J'ai donc modifié la ligne INTERPOLATE par false et indiqué les MICROSTEPS à 256.
Est ce bien ce qu'il faut faire ?

Ensuite, vient le réglage du courant.
Donc si je comprends bien le commentaire à côté de la ligne, pour trouver le courant RMS, il suffit que je prenne le courant max de mes moteurs et que je divise par 1.414 ?
Donc ça donnerait, par exemple, un X_CURRENT à : 1.68A / 1.414 = 1.19A
Donc je dois renseigner 1190 dans la ligne X_CURRENT, c'est bien ça ?
Pour information, voila ce que dit la doc des drivers :

Donc en règlant mes drivers à 1.19A RMS, je suis à la limite haute.

Y a t'il aussi un ajustement du voltage à faire directement sur les drivers ?
Ou la configuration de Marlin suffit à elle seule à faire fonctionner les drivers comme il faut ?

Voila, je sais que ça fait beaucoup de questions, mais je veux être sur de bien faire les choses et d'avoir bien tout compris.
Et je sais qu'il y a certains experts qui pourront corriger mes erreurs si il y en a.

Merci d'avance pour votre aide.
Cordialement

Lien vers le commentaire
Partager sur d’autres sites

bonjour,

Le 16/04/2020 at 18:30, joyeufetar a dit :

D'après ce qui est indiqué sur les PCB des drivers, le mode UART semble actif par défaut.
Donc je suppose que je n'ai pas de soudure à faire dessus comme sur certaines anciennes versions.
Est ce ça vous parait correct ?

normalement oui, mais tu peux vérifier ça tout simplement. en allumant, tu verras surement une erreur si ça va pas. 

2eme vérification avec le tmc debug (si tu l'as activé dans le fw marlin), un coup de M122

si tu as une réponse de ce style là:

SENDING:M122
                  X       Y
Enabled           false   false
Set current       850     850
RMS current       826     826
MAX current       1165    1165
Run current       26/31   26/31
Hold current      13/31   13/31
CS actual         13/31   13/31
PWM scale 41      41
vsense            1=.18   1=.18
stealthChop       true    true
msteps            16      16
tstep             1048575 1048575
pwm
threshold         0       0
[mm/s]            -       -
OT prewarn        false   false
OT prewarn has
been triggered    false   false
off time          5       5
blank time        24      24
hysterisis
-end              2       2
-start            3       3
Stallguard thrs   0       0
DRVSTATUS X       Y
stallguard
sg_result         0       0
fsactive
stst              X       X
olb
ola
s2gb
s2ga
otpw
ot
'Driver registers:'
  X = 0x80:0D:00:00
  Y = 0x80:0D:00:00

c'est que tout va bien ^^

Le 16/04/2020 at 18:30, joyeufetar a dit :

A quoi correspondent les lignes X2, Y2, Z2... ?
Y a t'il autre chose à modifier dans ce fichier la ?
Sachant que j'ai un moteur pour l'axe X, un pour Y, 2 pour Z et 1 seul extrudeur.

X2 Y2 etc servent si tu as plusieurs nema avec drivers pour les pilotés ensemble. une cr10s a 2 nema en Z, si tu mets un drivers pour chaque moteur, il faudra utiliser Z2.

donc dans ton cas tu mets les paramètre de ton drivers pour le Z2. 

d'autre chose a modifier, tu as les acceleration, les step/mm, si tu as des invert, faut lire un peu tout le fichier pour voir 

Le 16/04/2020 at 18:30, joyeufetar a dit :

Et dans le fichier Configuration_adv.h, il faut modifier aussi cette partie la (pour chaque groupe de ligne défini dans le code ci-dessus) :

Ensuite, vient le réglage du courant.
Donc si je comprends bien le commentaire à côté de la ligne, pour trouver le courant RMS, il suffit que je prenne le courant max de mes moteurs et que je divise par 1.414 ?
Donc ça donnerait, par exemple, un X_CURRENT à : 1.68A / 1.414 = 1.19A
Donc je dois renseigner 1190 dans la ligne X_CURRENT, c'est bien ça ?
Pour information, voila ce que dit la doc des drivers :

Donc en règlant mes drivers à 1.19A RMS, je suis à la limite haute.

oui normalement il faut que tu mettes 1190 sur le x_current et faire la même chose pour tes autres drivers.

après vérifie la chauffe des nema quand tu imprimes, si ils sont trop chaud il faudra descendre cette valeur mais il faudra faire gaffe que les nema sautent pas des pas!

Le 16/04/2020 at 18:30, joyeufetar a dit :

Y a t'il aussi un ajustement du voltage à faire directement sur les drivers ?
Ou la configuration de Marlin suffit à elle seule à faire fonctionner les drivers comme il faut ?

non pas besoin de toucher au drivers si tu es en uart, tu peux même descendre la tension du drivers pour être sur.

Le 16/04/2020 at 18:30, joyeufetar a dit :

J'ai donc modifié la ligne INTERPOLATE par false et indiqué les MICROSTEPS à 256.
Est ce bien ce qu'il faut faire ?

j'ai jamais fait cette manip mais tu peux vérifier comme ça:

vérifie avec un M122 si tu as msteps 256 pour chaque moteur.

fait un test de déplacement de l'axe x ou y de 1cm, si c'est correct c'est bon. si elle bouge à peine, il faudra modifier les steps/mm.

Modifié (le) par Eev
  • Merci ! 1
Lien vers le commentaire
Partager sur d’autres sites

Salut 🙂 

C'est top, merci pour ton aide.
Ca va me permettre de finaliser tout ça 😉 
 

Il y a 2 heures, Eev a dit :

d'autre chose a modifier, tu as les acceleration, les step/mm, si tu as des invert, faut lire un peu tout le fichier pour voir 

Oui, pour le reste, c'est déjà fait.
Je demandais par rapport au mode UART des steppers en faite, pas pour la totalité du fichier 😉 
 

Il y a 2 heures, Eev a dit :

2eme vérification avec le tmc debug (si tu l'as activé dans le fw marlin), un coup de M122

Je ne connaissais pas cette commande, je vais regarder tout ça.
Merci.

Merci 👍

Lien vers le commentaire
Partager sur d’autres sites

il y a 18 minutes, joyeufetar a dit :

Salut 🙂 

C'est top, merci pour ton aide.
Ca va me permettre de finaliser tout ça 😉 
 

Oui, pour le reste, c'est déjà fait.
Je demandais par rapport au mode UART des steppers en faite, pas pour la totalité du fichier 😉 
 

Je ne connaissais pas cette commande, je vais regarder tout ça.
Merci.

Merci 👍

pas de soucis 🙃 hésite pas à cliquer sur cœur pour dire merci 🙂

mmhhh non rien en plus pour l'uart, à part mettre le jumper sur la carte et les quelques lignes citées. normalement tu auras aucun soucis.

regarde dans le configuration_adv pour le m122 il faut activer ça

  /**
   * Monitor Trinamic drivers for error conditions,
   * like overtemperature and short to ground.
   * 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 - Report driver parameters (Requires TMC_DEBUG)
   */
  #define MONITOR_DRIVER_STATUS

et ca

/**
   * Beta feature!
   * Create a 50/50 square wave step pulse optimal for stepper drivers.
   */
  //#define SQUARE_WAVE_STEPPING
 
  /**
   * Enable M122 debugging command for TMC stepper drivers.
   * M122 S0/1 will enable continous reporting.
   */
  #define TMC_DEBUG

et tu pourrais voir le status de tes drivers tmc. ça te dira si il faudra souder pour activer l'uart sur le drivers

et le STEALTHCHOP bien entendu!

Modifié (le) par Eev
  • J'aime 1
  • Merci ! 1
Lien vers le commentaire
Partager sur d’autres sites

Ah yes, j'avais activé le TMC_DEBUG dans le FW mais pas MONITOR_DRIVER_STATUS.

Par contre, je vois aussi que ce paramètre active pas mal de choses, notamment la réduction de courant, voir le stop si il y a une erreur.
Il faut que je regarde ça de plus près.

Lien vers le commentaire
Partager sur d’autres sites

il y a 18 minutes, joyeufetar a dit :

Ah yes, j'avais activé le TMC_DEBUG dans le FW mais pas MONITOR_DRIVER_STATUS.

Par contre, je vois aussi que ce paramètre active pas mal de choses, notamment la réduction de courant, voir le stop si il y a une erreur.
Il faut que je regarde ça de plus près.

le m906 te permettra d'ajuster la X_CURRENT via le terminal en plus de l'écran ^^

les erreurs c'est pour la surchauffe du drivers ou une deconnection du drivers (short to ground) donc la machine stoppera l'impression.

Modifié (le) par Eev
  • Merci ! 1
Lien vers le commentaire
Partager sur d’autres sites

  • 1 year later...

Salut tout le monde,

Bon, j'ai eu d'autres projets depuis le temps, mais je me remets enfin sur l'imprimante.
L'idée étant de la finir une bonne fois pour toute.

Alors, déjà, voila le récap de ce que j'ai comme matos
 - Carte Bigtreetech SKR PRO V1.1
 - BTT TFT35 V2.0 (dernière maj)
 - Driver TMC2208 Fysetc v1.2
 - Firmware Marlin 2.0 bugfix

Le cablâge est entièrement terminé, me reste plus qu'à paramétrer le FW.
Les cartes secondaires (BIGTREETECH Relay V1.2 et Mini UPS v2.0) ont failli me rendre fou, donc on débranche et on verra ça plus tard quand tout le reste fonctionnera.

J'ai repris tout mon firmware depuis le début car j'avais des erreurs dans tous les sens que je n'arrivais pas à les résoudre.
De plus, quoique je fasse, aucun de mes axes ne bougeaient. Ca grognait tout au plus...
Donc on repart de 0, et on activera les fonctionnalités qu'au fur et à mesure de la résolution des soucis.

Dans un premier temps, j'ai donc configuré le firmware pour qu'il compile juste pour la carte SKR.
Jusque la, tout va bien.

Ensuite, j'ai voulu gérer les moteurs.
J'ai donc modifié Configuration.h et Configuration_adv.h (sans toucher au step pour l'instant, on verra ça plus tard) :

 

/**
 * Stepper Drivers
 *
 * These settings allow Marlin to tune stepper driver timing and enable advanced options for
 * stepper drivers that support them. You may also override timing options in Configuration_adv.h.
 *
 * A4988 is assumed for unspecified drivers.
 *
 * Use TMC2208/TMC2208_STANDALONE for TMC2225 drivers and TMC2209/TMC2209_STANDALONE for TMC2226 drivers.
 *
 * Options: A4988, A5984, DRV8825, LV8729, L6470, L6474, POWERSTEP01,
 *          TB6560, TB6600, TMC2100,
 *          TMC2130, TMC2130_STANDALONE, TMC2160, TMC2160_STANDALONE,
 *          TMC2208, TMC2208_STANDALONE, TMC2209, TMC2209_STANDALONE,
 *          TMC26X,  TMC26X_STANDALONE,  TMC2660, TMC2660_STANDALONE,
 *          TMC5130, TMC5130_STANDALONE, TMC5160, TMC5160_STANDALONE
 * :['A4988', 'A5984', 'DRV8825', 'LV8729', 'L6470', 'L6474', 'POWERSTEP01', 'TB6560', 'TB6600', 'TMC2100', 'TMC2130', 'TMC2130_STANDALONE', 'TMC2160', 'TMC2160_STANDALONE', 'TMC2208', 'TMC2208_STANDALONE', 'TMC2209', 'TMC2209_STANDALONE', 'TMC26X', 'TMC26X_STANDALONE', 'TMC2660', 'TMC2660_STANDALONE', 'TMC5130', 'TMC5130_STANDALONE', 'TMC5160', 'TMC5160_STANDALONE']
 */
#define X_DRIVER_TYPE  TMC2208
#define Y_DRIVER_TYPE  TMC2208
#define Z_DRIVER_TYPE  TMC2208
//#define X2_DRIVER_TYPE A4988
//#define Y2_DRIVER_TYPE A4988
//#define Z2_DRIVER_TYPE A4988
//#define Z3_DRIVER_TYPE A4988
//#define Z4_DRIVER_TYPE A4988
//#define I_DRIVER_TYPE  A4988
//#define J_DRIVER_TYPE  A4988
//#define K_DRIVER_TYPE  A4988
#define E0_DRIVER_TYPE TMC2208
// @section tmc_smart

/**
 * To use TMC2130, TMC2160, TMC2660, TMC5130, TMC5160 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.
 *
 * 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.
 *
 * TMCStepper library is required to use TMC stepper drivers.
 * https://github.com/teemuatlut/TMCStepper
 */
#if HAS_TRINAMIC_CONFIG

  #define HOLD_MULTIPLIER    0.5  // Scales down the holding current from run current

  /**
   * Interpolate microsteps to 256
   * Override for each driver with <driver>_INTERPOLATE settings below
   */
  #define INTERPOLATE      false

  #if AXIS_IS_TMC(X)
    #define X_CURRENT       1190        // (mA) RMS current. Multiply by 1.414 for peak current.
    #define X_CURRENT_HOME  X_CURRENT  // (mA) RMS current for sensorless homing
    #define X_MICROSTEPS     256        // 0..256
    #define X_RSENSE          0.11
    #define X_CHAIN_POS      -1        // -1..0: Not chained. 1: MCU MOSI connected. 2: Next in chain, ...
    //#define X_INTERPOLATE  true      // Enable to override 'INTERPOLATE' for the X axis
  #endif

Jusqu'ici, tout va bien.
Les axes peuvent bouger quand je gère depuis l'écran TFT, tout sans exception (juste pas testé le moteur extrudeur, mais y'a pas de raison).

Par contre, dès que j'allume l'imprimante, j'ai le TFT qui bip pendant un moment puis qui finit par afficher l'erreur "ALL LOW".
Si je fais un M122, j'ai effectivement une erreur sur tous les drivers, comme si il n'était pas vu...
Pourtant, ils sont alimentés correctement vu que je peux bouger les axes sans problème.

Driver registers:
X 0x00:00:00:00 Bad response!
Y 0x00:00:00:00 Bad response!
Z 0x00:00:00:00 Bad response!
E 0x00:00:00:00 Bad response!
Testing X connection... Error: All LOW
Testing Y connection... Error: All LOW
Testing Z connection... Error: All LOW
Testing E connection... Error: All LOW


J'ai épluché absolument tous les forums du net, c'est un soucis qui semble remonter très très souvent.
Mais du coup, comment le résoudre ?
Tant que je n'aurais pas pu résoudre ce problème, je ne suis absolument pas capable de dire si le mode UART est actif ou non...
Ce qui est quand même dommage...

Je précise que j'ai testé la méthode qui consiste à souder 2 pins sous les drivers sans amélioration...

Je joins mes fichiers (temporaire je précise) de conf, si quelqu'un veut bien jeter un coup d'oeil et me dire si quelque chose ne va pas, ça m'aiderait beaucoup.

Merci d'avance,
Bonnes impressions à tous

Configuration.h Configuration_adv.h




EDIT : Humm, bon problème résolu.

Je devais pas être en forme, j'avais pas soudé les pins qu'il fallait sur les drivers 😅
J'avais soudé les pins pour la patte PDN et non pour le UART.

Maintenant tout fonctionne.
Ca fait bizarre, c'est ultra silencieux, les déplacements sont hyper fluides, ça fait vraiment plaisir.

Si ça peut aider certains, c'est donc la config de base que j'ai mis dans mes fichiers de conf du dernier message, mais avec cette soudure la sur les drivers (TMC2208 v1.2 je précise, je ne sais pas si c'est la même pour les autres versions) :
Soudure_driver_tmc2208_v1.2.thumb.jpg.c043f9433ec9d2333fc76541b8572809.jpg

Maintenant, on va pouvoir continuer la conf.

Modifié (le) par joyeufetar
Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
  • Sur cette page :   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
  • YouTube / Les Imprimantes 3D .fr

×
×
  • Créer...