New Stepper motor set up test is "Cavitating" or skipping steps or under driven

I have just setup an board with a couple of Stepper motors, drivers & GRBL Arduino sketch and was hoping someone could give me some guidance on trouble shooting the following problem:

Problem
When sending a command from the Arduino IDE serial monitor to the board eg. X 10 and the stepper motor does the following:

  • Brief spin
  • Motor starts "cavitating" - can be heard attempting to operate but spindle is stationary
  • Breif spin again
  • System freezes & will not spin again until board is reset

Possible ideas
I'm guessing it is something fairly basic I have over looked.
Perhaps the step interval time is not correct or the default GRBL configuration is trying to spin the motors to quickly or accelerate them to quickly
But not sure why this would make the board/ stepper freeze from accepting further commands until reset

Hardware

  • Arduino Uno
  • CNC shield V3 Protoneer Board
  • 4 x A4988 stepper motor drivers (Chinese Clones .1 Ohm reference resistor)
    Current limit set to Vref 1.2V --> Current 1.5A
  • ATX power supply converted to a lab supply for steppers 12V & 24V tested
  • 17HS4401 Stepper Motors - I have limited data sheet info on these

Any thoughts, Ideas or suggestions would be welcome. Thanks

Basic Stepper Reading
Thread stepper motor basics

Hi,
Have you checked your power supply voltage when the stepper is jittering?

Can you post your complete code , using code tags please?

Can you please post a copy of your circuit, in CAD or a picture of a hand drawn circuit in jpg, png?

Have you just got ONE DRIVER and ONE STEPPER and code to JUST CONTROL that ONE STEPPER, so that you can get your driving code working before making the problem twice the size?

Thanks.. Tom.. :slight_smile:

Brief spin
Motor starts "cavitating" - can be heard attempting to operate but spindle is stationary
Breif spin again
System freezes & will not spin again until board is reset

That indicates, to me, that the motor is trying to accelerate to a speed that it is not capable of, buzzes, and then the deceleration gets to the point that it can run and then stops. The system freeze could be when it hits a soft (or hard) limit. Does $X unlock it?

If you are using G00 commands the motor will try to accelerate to the max speed at the acceleration in the config file. Try it using G01 commands with a much slower speed. Then you might need to make changes to the config file to match what the motor can do.

Are you using micro stepping?

Hi Guys thanks for the quick replies.
**@groundFungus **

That indicates, to me, that the motor is trying to accelerate to a speed that it is not capable of, buzzes, and then the deceleration gets to the point that it can run and then stops. The system freeze could be when it hits a soft (or hard) limit. Does $X unlock it?

Acceleration was one of my suspicions also.
I have not attempted sending $X (with out a value) but I have sent $X 10 and this remains frozen until the board is reset.

If you are using G00 commands the motor will try to accelerate to the max speed at the acceleration in the config file. Try it using G01 commands with a much slower speed. Then you might need to make changes to the config file to match what the motor can do.

I will give the G01 command a go and post back any thing changes.

Are you using micro stepping?

No micro stepping currently but will be testing this next

@TomGeorge
Hardware Info:

Have you checked your power supply voltage when the stepper is jittering?

I have not explicitly checked for a voltage drop when attempting to run the steppers, I'll give it a test an post back any findings.

Can you please post a copy of your circuit, in CAD or a picture of a hand drawn circuit in jpg, png?

My Arduino 2D Plotter: 06. Plugging Protoneer CNC shield and configuring DRV8825 driver this is not a photo of my specific board but a good image of the Protoneer CNC shield v3 (please note they are not using the A4899 drivers)

Have you just got ONE DRIVER and ONE STEPPER and code to JUST CONTROL that ONE STEPPER, so that you can get your driving code working before making the problem twice the size?

Whilst the board is suited for 4 drivers I'm currently testing one driver with one motor then selecting the X axis to move in the serial interface with the GRBL code.

Software Info:

Can you post your complete code , using code tags please?

The software being used is simply GRBL refer GitHub - gnea/grbl: An open source, embedded, high performance g-code-parser and CNC milling controller written in optimized C that will run on a straight Arduino
Compiled and Installed via the Arduino IDE refer Compiling Grbl · gnea/grbl Wiki · GitHub

Thanks Again for the ideas, Any more will be most welcome.

$X10 is an invalid Grbl command. $X by itself should unlock the machine if it was locked by a soft limit.

This page shows the $ commands for Grbl.

@groundFungus
Sorry my mistake, its been a long time since I actually had to have looked at Gcode in a raw from. Its usually nicely compiled from me from a cad package :slight_smile:

The command I was using was a move to the X-Axis 10 rather than $X which as you noted $X - Kill alarm lock

I have not tried this as yet but will report back once I give it a run - looks like a good tip.

Test Results looking like some progress :slight_smile:

G01 operation with reduced feed rate: Using G01 X5 F5 seems to stop the board from locking out and allows repeated operations if the X value is varied (presumable because these are absolute positions?)

I've played around with several different feed rates F5 / F 10 / F200 etc

So presumable this indicate the default GRBL acceleration / deceleration / feed rates settings are not compatible with the stepper motor.
With the limited data on the Steppers is their a how to guide on how best to test and set these values to match the motors? or is there some way of calculating the optimum values?

Voltage drop during operation: Power supply seems to be delivering 23.2V and dropping to approx 22.7V as the motor operates. Not sure if this is typical voltage drop or is a sign of excessive drawing on the power supply. This was only measured with a multi-meter across the supply so its probably not a supper accurate number.

Software (?) Lock out: $X doesn't seem to release the lock but the command is acknowledged (ok) by the board but reseting the board looks to release the the lock.

presumable because these are absolute positions?

Grbl defaults to absolute mode. Change to relative with G91 and back to absolute with G90.

With the limited data on the Steppers is their a how to guide on how best to test and set these values to match the motors? or is there some way of calculating the optimum values?

This page might be helpful in that regard. You should set Grbl configuration for your motors first (steps per mm).

3dCreations:
So presumable this indicate the default GRBL acceleration / deceleration / feed rates settings are not compatible with the stepper motor.
With the limited data on the Steppers is their a how to guide on how best to test and set these values to match the motors? or is there some way of calculating the optimum values?

Its way too a complex function of many variables - you have to measure the max speed and max acceleration in practice, and remember it depends on supply voltage, the microstepping factor, the mechanical load (inertia and damping), and even the temperature of the motor (well, maybe!)

Once you've measured the limits, back off 20% or so to allow for inevitable variations in the various contributing variables.

Increasing the supply voltage should help with max speed.

Choosing the right degree of microstepping will help with resonance effects (as will increasing mechanical
damping).