Let me preface this by saying I'm a beginner (confident programmer, clueless to electronics) and perhaps in over my head so please afford me your patience.
I am attempting to build a 2D plotter - my first project outside of the introductory starter kit.
I'm using:
- Arduino UNO
- Arduino CNC Sheild
- 4x A4988 Driver
- 4x NEMA17 Steppers
- 30V/10A Variable PSU (set to 20V for testing)
So far I have flashed GRBL to the arduino and am able to successfully communicate and send commands using UGS, however there is no movement from the motors whatsoever.
I have googled a lot and attempted troubleshooting but my lack of knowledge has stopped my gleaming much information.
For instance I tried to check if my drivers were fried by using a multimeter between the VMOT and GND pins, which read as 0.5V but the power was coming from the Arduino rather than the PSU and I have no idea what to do with this information.
Any advice is appreciated. Looking to learn. Thanks in advance.
Have you tried to control the motors with a short program outside of grbl?
Try this code (tested on my Uno and cnc shield). It is modified from Robin2's Simple stepper code./ to work with the CNC shield. If the motors work with this code there may be settings in grbl that need to be set/changed.
// testing a stepper motor with a Pololu A4988 driver board or equivalent
// on an Uno the onboard led will flash with each step
// this version uses delay() to manage timing\
// modified by C Goulding for testing steppers on the CNC shield
byte directionPin = 5; //6 for y, 7 for z
byte stepPin = 2; //3 for y, 4 for z
byte enablePin = 8; // added enable pin
int numberOfSteps = 500;
byte ledPin = 13;
int pulseWidthMicros = 20; // microseconds
int millisbetweenSteps = 100; // milliseconds - or try 1000 for slower steps
void setup() {
Serial.begin(9600);
Serial.println("Starting StepperTest");
digitalWrite(ledPin, LOW);
delay(2000);
pinMode(directionPin, OUTPUT);
pinMode(stepPin, OUTPUT);
pinMode(enablePin, OUTPUT);
digitalWrite(enablePin, LOW);
pinMode(ledPin, OUTPUT);
digitalWrite(directionPin, HIGH);
for(int n = 0; n < numberOfSteps; n++) {
digitalWrite(stepPin, HIGH);
delayMicroseconds(pulseWidthMicros); // this line is probably unnecessary
digitalWrite(stepPin, LOW);
delay(millisbetweenSteps);
digitalWrite(ledPin, !digitalRead(ledPin));
}
delay(3000);
digitalWrite(directionPin, LOW);
for(int n = 0; n < numberOfSteps; n++) {
digitalWrite(stepPin, HIGH);
// delayMicroseconds(pulseWidthMicros); // probably not needed
digitalWrite(stepPin, LOW);
delay(millisbetweenSteps);
digitalWrite(ledPin, !digitalRead(ledPin));
}
}
void loop() {
}
groundFungus:
Have you tried to control the motors with a short program outside of grbl?
I tried a couple, with no luck. The code you posted is refusing to upload, gets stuck with a full progress bar. 
Edit: I had E-STOP bridged from another attempted fix, which stopped the upload. Motor still doesn't move with a succesful upload however.
I am sitting here watching the code work so there is a problem with you hardware or wiring. Just to make sure we know what you are using can you post some photos?
What is the voltage of the power supply that is connected to the motor supply on the shield?
Might seem like a dumb question. But it has to be asked.
Have you checked to make sure you have 12v to the motors?