Neste tutorial, veremos a utilização do Escudo CNC V3 para Arduino. Para poder gerir uma máquina como uma CNC ou uma impressora 3D com vários motores passo a passo, é interessante ter uma placa que facilite a ligação dos diferentes elementos da máquina. Este é o papel do escudo CNC.
Material
- Arduino UNO
- Escudo CNC V3
- Condutor Stepper A4988 ou DRV8825 ou SilentStepStick
- Cabo USBA macho para USB B macho
Como funciona
O Escudo CNC V3 é uma placa de extensão para Arduino UNO ou Mega que pode ser facilmente interligada a controladores de motores passo-a-passo, como o A4988. Também permite conduzir e gerir os elementos necessários ao funcionamento de uma fresadora digital (CNC). Ou seja, paragens finais, ventiladores, etc,
Esquema
O escudo é colocado no microcontrolador Arduino e os motores são ligados directamente aos pinos de saída dos condutores. Pode escolher os condutores que desejar em função da potência dos seus motores e das suas aplicações (A4988, DRV8825, SilentStepStick, TMC).
Os terminais estão disponíveis abaixo de cada condutor para seleccionar a resolução do passo. Estes terminais são ligados aos pinos MS0, MS1 e MS2 dos controladores.
Antes de ligar os motores, certifique-se de que o limitador de corrente em cada controlador corresponde ao motor que está a conduzir.
Código
Para accionar um motor passo-a-passo com Escudo V3 CNC, referimo-nos ao pinout do escudo, que nos dá acesso aos pinos de chamada para enviar comandos ao controlador do motor (DRV8825, A4988 ou 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 testar o funcionamento do Shield e dos motores, não utilizamos nenhuma biblioteca em particular. Contudo, se quiser utilizar funcionalidades mais avançadas pode utilizar a biblioteca AccelStepper ou o firmware GRBL V0.9.
Resultado
Assim que o código tiver sido carregado e o sistema ligado, deverá ver o motor ligado ao condutor em Y rodar uma volta no sentido dos ponteiros do relógio e duas voltas no sentido anti-horário. Se não for este o caso, provavelmente tem um problema de ligação.
Também é possível que o rastilho no quadro esteja danificado. Pode substituí-lo por um fio de chumbo.
Aplicações
- Faça o seu próprio CNC ou gravador a laser
- Fazer um cortador
- Conduzir até três motores passo-a-passo de forma independente