Jog step movement distance unexpected

A) When I jog X or Y with Step enabled and resolution = .01, the axes never move regardless how many step arrow screen button commands I make. The larger step sizes work OK with the expected movement. Perhaps this might be a bug?
B) Related. In the Setup screen for x axis and y axis, it says the motors have 400 pulses per rev and the ball screws (for x and y) move 16 mm per rev. Therefore a single step x or y movement would be .04 mm (0.0016 inches). But the Masso web site specs for the motors says they have 800 pulses per rev. What’s going on with this spec? Elite Foreman specifications say “up to 256 microstepping.” What does that mean? Microstepping isn’t defined. This doesn’t matter for machining wood but it’s of interest for metal.
Many thanks, Dan B.

I set mine for 4000 steps per revolution. Is seems to work much smoother. I also decreased my acceleration.

1 Like

Sloppy terminology drives a lot of confusion on this. I’ll see if I can help clear it up.

A typical/standard stepper motor has a mechanical travel of 1.8 degrees per electrical cycle, which equates to 200 electrical cycles per mechanical revolution. Sometimes “pulse” is used synonymously with “electrical cycle” – which is reasonable if you’re looking at a graph (or oscilloscope trace) of square-wave pulses applied to a single motor phase. But that same typical/standard stepper motor is actually a two-phase motor, and the voltage waveforms applied to each phase are 90 electrical degrees apart.

With a cheap garden-variety square wave driver, the motor advances one “step” every 90 electrical degrees, for a total of 800 steps per revolution. Sometimes the term “pulse” is used synonymously (and confusingly) with “step”, but the motion actually happens when the voltage applied to either motor phase changes polarity, i.e. on either edge of a pulse on either phase. With one of these basic drivers, the basic step resolution of the motor is the best that you can get.

And then we can spend more money and use a microstepping driver, which applies PWM (pulse-width modulation) pseudo-sinusoidal voltages to both motor phases. The voltage waveforms are still 90 degrees apart electrically, but they don’t have to be at an even multiple of 90 degrees from zero. In principle, a microstepping driver can position the motor shaft at any position it wants – it’s no longer limited to even multiples of the basic step size. At that point, it’s essentially an analog control. But to maintain compatibility with standard motion controllers, the driver still pretends that it can move only in discrete steps, in the sense that motion commands are still received in quadrature format. So bottom line, a microstepping driver can greatly increase the positioning resolution of a standard stepper motor. But at some point, the positioning accuracy will become less that the positioning resolution, so increasing the step resolution beyond that point isn’t terribly useful (although it may still improve the smoothness of motion).

Hope that helps. I’m just now installing my Elite upgrade, so I can’t offer any practical advice for an optimal step-resolution setting for that system.

1 Like

Thanks Dennis, now I know what microstepping is: 256 PWM on the motor I/Q step phasing. Yes, I admit, I’m a retired electrical engineer. But all this motor control stuff is new to me. My experience is in electronic control systems and RF/microwave circuit design, easy digital design, certain kinds of software, and chip system architecture. This ain’t that.

The smallest-step movement bug remains, so for a first try user work-around I changed the “Steps per rev” in Settings to 800 (was 400) on all 3 axes. This fixed it and the actual jog motion (by the jog screen arrows single step or by the Masso pendant) is pretty exactly 0.02 mm for each and every smallest single step. As accurately as I can measure with machinists’ surface plate, parallels, an 8 inch 90 degree angle plate and various gauges. Also the displayed machine coordinates agree. At 400 steps per rev the displayed machine coordinates also wouldn’t change for smallest single steps, in agreement with actual motion.

I would suggest OneFinity confirm the bug and then change the settings default to 800 steps per rev on X, Y and Z axes. I assume B is slaved to Y as is normal. That way as long as users don’t change it, things will work fine.

Or, sort of kidding, in agreement with normal industry practice in such cases, Masso and OneFinity could discuss at great length who has the fix responsibility when the finest manual jog-commanded step motion math doesn’t work for steps per rev set less than the motor spec 800. First they would need to agree on the definition of a motor step. :wink:



Glad that helped, Dan, and welcome to the forum! It’s always good to have another engineer on board, and I get the distinct impression that many of us are. Personally, I have a lot of experience with motion-control system design, but please don’t ask me to design RF circuits!

I have no clue why the default Steps per Rev on the Elite Masso controllers are set to 400, but perhaps @OnefinityCNC can shed some light on this. Thanks to you, I’ll be changing that setting on my machine just about as soon as I get it fired up.

Looks like there’s more to this story. OneFinity has provided Masso motors on the Elite Foreman. Reading the Masso documentation v5.88, it shows the motor control pods, mounted on the motors, have encoder resolution switches, the blue one, positions 1 thru 4:
Masso Motor DIP Switches p668.png
They have these settings:

I’m guessing the Masso Controller has no way of knowing how switches S1 thru S4 are set. There are no wires going from the motor DIP switches back to the Controller. The only wires are 2 pairs differential drive “step” and “direction”, alarm and 24 to 36VDC drive power. Either OneFinity or the user must assure the motor switches and the Masso controller Settings Axes pulese per rev are compatible. I’ll do some experiments to try and confirm this. I’ll have to look and see where the motor DIP switches are set compared to the controller Axes settings and play some games. The failure of 400 pulses per rev in F1 Settings to single step on x1 resolution is still an open issue for me.

There are several possibilities.

  1. Motor and Controller settings must match.
  2. There’s a math error in the Controller and they must have a certain restricted NON-matching relationship to work smoothly.
  3. (Your suggestion here.)

The use of DIP switches is the norm for drivers - whether integrated or not - for parameters such as pulses/rev, amperage, etc…, and always requires the user to make sure they match for the motors and controller settings. The respective manuals will explain this.

I also suggest, if not done already, that you post your question in the Masso forum. You will get definitive answers, but not to questions related to why Onefinity chose to implement things a certain way.

You might find these discussions interesting as well…