«

»

GRBL firmware & stepper driver esterni

Sto sviluppando una nuova macchina… di cui non ho intenzione di parlarvi. Almeno non in questa sede ;)

Vi basti sapere per ora che per questa nuova macchina andrò ad utilizzare come scheda di controllo per i motori passo-passo un Arduino Uno, con firmware GRBL. NON utilizzerò il “famoso” grbl shield ma andrò invece ad utilizzare degli economici stepper driver (made in china) basati sul TB6560, con suddivisione degli step fino a 1/16 e correnti supportate fino a 3A per fase.

Era da un po’ di tempo che volevo sperimentare questa cosa e finalmente mi sono deciso, spinto anche dalla necessità di utilizzare questa chain di elementi per questa nuova macchina che sto sviluppando.

Devo dire che ho avuto un po’ di difficoltà a far funzionare grbl in modo corretto, più che altro perchè avevo sottomano il manuale della versione 0.8 dove il baudrate della comunicazione era 9600, ma non mi ero reso conto di aver scaricato e caricato sull’arduino la versione 0.9 che invece utilizza un baudarate diverso.

Superato questo scoglio, che però mi ha portato via una buona mezza mattinata per riuscire a vedere quanto effettivamente avevo sotto il naso, ho cominciato a fare le prime prove.

Ci vuole prima un po’ di teoria spicciola però. Per il pinout del FW grbl relativa alla scheda Arduino Uno si può far riferimento a questo link sulla wiki ufficiale.

Un classico stepper driver (il circuito che fisicamente pilota i motori) ha dei pin di ingresso e di uscita. Sull’uscita di solito troviamo i collegamenti per i cavi delle varie fasi del motore passo passo. Nei motori utilizzati per le reprap abbiamo solitamente motori bifase con quindi 4 cavi (chiamati A+,A-, B+ e B-).
In ingresso abbiamo di solito un numero di pin pari ad 8. Due sono per l’alimentazione a corrente continua (di solito tra 5-50V a seconda del driver) e quindi abbiamo V+ e GND.
Abbiamo poi due pin Enable+ ed Enable- che servono in teoria per abilitare il motore o meno. Quindi nel caso il motore non sia abilitato non vi è tensione ed il motore non è “bloccato” in posizione.

Abbiamo poi dei pin che possono cambiare nome a seconda della dicitura sulla scheda, ma che di solito sono Direction + e Direction -, Steps + e Steps -.
La prima coppia di pin dice al driver in quale direzione si deve muovere il motore, la seconda di quanti passi si deve effettivamente muovere.

Pin out GRBL 0.9

Nel mio caso i pin che mi interessano sono Direction Z-Axis e Step Pulse Z-Axis. Il negativo è comune ad entrambi.

Il mio stepper driver è invece questo

TB6560 single axis

Stepper driver economico comprato dalla Cina.
Lo schema per i collegamenti può essere trovato a questo indirizzo.

Lo stepper driver ha i seguenti pin di ingresso che elencherò a coppie per una più facile comprensione: (+24V, GND), (EN+, EN-), (CLK+, CLK-), (CW+, CW-). che rispettivamente sono i pin per l’alimentazione, per l’abilitazione del driver/motore, per il numero di passi e per la direzione del motore.

Una foto tanto per confronto delle dimensioni

Una foto tanto per confronto delle dimensioni

Come potete osservare dalla foto il driver è grande come l’Arduino uno.

Collegamento del driver ad Arduino uno

Collegamento del driver ad Arduino uno

Collegamento del nema 23 al driver

Collegamento del nema 23 al driver

Ho fatto un collegamento al volo, utilizzando solo i pin relativi all’asse Z. Come groundo ho usato due pin distinti sull’Arduino uno mentre avrei potuto unirli ed usarne solo uno. Per un collegamento più corretto e pulito andrebbe collegato anche l’endstop dell’asse Z. Ma per il momento non mi serve.
Questo è un collegamento minimo pe far funzionare un singolo motore passo passo.

Se si volesse utilizzare questa procedura per costruire una CNC con 3 assi si dovrebbero sfruttare 3 driver con i relativi collegamenti. Su ogni driver poi andrà impostato (utilizzando gli appositi interruttori presenti sul driver stesso) il frazionamento dei passi (full step, 1/4, 1/8 o 1/16) e la corrente assorbita dal motore. Sulla RAMPS (per le reprap) la selezione del frazionamento dei passi andava fatta mettendo i jumper nel modo opportuno sotto i pololu, mentre la taratura della corrente andava fatta giocando sul trimmer di controllo sul pololu stesso.

Se avete domande o curiosità a riguardo io ancora sto sperimentando, ma per quello che posso cercherò di esservi utile :)

Quindi non esitate a chiedere

  • http://gordtherogue.it Gordie

    Ciao, sto cercando info su GRBL, in particolare vorrei capire come funzionano le velocità, ho bisogno di muovere un carrello su un’asse variando le velocità.
    Al momento ho provato senza GRBL, con Arduino collegato ad uno step driver e il classico esempio di DIGITAL TRUE/FALSE per inviare gli step al motore, però la velocità è bassa (anche diminuendo il tempo DELAY).
    Mi trovo a dover muovere il carrello in tot tempo e quindi devo gestire velocità sia basse che alte, posso chiederti dove hai trovato il manuale di GRBL?
    Hai qualche link sulle velocità in GRBL? Suggerimenti?
    Grazie, e ancora grazie per la tua condivisione.

    • http://www.indiegearlab.com Odino

      Ciao
      da quello che mi ricordo di GRBL (è tanto che non ci metto mano anche se forse a breve dovrò…) dovresti poter configurare il FW con le sue velocità massime.
      Inoltre dovresti poter scrivere del GCODE tipo questa riga
      G0 X100 F3000
      dove F3000 indica la velocità di movimento.
      Variando il valore varierai anche la velocità di rotazione del motore e quindi di spostamento.
      A seconda della potenza e del voltaggio applicato al motore dovresti poter raggiungere velocità abbastanza elevate (tutto dipende anche da quanto è peso il carrello che devi spostare).
      Fammi sapere ;)

We use cookies to ensure that we give you the best experience on our website.
Ok