Da dove vengono i passi per millimetro
Un motore passo-passo ruota di un angolo fisso a ogni passo intero: 1,8° su quasi tutti i motori delle stampanti, cioè 200 passi interi per giro (i motori da 0,9° ne hanno 400). Il driver divide ogni passo intero in microstep, di solito 16, quindi per un giro dell’albero il firmware manda 3200 passi. Dividi questo numero per la distanza che l’asse percorre in un giro e ottieni i passi per millimetro.
passi/mm = passi interi per giro × microstep × rapporto ÷ corsa per giro
cinghia: corsa per giro = passo della cinghia × denti della puleggia
vite: corsa per giro = passo del filetto × principi (l’avanzamento)
In questa catena non c’è niente da misurare col righello: passo, numero di denti e principi fanno parte del nome dei componenti. Per questo gli assi a cinghia e a vite si calcolano e non si calibrano; si misura solo l’estrusore, che afferra un filamento morbido con ruote dentate.
Cinghie, viti trapezoidali ed estrusori con riduzione
| Trasmissione | Corsa per giro | Passi/mm a 1/16 (1,8°) | rotation_distance di Klipper |
|---|---|---|---|
| Cinghia GT2, puleggia da 20 denti | 2 mm × 20 = 40 mm | 80 | 40 |
| Cinghia GT2, puleggia da 16 denti | 2 mm × 16 = 32 mm | 100 | 32 |
| Vite T8 (Tr8x8, 4 principi) | 2 mm × 4 = 8 mm | 400 | 8 |
| Vite Tr8x2 (un principio) | 2 mm | 1600 | 2 |
| Bondtech BMG, ingranaggi 50:17 | 22,679 mm per giro della ruota | 415 | 22,679 con gear_ratio: 50:17, oppure 7,711 senza |
Valori di cinghie e viti dal nostro calcolatore dei passi per mm (16 denti, T8, BMG); il valore del BMG è quello di Bondtech.
Conta i denti della puleggia (spesso il numero è stampigliato sopra) e guarda la punta della vite: una T8 mostra quattro filetti separati, quindi il suo passo di 2 mm diventa un avanzamento di 8 mm. Con gli estrusori a riduzione è il rapporto dichiarato a trarre in inganno: il BMG è venduto come 3:1, ma i suoi ingranaggi sono 50:17, cioè 2,94:1. Per questo Bondtech indica 415 passi/mm, circa il 2 % in meno di un vero 3:1.
| Estrusore (esempi) | Dato del produttore | Cosa inserire |
|---|---|---|
| Bondtech BMG (e cloni tipo BMG) | Ingranaggi 50:17, 415 passi/mm a 1/16 | gear_ratio: 50:17 e rotation_distance 22,679, oppure 415 passi/mm in Marlin |
| LDO Orbiter v2.5 | 690 passi/mm a 1/16, rotation_distance 4,637, come per la v2.0 | Come indicato, poi calibra: Rat Rig avverte che sulla v2.5 i valori possono cambiare leggermente. La scheda della v2.0 di LDO dà 0,85 A RMS per il suo motore |
| FYSETC Sherpa Mini (rev. 1.5) | Riduzione 6,25:1, 870 passi/mm | 870 passi/mm in Marlin, poi calibra |
Valori di partenza dalla pagina del BMG di Bondtech, dalla pagina dell’Orbiter v2.5 di Rat Rig, dalla scheda firmware dell’Orbiter v2.0 di LDO e dalla pagina dello Sherpa Mini di FYSETC. I cloni copiano di solito il rapporto, non sempre il diametro della ruota: calibra comunque.
Inserisci cinghia, puleggia, vite o rapporto di riduzione: il calcolatore ti dà passi/mm, rotation_distance, la frequenza di passo alla velocità massima e le righe per Marlin e Klipper.Apri il calcolatore dei passi per mm
Marlin e Klipper: dove vanno i numeri
Marlin memorizza i passi per unità. M92 X80 Y80 Z400 E415 li imposta, M92 da solo mostra quelli attuali (M503 sulle versioni più vecchie) e M500 li salva nella EEPROM, se il firmware è compilato con EEPROM_SETTINGS, come quasi tutti quelli delle stampanti. I valori compilati nel firmware sono DEFAULT_AXIS_STEPS_PER_UNIT in Configuration.h; M502 li ripristina.
Klipper non usa i passi per mm. Ogni sezione [stepper_…] vuole rotation_distance (la corsa per giro), microsteps e, se non sono quelli predefiniti, full_steps_per_rotation (200; 400 per un motore da 0,9°) e gear_ratio. Per convertire un vecchio valore di Marlin: rotation_distance = passi interi × microstep ÷ passi/mm, quindi 200 × 16 ÷ 80 = 40. Con gear_ratio: 50:17 la rotation_distance è la corsa dell’ultimo ingranaggio: per questo quella del BMG vale circa 22,68 e non 7,71.
Calibrare l’estrusore
Le ruote dell’estrusore mordono il filamento, quindi l’avanzamento reale dipende dal filamento e dalla pressione. Parti dal valore del produttore, poi misura:
- Porta l’hotend alla temperatura di stampa e carica il filamento.
- Fai un segno sul filamento 120 mm sopra il punto in cui entra nell’estrusore e misura la distanza esatta con il calibro.
- Estrudi lentamente. Marlin:
M83, poiG1 E100 F100. La procedura di Klipper:G91, poiG1 E50 F60(per 50 mm basta un segno a circa 70 mm). Non usare il pulsante di estrusione di display o app: è troppo veloce e la pressione falsa il risultato. - Misura di nuovo dall’ingresso dell’estrusore al segno. Estruso = segno prima − segno dopo.
- Marlin: nuovi passi/mm = vecchi × richiesti ÷ estrusi. Klipper: nuova rotation_distance = vecchia × estrusi ÷ richiesti, arrotondata a tre decimali.
- Salva il valore e ripeti la prova se il primo risultato si discostava di più di 2 mm circa.
Esempio con un estrusore tipo BMG a 415 passi/mm: il segno a 120 mm finisce a 22,4 mm, quindi sono entrati 97,6 mm invece di 100. Marlin: 415 × 100 ÷ 97,6 = 425,2 passi/mm, da salvare con M92 E425.205 e M500. Klipper, con gear_ratio: 50:17: 22,679 × 97,6 ÷ 100 = 22,135. Lo scarto supera i 2 mm, quindi ripeti la prova con il nuovo valore.
Inserisci il valore attuale e le due distanze del segno: il calcolatore ti dà i nuovi passi/mm e la rotation_distance.Calibra l’estrusore
La corrente del motore: nominale, RMS e di picco
La corrente stampata su un motore passo-passo, 2,0 A per molti NEMA 17 da 48 mm, è la corrente per fase per cui è dimensionato con entrambe le fasi alimentate, come a passo intero. In microstepping la corrente nelle due bobine segue due sinusoidi, e i driver si regolano in due modi diversi:
- A4988 e DRV8825 impostano un limite di corrente: il picco della sinusoide. Ogni bobina riceve allora, in RMS, circa il 71 % di quel valore.
- TMC2208, TMC2209 e TMC5160 si impostano in corrente RMS: sia il
run_currentdi Klipper sia l’X_CURRENTdi Marlin sono valori RMS (il commento di Marlin dice di moltiplicare per 1,414 per avere il picco).
Quanta corrente usare? Watterott, che produce i SilentStepStick originali, consiglia di partire da metà della corrente nominale e di salire di 0,1 A alla volta se il motore perde passi; la documentazione Voron usa il 70 % della nominale come RMS, o il limite del driver se è più basso. Klipper esprime la stessa idea senza numeri: tutta la corrente che il motore regge senza scaldarsi al punto da non poterlo toccare. Per un motore da 2,0 A significa tra 1,0 e 1,4 A RMS.
Quella corrente scorre anche a motore fermo. In una bobina da 1,6 Ω, 1,2 A RMS corrispondono a 2,3 W per fase, circa 4,6 W per le due: un motore che tiene la posizione per tutta la stampa è fatto per lavorare caldo.
| Motore (esempi) | Corrente nominale | Coppia di tenuta | Resistenza, induttanza | Lunghezza |
|---|---|---|---|---|
| StepperOnline 17HS19-2004S1 | 2,0 A per fase | 59 N cm | 1,6 Ω, 3,0 mH | 48 mm |
| LDO-42STH48-2004AC | 2,0 A per fase | 59 N cm | 1,6 Ω ±20 %, 3,0 mH ±20 % | 48 mm |
| Moons’ MS17HD6P4200 | 2,0 A per fase | 63 N cm | 1,3 Ω, 2,9 mH | 48,3 mm |
Tutti da 1,8°, dalla pagina prodotto di StepperOnline, dal disegno di LDO e dalla pagina prodotto di Moons’. Sono esempi, non consigli d’acquisto. Su qualsiasi alternativa controlla la corrente nominale per fase, l’induttanza (più è bassa, più coppia resta in velocità a 24 V), l’albero e le coppie di fili delle bobine sul connettore.
La Vref di A4988, DRV8825 e TMC2209
Su un driver regolato con il trimmer la corrente dipende solo da due cose: la tensione di riferimento Vref e il valore delle resistenze di misura accanto al chip, siglate R068 (0,068 Ω), R100 o R110.
A4988 I limite (picco) = Vref ÷ (8 × Rs)
DRV8825 I limite (picco) = 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; sopra 2,5 V la Vref non aggiunge nulla)
Per il nostro motore da 2,0 A vogliamo circa 1,2 A RMS nelle bobine, il 60 % della nominale: un po’ sotto la soglia di 1,4 A oltre la quale il datasheet del TMC2209 chiede particolare attenzione al calore. Ecco cosa significa su ciascun driver:
| Driver | Resistenze di misura | Impostazione | Vref | Raffreddamento a questa corrente |
|---|---|---|---|---|
| TMC2209 | 0,110 Ω | 1,2 A RMS (60 %) | 1,7 V | Dissipatore e ventola: sopra 1 A RMS circa, secondo Watterott |
| A4988 | 0,068 Ω (Pololu) | limite 1,7 A (85 %) ≈ 1,2 A RMS | 0,92 V | Dissipatore e flusso d’aria: sopra 1 A per fase circa, secondo Pololu |
| DRV8825 | 0,100 Ω (Pololu) | limite 1,7 A (85 %) ≈ 1,2 A RMS | 0,85 V | Dissipatore e flusso d’aria: sopra 1,5 A per fase circa, secondo Pololu |
Valori del nostro calcolatore della Vref; ogni link lo apre con queste impostazioni. Nota le percentuali diverse: l’85 % su un A4988 dà la stessa corrente nelle bobine del 60 % su un TMC2209.
Salire al 70 % sul TMC2209, 1,4 A RMS, richiede 1,98 V, e solo con un modulo che li regga: FYSETC dice che i suoi SilentStepStick si possono usare solo fino a 1,2 A RMS, e la documentazione Voron consiglia al massimo 1,4 A per un TMC2209 in formato stepstick, ben raffreddato. Con resistenze da 0,110 Ω un TMC2209 non supera 1,77 A RMS, per quanto giri il trimmer.
| Driver (esempi) | Caratteristiche | Per questo motore |
|---|---|---|
| Pololu A4988 (#1182) | 0,068 Ω, 8–35 V, fino a 1/16; circa 1 A per fase senza raffreddamento, 2 A con | Funziona a 0,92 V con dissipatore e flusso d’aria; rumoroso, e solo 1/16 |
| Pololu DRV8825 (#2133) | 0,100 Ω, 8,2–45 V, fino a 1/32; circa 1,5 A per fase senza raffreddamento, 2,2 A con | Funziona a 0,85 V con raffreddamento |
| BIGTREETECH TMC2209, FYSETC Silent2209 | 0,110 Ω; chip da 2 A RMS e 2,8 A di picco; massimo impostabile 1,77 A RMS; UART | Adatto a 1,2 A RMS con dissipatore e ventola; silenzioso, corrente impostata dal firmware |
| BIGTREETECH TMC5160T Pro | Solo SPI, 0,075 Ω, 3,1 A RMS, 4,4 A di picco, 8–56 V | Porta questo motore alla corrente nominale con margine; la scelta giusta per motori più grandi |
Dalle pagine dei produttori: Pololu, BIGTREETECH (bttwiki), FYSETC. I cloni variano: leggi la sigla delle resistenze sulla tua scheda. Un TMC2208 (1,4 A RMS) è meglio riservarlo a Z e all’estrusore.
Scegli il driver, leggi le resistenze di misura e inserisci la corrente del motore: il calcolatore ti dà la Vref, la corrente di picco e RMS e il raffreddamento che serve.Apri il calcolatore della Vref
Misurare e regolare la Vref in sicurezza
- Spegni e scollega il motore dal driver che stai regolando. FYSETC lo chiede esplicitamente; Pololu precisa che non serve collegarlo per impostare il limite.
- Alimenta la scheda con l’alimentatore principale, non solo con l’USB. Con la sola USB la lettura può essere sbagliata, e su un DRV8825 o un TMC potresti non leggere nulla: un DRV8825 dà il suo riferimento solo con l’alimentazione dei motori accesa e con SLEEP e RESET alti.
- Puntale nero su un pin GND, puntale rosso sul centro del trimmer o sul punto di test Vref della scheda.
- Gira a piccoli passi con un cacciavite in ceramica o plastica: una punta metallica può mettere in corto il trimmer con un pin vicino. Il verso che alza la Vref cambia da scheda a scheda, quindi guarda il multimetro.
- Spegni, aspetta che la scheda si scarichi, collega il motore e solo allora riaccendi.
- Fai muovere l’asse per qualche minuto e tocca motore e driver: se sono tiepidi va bene, se scottano tanto da non poterci tenere sopra un dito, la corrente è troppa.
UART e SPI: la corrente nel firmware
Un TMC2209 su una scheda cablata per l’UART, come i driver integrati di una BIGTREETECH SKR Mini E3 V3.0 o gli zoccoli di una BTT Octopus con i jumper UART inseriti, prende la corrente dal firmware. Marlin passa il driver al riferimento interno, quindi il trimmer non fa nulla; Klipper la imposta dalla configurazione. Un modulo TMC5160 il trimmer non ce l’ha proprio: si regola via SPI.
In Klipper: run_current: 1.2 nella sezione [tmc2209 stepper_x] (ampere RMS), con sense_resistor lasciato al valore predefinito 0.110 o impostato su quello del tuo modulo (0.075 per il TMC5160T Pro). Klipper sconsiglia hold_current. In Marlin: X_CURRENT 1200 in Configuration_adv.h (mA RMS) con X_RSENSE 0.11, oppure a macchina accesa M906 X1200 e M500.
Passi persi, calore, microstep e modalità
| Sintomo | Causa probabile | Cosa fare |
|---|---|---|
| Strati spostati ad alta velocità, motore che gratta | Corrente troppo bassa, accelerazione o velocità troppo alte, cinghia lenta | Alza la corrente del 10 %, abbassa l’accelerazione, controlla la tensione delle cinghie e i grani delle pulegge |
| Spostamenti dopo qualche minuto di stampa | Il driver si surriscalda e si spegne per un istante | Abbassa la corrente, aggiungi dissipatore e ventola sui driver; Klipper segnala gli errori di sovratemperatura dei TMC |
| Motore che scotta | Corrente troppo alta per il motore | Abbassa del 10–20 % e verifica che non perda passi |
| L’estrusore scatta, sottoestrusione | Corrente dell’estrusore troppo bassa, oppure hotend troppo freddo o intasato | Prima controlla la temperatura, poi alza un po’ la corrente dell’estrusore |
| Tutte le misure sbagliate dello stesso fattore | I microstep nel firmware non corrispondono a quelli impostati sui pin del driver | Allinea microsteps (o X_MICROSTEPS in Marlin) ai jumper o all’impostazione UART |
Dalla documentazione di Klipper sui TMC: il driver si spegne da solo quando è troppo caldo, e un motore troppo caldo perde coppia e precisione.
- Microstep: aggiungono fluidità, non precisione. 16 è il valore abituale; i driver TMC lo interpolano internamente a 256 (
interpolate: Trueè il valore predefinito di Klipper), cosa che secondo Klipper introduce un errore di circa 0,006 mm su un asse con rotation_distance 40. Per la massima precisione Klipper suggerisce spreadCycle,interpolate: Falsee 64 o 128 microstep. - StealthChop o SpreadCycle: StealthChop è quasi silenzioso; SpreadCycle dà più coppia e precisione e regge meglio la velocità. Un TMC2209 standalone parte in StealthChop; di default Klipper usa SpreadCycle e Marlin attiva StealthChop su tutti gli assi. Scegline uno per asse: Klipper avverte che cambiare modalità in movimento dà risultati scadenti.
- Raffreddamento: sopra 1 A RMS circa i driver vogliono un dissipatore ben incollato e una ventola che ci soffi sopra. Il motore invece è caldo per natura: porta corrente anche da fermo.
Esempio completo: tutta la stampante
Una stampante cartesiana con motori da 1,8°, da 2,0 A su X e Y, driver TMC2209 a 16 microstep, cinghie GT2 su pulegge da 20 denti, una vite T8 su Z e un estrusore tipo BMG. Dalle sezioni precedenti: X e Y a 80 passi/mm, Z a 400, E calibrato a 425,2; 1,2 A RMS su X e Y, cioè 1,7 V sul trimmer in modalità standalone. Per i motori di Z e dell’estrusore la corrente va ricavata dalla rispettiva corrente nominale.
Klipper (aggiungi uart_pin e gli altri pin dalla configurazione d’esempio della tua scheda):
[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, da impostare in Configuration.h e Configuration_adv.h prima di compilare, oppure da inviare una volta e salvare 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
Errori comuni
- Calibrare X e Y con un cubo stampato. Calcolali; calibra solo l’estrusore.
- Usare il rapporto dichiarato dell’estrusore. Il «3:1» di un BMG è in realtà 50:17: inserisci il rapporto vero, o parti dai passi/mm del produttore.
- Trattare un’impostazione TMC come un picco. 2,0 A RMS su un TMC sono l’intera corrente nominale di un motore da 2,0 A, senza margine, e più di quanto un modulo da 0,110 Ω possa impostare (1,77 A).
- Regolare la Vref con la sola USB. La lettura può essere sbagliata, e su un DRV8825 o un TMC potresti non leggere nulla: accendi l’alimentazione principale.
- Dare per scontato il valore delle resistenze di misura. I cloni dello stesso driver arrivano con R050, R068, R100 o R110: leggi la sigla sul tuo modulo.
- Girare il trimmer di un driver in UART. Non fa nulla; cambia
run_currentoX_CURRENT. - Microstep non allineati. Jumper a 1/32 e firmware a 1/16 dimezzano ogni movimento.
Sicurezza
- Spegni prima di toccare i collegamenti. Collegare un motore, un modulo driver o un jumper con la scheda accesa può distruggere il driver.
- Alimentatori da rete. Quasi tutte le stampanti hanno un alimentatore a 230 V con morsetti a vite: tieni il coperchio montato e la terra collegata, e lavora sul lato a bassa tensione solo con la spina staccata.
- Calore. Un motore molto caldo può ammorbidire le parti in plastica montate sopra, come avverte la documentazione di Klipper, e scottare. I driver senza raffreddamento si spengono o si guastano: la ventola della scheda fa parte del progetto.
- Parti in movimento. Prova le nuove correnti con le mani lontane da cinghie e pulegge, e tieni a portata di mano l’arresto d’emergenza o l’interruttore.
Domande frequenti
Quanti passi/mm servono con una cinghia GT2 e una puleggia da 20 denti?
80 con un motore da 1,8° a 16 microstep (rotation_distance 40 in Klipper). Una puleggia da 16 denti dà 100 (rotation_distance 32), una vite T8 400 (rotation_distance 8).
Come si calibrano i passi dell’estrusore?
Fai un segno sul filamento 120 mm sopra l’estrusore, estrudi lentamente 100 mm con l’hotend in temperatura e misura quanto resta. Nuovo valore = vecchio × 100 ÷ millimetri effettivamente estrusi: 415 × 100 ÷ 97,6 = 425,2. In Klipper la rotation_distance va scalata al contrario: vecchia × estrusi ÷ richiesti.
Che Vref impostare su un TMC2209 per un motore da 2 A?
Con resistenze di misura da 0,110 Ω, Vref = corrente RMS × 1,41: 1,7 V per 1,2 A RMS, 1,98 V per 1,4 A su un modulo che li regga. Sopra 1 A RMS circa il modulo vuole dissipatore e ventola.
La corrente nominale del motore è di picco o RMS?
È la corrente per fase con entrambe le fasi alimentate. Prendila come tetto RMS per un TMC e parti dal 50–70 %; su un A4988 o un DRV8825 la Vref imposta il picco, quindi la stessa percentuale dà circa il 30 % di corrente in meno.
La Vref conta se il TMC2209 lavora in UART?
No. Marlin passa il driver al riferimento interno e usa X_CURRENT o M906; Klipper usa run_current. Il trimmer viene ignorato.
Il motore deve essere collegato mentre misuro la Vref?
Non serve: FYSETC dice di scollegarlo e Pololu che non è necessario. Quello che conta è non collegarlo né scollegarlo mai con il driver alimentato.
Perché il mio motore perde passi?
Corrente troppo bassa, accelerazione troppo alta, una cinghia o una puleggia allentate, o un driver che si surriscalda e si spegne. Se succede solo dopo un po’, è il calore: raffredda meglio o abbassa la corrente.
StealthChop o SpreadCycle?
StealthChop per stampare in silenzio a velocità moderate, SpreadCycle per coppia e precisione ad alta velocità. Klipper usa SpreadCycle di default; un TMC2209 standalone parte in StealthChop.
Fonti
- Documentazione di Klipper: Rotation distance
- Documentazione di Klipper: driver TMC
- Documentazione di Klipper: riferimento della configurazione, [tmc2209]
- Documentazione di Marlin: M92, passi per unità
- Documentazione di Marlin: M906, corrente dei motori
- Codice sorgente di Marlin: Configuration_adv.h (X_CURRENT, X_RSENSE, StealthChop)
- Analog Devices (Trinamic): datasheet del TMC2209, rev. 1.08
- Texas Instruments: datasheet del DRV8825, descrizione dettagliata
- Pololu: scheda driver A4988 (#1182)
- Pololu: scheda driver DRV8825 (#2133)
- Pololu: impostare il limite di corrente sulle schede driver
- BIGTREETECH: modulo TMC2209
- BIGTREETECH: TMC5160T Pro V1.0
- FYSETC: Silent2209 (Vref, microstep)
- Watterott: FAQ dei SilentStepStick
- Documentazione Voron: calcolare la corrente dei driver
- StepperOnline: 17HS19-2004S1
- LDO Motors: disegno dell’LDO-42STH48-2004AC
- Moons’: MS17HD6P4200
- Bondtech: estrusore BMG
- Rat Rig: estrusore LDO Orbiter v2.5
- LDO: configurazione firmware dell’Orbiter v2.0
- FYSETC: estrusore Sherpa Mini
- BIGTREETECH: SKR Mini E3 V3.0
- BIGTREETECH: Octopus