Aziz Bench

Impressora 3D: calibrar os passos/mm e ajustar a Vref dos drivers

Dois números decidem se uma impressora 3D anda a distância certa com a força certa: os passos por milímetro de cada eixo e a corrente de cada driver de motor de passo. Os dois saem das peças, sem chute. Este guia mostra como, para Marlin e Klipper, com um exemplo completo e componentes reais.

Por AzizPublicado em 17 min de leitura

Conferido em 6 de novembro de 2026 na documentação do Klipper e do Marlin, no datasheet do TMC2209 da Trinamic (Analog Devices), no do DRV8825 da TI, nas páginas dos drivers da Pololu e nas páginas dos fabricantes de todas as peças citadas. Os números vêm das nossas calculadoras de passos por mm e de Vref.

Passos por milímetro, do zero

Um motor de passo gira um ângulo fixo a cada passo completo: 1,8° em quase todos os motores de impressora, ou seja, 200 passos completos por volta (os de 0,9° têm 400). O driver divide cada passo completo em micropassos, normalmente 16, então o firmware manda 3.200 passos para uma volta do eixo do motor. Divida isso pela distância que o eixo da impressora anda em uma volta e você tem os passos por milímetro.

passos/mm = passos completos por volta × micropassos × relação ÷ deslocamento por volta
correia: deslocamento por volta = passo da correia × dentes da polia
fuso:    deslocamento por volta = passo da rosca × entradas (o avanço)
Motor de 1,8°200 passos completos× 16 micropassos= 3.200 por voltadeslocamento por voltaCorreia GT2, 20 dentes2 mm × 20 = 40 mm80 passos/mmFuso T82 mm × 4 = 8 mm400 passos/mmEngrenagens BMG 50:1722,68 mm por volta415 passos/mmMotor de 1,8°200 passos completos× 16 micropassos= 3.200 por voltadeslocamento por voltaCorreia GT2, 20 dentes2 mm × 20 = 40 mm80 passos/mmFuso T82 mm × 4 = 8 mm400 passos/mmEngrenagens BMG 50:1722,68 mm por volta415 passos/mm
A mesma volta do motor, três jeitos de transformá-la em milímetros. O Klipper pede direto o deslocamento por volta, como rotation_distance.

Nada nessa cadeia precisa ser medido com régua: o passo, o número de dentes e as entradas fazem parte do nome das peças. Por isso os eixos de correia e de fuso são calculados, não calibrados, e só a extrusora, que agarra um filamento macio com engrenagens dentadas, é medida.

Correias, fusos e extrusoras com redução

TransmissãoDeslocamento por voltaPassos/mm em 1/16 (1,8°)rotation_distance do Klipper
Correia GT2, polia de 20 dentes2 mm × 20 = 40 mm8040
Correia GT2, polia de 16 dentes2 mm × 16 = 32 mm10032
Fuso T8 (Tr8x8, 4 entradas)2 mm × 4 = 8 mm4008
Fuso Tr8x2 (uma entrada)2 mm1.6002
Bondtech BMG, engrenagens 50:1722,679 mm por volta da engrenagem41522,679 com gear_ratio: 50:17, ou 7,711 sem

As linhas de correias e fusos vêm da nossa calculadora de passos por mm (16 dentes, T8, BMG); o valor da BMG é o da Bondtech.

Conte os dentes da polia (o número costuma vir gravado nela) e olhe a ponta do fuso: um T8 mostra quatro filetes separados, então o passo de 2 mm vira um avanço de 8 mm. Nas extrusoras com redução, quem engana é a relação anunciada: a BMG é vendida como 3:1, mas as engrenagens são 50:17, ou seja, 2,94:1. Por isso a Bondtech indica 415 passos/mm, cerca de 2% a menos do que um 3:1 de verdade daria.

