Multi-start threads on a lathe, working through how to do it

You can. You just can't rely on the mechanical thread dial to get you there. The threading dial "repeats" expecting the period to be 1 inch (or some imperial number). If you open the half-nut, shift the carriage 1", and close the half-nut again, you will pick up any thread that is integer number of TPI. So the thread dial only indicates fractions of an inch. (This may be adjust by some multiple of inches). On a metric thread, shifting the carriage by 1" doesn't get you to a multiple of the thread turns. If you get close to the original position, the thread dial will still lock you into the right turn.

Yes, that is my basis for Zexpected. You can't do it by using the same position on the mechanical thread dial, across multiple turns of the thread dial, for metric, (unless you count those multiple turns and go back to zero on the count).
I know exactly where the spindle and stepper started from, and I maintain a 64 bit value of both. Ignoring multi start for the moment, it should be possible to do some math and get back to the same place even with metric. If the half nuts engaged once, then they should again in the same spot. That's with a complete reversal. Is there a way to get there with out rewinding the count? I would think so.
 
If you know the absolute orientation of the spindle why can't you just offset that position by the required amount? e.g, multiples of 72º for a five start thread.
You can, but you need to ensure that Bresenham algorithm for determining when to step doesn't screw up because of the jump in count value. Right now I check that the delta count is +1 or -1. Any delta magnitude greater than 1 is a fatal error. It's a fatal error because the count has been lost. I'd have to fundamentally change that algorithm. Not sure I want to change it.

It's actually simpler to advance or retard the lead screw the amount that it would have traveled had the spindle traveled 72 degrees. (More generally 360/N starts). We only care about the relative relationship, as far as I know. I could insert those pulses during the the dead time between normal stepper pulses. At least that's what I'm thinking right now. Once the extra pulses were inserted, a light would go on and you would engage the half nuts at #1. If it takes a couple of seconds to insert the pulses that shouldn't be a big deal. This would only be once for each start. There would be no extra pulses added for deeper cuts on the same lead.
 
I know exactly where the spindle and stepper started from, and I maintain a 64 bit value of both. Ignoring multi start for the moment, it should be possible to do some math and get back to the same place even with metric. If the half nuts engaged once, then they should again in the same spot. That's with a complete reversal. Is there a way to get there with out rewinding the count? I would think so.
Sure. Count TPI on leadscrew. Leadscrew repeats with a period of 1/TPI. So leadscrew only needs to move through
Error modulo 1/TPI, where Error is Z - Zexpected. If the spindle is moving obviously that’s in addition to soindle steps. Only caveat is the thread dial may not be on the same indication.
 
If you want the thread dial to hit the same spot perfectly, you need to compute the period of the thread dial (48/TPI based on your earlier comment on a 48 tooth gear on the dial). Then compute the pitch of the thread you're cutting. Then find least common multiple after converting them to common units. You can then move
error modulo LCM. Since 5" = 127mm, I think that puts some bound on the value of the LCM depending on the range of metric thread pitches.

Realistically, you don't need the thread dial to be perfectly in the same spot, you just want it to be visually close enough that the operator doesn't engage the wrong turn on the leadscrew, so even +/- 5 degrees of thread dial works. Have to work that out a bit mathematically, but I think that comes down to finding abs(n(48/TPI) - m*(thread pitch)) < 5 * (48/TPI) / 360 for some non-zero integers n and m.
 
Good stuff.

Found I need to make some changes in my ELS to facilitate this. And I need to take a couple steps backwards.

First, I need to gate the stepper instead of the spindle encoder. I had been gating / blanking the encoder in my SW, but going further I think it makes more sense to always have the spindle position active. (With no spindle counts, the stepping algorithm doesn't change the step count.) I do not have direct control of my VFD, or motor, so I need to know the spindle position at all times. It might be possible to change the VFD programming, but this is a later down the road thing. For one, the access to the VFD is limited, due to the lathe being up to a wall in the shop. Had there been more room, I would have played with this quite a bit more. (Braking, proximity switches, etc.)

I have branched my software to keep my ELS production code safe. So I am working in a different sandbox, with the ability to simply switch back if the code doesn't work out. The step backwards is more of taking baby steps along the way - rather than taking on the whole enchilada.

So, first I will work out all the details of a feed to a stop. Then a thread to a stop, and finally a multi-start to a stop. This may take longer, but I hope to work out the nits as I go along. Feed to a stop will use the position of the DRO to control the stop point. That way I can feed to a shoulder easily. I do not have a proximity switch set up at the moment. Been thinking about it. Initially will just cut PVC on the lathe, so the penalty of failure will be minor. Depending on my experiences with my initial code, I may rethink the proximity switch and change it's priority.

Think I will create my own thread on this project in the projects area. Perhaps some people might find it interesting, or not.
 
Back
Top