So I ended up trying out different settings for SpreadCycle and the defaults ended up seeming to be the best.
The machine is now fully operational and I’ve actually done some cutting with it! It’s not much more exciting than the other graph but here’s some data from the machine while it’s actually doing something useful:
If I remember right, this was a contour operation so the machine was doing lots of cut, retract, rapid, cut again. The reason the green lines are so varied is that I was trying to tune StallGuard, the feature that determines whether the motors are close to stalling.
Unfortunately, I’ve hit a bit of a roadblock there. The problem is that StallGuard has a compensation parameter that changes a lot depending on feed rate. On a machine like a 3D printer where you have a pretty narrow range of speeds while printing, this is fine but on a CNC where I might be running a slower facing or contouring operation along with a more rapid adaptive operation, a single parameter might not make a whole lot of sense.
This is actually illustrated in the image in my previous post. You can see that with no load on the motor other than the machine itself, the green line (motor load) only leaves 0 (the stall value) at ~15 clock cycles per step (purple line) and only becomes stable towards the machine’s highest speeds.
I still need to play with it and see if I can find anything but I might actually have to make the ESP32 a bit smarter. Worst case, I can have the ESP32 monitor the machine’s speeds and dynamically update the compensation values for whatever the current speed is.
Once I do that, I can turn CoolStep on and the machine will dynamically adjust current according to the load on the motors.
Speaking of current, I started at 1.6A as that’s what the manufacturer said these motors were rated for but they ended up getting quite hot so I brought them down to 1.2A and all seems well.
And last thing on the stepper motor subject, I actually ended up turning the stepper drivers’ silent feature off. In their normal mode they’re quiet enough and that’s the mode in which they have the current-tuning feature. When the machine is actually operating, given the already quiet nature of the drivers, I think reducing the heat produced by the motors is a larger benefit than reducing the noise a little more.
And in other “messing with the machine” news:
I made a new Z-axis bottom plate for my Nomad:
This was needed because without that little notch behind the spindle, I can’t fit my 3D probe.
Was quite annoying to make. I reverse-engineered the original plate by removing it and using the 3D probe with the two Z-axis rails hanging loose. I then had to machine the thing on both sides without the probe since it didn’t fit yet. When I finished the part and tried to fit it, the holes for the rails were slightly too far apart, so I was stressed out for a bit and then realized I could just do a contour to carve out a bit of material to bring the rails closer together. Not perfect but it worked.
Speaking of probes, I installed a hot-plug interface for switching out different sensors. It has a mini-XLR socket and can accept both NPN and PNP sensors. You can see it here with my Z-probe:
Why am I using this Z-probe instead of the Nomad’s? It works with the hot-plug interface, is extremely accurate, has specs and I can use it for finding the top of stock very accurately. Plus I visited the guy who makes it in his workshop and saw it and wanted one…
And last and probably least, I 3D printed an enclosure/mount for my Meanwell power supply and attached it to my enclosure:
And bonus, here’s what the software I use on my controller looks like:
I’m quite fond of it so far.