Extrusora (exemplos)Valor do fabricanteO que colocar
Bondtech BMG (e clones tipo BMG)Engrenagens 50:17, 415 passos/mm em 1/16gear_ratio: 50:17 e rotation_distance 22,679, ou 415 passos/mm no Marlin
LDO Orbiter v2.5690 passos/mm em 1/16, rotation_distance 4,637, como na v2.0Do jeito que está, depois calibre: a Rat Rig avisa que na v2.5 os valores podem mudar um pouco. A folha da v2.0 da LDO dá 0,85 A RMS para o motor dela
FYSETC Sherpa Mini (rev. 1.5)Redução de 6,25:1, 870 passos/mm870 passos/mm no Marlin e depois calibrar

Valores iniciais da página da BMG na Bondtech, da página da Orbiter v2.5 na Rat Rig, da folha de configuração de firmware da Orbiter v2.0 da LDO e da página da Sherpa Mini na FYSETC. Os clones costumam copiar a relação, nem sempre o diâmetro da engrenagem: calibre mesmo assim.

Digite a correia, a polia, o fuso ou a redução: a calculadora dá os passos/mm, a rotation_distance, a frequência de passos na sua velocidade máxima e as linhas para Marlin e Klipper.Abrir a calculadora de passos por mm

Marlin e Klipper: onde vai cada número

O Marlin guarda passos por unidade. M92 X80 Y80 Z400 E415 define os valores, M92 sozinho mostra os atuais (M503 nas versões antigas) e M500 grava na EEPROM, se o firmware foi compilado com EEPROM_SETTINGS, como quase todos os de impressora. Os valores compilados são DEFAULT_AXIS_STEPS_PER_UNIT no Configuration.h; M502 restaura esses valores.

O Klipper não usa passos por mm. Cada seção [stepper_…] leva rotation_distance (o deslocamento por volta), microsteps e, quando não forem os padrões, full_steps_per_rotation (200; 400 para um motor de 0,9°) e gear_ratio. Para converter um valor antigo do Marlin: rotation_distance = passos completos × micropassos ÷ passos/mm, ou seja, 200 × 16 ÷ 80 = 40. Com gear_ratio: 50:17, a rotation_distance é o deslocamento da última engrenagem: por isso a da BMG fica em torno de 22,68, e não 7,71.

Calibrar a extrusora

As engrenagens da extrusora mordem o filamento, então o avanço real depende do filamento e da pressão. Parta do valor do fabricante e depois meça:

  1. Aqueça o hotend até a temperatura de impressão e carregue o filamento.
  2. Marque o filamento 120 mm acima do ponto onde ele entra na extrusora e meça a marca com precisão usando um paquímetro.
  3. Extrude devagar. Marlin: M83 e depois G1 E100 F100. O procedimento do Klipper: G91 e depois G1 E50 F60 (para 50 mm basta uma marca a uns 70 mm). Não use o botão de extrusão da tela ou do app: ele é rápido demais e a pressão distorce o resultado.
  4. Meça de novo da entrada da extrusora até a marca. Extrudado = marca antes − marca depois.
  5. Marlin: novos passos/mm = antigos × pedidos ÷ extrudados. Klipper: nova rotation_distance = antiga × extrudados ÷ pedidos, arredondada para três casas decimais.
  6. Salve e repita se o primeiro resultado errou por mais de uns 2 mm.

Exemplo com uma extrusora tipo BMG a 415 passos/mm: a marca de 120 mm termina em 22,4 mm, então entraram 97,6 mm em vez de 100. Marlin: 415 × 100 ÷ 97,6 = 425,2 passos/mm, gravados com M92 E425.205 e M500. Klipper, com gear_ratio: 50:17: 22,679 × 97,6 ÷ 100 = 22,135. O erro passou de 2 mm, então repita o teste com o valor novo.

Digite o valor atual e as duas distâncias da marca: a calculadora dá os novos passos/mm e a rotation_distance.Calibrar a extrusora

A corrente do motor: nominal, RMS e de pico

A corrente impressa num motor de passo, 2,0 A em muitos NEMA 17 de 48 mm, é a corrente por fase para a qual ele foi projetado com as duas fases ligadas, como em passo completo. Com micropasso as duas bobinas recebem duas senoides, e os drivers são ajustados de dois jeitos diferentes:

  • A4988 e DRV8825 definem um limite de corrente: o pico da senoide. Cada bobina recebe então cerca de 71% desse valor em RMS.
  • TMC2208, TMC2209 e TMC5160 são ajustados em corrente RMS: tanto o run_current do Klipper quanto o X_CURRENT do Marlin são RMS (o comentário do Marlin manda multiplicar por 1,414 para ter o pico).
