Weird missing/extra step symptom with homemade Demon controller

Ok, first off… I know there are 1000 threads for step issues. Before I get sent to search for one, PLEASE hear me out.

I’ve been running an Arduino / GShield with no issues on a 1000x1000 xcarve. I have upgraded the belts to 9mm and added stiffeners / risers, all from TBD CNC. As my next planned upgrade, I built the Demon CNC controller. I did substitute DM542 drivers for the TB6600.

After upgrading the belts/adding stiffening mods, I recalibrated everything, jobs were running better than ever. Zero play in the y axis, able to make much deeper cuts with no issues. After putting together the demon controller, I can only determine that it’s demon possessed

The Symptom
Every job I run, no matter the speed, size of the job, bit size, depth of cut, material, etc, The bit is traveling EXACTLY 1.5mm + on the x axis, and 3mm+on the Y axis by the end of the job. If I run a 4 hour job with .5mm depth per pass, that 1.5mm and 3mm are spread out over the entire job. If I run a 5 minute job with 1.5mm depth per pass and 2 passes, it’s much more noticeable.

I’ve tested the following:

  • Changing depth per pass makes no difference. Even if I run the job with zero load (bit 2cm above the workpiece) it still ends up off by exactly 1.5mm and 3mm.
    -Adjusting the belt tension from “oh my god it’s about to break” all the way to “this belt is about to fall off entirely” makes no difference.
    -I’ve tried 1/2, 1/4, 1/8 microstepping. no difference
    -I’ve tried with holding current at 100% and at 50%, no difference
    -Tried changing the current output on the DM542’s, no difference.
    -Tried 3 different power supplies (currently using a 24v, 400w power supply) and have adjusted the output to all extremes, no difference
    -confirmed all screws are tight on pulleys, v-wheels are tight enough to not have any play, but loose enough that I can move smoothly by hand with the belt disconnected
    -I’ve swapped the stepper drivers around, and no matter which axis I put them on, I still end up exactly 1.5mm + X and 3mm + Y
    -I can manually jog the machine all day long and it always returns to exactly the same spot (I’ve tested 250mm moves, starting at the center and going in all directions in the square. did this for 20 minutes, and no variance)

Also note: when I reconnect everything back to the GShield, all works as expected. And I’m using the same Arduino for both, so it doesn’t appear to be anything with GRBL settings, or anything mechanical? Is there a hidden setting in easel I don’t know about?

I’m at a complete loss. I’m ordering the TB6600 to see if that’s the issue, but wanted to see if anyone else had experienced this? It’s almost as if there’s a 1.5mm and 3mm variance being added to the Gcode, but I can’t figure out why or how.

Any help or advice is greatly appreciated, as I now have about 20 hours in troubleshooting with nothing to show for it but a bunch of busted jobs.

What’s your $1 setting value?

1 Like

VERY weird. I’ve been using this thing for about 2 years now and never run into anything like this.


How were you able to measure this?

I have a very sharp V carve bit in… lowered the Z axis manually onto a piece of soft wood that’s clamped down, just enough to make a dot. raised the Z axis to a couple of CM above the piece. When it returns home, I lowered the Z to just above the piece and jog the x and y 1.5mm and 3mm, and it’s exactly on the dot.

Just got a little more interesting. I hadn’t microstepped lower than 1/16. When I did 1/32, it was 1mm and 2mm off. at 1/64, it’s .5mm and 1mm off. Presumably 1/128 would be .25mm and .5mm off, but it won’t run that high for me (skipping all over).

So to recap:

1/2 microstep - off by 1.5mm and 3mm
1/4 microstep - off by 1.5mm and 3mm
1/8 microstep - off by 1.5mm and 3mm
1/16 microstep - off by 1.5mm and 3mm
1/32 microstep - off by 1mm and 2mm
1/64 microstep - off by .5mm and 1mm

I suppose it’s probably not a coincidence that the axis with 2 steppers / drivers is off by twice as much as the one with one, but still baffled as to why/how.

Ok. I thought everything was always returning to 0,0

What are your acceleration values ($120 and $121)?

Ahh, sorry. Read back my original post and realized it was a bit confusing. The final home position is 1.5mm / 3mm every time (unless I microstep to 1/32 or more), but GRBL thinks it’s going back to 0,0.

For $120 and $121 I’ve tried everything from 250 to 10000, same result.

Really appreciate you taking the time to troubleshoot with me, by the way!

Have you tried a higher voltage? 36V or 48V?

I have a variable supply that will do 0-48V (actually tops out at about 53) The DM542’s are supposed to take between 20 and 50. I’ve tried 20, 50, and most everywhere in between. No matter where I set it, same results. That’s actually one of the strangest parts because I would expect there to be SOME variance in there somewhere with that kind of voltage range?

If anything, I’m impressed at how consistently and accurately inaccurate these drivers are. If it were erratic. The only thing I can think is that the negative travel is just a tiny bit shorter than the positive, but I would assume that would also show up when I manually jog the machine, and it’s poinpoint accurate then.

