[SOLVED] Keep current flowing to the stepper motors when 'idle'


As I'm not sure where to post this question, I'll try to get an answer here.

I have a Arduino CNC shield v3 (running grbl 0.9j) connected to Universal GCode Sender (platform).
Works all just fine, except with one very annoying problem...

My (DIY) CNC router its Z-axis automatically lowers due to (little) vibrations made by the router.
That's a big issue as the machine its Z-axis is no longer in line with the home position at that point.

Is there a way to force the stepper drivers to keep current flowing to the motors, even if no gcode is sent?

If this is not the forum to ask, please advice.


You picked the correct place.

Excessive vibration on a z axis will certainly cause it to drop.
If it is part of one of the cheaper CNC machines it maybe a 775 motor and slowing the RPM can also help.
You should attempt to fix that first with maybe a better motor and EP2 grease to the bearings.

You can also change the parameter in GRBL to provide a lock / brake effect.
Prefered GRBL is 1.1 as there are some enhancements to it.

See the parameter " $1 and set to 255" for braking effect.

Dear ballscrewbob,

Thanks a lot for your feedback.

It seems you were spot on with the proposed solution.

  1. I downloaded the latest grbl release (master, 1.1h) --> I initially thought the CNC shield would not like a higher version than 0.9 (as it stated to be compatible with v0.9).
  2. Uploaded the firmware
  3. Launched the $1=255 command in UGS (seemed to be defaulted on 25 I think)
  4. Did a few G1 commands ... just to move things around to a safe position (you never know what happens :-))
  5. Started the router: ALL good! No movement whatsoever. The nema 17 motors seem to hold just fine. Can't move the motors manually, even with some force. PERFECT!

Ps: Sorry for the late reply. I had no access to the machine the past days.

Have a nice day!


Have fun with your CNC they become very addictive LOL