My experience buying used Mitutoyo 100X 0.70:

Have questions about the equipment used for macro- or micro- photography? Post those questions in this forum.

Moderators: rjlittlefield, ChrisR, Chris S., Pau

kaleun96
Posts: 273
Joined: Sat Oct 20, 2018 3:47 pm
Location: Stockholm, Sweden

Post by kaleun96 »

mawyatt wrote:
kaleun96 wrote:At risk of derailing this thread any further - how can you force a stepper into its cog position, or in the case of microstepping, force it to stop at a 1/4 step or 1/2 step position while running at 1/8, 1/16, etc microsteps?
Cam,

The stepper "cog" position is the natural unpowered rotor position, this is where the permanent magnetic fields align, and the rotor has a "detent". So with a 200 step motor, there are 200 of the cog detent positions. You can feel these detent cog positions by rotating the rotor by hand. If you do this under power you can feel the detent being stronger due to the added electro-magnetic field induced by the motor current. Some motors have a stronger unpowered detent, the various motors I have vary about 3X in detent strength.

You can make a 1/2 step position by moving 1/2 step from a cog, 1/4 step move for 1/4 step position. If you are using 1/16 controller micro-steps this would take 8 micro-steps (8/16 = 1/2) and 4 micro-steps from a cog position for 1/4 step (4/16 = 1/4).

Hope this helps.

Best,
So you can't exactly force it to start from a full-step position without first manually positioning it at a cog position when you start (i.e. do this programmatically)?* I was hoping that if you were stepping at half-steps and then tell the drive to go to full-steps, it would automatically align with a full-step cog position and then from there you can go back to half-steppinng from a known full-step position. But I can understand why that wouldn't be the case, plus you'd lose your positioning if that happened.

Though I guess steppers naturally start at a cog position when powered up, at which point you can then use that as the reference and change to half-stepping and know you're half-stepping from a cog position, or quarter-stepping etc.

*edit: just to clarify, I more mean that you can't force a stepper into a cog position mid-program (after you've lost the initial reference to the cog position due to microstepping).
- Cam

mawyatt
Posts: 2497
Joined: Thu Aug 22, 2013 6:54 pm
Location: Clearwater, Florida

Post by mawyatt »

kaleun96 wrote:
mawyatt wrote:
kaleun96 wrote:At risk of derailing this thread any further - how can you force a stepper into its cog position, or in the case of microstepping, force it to stop at a 1/4 step or 1/2 step position while running at 1/8, 1/16, etc microsteps?
Cam,

The stepper "cog" position is the natural unpowered rotor position, this is where the permanent magnetic fields align, and the rotor has a "detent". So with a 200 step motor, there are 200 of the cog detent positions. You can feel these detent cog positions by rotating the rotor by hand. If you do this under power you can feel the detent being stronger due to the added electro-magnetic field induced by the motor current. Some motors have a stronger unpowered detent, the various motors I have vary about 3X in detent strength.

You can make a 1/2 step position by moving 1/2 step from a cog, 1/4 step move for 1/4 step position. If you are using 1/16 controller micro-steps this would take 8 micro-steps (8/16 = 1/2) and 4 micro-steps from a cog position for 1/4 step (4/16 = 1/4).

Hope this helps.

Best,
So you can't exactly force it to start from a full-step position without first manually positioning it at a cog position when you start (i.e. do this programmatically)? I was hoping that if you were stepping at half-steps and then tell the drive to go to full-steps, it would automatically align with a full-step cog position and then from there you can go back to half-steppinng from a known full-step position. But I can understand why that wouldn't be the case, plus you'd lose your positioning if that happened.

Though I guess steppers naturally start at a cog position when powered up, at which point you can then use that as the reference and change to half-stepping and know you're half-stepping from a cog position, or quarter-stepping etc.
The controllers are "open loop" as we are discussing (closed loop is another discussion), so the controller has no way of knowing where the rotor is other than counting and keeping track of the step pulses issued.

I believe most controllers do start from a cog position when powered, the Trinamic's do, although some tend to provide a considerable "jerk" at startup due to inrush current in the motor coils as they charge. I've found that a very sturdy power supply and quality low ESR decoupling capacitor reduce this startup "jerk".

There may be some small angle offset from the cog though when powered up, this could be due to the coil and permanent magnet relative alignment. Of course there will also be a offset due to the torque load.