I’m wondering if it’s something with the junction deviation or arc tolerance (two settings that I’ve never really had to mess with)?

I can’t see arc tolerance mattering in this. What’s your $11? I’ve never messed with it.

How do you have the supply voltage split? How are the connections made?

Yea, I just tried playing with arc tolerance and junction deviation and neither had any impact. My thought was, less steps with the arc tolerance might mean less getting off path.

$11 is at .010. I tried going down to .0010, but no impact other than it took longer to take corners.

As for power, I have +V and -V coming directly off of the power supply to a barrier strip with jumpers. 12awg stranded wire going from the power supply to the barrier strip, 16awg stranded from the barrier strip to each driver.

All I can think is that you might have some (oddly consistent) EMI on the pulse signal. Make sure you keep the stepper cables and AC away from the Arduino signal.

Please update as you troubleshoot and make progress.

1 Like

Looks like an odd one for sure…

  • What is $0 set to?
  • If you swap the DM542’s around, do the distance deviation “follow”?
  • What is your grounding scheme?
1 Like

Sounds like a backlash issue but that is nit likely with tight belts.
That brings to mind the belts and pulleys.
Are they matched correctly with cog spacing.
Is it skipping cogs because spacing is not correct?

$0 is set to 3 currently (I read that the DM542’s ideally should be set between 3 and 5) but I tried everything from 1 to 20 with no change.

When I swap the DM542’s around, there’s no change to the deviation.

As for grounding, everything is sharing a common ground (power supply, arduino ground, shielding for stepper cables, and the negatives on the DM542’s). I have the negatives on the DM542’s jumpered together, with a ground lead going to PUL- input.

Had a thought, and I’ll test it out today. I’m wondering if the motor on the left side of the Y axis is the issue. If it’s traveling slightly further north over the course of the job than the right side, it could be causing the X axis to skew a bit off of square. That would cause the bit to not only be up a couple of mm’s, but also to the right a tiny bit. It would also make sense that the distance would be consistent if that is the maximum amount that the X axis can skew (or the maximum amount that it will skew without the other motor catching up)

I HAVE confirmed that both Y motors function independently, i.e. the left motor isn’t pulling all of the weight. I guess it’s also possible that the right motor is working as is, and the left is the problem, traveling too far? Tonight, I’ll check the X slide for squareness with the Y slide on both sides before and after the job. If it’s skewed at the end of the job, I may have my culprit. I was planning on upgrading all motors to the 269oz ones anyways (already upgraded the X axis, I left the Y as is since it’s two motors and I figured since they were working together, the smaller ones combined would basically do the work of the one bigger one.)

Sorry for the novel! had to get all the thoughts down before I lost them :slight_smile:

1 Like

Great question. I ASSUME they are, as I bought everything as part of an upgrade kit from TBD CNC, but I suppose it’s possible that if one of the Y axis pulleys is mismatched, it could cause the axis to skew (what I’ve described below). However, that wouldn’t explain why it’s working fine with the CNC shield but not with the Demon controller, and why it’s returning to the exact spot when I jog manually?


  • Take a large piece of paper and use the CNC to draw a large square, measure the diagonals. Jog manually if you like.
  • Run an air carve that may give you the anomaly
  • Draw a 2nd square, is it squared or skewed?

If its skewed the error is due to mechanical/electrical issues between the two Y-steppers.
If its square, either tracing the same path as the base square, or offset to the first one, the Y´s are atleast in sync.


Love it. I’ll give this a try when I get home and report back!

Well, I have a positive, but unsatisfying update. Amazon delivery came today, and I replaced the Y motors with the 269oz ones, still had the same problem. After that, I replaced the DM542’s with the originally suggested TB6600’s, and VOILA. Everything is working perfectly again.

This is frustrating for a couple of reasons. The DM542’s were supposed to be a significant "upgrade"and I can see why. Movement was so much smoother with them, and everything was almost silent operation when the spindle wasn’t running. These TB6600’s are LOUD (much louder than it ever was with the GShield). It is allowing for higher amps than the gshield, which was my main goal, but after having a taste of the smooth and quiet control of the DM542’s, I’m a little bummed.

I’m also bummed because I never figured out WHAT the actual problem was. I don’t know if I had a defective DM542 in the mix, if the DM542’s are more sensitive to current / voltage, EMI, etc…

Thanks everyone again for chipping in to help me troubleshoot. For now, I’ll stick with the TB6600’s and dream of what could have been :slight_smile:

1 Like

Glad you got it sorted, even if it ment replacing the drivers.
Did you change all DM542 out in one go?
Are they generic 542´s or original Leadshine drivers?

Sounds like you did get a dud.

Powerwise the TB6600´s are plenty, but as you say noise/smoothness is another factor that may have worth.
I run genuine Leadshine DM556/856 on mine (@48V) and absolutely love them.