Rigid tapping/spindle synchronized motion with only motor encoder

More
18 Sep 2020 13:24 #182645 by underscore
Hello,
I am wondering (please let me know if it’s a crazy idea) if it is possible to do spindle synchronized motion with only a spindle motor encoder, but integer gear ratio.

More specifically, I would like to use my DMM servo for rigid tapping without having to add an additional encoder directly to the spindle. The pulley ratio is such that 1 motor rotation corresponds to two spindle rotations. I’m using a 7i76 to drive the servo.

Browsing through the man pages, it seems like it should be possible, except the index enable signal would only fire every two spindle rotation. Is that a problem?

Would I have to use a “Multiply by two, then modulo 1” component to scale the motor encoder to match the spindle position?

Curious to hear your opinions!

Please Log in or Create an account to join the conversation.

More
18 Sep 2020 13:40 - 18 Sep 2020 13:40 #182648 by PCW
I suspect that it would work, LinuxCNC would just wait longer for the index when
starting a tapping cycle. I also don't think any additional components are needed
you would just need to scale the motor encoder correctly in counts per one spindle
rotation.
Last edit: 18 Sep 2020 13:40 by PCW. Reason: motor rather than spindle encoder

Please Log in or Create an account to join the conversation.

More
18 Sep 2020 18:02 #182670 by underscore
I’m trying to find a reference, but I think I read that linuxcnc used to current rpm, acceleration etc. to ensure it is at a certain position at the next index pulse.

If that’s the case (in contrast to just using the index pulse as a start signal for the movement), wouldn’t estimate be off since it has to wait twice as long?

Please Log in or Create an account to join the conversation.

More
18 Sep 2020 18:08 #182671 by PCW
No, because AFAIK LinuxCNC does not use index _except_ at the start of rigid
tapping and threading operations, and all the mentioned calculations would be
correct since they are based on the spindle position, independent of index.

Please Log in or Create an account to join the conversation.

More
18 Sep 2020 19:25 #182673 by underscore
Would you happen to know where to look in the source code to find out the details?

Please Log in or Create an account to join the conversation.

More
18 Sep 2020 19:34 #182674 by PCW

Please Log in or Create an account to join the conversation.

More
18 Sep 2020 19:56 #182675 by underscore
Very interesting. It does look like the index is just to signal the start, as far as I can tell (which doesn’t mean much, since that’s the first time for me looking at the TP and I can only guess how it works).

Why do we need the index pulse at all? Shouldn’t spindle at speed be sufficient?

A related question (since you’re already answering): does anything bad happen when the encoder counter overflows?

Please Log in or Create an account to join the conversation.

More
18 Sep 2020 20:46 - 18 Sep 2020 20:47 #182681 by PCW
The index is used to establish a reference position
(like home on a linear axis) You could do this by a
simple modulo encoder count but it would not be
repeatable, that is it would be volatile This is probably
fine for rigid tapping but no so great for threading

Encoder position overflow would take many years (since the position
is a double precision number), But you do lose precision if the spindle
position gets huge, but this does no happen with spindle synchronized
moves since the position is zeroed at index.
Last edit: 18 Sep 2020 20:47 by PCW.

Please Log in or Create an account to join the conversation.

More
18 Sep 2020 20:55 #182682 by Todd Zuercher
So when making multiple passes on a thread, They will all line up and start at the same point.

Not sure, but probably. Shouldn't be a problem though since it is a double precision float. (Spindle would have to turn for a ridiculous number of years before is a problem.)

Please Log in or Create an account to join the conversation.

More
18 Sep 2020 21:18 #182683 by underscore
Good point about the index resetting the position. When I was messing with it yesterday, position was not reset on index, but I probably just mis-configured something.

The only question that's left is: What is going to happen if motion.spindle-revs (or spindle.N.revs) is going between 0..2 (instead of 0..1, if I understand the manual correctly)?

Please Log in or Create an account to join the conversation.

Time to create page: 0.089 seconds
Powered by Kunena Forum