Los pasos por milímetro, desde cero
Un motor paso a paso gira un ángulo fijo en cada paso completo: 1,8° en casi todos los motores de impresora, es decir, 200 pasos completos por vuelta (los de 0,9° tienen 400). El driver divide cada paso completo en micropasos, normalmente 16, así que el firmware manda 3200 pasos por cada vuelta del eje del motor. Divide eso entre lo que avanza el eje de la impresora en una vuelta y tienes los pasos por milímetro.
pasos/mm = pasos completos por vuelta × micropasos × relación ÷ recorrido por vuelta
correa: recorrido por vuelta = paso de la correa × dientes de la polea
husillo: recorrido por vuelta = paso de rosca × entradas (el avance)
En esta cadena no hay nada que medir con regla: el paso, el número de dientes y las entradas forman parte del nombre de las piezas. Por eso los ejes de correa y de husillo se calculan, no se calibran, y solo se mide el extrusor, que agarra un filamento blando con ruedas dentadas.
Correas, husillos y extrusores con reductora
| Transmisión | Recorrido por vuelta | Pasos/mm a 1/16 (1,8°) | rotation_distance de Klipper |
|---|---|---|---|
| Correa GT2, polea de 20 dientes | 2 mm × 20 = 40 mm | 80 | 40 |
| Correa GT2, polea de 16 dientes | 2 mm × 16 = 32 mm | 100 | 32 |
| Husillo T8 (Tr8x8, 4 entradas) | 2 mm × 4 = 8 mm | 400 | 8 |
| Husillo Tr8x2 (una entrada) | 2 mm | 1600 | 2 |
| Bondtech BMG, engranajes 50:17 | 22,679 mm por vuelta de la rueda | 415 | 22,679 con gear_ratio: 50:17, o 7,711 sin él |
Las filas de correas y husillos salen de nuestra calculadora de pasos por mm (16 dientes, T8, BMG); la cifra del BMG es la de Bondtech.
Cuenta los dientes de la polea (a menudo el número viene grabado) y mira la punta del husillo: un T8 muestra cuatro filetes separados, así que su paso de 2 mm se convierte en un avance de 8 mm. En los extrusores con reductora lo que engaña es la relación anunciada: el BMG se vende como 3:1, pero sus engranajes son 50:17, es decir, 2,94:1. Por eso Bondtech da 415 pasos/mm, un 2 % menos de lo que daría un 3:1 de verdad.
| Extrusor (ejemplos) | Dato del fabricante | Qué poner |
|---|---|---|
| Bondtech BMG (y clones tipo BMG) | Engranajes 50:17, 415 pasos/mm a 1/16 | gear_ratio: 50:17 y rotation_distance 22,679, o 415 pasos/mm en Marlin |
| LDO Orbiter v2.5 | 690 pasos/mm a 1/16, rotation_distance 4,637, como en la v2.0 | Tal cual y luego calibra: Rat Rig avisa de que en la v2.5 los valores pueden variar algo. La hoja de la v2.0 de LDO da 0,85 A RMS para su motor |
| FYSETC Sherpa Mini (rev. 1.5) | Reducción 6,25:1, 870 pasos/mm | 870 pasos/mm en Marlin y luego calibrar |
Valores de partida de la página del BMG de Bondtech, la página del Orbiter v2.5 de Rat Rig, la hoja de configuración del firmware del Orbiter v2.0 de LDO y la página del Sherpa Mini de FYSETC. Los clones suelen copiar la relación, no siempre el diámetro de la rueda: calibra de todas formas.
Introduce la correa, la polea, el husillo o la reductora: la calculadora te da los pasos/mm, la rotation_distance, la frecuencia de pasos a tu velocidad máxima y las líneas para Marlin y Klipper.Abrir la calculadora de pasos por mm
Marlin y Klipper: dónde va cada número
Marlin guarda pasos por unidad. M92 X80 Y80 Z400 E415 los fija, M92 a secas muestra los actuales (M503 en versiones antiguas) y M500 los guarda en la EEPROM, si el firmware está compilado con EEPROM_SETTINGS, como casi todos los de impresora. Los valores compilados son DEFAULT_AXIS_STEPS_PER_UNIT en Configuration.h; M502 los recupera.
Klipper no usa pasos por mm. Cada sección [stepper_…] lleva rotation_distance (el recorrido por vuelta), microsteps y, si no son los valores por defecto, full_steps_per_rotation (200; 400 para un motor de 0,9°) y gear_ratio. Para pasar un valor antiguo de Marlin: rotation_distance = pasos completos × micropasos ÷ pasos/mm, o sea, 200 × 16 ÷ 80 = 40. Con gear_ratio: 50:17 la rotation_distance es el recorrido del último engranaje: por eso la del BMG ronda 22,68 y no 7,71.
Calibrar el extrusor
Las ruedas del extrusor muerden el filamento, así que el avance real depende del filamento y de la presión. Parte del valor del fabricante y luego mide:
- Calienta el hotend a la temperatura de impresión y carga el filamento.
- Marca el filamento 120 mm por encima del punto donde entra en el extrusor y mide la distancia exacta con un pie de rey.
- Extruye despacio. Marlin:
M83y luegoG1 E100 F100. El procedimiento de Klipper:G91y luegoG1 E50 F60(para 50 mm basta una marca a unos 70 mm). No uses el botón de extruir de la pantalla o de la app: va demasiado rápido y la presión falsea el resultado. - Vuelve a medir desde la entrada del extrusor hasta la marca. Extruido = marca antes − marca después.
- Marlin: nuevos pasos/mm = antiguos × pedidos ÷ extruidos. Klipper: nueva rotation_distance = antigua × extruidos ÷ pedidos, redondeada a tres decimales.
- Guarda el valor y repite la prueba si el primer resultado se desvió más de unos 2 mm.
Ejemplo con un extrusor tipo BMG a 415 pasos/mm: la marca de 120 mm acaba a 22,4 mm, así que han entrado 97,6 mm en vez de 100. Marlin: 415 × 100 ÷ 97,6 = 425,2 pasos/mm, que se guardan con M92 E425.205 y M500. Klipper, con gear_ratio: 50:17: 22,679 × 97,6 ÷ 100 = 22,135. La desviación pasa de 2 mm, así que repite la prueba con el valor nuevo.
Introduce el valor actual y las dos distancias de la marca: la calculadora te da los nuevos pasos/mm y la rotation_distance.Calibrar el extrusor
La corriente del motor: nominal, RMS y de pico
La corriente impresa en un motor paso a paso, 2,0 A en muchos NEMA 17 de 48 mm, es la corriente por fase para la que está diseñado con las dos fases alimentadas, como en paso completo. Con micropasos las dos bobinas llevan dos senoides, y los drivers se ajustan de dos maneras distintas:
- A4988 y DRV8825 fijan un límite de corriente: el pico de la senoide. Cada bobina lleva entonces alrededor del 71 % de ese valor en RMS.
- TMC2208, TMC2209 y TMC5160 se ajustan en corriente RMS: tanto
run_currentde Klipper comoX_CURRENTde Marlin son RMS (el comentario de Marlin dice que hay que multiplicar por 1,414 para tener el pico).
¿Cuánta corriente usar? Watterott, fabricante de los SilentStepStick originales, aconseja empezar por la mitad de la corriente nominal y subir de 0,1 A en 0,1 A si el motor pierde pasos; la documentación de Voron usa el 70 % de la nominal como RMS, o el límite del driver si es menor. Klipper dice lo mismo sin cifras: toda la corriente que aguante el motor sin calentarse tanto que no se pueda tocar. Para un motor de 2,0 A eso va de 1,0 a 1,4 A RMS.
Esa corriente circula también con el motor parado. En una bobina de 1,6 Ω, 1,2 A RMS son 2,3 W por fase, unos 4,6 W entre las dos: un motor que mantiene la posición durante toda la impresión está hecho para trabajar caliente.
| Motor (ejemplos) | Corriente nominal | Par de retención | Resistencia, inductancia | Longitud |
|---|---|---|---|---|
| StepperOnline 17HS19-2004S1 | 2,0 A por fase | 59 N cm | 1,6 Ω, 3,0 mH | 48 mm |
| LDO-42STH48-2004AC | 2,0 A por fase | 59 N cm | 1,6 Ω ±20 %, 3,0 mH ±20 % | 48 mm |
| Moons’ MS17HD6P4200 | 2,0 A por fase | 63 N cm | 1,3 Ω, 2,9 mH | 48,3 mm |
Todos de 1,8°, según la página de StepperOnline, el plano de LDO y la página de producto de Moons’. Son ejemplos, no recomendaciones de compra. En cualquier alternativa comprueba la corriente nominal por fase, la inductancia (cuanto más baja, más par conserva a velocidad con 24 V), el eje y las parejas de cables de cada bobina en el conector.
La Vref de A4988, DRV8825 y TMC2209
En un driver que se ajusta con potenciómetro, la corriente depende solo de dos cosas: la tensión de referencia Vref y el valor de las resistencias de sensado junto al chip, marcadas R068 (0,068 Ω), R100 o R110.
A4988 I límite (pico) = Vref ÷ (8 × Rs)
DRV8825 I límite (pico) = Vref ÷ (5 × Rs)
TMC2208/9 I RMS = (Vref ÷ 2,5 V) × 0,325 V ÷ (Rs + 0,02 Ω) ÷ √2
(Rs 0,110 Ω: I RMS = Vref ÷ 1,41; por encima de 2,5 V la Vref no aporta nada)
Para nuestro motor de 2,0 A queremos unos 1,2 A RMS en las bobinas, el 60 % de la nominal: algo por debajo de los 1,4 A a partir de los cuales la hoja de datos del TMC2209 pide especial cuidado con el calor. Según el driver, eso supone:
| Driver | Resistencias de sensado | Ajuste | Vref | Refrigeración a esta corriente |
|---|---|---|---|---|
| TMC2209 | 0,110 Ω | 1,2 A RMS (60 %) | 1,7 V | Disipador y ventilador: por encima de 1 A RMS, aproximadamente, según Watterott |
| A4988 | 0,068 Ω (Pololu) | límite de 1,7 A (85 %) ≈ 1,2 A RMS | 0,92 V | Disipador y flujo de aire: por encima de 1 A por fase, aproximadamente, según Pololu |
| DRV8825 | 0,100 Ω (Pololu) | límite de 1,7 A (85 %) ≈ 1,2 A RMS | 0,85 V | Disipador y flujo de aire: por encima de 1,5 A por fase, aproximadamente, según Pololu |
Valores de nuestra calculadora de Vref; cada enlace la abre con estos ajustes. Fíjate en los porcentajes: el 85 % en un A4988 da la misma corriente en las bobinas que el 60 % en un TMC2209.
Subir al 70 % en el TMC2209, 1,4 A RMS, pide 1,98 V, y solo con un módulo preparado para ello: FYSETC dice que sus SilentStepStick solo se pueden usar hasta 1,2 A RMS, y la documentación de Voron recomienda como máximo 1,4 A para un TMC2209 en formato stepstick, bien refrigerado. Con resistencias de 0,110 Ω un TMC2209 no pasa de 1,77 A RMS por mucho que gires el potenciómetro.
| Driver (ejemplos) | Características | Para este motor |
|---|---|---|
| Pololu A4988 (#1182) | 0,068 Ω, 8–35 V, hasta 1/16; alrededor de 1 A por fase sin refrigeración, 2 A con ella | Funciona a 0,92 V con disipador y ventilación; ruidoso, y solo 1/16 |
| Pololu DRV8825 (#2133) | 0,100 Ω, 8,2–45 V, hasta 1/32; alrededor de 1,5 A por fase sin refrigeración, 2,2 A con ella | Funciona a 0,85 V con refrigeración |
| BIGTREETECH TMC2209, FYSETC Silent2209 | 0,110 Ω; chip de 2 A RMS y 2,8 A de pico; máximo ajustable 1,77 A RMS; UART | Vale para 1,2 A RMS con disipador y ventilador; silencioso, corriente en el firmware |
| BIGTREETECH TMC5160T Pro | Solo SPI, 0,075 Ω, 3,1 A RMS, 4,4 A de pico, 8–56 V | Da a este motor toda su corriente nominal con margen; la opción para motores más grandes |
Según las páginas de los fabricantes: Pololu, BIGTREETECH (bttwiki), FYSETC. Los clones varían: lee el marcado de las resistencias de tu placa. Un TMC2208 (1,4 A RMS) conviene dejarlo para Z y el extrusor.
Elige el driver, lee las resistencias de sensado e introduce la corriente del motor: la calculadora te da la Vref, la corriente de pico y RMS y la refrigeración que necesita.Abrir la calculadora de Vref
Medir y ajustar la Vref con seguridad
- Apaga y desconecta el motor del driver que vas a ajustar. FYSETC lo pide expresamente; Pololu aclara que no hace falta tener el motor conectado para fijar el límite.
- Alimenta la placa con su fuente principal, no solo con el USB. Solo con el USB la lectura puede ser errónea, y en un DRV8825 o un TMC puede que no leas nada: un DRV8825 solo da su referencia con la alimentación de los motores encendida y SLEEP y RESET a nivel alto.
- Punta negra del polímetro en un pin GND, punta roja en el centro del potenciómetro o en el punto de prueba Vref de la placa.
- Gira poco a poco con un destornillador cerámico o de plástico: una punta metálica puede cortocircuitar el potenciómetro con un pin vecino. El sentido que sube la Vref cambia de una placa a otra, así que vigila el polímetro.
- Apaga, espera a que la placa se descargue, conecta el motor y solo entonces vuelve a encender.
- Mueve el eje unos minutos y toca el motor y el driver: templado está bien; si quema tanto que no puedes dejar el dedo, sobra corriente.
UART y SPI: la corriente en el firmware
Un TMC2209 en una placa cableada para UART, como los drivers integrados de una BIGTREETECH SKR Mini E3 V3.0 o los zócalos de una BTT Octopus con los jumpers de UART puestos, toma la corriente del firmware. Marlin pasa el driver a su referencia interna, así que el potenciómetro no hace nada; Klipper la fija desde la configuración. Un módulo TMC5160 ni siquiera tiene potenciómetro: se ajusta por SPI.
En Klipper: run_current: 1.2 en la sección [tmc2209 stepper_x] (amperios RMS), con sense_resistor en su valor por defecto 0.110 o en el de tu módulo (0.075 para el TMC5160T Pro). Klipper desaconseja hold_current. En Marlin: X_CURRENT 1200 en Configuration_adv.h (mA RMS) con X_RSENSE 0.11, o con la impresora en marcha M906 X1200 y M500.
Pasos perdidos, calor, micropasos y modos
| Síntoma | Causa probable | Qué hacer |
|---|---|---|
| Capas desplazadas a alta velocidad, chirridos | Poca corriente, demasiada aceleración o velocidad, correa floja | Sube la corriente un 10 %, baja la aceleración, revisa la tensión de las correas y los prisioneros de las poleas |
| Desplazamientos tras unos minutos de impresión | El driver se recalienta y se apaga un instante | Baja la corriente, añade disipador y ventilador a los drivers; Klipper avisa de los errores de sobretemperatura de los TMC |
| Motor que quema | Corriente demasiado alta para el motor | Bájala un 10–20 % y comprueba que no pierde pasos |
| Chasquidos en el extrusor, subextrusión | Corriente del extrusor demasiado baja, o hotend frío o atascado | Comprueba primero la temperatura y luego sube un poco la corriente del extrusor |
| Todas las medidas mal en la misma proporción | Los micropasos del firmware no coinciden con los pines del driver | Iguala microsteps (o X_MICROSTEPS en Marlin) con los jumpers o el ajuste por UART |
Según la documentación de Klipper sobre los TMC: el driver se apaga solo cuando se calienta demasiado, y un motor demasiado caliente pierde par y precisión.
- Micropasos: dan suavidad, no precisión. 16 es lo habitual; los drivers TMC lo interpolan internamente a 256 (
interpolate: Truees el valor por defecto de Klipper), lo que según Klipper cuesta unos 0,006 mm en un eje con rotation_distance 40. Para la máxima precisión Klipper propone spreadCycle,interpolate: Falsey 64 o 128 micropasos. - StealthChop o SpreadCycle: StealthChop es casi silencioso; SpreadCycle da más par y precisión y aguanta mejor la velocidad. Un TMC2209 en modo autónomo arranca en StealthChop, Klipper usa SpreadCycle por defecto y Marlin activa de serie StealthChop en todos los ejes. Elige uno por eje: Klipper avisa de que cambiar de modo en movimiento da malos resultados.
- Refrigeración: por encima de 1 A RMS, aproximadamente, los drivers piden un disipador bien pegado y un ventilador que sople encima. El motor, en cambio, se calienta por diseño: lleva corriente incluso parado.
Ejemplo completo: toda la impresora
Una impresora cartesiana con motores de 1,8°, de 2,0 A en X e Y, drivers TMC2209 a 16 micropasos, correas GT2 en poleas de 20 dientes, un husillo T8 en Z y un extrusor tipo BMG. De las secciones anteriores: X e Y a 80 pasos/mm, Z a 400, E calibrado a 425,2; 1,2 A RMS en X e Y, es decir, 1,7 V en el potenciómetro en modo autónomo. Los motores de Z y del extrusor se ajustan aparte, según su propia corriente nominal.
Klipper (añade uart_pin y los demás pines de la configuración de ejemplo de tu placa):
[stepper_x]
microsteps: 16
rotation_distance: 40
[tmc2209 stepper_x]
run_current: 1.2
sense_resistor: 0.110
[stepper_z]
microsteps: 16
rotation_distance: 8
[extruder]
microsteps: 16
rotation_distance: 22.135
gear_ratio: 50:17
Marlin, compilado en Configuration.h y Configuration_adv.h, o enviado una vez y guardado con M500:
#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 425.205 }
#define X_CURRENT 1200
#define X_RSENSE 0.11
M92 X80 Y80 Z400 E425.205
M906 X1200 Y1200
M500
Errores habituales
- Calibrar X e Y con un cubo impreso. Calcúlalos; calibra solo el extrusor.
- Usar la relación anunciada del extrusor. El «3:1» de un BMG es 50:17: pon la relación real o parte de los pasos/mm del fabricante.
- Tratar un ajuste de TMC como un pico. 2,0 A RMS en un TMC son toda la corriente nominal de un motor de 2,0 A, sin margen, y más de lo que puede ajustar un módulo de 0,110 Ω (1,77 A).
- Ajustar la Vref solo con el USB. La lectura puede ser errónea, y en un DRV8825 o un TMC puede que no leas nada: enciende la alimentación principal.
- Dar por hecho el valor de las resistencias de sensado. Los clones del mismo driver vienen con R050, R068, R100 o R110: lee las de tu placa.
- Girar el potenciómetro de un driver en UART. No hace nada; cambia
run_currentoX_CURRENT. - Micropasos que no coinciden. Jumpers a 1/32 y firmware a 1/16 reducen a la mitad cada movimiento.
Seguridad
- Apaga antes de tocar el cableado. Conectar un motor, un módulo driver o un jumper con la placa encendida puede destruir el driver.
- Fuentes de red. Casi todas las impresoras llevan una fuente a 230 V con bornes de tornillo: deja la tapa puesta y la toma de tierra conectada, y trabaja en el lado de baja tensión solo con la impresora desenchufada.
- Calor. Un motor muy caliente puede ablandar las piezas de plástico montadas sobre él, como advierte la documentación de Klipper, y quemarte. Los drivers sin refrigeración se apagan o se averían: el ventilador de la placa forma parte del diseño.
- Piezas en movimiento. Prueba las corrientes nuevas con las manos lejos de correas y poleas, y ten a mano la parada de emergencia o el interruptor.
Preguntas frecuentes
¿Cuántos pasos/mm lleva una correa GT2 con polea de 20 dientes?
80 con un motor de 1,8° a 16 micropasos (rotation_distance 40 en Klipper). Una polea de 16 dientes da 100 (rotation_distance 32) y un husillo T8, 400 (rotation_distance 8).
¿Cómo se calibran los pasos del extrusor?
Marca el filamento 120 mm por encima del extrusor, extruye 100 mm despacio con el hotend a temperatura y mide lo que queda. Nuevo valor = antiguo × 100 ÷ milímetros extruidos de verdad: 415 × 100 ÷ 97,6 = 425,2. En Klipper la rotation_distance se escala al revés: antigua × extruidos ÷ pedidos.
¿Qué Vref pongo en un TMC2209 para un motor de 2 A?
Con resistencias de sensado de 0,110 Ω, Vref = corriente RMS × 1,41: 1,7 V para 1,2 A RMS, 1,98 V para 1,4 A en un módulo preparado para ello. Por encima de 1 A RMS, aproximadamente, el módulo necesita disipador y ventilador.
¿La corriente nominal del motor es de pico o RMS?
Es la corriente por fase con las dos fases alimentadas. Tómala como techo RMS para un TMC y empieza por el 50–70 %; en un A4988 o un DRV8825 la Vref fija el pico, así que el mismo porcentaje da alrededor de un 30 % menos de corriente.
¿Importa la Vref si el TMC2209 funciona por UART?
No. Marlin pasa el driver a su referencia interna y usa X_CURRENT o M906; Klipper usa run_current. El potenciómetro se ignora.
¿Tiene que estar conectado el motor mientras mido la Vref?
No hace falta: FYSETC dice que lo desconectes y Pololu, que no es necesario. Lo importante es no conectarlo ni desconectarlo nunca con el driver alimentado.
¿Por qué mi motor pierde pasos?
Poca corriente, demasiada aceleración, una correa o una polea flojas, o un driver que se recalienta y se corta. Si solo pasa al cabo de un rato, es calor: refrigera mejor o baja la corriente.
¿StealthChop o SpreadCycle?
StealthChop para imprimir en silencio a velocidades moderadas, SpreadCycle para par y precisión a alta velocidad. Klipper usa SpreadCycle por defecto; un TMC2209 en modo autónomo arranca en StealthChop.
Fuentes
- Documentación de Klipper: Rotation distance
- Documentación de Klipper: drivers TMC
- Documentación de Klipper: referencia de configuración, [tmc2209]
- Documentación de Marlin: M92, pasos por unidad
- Documentación de Marlin: M906, corriente de los motores
- Código de Marlin: Configuration_adv.h (X_CURRENT, X_RSENSE, StealthChop)
- Analog Devices (Trinamic): hoja de datos del TMC2209, rev. 1.08
- Texas Instruments: hoja de datos del DRV8825, descripción detallada
- Pololu: placa driver A4988 (#1182)
- Pololu: placa driver DRV8825 (#2133)
- Pololu: ajustar el límite de corriente en las placas driver
- BIGTREETECH: módulo TMC2209
- BIGTREETECH: TMC5160T Pro V1.0
- FYSETC: Silent2209 (Vref, micropasos)
- Watterott: preguntas frecuentes de los SilentStepStick
- Documentación de Voron: calcular la corriente de los drivers
- StepperOnline: 17HS19-2004S1
- LDO Motors: plano del LDO-42STH48-2004AC
- Moons’: MS17HD6P4200
- Bondtech: extrusor BMG
- Rat Rig: extrusor LDO Orbiter v2.5
- LDO: configuración de firmware del Orbiter v2.0
- FYSETC: extrusor Sherpa Mini
- BIGTREETECH: SKR Mini E3 V3.0
- BIGTREETECH: Octopus