Instalación y configuración driver Trinamic TMC2130 en RAMPS y MKS GEN 1.4
INTRODUCCIÓN:
Os traigo este tutorial explicando paso a paso como se instalan, preparan y configuran los driver TMC2130, estos driver ya llevan algunos meses en el mercado, pero hasta la salida de la Prusa MK3 no se han visto sus ventajas al descubierto, y parece que están cogiendo algo de «HYPE», los TMC2130 son los últimos driver de trinamic, a diferencia de los TMC2100 y TMC2208 estos llevan conexión SPI a la placa, pero ¿que ventajas tienen respecto al resto de driver?
- Son muy silenciosos igual que los TMC2100
- Llevan StallGuard2 que nos permite hacer el homming sin finales de carrera (En cuanto el motor detecta resistencia manda un pulso al pin DIAG)
- El StallGuard2 es configurable en sensibilidad para adaptarlo a nuestra impresora
- Detectan cuando hay perdida de pasos mediante StallGuard2
- Permiten la regulación de potencia desde el firmware o Gcode
- Tienen un modo híbrido que permite que sean silenciosos a X mm/s y que tengas mas torque a partir de X mm/s (Esto es muy util para impresoras de gran volumen)
- Tienen un modo SpreadCycle que nos permite mas torque constante (Para impresiones rápidas y gran volumen)
- Funcionan interpolados a 1/16 (Placas de 8bits) y llegan hasta 1/256 (Placas de 32bits)
- Detectan sobre-temperatura y te dice en que driver es
preparando los driver
Depende de donde compres estos driver, pueden venir soldados o sin soldar, o peor aun soldados para funcionar sin SPI
Normalmente suelen venir sin soldar así:
Pero si en tu caso vienen soldados, antes de nada tenemos verificar que no este soldado el puente para que funcionen sin SPI, tenemos que comprobar que el puente esta SIN UNIR
Como en esta foto:
soldando los pines
Ahora vamos con la soldadura, en este caso a diferencia de otros driver como los A4988 o DRV8825 el controlador «chip» va hacia la parte de debajo es decir queda mirando hacia la placa, como veis en las fotos yo he aprovechado una ramps que tenia antigua para posicionar los pines y soldarlos rectos (OJO: en esta foto están conectados en sentido inverso en la ramps, tienen que ir el potenciometro mirando hacia la alimentación)
Una vez soldados los pines tienen que quedar así:
CABLEADO Y CONEXIÓN:
Bien tenemos ya nuestros driver soldados y listos para pinchar en la placa, pero ahora viene la parte mas laboriosa que es cablear todos los pines que se usan para SPI y el homming, he hecho unos esquemas con paint para aclarar como va todo conectado, a la derecha he puesto también el numero de pin al que va cada cables por si utilizáis otro tipo de placa que no sea RAMPS o MKS GEN 1.4. En mi caso he utilizado una MKS GEN 1.4 para utilizar una fuente de 24V, pero en el caso de la ramps es exactamente igual, ya que los pines son exactos en ambas placas
ESQUEMA DE CONEXIÓN CABLES COMUNES
ESQUEMA DE CONEXIÓN CS Y ENDSTOP
CUIDADO EN LA RAMPS AL CONECTAR LOS CABLES DE LOS ENDSTOP TENEMOS QUE CONECTARLO EN EL PIN S (El que esta mas pegado al borde de la placa)
Una vez cableado todo, nos debe quedar algo así
En mi caso después de probar todos los ejes con TMC2130 simplifique la instalación y únicamente he dejado TMC2130 en el eje X y en el Y, en el resto de ejes he puesto unos TMC2208, ya que son igual de silenciosos y no voy a usar en Z y E0 StallGuard2
La instalación solos en X Y quedaría así:
Es momento de pinchar nuestros driver en la placa, pero antes de eso para instalar los TMC2130 tenemos que quitar los jumper de CFG 1, 2 y 3 del eje que lleve TMC2130 esto es muy importante por que sino los motores no se moverán y nos podemos volver locos. Si vais a mezclar driver TMC2130 con otro tipo como por ejemplo mi caso que tengo 2130 y 2208 en mi caso tengo quitados los jumper quitados de X Y y todos puestos en Z E0, es decir 2130 todos los jumper fuera y el resto de driver según os pida.
Para orientar correctamente los TMC2130 debemos fijarnos en el potenciometro, este deberá ir mirando hacia la alimentación tanto en la ramps como en la MKS Gen, tal y como comento anteriormente, el controlador «chip» va mirando hacia abajo es decir hacia la placa
configurando firmware marlin
Bueno ya tenemos todo el hardware listo y conectado, es el momento empezar con la configuración en marlin. Particularmente he utilizado marlin 1.1.6 para configurar pero desconozco desde que versión empieza el soporte de tmc2130
Abrimos el marlin y lo primero que vamos a hacer es cargar la librería de los driver tmc2130
Podemos cargar la librería de forma manual descargado de aquí: https://github.com/teemuatlut/TMC2130Stepper
O bien desde arduino IDE seleccionamos Programa / Incluir librería / Gestionar librerías se abrirá una pantalla con un buscador ponemos 2130 y ya nos saldrá, seleccionamos la ultima versión y pulsamos en instalar
Bien una vez instalada la librería vamos a empezar a configurar el marlin para que funcionen nuestros tmc2130.
Empezamos en configuration.h
Si vamos a utilizar StallGuard2 es decir no vamos a usar finales de carrera físicos para el homming tenemos que tener la lógica de X Y en false para que funcione correctamente
// Mechanical endstop with COM to ground and NC to Signal uses «false» here (most common setup).
#define X_MIN_ENDSTOP_INVERTING
// set to true to invert the logic of the endstop.
#define Y_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MIN_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define X_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Y_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MAX_ENDSTOP_INVERTING false // set to true to invert the logic of the endstop.
#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.
Configuramos los pasos de nuestros ejes, tener en cuenta que los TMC2130 funcionan a 1/16 para el calculo de pasos, en mi caso con poleas de 16 dientes quedan asi
/**
* Default Axis Steps Per Unit (steps/mm)
* Override with M92
* X, Y, Z, E0 [, E1[, E2[, E3[, E4]]]]
*/
#define DEFAULT_AXIS_STEPS_PER_UNIT { 100, 100, 400, 418 }
Bien ahora vamos a activar los TMC2130 en los ejes en los que los estemos utilizando
Vamos a Configuration_adv.h y buscamos 2130
#define HAVE_TMC2130 (Descomentamos para activar los tmc2130)
#if ENABLED(HAVE_TMC2130)
// CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY
#define X_IS_TMC2130 (Descomentamos por que tenemos TMC2130 en el eje X)
//#define X2_IS_TMC2130
#define Y_IS_TMC2130 (Descomentamos por que tenemos TMC2130 en el eje Y)
//#define Y2_IS_TMC2130
//#define Z_IS_TMC2130 (Descomentamos por que tenemos TMC2130 en el eje Z)
//#define Z2_IS_TMC2130
//#define E0_IS_TMC2130 (Descomentamos por que tenemos TMC2130 en el eje E0)
//#define E1_IS_TMC2130
//#define E2_IS_TMC2130
//#define E3_IS_TMC2130
//#define E4_IS_TMC2130
Ahora vamos con la potencia que queremos en cada driver, importante hay que descomentar Y_CURRTENT y X_MICROSTEPS de cada eje en el que usemos tmc2130
#define R_SENSE 0.11 // R_sense resistor for SilentStepStick2130 (Este valor es pre-configurado para la mayoría de tmc2130 salvo que fabricante especifique lo contrario)
#define HOLD_MULTIPLIER 0.5 // Scales down the holding current from run current (Este valor es cuanta corriente utiliza el driver para mantener los motores parados, yo lo he dejado en 0.5, pero se puede bajar hasta 0.2-0.3 sin que se muevan los ejes, esto hace que el driver y los motores se calienten algo menos)
#define INTERPOLATE 1 // Interpolate X/Y/Z_MICROSTEPS to 256 (Lo dejamos en 1 para que haga interpolación a 1/16 que es lo optimo para las electronicas de 8 bits)
#define X_CURRENT 850 // rms current in mA. Multiply by 1.41 for peak current. (DESCOMENTAMOS)
#define X_MICROSTEPS 16 // 0..256 (DESCOMENTAMOS)
#define Y_CURRENT 850 (DESCOMENTAMOS) (Aquí modificamos la potencia del eje Y, normalmente entre 750-850mv es suficiente)
#define Y_MICROSTEPS 16 (DESCOMENTAMOS) (Los pasos los dejamos así por que queremos que funcionen a 1/16)
//#define Z_CURRENT 850 (DESCOMENTAMOS)
//#define Z_MICROSTEPS 16 (DESCOMENTAMOS)
//#define X2_CURRENT 1000
//#define X2_MICROSTEPS 16
//#define Y2_CURRENT 1000
//#define Y2_MICROSTEPS 16
//#define Z2_CURRENT 850
//#define Z2_MICROSTEPS 16
#define E0_CURRENT 850 (DESCOMENTAMOS)
#define E0_MICROSTEPS 16 (DESCOMENTAMOS)
MODOS DE FUNCIONAMIENTO:
#define STEALTHCHOP (Es el modo que viene por defecto el mas silencioso) (Si comentamos este parámetro pasaríamos a spreadCycle que es modo de «mas torque» y algo mas ruidoso)
//#define HYBRID_THRESHOLD (Como su nombre indica este modo es híbrido entre StealthChop y spreadCycle nosotros podemos marcarle a partir de cuanta velocidad mm/s queremos que entre en modo fuerza o que trabaje en silencio, este modo viene muy bien para impresoras de gran tamaño para que en los desplazamientos rápidos +100mm/s pase a modo fuerza y mientras imprima sea silenciosa, podemos variar la velocidad de cambio por eje en la tabla de mas abajo)
//#define AUTOMATIC_CURRENT_CONTROL (Esta función es para Auto-ajustar automáticamente cuanta potencia necesita cada eje de nuestra impresora, si queremos utilizarla simplemente descomentamos. para usar esta función con la impresora conectada al usb enviamos un M906 S1 para que empiece a medir, movemos el eje deseado y nos devolverá que potencia ha utilizado para terminar la medición y el ajuste enviamos M906 S0)
#define SENSORLESS_HOMING (Descomentamos si queremos utilizar el homming sin finales de carrera)
#if ENABLED(SENSORLESS_HOMING)
#define X_HOMING_SENSITIVITY 3 (Desde aquí ajustamos la sensibilidad que marca el homming al tocar el final del eje, en mi caso con tan poca sensibilidad funciona perfectamente y el toque es muy suave para que no destense las correas)
#define Y_HOMING_SENSITIVITY 4
#endif
Una vez terminada la configuración compilamos y subimos el marlin a nuestra placa
GCODES para configurar los driver
Si queremos modificar algún parámetro sin tener que volver a subir el firmware, se pueden variar algunas cosas de los driver por Gcode, algo muy cómodo
- M906 -Varia la potencia del driver, por ejemplo si queremos poner 900mv al eje X marcamos M906 X900)
- M906 S1 – Inicia el autoajuste de potencia para que funcione tenemos que tener habilitado //#define AUTOMATIC_CURRENT_CONTROL
- M906 S0 – Finaliza el autoajuste de potencia
- M911 – Nos muestra si hay algún driver con sobre-temperatura
- M912 – Resetea el aviso de sobre-temperatura en todos los driver
¿Que pasa con el lcd?
Efectivamente si has llegado hasta aquí te habrás dado cuenta que el AUX 3 es utilizado por la mayoría para conectar nuestro LCD, si pones estos driver ocupas esos pines, pero esto tiene solución, realmente los únicos pines que nos molestan para el LCD son D49 y D53 que sirven para el lector de SD del LCD, es decir que si habilitamos el LCD y des-habilitamos el //#define SDSUPPORT todo funcionará sin cambiar ningún pin, pero no podremos utilizar el lector de SD del LCD
Si tenemos una RAMPS, la tarea es mas laboriosa, tendrás que desoldar los pines del adaptador únicamente D50 D51 D52 el resto los dejamos como están)
Si tenemos una MKS GEN no necesitamos adaptador para el LCD así que únicamente si queremos utilizar el lector de SD tendremos que cambiar D53 y D49 y pasarlos a D42 y D44
¿Como cambiar los pines para que funcione el Lector SD del LCD?
Únicamente podemos hacerlo si no utilizamos TMC2130 en el extrusor ya que vamos a utilizar el pin cs del extrusor
El método es el mismo para ramps como MKS GEN, se modifican los mismos archivos
Dentro de marlin abrimos: pins_RAMPS.h y buscamos:
// Steppers
//
#define X_STEP_PIN 54
#define X_DIR_PIN 55
#define X_ENABLE_PIN 38
#define X_CS_PIN 53 (Cambiamos este pin por 42)
#define Y_STEP_PIN 60
#define Y_DIR_PIN 61
#define Y_ENABLE_PIN 56
#define Y_CS_PIN 49 (Cambiamos este pin por 44)
#define Z_STEP_PIN 46
#define Z_DIR_PIN 48
#define Z_ENABLE_PIN 62
#define Z_CS_PIN 40
#define E0_STEP_PIN 26
#define E0_DIR_PIN 28
#define E0_ENABLE_PIN 24
#define E0_CS_PIN 42 (Borramos)
#define E1_STEP_PIN 36
#define E1_DIR_PIN 34
#define E1_ENABLE_PIN 30
#define E1_CS_PIN 44 (Borramos)
Y ahora cambiamos los cables físicos de CSX y CSY de los driver, y tenemos que ponerlos asi
Y con esto ya tendremos nuestros TMC2130 configurados y funcionando en nuestra impresora
FAQ
¿Se calientan mucho los TMC2130?
- Imprimiendo a 60mm/s y con una tensión de 800mv en XY he podido medir unos 50º en los driver, eso si en mi caso les he puesto un disipador, en principio pueden funcionar perfectamente sin ventilación, personalmente he probado impresiones de 3-4h sin ventilador y no han perdido pasos, desconozco si en impresiones mas largas la temperatura puede afectar (Los TMC2208 configurados igual están unos 5-10º por debajo)
¿Puedo utilizar StallGuard2 si tengo coreXY?
- Esto es importante, los he montado en una sparkcube y no he tenido problemas para hacer el homming, eso si he tenido que dar un punto mas de sensibilidad al eje Y, a mi me funciona perfectamente en coreXY, sin embargo hay una issue en marlin donde un user esta teniendo problemas con StallGuard2 en una D-Bot
- Aquí podéis ver el debate de marlin https://github.com/MarlinFirmware/Marlin/issues/8740
¿Se puede utilizar StallGuard2 como Z probe y quitar el sensor autonivel?
- Esta cuestión la plantee en marlin ya que seria un puntazo poder utilizar stallguard2 como Z probe y que el propio nozzle haga de sensor, por lo visto el husillos hace bastante fuerza de manera progresiva y las mediciones no tendrían buena repetitividad, por el momento queda descartado
- Aqui podeis ver el issue de marlin https://github.com/MarlinFirmware/Marlin/issues/8781
¿Para cuando la función de hacer un Homming si hay perdida de pasos y seguir imprimiendo como la prusa MK3?
- Esta es una de las funciones mas atractivas de estos driver, como son capaces de detectar la perdida de pasos, una vez este en marlin implementado, funcionarán igual que en la prusa MK3 original, si hay perdida de pasos se para la impresión se vuelve al home y sigue imprimiendo por donde iba, ya esta hecha la petición en marlin espero que no tarden mucho en implementarlo
- Aquí se puede ver la función: https://youtu.be/NAfJdDfbPPk?t=6m16s
- Aquí también se ve: https://www.youtube.com/watch?v=sPvTB3irCxQ&feature=youtu.be&t=4m12s
- El request de marlin: https://github.com/MarlinFirmware/Marlin/issues/8765
Hasta aquí el mega-tutorial de los TMC2130, espero que os haya gustado y os sea de ayuda a la hora de configurar, creo que no me dejo nada importante por comentar o señalar, pero cualquier duda, por aquí estoy
TMC21300 CHINESSE (TMC2130 CHINOS)
Parece que algunos driver chinos TMC2130 tienen problemas para funcionar por SPI en tal caso debemos verificar que las soldaduras coinciden con las de la foto que dejo debajo, el azul debe estar sin unir y el recuadro rojo y verde unidos los pines en negro
Hi!
1. Did you have an issue to connect an LCD to the board with the TMC?
Cause I saw on the schematics that they share common pins on AUX-3
2. What are you doing with the VM and power cycle? I read that you need to supply the motors voltage before you supply the driver itself…
Thanks!
That’s a great tutorial!
I may have to translate it for others in English.
I’m having issues with my FYSETC brand 2130’s.
They work fine in stand alone but when i try to connect one in SPI mode it does not activate at all for that stepper motor.
Would love to know if anyone had experience with this?
FYI, in the diagram «ESQUEMA DE CONEXIÓN CABLES COMUNES» you have an error in the connection of the X driver, You have it connecting to CS instead of SDO.
Minor error.
Hola has probado si funciona correctamente con la última versión de marlin la 1.1.8 yo he probado y me pierde pasos constantemente. Con la versión 1.1.6 va perfecto siempre que no pase de 100mm/s, superada esa velocidad puede ser que pierda algún paso normalmente en impresiones largas (esto entiendo que es normal puesto que el mismo fabricante los especifica).
Comentas que te funciona en corexy el homming yo he probado y no me funciona la impresora se mueve en 45º y nunca para, ¿hay que configurar algo en especial?
Para que funcione todo en el ramps he soldado una tira de pines acodada a una tira de hembras y así no tenemos que hacer ninguna modificación en la ramps ni en el conector adjunto una foto por si a alguien le sirve.
https://ibb.co/j1MqcR
Querida gente,
También tengo un tmc2130 de fystec y no funciona en modo spi. Lo soldé como en las imágenes, como se muestra, solo que no hay un puente espi en la parte inferior. Espero que me puedas ayudar, al conductor le irá bien si no lo conectas con el pin cs. Espero que Google lo haya traducido bien para que pueda entenderme. Gracias de antemano!
Hola Campy,
Felicidades por el tutorial, se agrace mucho tener este tipo de información tan bien explicada y encima en Español.
Lo único que no me a quedado del todo claro es la ultima parte del problema con el LCD+SD.
Yo tengo una RAMPS 1.4 y tenía pensado poner estos drivers. Entiendo la parte de cambiar los pines D53/D49 por los D42/D44 pero aún así seguirían en uso los pines D52/D50/D51 del AUX3.
Como bien indicas podría desoldarlos del adaptador sin problemas, pero ¿entonces funcionaría el LCD y el lector de SD? ¿Quiere esto decir que esos 3 pines no se utilizan para nada en el adaptador del LCD+SD?
Un saludo y gracias
Muy buen tutorial! Pero me queda la siguiente duda… Tengo un LCD montado en AUX3, he visto que comentaste acerca de cambiar los pines para CS, lo cual no representa mayor problema, pero no habría que conectar también los pines MOSI/MISO/SCK? Esos también están en AUX3 e imagino que no pueden cambiarse como los de CS…
Gracias!
Buenas,
Muy bueno el tutorial, pero me queda una pequeña duda.
¿Que motores recomiendas usar con este driver? como el phase current es mas bajo que los otros drivers ( A4988 , dvr8825) no se exactamente cual podria elegir.
Casi todos los que veo son de 1.7 amp o 1.8 amp. Y no se si con ese 1.2 tendre suficiente para que den el torque que necesitaria la impresora.
Seria en los ejes X Y Z. Y en el Z llevaria 2 motores. ( aun no he terminado de montarla )
Saludos.
Buenas,
Tengo unos drivers chinos con los puentes puestos correctamente y funcionando haciendo homming e imprimiendo.
Pero tengo un problema, que no permite hacer homming más de una vez, quiero decir que si hago homming v perfecto pero si le doy de nuevo los ejes van avanzando y no vuelven a la posición del primer homming, para que vuelvan tengo que reiniciar la impresora.
¿Le pasa a alguien más?
Buenas de nuevo, tengo un problemilla y no se si te ha pasado, He configurado el tmc tal cual lo tienes en el tutorial, y funciona pero solo en 1 sentido. Si le digo que avance 100 gira hacia la derecha y si le digo que gire -100 tambien va hacia la derecha …
No se muy bien que es lo que esta fallando. ¿Te ha pasado alguna vez eso?
¿Podrias indicarme valores a mirar para saber que esta pasando?
Gracias y saludos.
Hola.
Genial tutorial!
Tengo una duda. No sería major poner directamente una Einsy RAMBO?
El precio de los drivers ronda los 50 Eur y la Einsy 110. Yo me lo estoy planteando
En cualquier caso sabeis como de maduro está el soporte de Marlin para dicha placa? Igual que RAMPS?
Gracias y buen trabajo
Todo funcionando salvo el sensorless…. Tengo uns TMC2130 V1.1 de FYSETC y los los pads ya vienen soldados, pero veo que están unidos con una resistencia SMD. Hay que quitarla? Es por eso que no me funciona?
Hola , tras haber leido y repasado el post varias veces y los comentarios, me sigo encontrando con la duda, de si es posible conectar el LCD con el lector sd con los 4 drivers tmc2130 conectados a la placa. Eliminando la funcion stallguard del eje z y el extrusor es posible? Por que en el post expecificas que solo es posible conectar el lcd con sd si no se utiliza tmc2130 en el extrusor por el conector cs. Por favor, me lo puedes aclarar?
Okk, muchas gracias. Si que vi en un video que el lcd puede funcionar conectado al auxiliar 1, por lo que teoricamente se eliminarian los problemas de pines ocupados en el auxiliar 3, pero no se si se eliminan las funciones de la sd.
You can also use E1 as Z2. This works for me.
Cordial saludo, gracias por el tutorial, la pregunta: si utilizo una pantalla tft28 no es necesario hacer ningun cambio en los pines?.
hola nesesito ayuda porfavor llevo 2 dias dandole vuelta al asunto e comprado la msk gen 1.4 con los 5 driver tmc 2130 y no he podido hacer andar lo único que se mueve es el eje z y nada mas, la pantalla no se ve y ya no se que hacer tengo la conexion de cables solo en el eje x y y
buenas. una pregunta. y no se pueden usar las «D» de los servos para conectar los CS de los drivers?
mi idea es un megawifi + rampsSB + XYZ TMC2130 en SPI + LCD de creality (tengo una ender3) + SDramps (para una toshiba flashair)
Hola! he seguido los pasos, pero tengo un problema con el Marlin.
Cuando abro el marlin y añado la librería de los TMC2130 no me aparecen las líneas de configuración de los mismos….ni en Configuration.h ni en Configuration_adv.h.
Que puedo hacer?