Icono del sitio AranaCorp

Uso de un Arduino CNC Shield V3

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

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,

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

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

Fuentes

Salir de la versión móvil