Quello qui presentato è uno shield per Arduino denominato CNC SHIELD compatibile con i driver controller tipo A4988 o DRV8825.
Viene utilizzata di solito per realizzare piccole macchine CNC o 3D printer.
Nell’ esempio è utilizzato lo shield. Il modello è nella versione V3.0, ma è già disponibile il modello revisione V3.51
Indice
Schema elettrico della scheda CNC SHIELD versione 3.0
Sotto è riportato lo schema elettrico della scheda
Esempio di utilizzo della scheda
Dove trovare la scheda
Lo shield è venduto da Futura Elettronica con codice 8300-CNCSHIELD. Il costo si aggira sui 5€
NOTA: nella vendita non sono compresi i moduli che devono essere acquistati a parte, in questo caso i driver basati sul chip A4988 della Allegro li troverete a questo link , mentre i driver basati sul chip DRV8825 della Texas Instruments, li troverete a questo link.
Altra possibilità è data dal sito Banggood dove trovare un kit completo formato da:
- 1 x shield CNC 3.0
- 1 scheda clone UNO R3 con cavo USB
- 4 driver A4988 con aletta di raffreddamento
Il suo costo al momento di scrittura di questo articolo è di 14 € + spese di spedizione.
Caratteristiche
- CNC shield compatibile con driver controller A4988 e DRV8825.
- Compatibile con GRBL 0.8c. (Firmware open source che gira su un Arduino UNO che trasforma i comandi del codice G in segnali stepper https://github.com/grbl/grbl )
- Supporto a 4 assi (X, Y, Z, A)
- Possibilità di due arresti finali per ciascun asse (6 in totale)
- Abilitazione e direzione del mandrino
- Abilitazione del refrigerante
- Utilizza driver passo-passo tipo A4988 o DRV8825
- Ponticelli per impostare il Micro-Stepping per i driver passo-passo. (max 1/16)
(La scheda DRV8825 può fare fino a 1/32 micro-stepping) - I motori passo-passo possono essere collegati con connettori molex a 4 pin.
- Funziona a 12-24V DC. (Solo il Pololu DRV8825 si possono gestire motori con tensione fino a 36 V)
- Dimensioni 68x53x12mm
Versione 3.51
Sotto è riportata la foto dell’ultima versione dello shield la 3.51.
Impostazione della scheda
Utilizzando due ponticelli, è possibile configurare il 4° asse per clonare l’asse X o Y o Z. Può anche funzionare come un singolo asse utilizzando il pin digitale 12 per il segnale di guida e il pin digitale 13 come segnale di direzione. (GRBL supporta solo 3 assi al momento)
Clona X-Axis al quarto driver stepper (contrassegnato come A)
Y-Axis al 4 ° driver passo passo (contrassegnato come A)
Z-Axis al 4 ° driver passo passo (contrassegnato come A)
Usa D12 e D13 per pilotare il quarto driver stepper (contrassegnato come A)
Configurazione fine corsa
Per impostazione predefinita, GRBL è configurato per attivare un avviso se un fine corsa si abbassa (viene collegato a massa). Sui forum questo è stato molto dibattuto e alcune persone hanno richiesto di avere degli arresti high-end attivi. I ponticelli nella foto offrono l’opzione per fare entrambe le cose. (Per eseguire l’impostazione predefinita su GRBL, il ponticello deve essere collegato come lo scudo sinistro nell’immagine in basso) (Questo jumper è stato introdotto solo nella versione 3.02)
Gli interruttori di fine corsa sono interruttori standard “sempre aperti”. Un fine corsa viene attivato quando il perno di fine corsa si collega a terra (quando si imposta con impostazioni GRBL predefinite).
Configurazione di Micro Stepping per ciascun asse
Ogni asse ha 3 jumper che possono essere impostati per configurare il micro stepping per l’asse.
Nelle tabelle sotto High indica che un Jumper è inserito e Low indica che nessun jumper è inserito.
Scheda driver con finale A4988
Scheda driver utilizzata ha un finale A4988 che permette di comandare un motore passo passo con una scheda Arduino o altri microcontrollori.
La scheda (disponibile a seconda dei lotti con circuito stampato ROSSO o VERDE) necessita di alimentazione di 5Vdc per la logica e una tensione da 8 e 35Vdc per il motore.
L’uscita può pilotare motori fino a 2A con dissipatore o ventilazione e gestisce il pilotaggio di stepper in micropasso.
Il micropasso (passo intero, 1/2, 1/4, 1/8 o 1/16 di passo) è impostabile tramite gli appositi ingressi siglati “MS1-MS2-MS3” ( consultare il datasheet del Chip).
E’ possibile la regolazione della corrente di uscita tramite un potenziometro a vite. Dotata di shutdown termico a temperatura eccessiva e blocco sotto tensione.
Misure scheda : 20×15 mm, per un peso di soli 4 gr.
La scheda driver con finale A4988è compatibile pin to pin con la scheda DRV8825
Sketch di esempio
Per il test del CNC SHIELD con il modulo A4988 Controller, si inserirà lo shield su una scheda Arduino UNO originale o clone, si inserirà il modulo controllo motore in questo caso nello slot per l’asse Y, e un motore passo passo alla relativa morsettiera.
Occorre poi collegare alla morsettiera di alimentazione motore, una fonte in grado di fornire una tensione minima di 12V-2A, questo in base alle caratteristiche del proprio motore.
Lo sketch farà compiere al motore un determinato numero di passi (modificare il valore step) , seguiti da una pausa.
Schema equivalente
Sketch del test
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#define EN 8 //Direction pin #define X_DIR 5 #define Y_DIR 6 #define Z_DIR 7 //Step pin #define X_STP 2 #define Y_STP 3 #define Z_STP 4 int steps = 50; // Passi da effettuare void setup() { // Impostazione di pin pinMode(X_DIR, OUTPUT); pinMode(X_STP, OUTPUT); pinMode(Y_DIR, OUTPUT); pinMode(Y_STP, OUTPUT); pinMode(Z_DIR, OUTPUT); pinMode(Z_STP, OUTPUT); pinMode(EN, OUTPUT); digitalWrite(EN, LOW); } void loop() { for (int i = 0; i < steps; i++) { digitalWrite(Y_DIR, HIGH); // rotazione oraria digitalWrite(Y_STP, HIGH); delay(1); digitalWrite(Y_STP, LOW); delay(1); } delay (2000); } |
Video del test
Sketch per tre stepper
Segue lo sketch completo che utilizza tutti e tre i driver per pilotare tre motori.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
// The following is a simple stepper motor control procedures, # define EN 8 // stepper motor enable , active low # define X_DIR 5 // X -axis stepper motor direction control # define Y_DIR 6 // y -axis stepper motor direction control # define Z_DIR 7 // z axis stepper motor direction control # define X_STP 2 // x -axis stepper control # define Y_STP 3 // y -axis stepper control # define Z_STP 4 // z -axis stepper control /* // Function : step . function: to control the direction of the stepper motor , the number of steps . // Parameters : dir direction control , dirPin corresponding stepper motor DIR pin , // stepperPin corresponding stepper motor ” step ” pin , Step number of step of no return value. */ void step (boolean dir, byte dirPin, byte stepperPin, int steps) { digitalWrite (dirPin, dir); delay (50); for (int i = 0; i < steps; i++) { digitalWrite (stepperPin, HIGH); delayMicroseconds (5); digitalWrite (stepperPin, LOW); delayMicroseconds (5); } } void setup () {// The stepper motor used in the IO pin is set to output pinMode (X_DIR, OUTPUT); pinMode (X_STP, OUTPUT); pinMode (Y_DIR, OUTPUT); pinMode (Y_STP, OUTPUT); pinMode (Z_DIR, OUTPUT); pinMode (Z_STP, OUTPUT); pinMode (EN, OUTPUT); digitalWrite (EN, LOW); } void loop () { step (false, X_DIR, X_STP, 200); // X axis motor reverse 1 ring, the 200 step is a circle. step (false, Y_DIR, Y_STP, 200); // y axis motor reverse 1 ring, the 200 step is a circle. step (false, Z_DIR, Z_STP, 200); // z axis motor reverse 1 ring, the 200 step is a circle. delay (5); step (true, X_DIR, X_STP, 200); // X axis motor forward 1 laps, the 200 step is a circle. step (true, Y_DIR, Y_STP, 200); // y axis motor forward 1 laps, the 200 step is a circle. step (true, Z_DIR, Z_STP, 200); // z axis motor } |
Scheda per utilizzo modulo Stepper singolo
E’ disponibile anche una Board per driver A4988 e DRV8825 singolo.
Vedere descrizione e programmi di esempio nell’articolo Board per driver A4988-DRV8825