pico 1,7 ARMS 1,2 Abobina Abobina Bum ciclo elétrico = 4 passos completos = 64 micropassosA4988, DRV8825: a Vref define o picoTMC: Vref ou run_current definem o RMSpico 1,7 ARMS 1,2 Abobina Abobina Bum ciclo elétrico= 4 passos completos = 64 micropassosA4988, DRV8825: a Vref define o picoTMC: Vref ou run_current definem o RMS
A mesma corrente descrita de dois jeitos. Confundir os dois é o motivo mais comum para um driver TMC esquentar o motor mais do que o esperado.

Quanta corrente usar? A Watterott, que fabrica os SilentStepStick originais, recomenda começar com metade da corrente nominal e subir de 0,1 A em 0,1 A se o motor perder passos; a documentação da Voron usa 70% da nominal como RMS, ou o limite do driver, se for menor. O Klipper diz o mesmo sem números: toda a corrente que o motor aguentar sem ficar quente demais para encostar a mão. Para um motor de 2,0 A, isso vai de 1,0 a 1,4 A RMS.

Essa corrente circula mesmo com o motor parado. Numa bobina de 1,6 Ω, 1,2 A RMS dão 2,3 W por fase, cerca de 4,6 W nas duas: um motor que segura a posição a impressão inteira foi feito para trabalhar quente.

Motor (exemplos)Corrente nominalTorque de retençãoResistência, indutânciaComprimento
StepperOnline 17HS19-2004S12,0 A por fase59 N cm1,6 Ω, 3,0 mH48 mm
LDO-42STH48-2004AC2,0 A por fase59 N cm1,6 Ω ±20%, 3,0 mH ±20%48 mm
Moons’ MS17HD6P42002,0 A por fase63 N cm1,3 Ω, 2,9 mH48,3 mm

Todos de 1,8°, segundo a página da StepperOnline, o desenho da LDO e a página do produto da Moons’. São exemplos, não recomendações de compra. Em qualquer alternativa, confira a corrente nominal por fase, a indutância (quanto menor, mais torque sobra em velocidade com 24 V), o eixo e os pares de fios de cada bobina no conector.

A Vref de A4988, DRV8825 e TMC2209

Num driver ajustado pelo potenciômetro, a corrente depende só de duas coisas: a tensão de referência Vref e o valor dos resistores shunt ao lado do chip, marcados R068 (0,068 Ω), R100 ou R110.

A4988     I limite (pico) = Vref ÷ (8 × Rs)
DRV8825   I limite (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; acima de 2,5 V a Vref não acrescenta nada)

Para o nosso motor de 2,0 A queremos cerca de 1,2 A RMS nas bobinas, 60% da nominal: um pouco abaixo dos 1,4 A a partir dos quais o datasheet do TMC2209 pede cuidado especial com o calor. Em cada driver, isso dá:

DriverResistores shuntAjusteVrefRefrigeração nessa corrente
TMC22090,110 Ω1,2 A RMS (60%)1,7 VDissipador e ventoinha: acima de cerca de 1 A RMS, segundo a Watterott
A49880,068 Ω (Pololu)limite de 1,7 A (85%) ≈ 1,2 A RMS0,92 VDissipador e fluxo de ar: acima de cerca de 1 A por fase, segundo a Pololu
DRV88250,100 Ω (Pololu)limite de 1,7 A (85%) ≈ 1,2 A RMS0,85 VDissipador e fluxo de ar: acima de cerca de 1,5 A por fase, segundo a Pololu

Valores da nossa calculadora de Vref; cada link abre a calculadora com esses ajustes. Repare nas porcentagens: 85% num A4988 dão a mesma corrente nas bobinas que 60% num TMC2209.

