venerdì 1 maggio 2015

Come pilotare i motori passo passo con Arduino

Molti utenti mi scrivono sottoponendomi per la maggior parte dei casi quesiti su come poter utilizzare Arduino in una CNC oppure su come poter controllare i motori passo passo.

Spero di fare un pò luce su questo argomento cercando di semplificare i concetti il più possibile.

Per comandare un motore stepper con Arduino servono principalmente i seguenti componenti

Hardware

  • Scheda Arduino
  • Driver per pilotare il motore (in questo articolo utilizzerò un Pololu A4988)
  • Motore stepper
  • Alimentatore
  • Cavo USB

Software

  • Software IDE di interfacciamento con Arduino
  • Librerie GRBL
  • Universal Gcode Sender

Il motore stepper lo potete recuperare da una vecchia stampante, l'alimentatore va benissimo quello ATX di un vecchio PC, la scheda Arduino la potete comprare a circa 25 euro mentre il driver per pilotare potete utilizzare un Pololu a4988 oppure un EasyDriver, sono poco costosi nell'ordine di 3/5 euro cad..
Tutti i software sono opensource.

Arduino Uno e schema PIN di GRBL



Driver Pololu A4988



Collegare Arduino al driver

In questo esempio utilizzerò un Pololu A4988 ma in linea generale i driver si assomigliano tutti.
Prendiamo in esame il motore del primo asse (asse X).
Seguendo lo schema delle librerie GRBL vedremo che i pin utilizzati per il motore dell'asse X sono i seguenti:
pin 2 (Step Pulse) 
pin 5 (direction)





Collegare il driver al motore


Colleghiamo l'alimentazione




Carichiamo le librerie GRBL su Arduino

La prima cosa da fare è scaricare le librerie GRBL da questo link
Poi basta copiare la cartella nel percorso delle librerie di Arduino come in figura


Aprire l'IDE di Arduino e dal menu File selezionare GRBLtoArduino


Una volta caricate le librerie sarà sufficiente fare l'upload nella scheda Arduino cliccando sul pulsante "Carica" come in figura


Tutta la documentazione di GRBL la potete trovare qui sotto:

GRBL 0.8 la potete scaricare da qui
GRBL 0.9 la potete scaricare da qui

Utilizziamo Universal Gcode Sender

Universal Gcode Sender è un simpatico programmino sviluppato in Java e quindi multipiattaforma che si occupa di interpretare i comandi Gcode inviando le informazioni ad Arduino che tramite le librerie GRBL invia gli impulsi ai motori.
In sostanza è l'equivalente di Mach3 con la differenza che ha molte meno funzionalità.

In Universal Gcode Sender trovere 3 sezioni

Command Mode


In questa sezione potete/dovete settare tutti i parametri per far funzionare correttamente la vostra CNC.

Per elencare i parametri digitate $$ (INVIO), vi comparirà un elenco simile a questo:
$0=755.906 (x, step/mm)
$1=755.906 (y, step/mm)
$2=755.906 (z, step/mm)
$3=30 (step pulse, usec)
$4=500.000 (default feed, mm/min)
$5=500.000 (default seek, mm/min)
$6=28 (step port invert mask, int:00011100)
$7=25 (step idle delay, msec)
$8=50.000 (acceleration, mm/sec^2)
$9=0.050 (junction deviation, mm)
$10=0.100 (arc, mm/segment)
$11=25 (n-arc correction, int)
$12=3 (n-decimals, int)
$13=0 (report inches, bool)
$14=1 (auto start, bool)
$15=0 (invert step enable, bool)
$16=0 (hard limits, bool)
$17=0 (homing cycle, bool)
$18=0 (homing dir invert mask, int:00000000)
$19=25.000 (homing feed, mm/min)
$20=250.000 (homing seek, mm/min)
$21=100 (homing debounce, msec)
$22=1.000 (homing pull-off, mm)
Per cambiare un parametro digitare $[numero parametro] [nuovo valore](invio) 
Ad esempio 
se vogliamo impostare sull'asse X il numero degli step a 900 digiteremo 
$0=900 (invio) 

File Mode

In questa sezione potete scegliere dal vostro computer un file Gcode da far eseguire alla vostra cnc



Manual Control

In questa sezione potete movimentare gli assi manualmente utilizzando anche le freccine della tastiera



Procedimento:
  1. Collegate Arduino al PC tramite la porta USB
  2. Avviate Universal Gcode Sender
  3. Scegliete la porta COM sulla quale Arduino è collegato
  4. Scegliete il Baud rate corretto (Con le libreri GRBL 0.9 il baud deve essere 115200)
  5. Cliccate sul tasto open per connettersi ad Arduino
  6. Andate nella sezione "Command Mode" e digitate $X(invio) per resettare gli allarmi
A questo punto se avete collegato tutto bene nella sezione potete iniziare a far girare il vostro motore.

Questa è la piastra che ho realizzato con i 3 pololu a4899 per la mia cnc laser

Spero abbiate trovato interessante questo articolo.
Grazie per la lettura