Calcolo dell'RMS/Vref

 

Nel TMC2209 ci sono due modi per impostare il limite di corrente erogata al motore: Se siamo in modalità standalone si può regolare il Vref tramite la vite del trimmer. Se siamo in modalità UART lo si fa via software impostando la corrente RMS.

 

 

#include <TMCStepper.h>

#define EN_PIN     8
#define DIR_PIN    5
#define STEP_PIN   6
#define SERIAL_PORT Serial1  // o SoftwareSerial se non hai una porta hardware libera
#define R_SENSE 0.11f         // valore della resistenza di sense (0.11 Ohm è comune)

TMC2209Stepper driver(&SERIAL_PORT, R_SENSE);

void setup() {
  pinMode(EN_PIN, OUTPUT);
  digitalWrite(EN_PIN, LOW); // Abilita driver

  SERIAL_PORT.begin(115200);
  driver.begin();
  driver.rms_current(800);        // Imposta corrente in mA (modificabile via encoder)
  driver.microsteps(16);          // Imposta il passo (modificabile via encoder)
  driver.en_spreadCycle(false);   // Usa StealthChop (silenzioso)
  driver.pwm_autoscale(true);     // Adatta PWM automaticamente
}

 

Il driver.rms_current(valore) della libreria TMCStepper imposta la corrente e da cosa deriva il Vref effettivo.

 

🔧 Cos’è driver.rms_current(valore)?

 

Il metodo rms_current() della libreria TMCStepper imposta la corrente RMS del motore.

Il TMC2209 imposta internamente il Vref in base alla corrente RMS desiderata, utilizzando una formula che dipende dal valore della resistenza di sense (RSense) e altri parametri interni.

 

Nel TMC2209, la resistenza di sense (RSENSE) è già saldata sul modulo, e il valore tipico è:

R<sub>SENSE</sub> = 0.11 Ω (su quasi tutti i moduli MKS o BigTreeTech, incluso quello in foto)

Questo valore è fondamentale perché la libreria TMCStepper lo usa per calcolare il Vref interno.

Per verificare se il driver ha questo valore dell' RSENSE osservare sul retro del driver la presenza di due resistenze con su scritto 110.

 

🔍 Quindi: come impostare correttamente driver.rms_current(valore)?

 

La libreria TMCStepper calcola tutto internamente in base a RSENSE. Tu devi solo dire quanta corrente RMS vuoi fornire al motore, e il chip regolerà il Vref di conseguenza.

 

Il tuo motore:

1.7 A di picco per fase

Quindi:

 

Questo è il massimo che dovresti fornire con:

 

driver.rms_current(1200);

 

dove Peak è il nostro 1.7A del nema e √2 è la radice quadrata di 2   (1.414)

 

RMS = 1.7/ 1.414 = 1.7 x 0.707 = 1.2A ≈ 1200mA

 

Se invece volessi impostare manualmente il Vref sul TMC2209 in standalone come dovrei calcolarlo per 1.7A di picco:

 

🔧 Calcolo del Vref (senza UART)

Il TMC2209 in standalone regola la corrente motore in base a un Vref (misurato sul pin Vref, o in alternativa generato internamente via UART in modalità smart).
La formula per calcolare il valore della corrente motore RMS a partire dal Vref, secondo il datasheet ufficiale, è:

 

 

📊 Tabella per corrente RMS (TMC2209 UART)

 

(Rsense = 0.11 Ω, come nei moduli più comuni)

 

Corrente RMS (A) Corrente di picco (A) Vref equivalente (V)
0.60 A 0.85 A 0.093 V
0.80 A 1.13 A 0.124 V
1.00 A 1.41 A 0.155 V
1.20 A 1.70 A 0.186 V
1.40 A 1.98 A 0.217 V
1.60 A 2.26 A 0.248 V
1.80 A 2.54 A 0.279 V
2.00 A (max consigliato) 2.82 A 0.310 V

 

Quindi per motivi prudenziali imposteremo l'RMS a 1.06A che corrisponde 1.5A di picco.

Nello sketch imposteremo:

driver.rms_current(1060); // Imposta corrente in mA