Etiquetas:

En este tutorial, veremos el uso del CNC Escudo V3 para Arduino. Para poder manejar una máquina como un CNC o una impresora 3D con varios motores paso a paso, es interesante disponer de una placa que facilite la conexión de los diferentes elementos de la máquina. Esta es la función del escudo CNC.

Material

  • Arduino UNO
  • CNC Escudo V3
  • Controlador paso a paso A4988 o DRV8825 o SilentStepStick
  • Cable USBA macho a USB B macho

Cómo funciona

La Escudo CNC V3 es una placa de extensión para Arduino UNO o Mega que puede conectarse fácilmente a controladores de motores paso a paso, como el A4988. También permite accionar y gestionar los elementos necesarios para el funcionamiento de una fresadora digital (CNC). Es decir, topes finales, ventiladores, etc,

arduino-cnc-shield-overview Uso de un Arduino CNC Shield V3

Esquema

El Shield se coloca sobre el microcontrolador Arduino y los motores se conectan directamente a los pines de salida de los drivers. Puede elegir los controladores que desee en función de la potencia de sus motores y de sus aplicaciones (A4988, DRV8825, SilentStepStick, TMC).

arduino-cnc-shield-v3_bb Uso de un Arduino CNC Shield V3
arduino-cnc-shield-pinout Uso de un Arduino CNC Shield V3

Debajo de cada controlador hay terminales para seleccionar la resolución del paso. Estos terminales se conectan a los pines MS0, MS1 y MS2 de los controladores.

Antes de conectar los motores, asegúrese de ajustar el limitador de corriente en cada controlador para que coincida con el motor que está impulsando.

Código

Para accionar un motor paso a paso con CNC Escudo V3, nos remitimos al pinout de la shield, que nos da acceso a los pines a llamar para enviar comandos al controlador del motor (DRV8825, A4988 o SilentStepStick).

const int enPin=8;
const int stepXPin = 2; //X.STEP
const int dirXPin = 5; // X.DIR
const int stepYPin = 3; //Y.STEP
const int dirYPin = 6; // Y.DIR
const int stepZPin = 4; //Z.STEP
const int dirZPin = 7; // Z.DIR

int stepPin=stepYPin;
int dirPin=dirYPin;

const int stepsPerRev=200;
int pulseWidthMicros = 100;  // microseconds
int millisBtwnSteps = 1000;

void setup() {
  Serial.begin(9600);
  pinMode(enPin, OUTPUT);
  digitalWrite(enPin, LOW);
  pinMode(stepPin, OUTPUT);
  pinMode(dirPin, OUTPUT);
 
  Serial.println(F("CNC Shield Initialized"));
}

void loop() {
  Serial.println(F("Running clockwise"));
  digitalWrite(dirPin, HIGH); // Enables the motor to move in a particular direction
  // Makes 200 pulses for making one full cycle rotation
  for (int i = 0; i < stepsPerRev; i++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(pulseWidthMicros);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(millisBtwnSteps);
  }
  delay(1000); // One second delay

  Serial.println(F("Running counter-clockwise"));
  digitalWrite(dirPin, LOW); //Changes the rotations direction
  // Makes 400 pulses for making two full cycle rotation
  for (int i = 0; i < 2*stepsPerRev; i++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(pulseWidthMicros);
    digitalWrite(stepPin, LOW);
    delayMicroseconds(millisBtwnSteps);
  }
  delay(1000);
}

Para probar el funcionamiento del Escudo y los motores, no utilizamos ninguna biblioteca en particular. Sin embargo, si desea utilizar funciones más avanzadas, puede utilizar la biblioteca AccelStepper o el firmware GRBL V0.9.

Resultado

Una vez cargado el código y enchufado el sistema, deberías ver que el motor conectado al controlador Y gira una vuelta en el sentido de las agujas del reloj y dos en sentido contrario. Si no es así, probablemente tengas un problema de conexión.

También es posible que el fusible de la placa esté dañado. Puedes sustituirlo por un cable de plomo.

Aplicaciones

  • Fabrique su propio grabador CNC o láser
  • Fabricación de un cortador
  • Acciona hasta tres motores paso a paso de forma independiente

Fuentes