Best,
Research is like a treasure hunt, you don't know where to look or what you'll find!
~Mike

mawyatt
Posts: 2497
Joined: Thu Aug 22, 2013 6:54 pm
Location: Clearwater, Florida

Post by mawyatt »

So you can't exactly force it to start from a full-step position without first manually positioning it at a cog position when you start (i.e. do this programmatically)?
You can power off and the rotor should assume a cog position, then power back on.

Best,
Research is like a treasure hunt, you don't know where to look or what you'll find!
~Mike

rjlittlefield
Site Admin
Posts: 23626
Joined: Tue Aug 01, 2006 8:34 am
Location: Richland, Washington State, USA
Contact:

Post by rjlittlefield »

Adding to what Mike said initially, and I see there have been more posts since I started writing...

The magnetic field felt by the rotor will be strongest when the coil currents are trying to drive the rotor into the same positions that it would seek when not powered: the "cog positions".

If the motor is under load, then the rotor's physical position will be displaced from the magnetic field orientation by an amount that depends on the load and the strength of the field. That's the issue discussed at https://www.micromo.com/technical-libra ... -realities .

So, the answer to your question will be different depending on exactly what you mean by "force a stepper into its cog position".

If you mean to get the coil currents aligned with the cog positions, then that would be a matter of initializing the controller chip properly. Cycling power would be a good start, followed by only programming microstep positions as Mike says.

If you mean to get the rotor physically aligned with the cog positions, under load, then that would be an experimental problem of determining exactly which programmed microstep position would generate enough torque to balance the load that would otherwise deflect the rotor. In Hackaday's article, for the TB6560AHQ (third graph), if we assume that microstep 0 at no load is a cog position, then you'd have to program microstep numbers 10 or 11 to reach (nearly) the same physical point under the tested load.

--Rik

mawyatt
Posts: 2497
Joined: Thu Aug 22, 2013 6:54 pm
Location: Clearwater, Florida

Post by mawyatt »

*edit: just to clarify, I more mean that you can't force a stepper into a cog position mid-program (after you've lost the initial reference to the cog position due to microstepping)
Didn't see this edit.

The controller has no way of knowing where the cog position is other than the initial power on starting position (or reset). There might be some clever way of detecting this with open loop control but I'm not aware of any means, maybe the Trinamic controllers can do this but I don't recall this from their data sheets.

You shouldn't loose the starting position reference if the controller doesn't loose any steps, micro or otherwise. Using the Trinamic controller this is all taken care of and you just need to issue position or velocity commands, the internal logic keeps track of where the rotor is relative to the power up start, or if a reset is issued.

The Myths article discussed the rotor non-movement under micro-stepping where the move command doesn't cause the rotor to actually move (due to micro-step reduced incremental torque), so the controller doesn't know the rotor hasn't moved and the rotor angle is in error. However, after a few more issued micro-steps the rotor will "snap" forward (or backwards) and move closer to the desired angle. No steps were actually "lost" per se, but the rotor has a somewhat jerky behavior, very non-uniform, I've experienced this behavior.

Edit: Yes there is a way to do this from mid-program without issuing a reset or removing main power. If your controller allows you to "Tri-State" the motor H Bridge (turns all PowerFETs off, so no motor is flowing) then the rotor is effectively unpowered and will revert to a cog position. You will lose the relative rotor position as the rotor moves to the cog, but you will not loose the overall position of the rotor relative to the initial startup or reset position. So worst case is you will have a rotor that is off by a cog angle from where the controller "thinks" the rotor is.

One reason I have favored 400 vs 200 step motors is the more cog positions and these should be reasonably accurate in a quality motor they are machined.

Best,
Last edited by mawyatt on Wed Jan 22, 2020 9:11 am, edited 1 time in total.
Research is like a treasure hunt, you don't know where to look or what you'll find!
~Mike

kaleun96
Posts: 273
Joined: Sat Oct 20, 2018 3:47 pm
Location: Stockholm, Sweden

Post by kaleun96 »

Thanks for the help Mike and Rik. Perhaps I will try this when I've got my rig back up and running.

Not that I have an issue with low torque (AFAIK) but it'd be interesting to try.
- Cam

Post Reply Previous topicNext topic