CNC SHIELD V3 A4988 Controller

ultimo aggiornamento 21 ottobre 2018


 

Indice

Descrizione

Quello qui presentato è uno shield per Arduino denominato CNC SHIELD, negli esempi è utilizzato il modello nella versione V3.0, ma è già disponibile il modello revisione V3.1.  Viene utilizzata di solito per realizzare piccole macchina CNC o 3D printer, lo Shield permette di gestire tre moduli comando motori che possono essere i driver A4988 e DRV8825.

Schema elettrico della scheda CNC SHIELD versione 3.0

pcbgogo

homotix

PCBONLINE

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 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.

 

Caratteristiche

 

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)

Clona Y-Axis al 4 ° driver passo passo (contrassegnato come A)

Clona 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 con finale A4988 ( originale Allegro) per comandare un motore passo passo con da Arduino o altri microcontrollori .

A4988 DMOS Microstepping Driver with Translator And Overcurrent Protection

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ò di 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 : 20x15 mm, per un peso di soli 4 gr.

Installazione dissipatore di calore

Programma di esempio

Per il test, si inserirà lo shield su una scheda Arduino UNO originale o clone,si inserirà almeno uno dei moduli controllo motore A4988, e un motore passo passo.  Occorre poi collegare alla morsettiera di alimentazione motore, una fonte in grado di fornire una tensione minima di 12V-2A.

Lo sketch farà compiere al motore un determinato numero di passi, seguiti da una pausa.


sketch "test_CNC_shield.ino"

Sketch testato con versione IDE 1.8.5

 

/*
  test_CNC_shield.ino
  Lo sketch verifica il funzionamento di uno dei driver
  dello shield CNC.

  Creato il 21/10/2018 da Adriano Gandolfo
  Sito web https://www.adrirobot.it
  Blog https://it.emcelettronica.com/author/adrirobot
  Pagina Facebook https://www.facebook.com/Adrirobot-318949048122955
  Istagram https://www.instagram.com/adrirobot/
  This example code is in the public domain.
*/

#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);
    digitalWrite(Y_STP, HIGH);
    delay(1);
    digitalWrite(Y_STP, LOW);
    delay(1);
  }
  delay (2000);
}


sketch "CNC_shield.ino"

Sketch testato con versione IDE 1.8.5

// 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 forward 1 laps, the 200 step is a circle.
delay (5);
}

 

 

Elenco revisioni
08/12/2020 Aggiornato pagina
21/10/2018 Emissione preliminare