So I solved my mystery: It was a resonance! My x-axis belt was nice and tight, and as the carriage moved across its range, it would scan its resonant frequency until it happened to coincide with the step frequency necessary to move at about 10mm/s. At that point, the motor generated a standing wave on the belt, which then fought the stepper, leading to missed steps. Now I just need to figure out how to postprocess my g-code to make sure this doesn’t happen again. Maybe I should modulate the step frequency on long slow travels.
Originally shared by Michael Hohensee
Has anyone ever had an axis skip steps when moving slowly, but not when moving fast? I recently started a print with Gcode produced with the default, slow first layer settings of slic3r, and suddenly found my MM1.5 x-axis losing steps like crazy. My guess is that it’s increased friction on the linear bearings at low speed, since it’s mainly at one end of the x-axis’ travel, and I’ve noticed the slack end of my belt getting noticeably slacker when the steps are lost. Thing is, the belt briefly gets so slack that I wonder if the motor is somehow jumping around insanely on its way to stepper motor heaven. To first order, it doesn’t seem to be the pololu… Anyone have any ideas as to whether it’ll be the stepper or the bearings? I’d much rather it be the stepper, since pulling the x-axis on a MM1.5 is gonna be a pain.
At one location, yes. But unless the tension is significantly changed, it just moves the resonance with the stepper frequency to another place in the x carriage’s travel. Plus it isn’t really a single frequency that I’m dealing with, since the stepper produces lots of harmonics with its short sharp motions. [edit: what really confused me at first was the standing wave, which looked like slackening at first, but which didn’t go away when I tightened or loosened the belt]
Yes and no. Damping some of the belt’s transverse motion with my hand definitely helped, but my the resonance is on the length of belt between the stepper and the x carriage, so any permanent object riding on the belt or change in the coupling to the carriage will probably cause other problems.
Adding a spring just means that I’ll get two resonances of the coupled system. The spring would have to be pretty stiff to avoid adding slop to the carriage motion, to the extent that it’d have to be as stiff or stiffer than the carriage itself, I suspect.
Best answer is to avoid the resonance. A heavier belt might move it away from operating frequencies, or else we just need to modulate the step frequency when we get near the resonance. It’s the sort of problem that can be well handled by a Servo controller or a Kalman filter.
Adding an idler like that would require me to print some new x ends for my printer, as there isn’t enough clearance in there right now. That said, there are a number of other reasons for me to redesign the x ends on this Mendel Max, so it’s something to keep in mind. :-).
Not sure how the geometry would work for that, to be honest. The other problem is that this is again just going to move the resonance around, unless it’s a really lossy spring, in which case it’ll broaden it and add jitter everywhere. Maybe I should just add a calibration step in which I pluck the x belt with the x carriage at two or three different positions, and record the sound on the controlling computer/arduino. That should be enough information to calculate the frequencies (velocities) to avoid running at in different locations.