Subir para 70% no TMC2209, 1,4 A RMS, pede 1,98 V, e só num módulo feito para isso: a FYSETC diz que os SilentStepStick dela só podem ser usados até 1,2 A RMS, e a documentação da Voron recomenda no máximo 1,4 A para um TMC2209 no formato stepstick, bem refrigerado. Com resistores de 0,110 Ω, um TMC2209 não passa de 1,77 A RMS, por mais que você gire o potenciômetro.

Driver (exemplos)CaracterísticasPara este motor
Pololu A4988 (#1182)0,068 Ω, 8–35 V, até 1/16; cerca de 1 A por fase sem refrigeração, 2 A comFunciona com 0,92 V, dissipador e fluxo de ar; barulhento, e só 1/16
Pololu DRV8825 (#2133)0,100 Ω, 8,2–45 V, até 1/32; cerca de 1,5 A por fase sem refrigeração, 2,2 A comFunciona com 0,85 V e refrigeração
BIGTREETECH TMC2209, FYSETC Silent22090,110 Ω; chip de 2 A RMS e 2,8 A de pico; máximo ajustável de 1,77 A RMS; UARTServe para 1,2 A RMS com dissipador e ventoinha; silencioso, corrente no firmware
BIGTREETECH TMC5160T ProSó SPI, 0,075 Ω, 3,1 A RMS, 4,4 A de pico, 8–56 VDá a este motor toda a corrente nominal com folga; a escolha para motores maiores

Segundo as páginas dos fabricantes: Pololu, BIGTREETECH (bttwiki), FYSETC. Os clones variam: leia a marcação dos resistores na sua placa. Um TMC2208 (1,4 A RMS) fica melhor no Z e na extrusora.

Escolha o driver, leia os resistores shunt e digite a corrente do motor: a calculadora dá a Vref, a corrente de pico e RMS e a refrigeração necessária.Abrir a calculadora de Vref

Medir e ajustar a Vref com segurança

  1. Desligue tudo e desconecte o motor do driver que você vai ajustar. A FYSETC pede isso expressamente; a Pololu explica que o motor não precisa estar conectado para definir o limite.
  2. Alimente a placa pela fonte principal, não só pelo USB. Só com o USB a leitura pode sair errada, e num DRV8825 ou num TMC você pode não ler nada: o DRV8825 só gera a referência com a alimentação dos motores ligada e SLEEP e RESET em nível alto.
  3. Ponta preta do multímetro num pino GND, ponta vermelha no centro do potenciômetro ou no ponto de teste Vref da placa.
  4. Gire aos poucos com uma chave de fenda de cerâmica ou de plástico: uma ponta de metal pode fechar curto entre o potenciômetro e um pino vizinho. O sentido que aumenta a Vref muda de uma placa para outra, então fique de olho no multímetro.
  5. Desligue, espere a placa descarregar, conecte o motor e só então ligue de novo.
  6. Movimente o eixo por alguns minutos e encoste no motor e no driver: morno está bom; se esquentar a ponto de não dar para manter o dedo, é corrente demais.

UART e SPI: a corrente no firmware

Um TMC2209 numa placa preparada para UART, como os drivers integrados de uma BIGTREETECH SKR Mini E3 V3.0 ou os soquetes de uma BTT Octopus com os jumpers de UART no lugar, recebe a corrente do firmware. O Marlin passa o driver para a referência interna, então o potenciômetro não faz nada; o Klipper define a corrente pela configuração. Um módulo TMC5160 nem tem potenciômetro: o ajuste é por SPI.

No Klipper: run_current: 1.2 na seção [tmc2209 stepper_x] (ampères RMS), com sense_resistor no padrão 0.110 ou no valor do seu módulo (0.075 para o TMC5160T Pro). O Klipper desaconselha o hold_current. No Marlin: X_CURRENT 1200 no Configuration_adv.h (mA RMS) com X_RSENSE 0.11, ou com a impressora ligada M906 X1200 e M500.

Passos perdidos, calor, micropassos e modos

SintomaCausa provávelO que fazer
Camadas deslocadas em alta velocidade, rangidosCorrente baixa demais, aceleração ou velocidade altas demais, correia frouxaSuba a corrente em 10%, baixe a aceleração, confira a tensão das correias e os parafusos de fixação das polias
Deslocamentos depois de alguns minutos de impressãoO driver superaquece e desliga por um instanteBaixe a corrente, coloque dissipador e ventoinha nos drivers; o Klipper avisa dos erros de superaquecimento dos TMC
Motor pelandoCorrente alta demais para o motorBaixe 10 a 20% e confira se ele não perde passos
A extrusora estala, subextrusãoCorrente da extrusora baixa demais, ou hotend frio ou entupidoConfira primeiro a temperatura e depois suba um pouco a corrente da extrusora
Todas as medidas erradas na mesma proporçãoOs micropassos do firmware não batem com os pinos do driverIguale microsteps (ou X_MICROSTEPS no Marlin) aos jumpers ou ao ajuste por UART

Segundo a documentação do Klipper sobre os TMC: o driver se desliga sozinho quando esquenta demais, e um motor quente demais perde torque e precisão.

  • Micropassos: trazem suavidade, não precisão. 16 é o usual; os drivers TMC interpolam isso internamente para 256 (interpolate: True é o padrão do Klipper), o que segundo o Klipper custa cerca de 0,006 mm num eixo com rotation_distance 40. Para a máxima precisão, o Klipper sugere spreadCycle, interpolate: False e 64 ou 128 micropassos.
  • StealthChop ou SpreadCycle: o StealthChop é quase silencioso; o SpreadCycle dá mais torque e precisão e aguenta melhor a velocidade. Um TMC2209 no modo standalone começa em StealthChop, o Klipper usa SpreadCycle por padrão, e o Marlin já vem com o StealthChop ligado em todos os eixos. Escolha um por eixo: o Klipper avisa que trocar de modo em movimento dá resultados ruins.
  • Refrigeração: acima de cerca de 1 A RMS os drivers pedem um dissipador bem colado e uma ventoinha soprando em cima. Já o motor esquenta por natureza: ele recebe corrente mesmo parado.

Exemplo completo: a impressora inteira

Uma impressora cartesiana com motores de 1,8°, de 2,0 A no X e no Y, drivers TMC2209 com 16 micropassos, correias GT2 em polias de 20 dentes, um fuso T8 no Z e uma extrusora tipo BMG. Das seções anteriores: X e Y com 80 passos/mm, Z com 400, E calibrado em 425,2; 1,2 A RMS no X e no Y, ou seja, 1,7 V no potenciômetro no modo standalone. Os motores do Z e da extrusora recebem a própria corrente, de acordo com a corrente nominal de cada um.

Klipper (acrescente o uart_pin e os outros pinos da configuração de exemplo da sua 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 no Configuration.h e no Configuration_adv.h, ou enviado uma vez e gravado com 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

Erros comuns

  • Calibrar X e Y com um cubo impresso. Calcule esses valores; calibre só a extrusora.
  • Usar a relação anunciada da extrusora. O “3:1” de uma BMG é 50:17: coloque a relação real ou parta dos passos/mm do fabricante.
  • Tratar um ajuste de TMC como pico. 2,0 A RMS num TMC são toda a corrente nominal de um motor de 2,0 A, sem folga, e mais do que um módulo de 0,110 Ω consegue ajustar (1,77 A).
  • Ajustar a Vref só com o USB. A leitura pode sair errada, e num DRV8825 ou num TMC você pode não ler nada: ligue a fonte principal.
  • Supor o valor dos resistores shunt. Clones do mesmo driver vêm com R050, R068, R100 ou R110: leia os da sua placa.
  • Girar o potenciômetro de um driver em UART. Não muda nada; altere run_current ou X_CURRENT.
  • Micropassos que não batem. Jumpers em 1/32 e firmware em 1/16 cortam cada movimento pela metade.

Segurança

  • Desligue antes de mexer na fiação. Conectar um motor, um módulo driver ou um jumper com a placa ligada pode destruir o driver.
  • Fontes ligadas na tomada. Quase toda impressora tem uma fonte de 127/220 V com bornes de parafuso: mantenha a tampa no lugar e o aterramento ligado, e mexa no lado de baixa tensão só com o plugue fora da tomada.
  • Calor. Um motor muito quente pode amolecer as peças de plástico presas nele, como avisa a documentação do Klipper, e queimar os dedos. Drivers sem refrigeração desligam ou queimam: a ventoinha da placa faz parte do projeto.
  • Peças em movimento. Teste os novos ajustes de corrente com as mãos longe das correias e das polias, e deixe o botão de emergência ou o interruptor ao alcance.

Perguntas frequentes

Quantos passos/mm para uma correia GT2 com polia de 20 dentes?

80 com um motor de 1,8° em 16 micropassos (rotation_distance 40 no Klipper). Uma polia de 16 dentes dá 100 (rotation_distance 32), e um fuso T8, 400 (rotation_distance 8).

Como calibro os passos da extrusora?

Marque o filamento 120 mm acima da extrusora, extrude 100 mm devagar com o hotend na temperatura e meça o que sobrou. Novo valor = antigo × 100 ÷ milímetros realmente extrudados: 415 × 100 ÷ 97,6 = 425,2. No Klipper, a rotation_distance é corrigida ao contrário: antiga × extrudados ÷ pedidos.

Que Vref usar num TMC2209 com motor de 2 A?

Com resistores shunt de 0,110 Ω, Vref = corrente RMS × 1,41: 1,7 V para 1,2 A RMS, 1,98 V para 1,4 A num módulo feito para isso. Acima de cerca de 1 A RMS o módulo precisa de dissipador e ventoinha.

A corrente nominal do motor é de pico ou RMS?

É a corrente por fase com as duas fases ligadas. Use como teto RMS num TMC e comece com 50 a 70% dela; num A4988 ou DRV8825 a Vref define o pico, então a mesma porcentagem dá cerca de 30% menos corrente.

A Vref importa se o TMC2209 está em UART?

Não. O Marlin passa o driver para a referência interna e usa X_CURRENT ou M906; o Klipper usa run_current. O potenciômetro é ignorado.

O motor precisa estar conectado enquanto meço a Vref?

Não precisa: a FYSETC manda desconectar, e a Pololu diz que não é necessário. O que importa é nunca conectar nem desconectar o motor com o driver ligado.

Por que meu motor perde passos?

Corrente baixa demais, aceleração alta demais, correia ou polia frouxa, ou um driver que superaquece e desliga. Se só acontece depois de um tempo, é calor: melhore a refrigeração ou baixe a corrente.

StealthChop ou SpreadCycle?

StealthChop para imprimir em silêncio em velocidades moderadas, SpreadCycle para torque e precisão em alta velocidade. O Klipper usa SpreadCycle por padrão; um TMC2209 standalone começa em StealthChop.

Fontes

  1. Documentação do Klipper: Rotation distance
  2. Documentação do Klipper: drivers TMC
  3. Documentação do Klipper: referência de configuração, [tmc2209]
  4. Documentação do Marlin: M92, passos por unidade
  5. Documentação do Marlin: M906, corrente dos motores
  6. Código do Marlin: Configuration_adv.h (X_CURRENT, X_RSENSE, StealthChop)
  7. Analog Devices (Trinamic): datasheet do TMC2209, rev. 1.08
  8. Texas Instruments: datasheet do DRV8825, descrição detalhada
  9. Pololu: placa driver A4988 (#1182)
  10. Pololu: placa driver DRV8825 (#2133)
  11. Pololu: como ajustar o limite de corrente das placas driver
  12. BIGTREETECH: módulo TMC2209
  13. BIGTREETECH: TMC5160T Pro V1.0
  14. FYSETC: Silent2209 (Vref, micropassos)
  15. Watterott: perguntas frequentes dos SilentStepStick
  16. Documentação da Voron: calcular a corrente dos drivers
  17. StepperOnline: 17HS19-2004S1
  18. LDO Motors: desenho do LDO-42STH48-2004AC
  19. Moons’: MS17HD6P4200
  20. Bondtech: extrusora BMG
  21. Rat Rig: extrusora LDO Orbiter v2.5
  22. LDO: configuração de firmware da Orbiter v2.0
  23. FYSETC: extrusora Sherpa Mini
  24. BIGTREETECH: SKR Mini E3 V3.0
  25. BIGTREETECH: Octopus