Encoder Interpolation

If you travel a few posts back, you might remember there is a fairly critical problem with my MX80L stages: They have the 10nm encoder option. This is a problem because the servo drive can only handle a certain number of encoder counts per second. At the maximum axis speed of 2m/s, 10nm scales will be outputting a 50MHz square wave. The fastest encoder the VIX IH can accept is 2MHz pre-quadrature which is far too slow. Sticking with the 10nm scales will limit the MX80L stages to a tiny fraction of their maximum velocity.


To understand how this problem can be sidestepped we need to take a closer look at the components in question.  We actually have a 20 micron scale that is being digitally interpolated for higher resolution.  This is pretty exciting news - given the right interpolator we can convert the encoder to any resolution we want.  On the other hand, finding a pair of suitable interpolators is looking pretty unlikely, and I'm not even going to ask how much a Renishaw unit costs new.


If none of the above made sense, here is a quick overview of the signals involved.  The VIX IH is expecting quadrature input, which is a set of two square waves offset by ninety degrees.  The second signal allows the direction of motion to be identified, and the four edges provided by the two square waves creates four discrete steps per period.  Don't worry if that didn't make sense either, just take a look at the pictures.


On the other hand, the MX80L is producing these rounded sinusoidal output signals:


Sinusoidal encoders operate under the same principle as quadrature encoders but the signals are left in analog form.  In fact, you could probably feed the sinusoidal encoder straight into the VIX and it would work, albeit at coarse resolution and with hysteresis problems.  So why even bother using a sinusoidal output in the first place?  The answer is that you can use the intermediate values to increase the resolution of the encoder.


Using the power of math, a sinusoidal signal can be divided into an arbitrary number of discrete steps.  We are only interested in a modest 10x increase in resolution, but with care this concept can be taken to extremes.  Parker uses a Renishaw RE2000 interpolator to get down to 10nm.  This is a pretty crazy level of interpolation and looks something like this:


I want to use a modest 10x interpolation to bring my scales to 0.5um resolution.  This matches the 0.5um resolution of the Aerotech Z stage, and is about as fine as the servo drive can go before limiting the maximum velocity.  If we put the remaining two signals back into the picture, we are looking for a circuit that will do this:


Accomplishing this from scratch would probably be pretty challenging, but IC-Haus sells a line of components designed for exactly this application.  Their simplest product is perfect for our needs and is very straightforward to use.  I can get away with a simplified version of their example circuit as most of the pins deal with optional features, allowing me to leave almost the entire IC unconnected.


Just to make sure everything will work as expected, I choose to breadboard the circuit for testing.  First the surface mount components are soldered to breakout boards for easier handling.  The larger 8-pin chip is a basic RS422 line driver to convert the TTL signals into the differential form the servo drive expects.


Add the additional components...


Finally we put the circuit in line with the servo drive.  The cable contains a lot of additional wires that just need to be passed through which is why it looks so complicated.


With everything set up we can reconfigure the servo for its new encoder resolution and give it a test run.  Everything works great and we have motion at a reasonable speed.

2 comments:

LEDesign said...

I have two of these stages and the same REE2000 encoder option. I would like to run these at higher speeds and would like to follow your route with the IC-Haus chip.
Did you produce a drawing of the additional components you actually needed so that a non-electronic user could try the same? I agree it doesn't look too difficult but choosing component values is never as easy as it looks when the experience is missing!

I see this is completed some time ago but I thought I would ask before setting off in hope!

Thanks,
Nick.

Ryan said...

Pretty much all you need are decoupling capacitors (1uF ceramics) and two 120ohm resistors to terminate the sinusoidal signals (one across each channel).
The complete schematic is shown here: http://www.everythingbends.com/2015/03/interpolator-pcb-design.html

Here is the original digikey parts order: https://pastebin.com/2tzVWMPd
I don't think I have the EagleCAD files but I'll check later.


I got sidetracked for a while but have continued to make progress on the printer. After I make some finishing touches in CAD I will be paying a machine shop to do most of the fabrication.

Contact

Name

Email *

Message *