Tensione di riferimanto

Vref

 

 

Impostare correttamente il VREF del driver DRV8825 è fondamentale per regolare la corrente fornita al motore passo-passo. Un VREF errato può causare un surriscaldamento del driver o un funzionamento instabile del motore.

 

Calcolo della Vref su driver DV8825 per pilotare motore steper nema17

 

La formula è: VREF = Imax / 2

 

Nel mio caso visto che il nema17 ha una corrente massima per fase di 1.7 A il Vref sarà:

 

 

Questo è il valore a cui arrivare, ma prudenzialmente è bene iniziale con un Vref  più basso. Questo perchè dipede dalla produzioe di calore e dalla presenza o meno del dissipatore. Ci possono essere diverse configurazioni. utilizzare il driver senza dissipator, con dissipatore, all'aria aperta o dentro un case, con ventola di raffreddamento. Nelle  codizioni migliori si può arrivare al valore massimo di 0.85 (mai superarlo) nelle altre situazioni bisogna ridurlo conseguentemente.

 

 

Scenario VREF Sicura Corrente stimata Note
Senza dissipatore ~0.5–0.6V ~1.0–1.2A Solo test leggeri
Con dissipatore (in case) ~0.75–0.85V ~1.5–1.7A Ottimale per il tuo motore
Con dissipatore + ventola Max 0.85V 1.7A Perfetto, ma non superare 0.85V

 

 

Come impostare il Vref sul driver DRV8825

 

Importante è comprendere la piedinatura:

Questo schema è quello giusto da adottare. Come si può notare il drive ha due tipi di alimentazione una  per il motore ed è collegata ai pin VMOT e GND (8.2-25V) nel nostro caso 24V è il masimo, poi c'è l'alimentazione del circuito logico che è a 5V, ora vi chiederete come faccio ad alimentare il circuito logico se non ho nessun pin tipo VDD per connettere i 5V di Arduino? Nei vecchi modelli dove ora c'è FAULT vi era perl'appunto VDD e bastava collegare 5V di arduino a VDD e GND a GND e il gioco era fatto. Ora c'è FAULT, questo è un pin in sola uscita che viene utilizzato per monitorare eventuali errori, el nostro caso non verra utilizzato, ed allora come alimentiamo la logica? Bisogna focalizzarsi su i due pin RESET e SLEEP, per far funzinare il driver questi devono essere entrambe ad HIGH (a 5V) altrimenti non funziona nulla, ma qui c'è il segreto se noi alimentiamo questi due pin, non solo permettereo al driver di funzionare ma lo alimenteremo, in altre parole fanno la funzione del vecchio pin VDD. Questo è importante capirlo altrimenti si rischia di non riuscire ad impostare il VREF.

 

Occorrente necessario per l'operazione:

  • Driver DRV8825
  • Alimentatore
  • Scheda Arduino
  • Multimetro
  • Breadboard
  • cacciavite ceramico
  • Guanti antistatici
  • cavo alimentazione Arduino USB o batteria 9V
  • cavi jamper er i collegamenti

Assicurati che i seguenti collegamenti ci siano TUTTI contemporaneamente:

 

PIN del DRV8825 Collegamento
VMOT 12V dal tuo alimentatore
GND (vicino a VMOT) GND dell’alimentatore
GND (logica) GND in comune con Arduino
STEP, DIR, ENABLE NON necessari per ora (lascia liberi)
RESET e SLEEP Collegati tra loro, e poi ai 5V di Arduino
FAULT Lascialo libero
Tutti i GND I GND di Arduino e del driver vanno collegati tra di loro

 

🔌 Nota: VMOT e GND alimentano la parte potenza. I 5V (tramite RESET/SLEEP) accendono la logica.

 

Come procedere:

  • Inserire il driver sulla breadboard ed inserire i vari cavi jamper eseguendo tutti i collegamenti come sopra descritto
  • Accendere il multimetro ed impostarlo su V (non mV) il mio riconosce automaticamente se è DC o AC
  • Inserire un puntale nero con pinza ed un puntale rosso con punta, Il nero collegarlo al jamper che avremo inseito in prossimità del pin GND sotto FAUT
  • Collegare l'alimentatore con entrambe i cavi a pinza e collegare il rosso sul pin in prosimità di VMOT e il nero  con il cavo vicino a GND subito sotto
  • Accendere l'alimentatore ed impostarlo a 12V con corrente massima di 2A
  • Toccare con il puntale rosso la vite del trimmer sul driver e con il cacciavite ceramico ruotarlo per portare la tensione al valore Vrf calcolato (io ho impostato 0.7V). per aumentare i volt girare verso sinistra per ridurre ruotare verso destra.

Ora potete spengere il tutto ed il gioco è fatto.

Caricate il seguente codice per fare un test di verifica, questo farà girare alternativamente il motore in un verso una ausa poi nellatro verso

 

Codice test:

#define DIR_PIN 2
#define STEP_PIN 3
#define ENABLE_PIN 4  // opzionale se vuoi gestire anche ENABLE

void setup() {
  pinMode(STEP_PIN, OUTPUT);
  pinMode(DIR_PIN, OUTPUT);
  pinMode(ENABLE_PIN, OUTPUT);
  
  digitalWrite(ENABLE_PIN, LOW); // Abilita il driver
  digitalWrite(DIR_PIN, HIGH);   // Direzione

  delay(1000); // Attesa prima dell'inizio
}

void loop() {
  // Esegui 200 passi (una rotazione se il tuo motore è 1.8°)
  for (int i = 0; i < 200; i++) {
    digitalWrite(STEP_PIN, HIGH);
    delayMicroseconds(1000);  // Più basso = più veloce
    digitalWrite(STEP_PIN, LOW);
    delayMicroseconds(1000);
  }

  delay(1000); // Pausa

  // Inverti direzione
  digitalWrite(DIR_PIN, !digitalRead(DIR_PIN));
}