High resolution encoder on lathe spindle
13 May 2015 19:00 #58631
by akb1212
High resolution encoder on lathe spindle was created by akb1212
I'd like to use a lathe spindle as 4th axis on my mill.
I have a direct drive spindle of off a Gildemeister CTX 400 (the sub spindle is most suitable in size) I'm planning on using for this.
My dream is to get a setup much like Simpson36 has done over at the Mach forum. blog.cnccookbook.com/2012/03/11/mill-tur...-hobby-cnc-machines/ is a link to a description of it.
As you can see it's basically a mill/turn setup where the basic idea is to take a lathe head and stick it on to the table of your mill. I know this will not be as stiff as a dedicated lathe. But it will nevertheless be quite useful, and able to so many things. I'm quite intrigued by this.
One major question then is how to get good enough resolution on the encoder while being able to turn at high speed. My spindle is rated for 5000 RPM (7.5 kW). That is 83 RPS, or 83 Hz. So a resolution of 10.000 pulses/rev will result in 830.000 pulses/sec, or 830 kHz. Now we can't multiply that many times before we start to hit the wall as far as reading a normal incremental encoder.
The problem is that 10.000 pulses/rev isn't anywhere near the resolution I'd like to have.... To get 0.001 mm resolution (not accuracy in the machine, but resolution for the PID to work with to get 0.01 mm accuracy) at a radius of 100 mm it will take ~630.000 counts/rev. To have it on larger diameters would require even higher resolution. So 1.000.000 pulses/rev is in real life what I'd like to achieve.
Now that would require a normal encoder to count at above 83 MHz, which won't happen.....
Now as I have learned the alternative here is to use either BISS with an absolute encoder, or use analogue encoders.
I recently discovered (to my very pleasant surprise) that the spindles I'm planning to use for this actually have 512 pulses/rev 1V/pp encoders (Lenord + Bauer GEL 244). And these signals are possible to interpolate with at least 12 bit accuracy (iC-Haus have up to 16 bit interpolators to get even higher resolution). This gives a resolution of 1.000.000 interpolated pulses /rev, which is what I want. GREAT!
I even have a drive I'm planning on using with this spindle (a Control Technique Unidrive SP2404) capable of reading this signal and do this interpolation internally!
Now comes the problem: How do I make my LinuxCNC computer read this encoder for position feedback. It will have to share the signal coming out of the encoder. The drive isn't able to "forward" the encoder signals as far as I understand. So I need a separate way of making the LinuxCNC computer read this encoder.
As I know there are no Mesa hardware to read this kind of encoder, let alone do interpolation.
iC-Haus has chips and evaluation boards that should be able to read this signal. But for that to work I need a way for the computer to read the signals coming from the interpolator. The best interface as I understand it is the BISS protocol.
So I have been searching for info on others using BISS for encoder reading, but so far I haven't seen anyone who has done it and made it work.
BISS is implemented as from 2.6. But not much is to be found about it when I searched. I guess not many are using it so far. I would hope that this can change, as iC-Haus hardware is easily available and should provide good solutions at reasonable prices. They even have complete magnetic sensors with approx. equal resolution, all at reasonable prices.
My main concern though is the large span in speeds. Low speed positioning (C-axis) will obviously require far higher resolution than high speed turning. The question is how to deal with this.
I don't know exactly how it works, but I have read somewhere that the BISS protocol have a solution for this, and it will read out speed only when high speed movement is detected, and give out high resolution position signals when speed is low.
I did find an interpolator by Beckhoff that did something similar (Application Note DK9222-0212-0053) that reduced resolution at high speed.
The question is, is this possible at all with LinuxCNC as it is now, or will this require major work? I'm not a programmer, and would be dependent on others to make changes if they are required.
On a general note though, this feature would be useful for most Lathe users as it would make it a lot easier to implement C-axis. And I imagine there are quite a few users out there who want C-axis with high resolution along with high speed turning if they can have it at a reasonable cost (and complexity). So I would hope this feature request has some value for many users, not only my limited personal needs only.
I have seen the thread about using absolute encoders, and also the one about having to rewind the 4th axis every so many revolutions. And they are all related. But I feel there should be a better and more straight forward way of implementing a lathe axis in a milling machine, a.la Simpson36’s approach in LinuxCNC, with proper high resolution when used for indexing.
How far off is a request like this from being implemented?
Anders
I have a direct drive spindle of off a Gildemeister CTX 400 (the sub spindle is most suitable in size) I'm planning on using for this.
My dream is to get a setup much like Simpson36 has done over at the Mach forum. blog.cnccookbook.com/2012/03/11/mill-tur...-hobby-cnc-machines/ is a link to a description of it.
As you can see it's basically a mill/turn setup where the basic idea is to take a lathe head and stick it on to the table of your mill. I know this will not be as stiff as a dedicated lathe. But it will nevertheless be quite useful, and able to so many things. I'm quite intrigued by this.
One major question then is how to get good enough resolution on the encoder while being able to turn at high speed. My spindle is rated for 5000 RPM (7.5 kW). That is 83 RPS, or 83 Hz. So a resolution of 10.000 pulses/rev will result in 830.000 pulses/sec, or 830 kHz. Now we can't multiply that many times before we start to hit the wall as far as reading a normal incremental encoder.
The problem is that 10.000 pulses/rev isn't anywhere near the resolution I'd like to have.... To get 0.001 mm resolution (not accuracy in the machine, but resolution for the PID to work with to get 0.01 mm accuracy) at a radius of 100 mm it will take ~630.000 counts/rev. To have it on larger diameters would require even higher resolution. So 1.000.000 pulses/rev is in real life what I'd like to achieve.
Now that would require a normal encoder to count at above 83 MHz, which won't happen.....
Now as I have learned the alternative here is to use either BISS with an absolute encoder, or use analogue encoders.
I recently discovered (to my very pleasant surprise) that the spindles I'm planning to use for this actually have 512 pulses/rev 1V/pp encoders (Lenord + Bauer GEL 244). And these signals are possible to interpolate with at least 12 bit accuracy (iC-Haus have up to 16 bit interpolators to get even higher resolution). This gives a resolution of 1.000.000 interpolated pulses /rev, which is what I want. GREAT!
I even have a drive I'm planning on using with this spindle (a Control Technique Unidrive SP2404) capable of reading this signal and do this interpolation internally!
Now comes the problem: How do I make my LinuxCNC computer read this encoder for position feedback. It will have to share the signal coming out of the encoder. The drive isn't able to "forward" the encoder signals as far as I understand. So I need a separate way of making the LinuxCNC computer read this encoder.
As I know there are no Mesa hardware to read this kind of encoder, let alone do interpolation.
iC-Haus has chips and evaluation boards that should be able to read this signal. But for that to work I need a way for the computer to read the signals coming from the interpolator. The best interface as I understand it is the BISS protocol.
So I have been searching for info on others using BISS for encoder reading, but so far I haven't seen anyone who has done it and made it work.
BISS is implemented as from 2.6. But not much is to be found about it when I searched. I guess not many are using it so far. I would hope that this can change, as iC-Haus hardware is easily available and should provide good solutions at reasonable prices. They even have complete magnetic sensors with approx. equal resolution, all at reasonable prices.
My main concern though is the large span in speeds. Low speed positioning (C-axis) will obviously require far higher resolution than high speed turning. The question is how to deal with this.
I don't know exactly how it works, but I have read somewhere that the BISS protocol have a solution for this, and it will read out speed only when high speed movement is detected, and give out high resolution position signals when speed is low.
I did find an interpolator by Beckhoff that did something similar (Application Note DK9222-0212-0053) that reduced resolution at high speed.
The question is, is this possible at all with LinuxCNC as it is now, or will this require major work? I'm not a programmer, and would be dependent on others to make changes if they are required.
On a general note though, this feature would be useful for most Lathe users as it would make it a lot easier to implement C-axis. And I imagine there are quite a few users out there who want C-axis with high resolution along with high speed turning if they can have it at a reasonable cost (and complexity). So I would hope this feature request has some value for many users, not only my limited personal needs only.
I have seen the thread about using absolute encoders, and also the one about having to rewind the 4th axis every so many revolutions. And they are all related. But I feel there should be a better and more straight forward way of implementing a lathe axis in a milling machine, a.la Simpson36’s approach in LinuxCNC, with proper high resolution when used for indexing.
How far off is a request like this from being implemented?
Anders
Please Log in or Create an account to join the conversation.
13 May 2015 20:01 #58636
by PCW
Replied by PCW on topic High resolution encoder on lathe spindle
Mesa's hostmot2 supports 4 types of absolute encoder interfaces:
1. Resolver
2. SSI
3. BISS
4. Fanuc
1. Resolver
2. SSI
3. BISS
4. Fanuc
Please Log in or Create an account to join the conversation.
Time to create page: 0.071 seconds