Hardware To Calculate Position for 6DOF arm

Hi all,

Just looking for some advise on the best approach to the following

I have a linkage with 6 joints each equipped with an incremental rotary encoders (8 wires, 3 pairs for signals and 2 for power)
id-nr.281283-91_rod_454m.0000.pdf (heidenhain.de)

One end of the linkage is fixed and I anticipate calculating the position of the free end based on the encoder readings.The free point will be zeroed before calculating the motion.

First question is, would a single mega board be able to cope with all the interupt processing? It is possible that all 6 encoders would move at the same time.

Or would it be better, for example, to assign a nano to each encoder and network the position back to a controlling Uno?

Your thought and advice are much apprecaiated

Thanks in advance
Mark

Depends on how fast the arm is moving. That encoder looks like it has a sinusoidal, differential output, so you will at the very least need a differential-input interface. Also a comparator would be a good idea although it's technically not a requirement.

I use an AM26C32 to convert encoders from differential to single-ended to feed into an arduino or an LS7366 encoder counter if the pulses are too fast (LS7366 can accept encoder pulses at up to 30MHz).

In the case I'm thinking of (I built a device that does this), the arduino could process the signals fast enough. IIRC, the max speed was 3,000 RPM and it is a 4,096 PPR encoder. However, we wanted some "headroom" to add other features so the arduino wasn't spending all its time processing encoder pulses.

Considering the cost of this device, doesn't Heidenhain sell an interface to make reading it easier?

Thanks very much for your reply, you certainly are a lot more knowledgeable than I am.

The differential to signle ended conversion is not something I am familiar with (read:hobbyist)

Also to clarify a couple of variables, the encoder will never make a full revolution, circa 3.5radians maximum. Maximum speed will be circa 200rpm. I presume the forward/reverse sensing will be handled in the code depending on the waveform offset.

One other consideration I have is the number of input lines required at 36 just for the encoders plus I will need an additional 6 for user signalling.

Could I trouble you for a quick scribble on the AM26C32 circuit?

Regards
Mark

Actually, as I look at the datasheet again, I don't know what I was thinking. That provides two differential, phase-shifted sinusoids over a rotation. It seems like it behaves somewhat like a resolver. Do you have any more data on it?

I think you are correct, it is from a cmm arm circa 1990 that I am trying to ressurect and that phase shift looks like a resolver. They probalby used them due to shock, interference and temperature insensitivity.
This is the existing circuitry - one board for each axis and a main controller.
Existing Circuits

And this is the sensor removed from the joint
Arm Joint

I would not know if the A to D coversion is done on the 6 circuit boards or if it would be integral to the sensor but the part number quotes 3600 line counts so it could be the latter

Does that help?

Regards
Mark

Not really, need a datasheet on the encoder besides the mounting & ordering information.

Hi,

I found this on the heidenhain site - you were right in your first assumption about a differential interface

This is from the heidenhain interface info

And this is their differention interface box

Heidenhein EXE 101 Interface.pdf (891.2 KB)

The existing board has 3 groups of 4 components, op amps, Xor gates etc - why would there be 4? could there be some redundancy?

If I become a pain then just let me know

Current output, that's interesting.
Looks like you have some work cut out for you :slight_smile:

The question I have is that it's not clear whether the sine cycle is from one "line" to the next or it's one cycle over the entire rotation. Heidenhein has a reputation for very high precision measurements, so there's a good chance that it's the former, since it would give the reader the ability to interpolate the position between lines. I haven't ever used one, but I do know that encoders like this exist.

Best way to proceed is probably to put a resistor across one of the output pairs, apply power and watch the voltage across the resistor with a scope. That will give you a good picture of what the output looks like.

Next step would be to build a differential amplifier for each channel using their document as a guide

Ok thanks, time to buy an oscilloscope I guess

Might be faster to contact Heidenhein and find out if they still support that encoder and what hardware/software they have that might do what you need.

Hi mate, did that earlier today, was told support ended in 2015 but the guy was helpful, told me it is an optical encoder with a push pull output. It was not a standard item but manufactured with a small firm factor for Romer. Definitely 11 micro amp output

1 Like

Do you think it would be a good idea to try and create the circuit diagram for the interface board to undertstand what it does and then try and recreate that using more current components? Some of these function may be available as single chip solutions which were not available back in the 90's


No!

Let's take the 30,000 foot view here. Do any of the electronics work? Assuming that the goal is to make the arm usable and not just learn about niche encoders, using the existing interface would probably be the fastest path forward. Then you could read the output TTL signals with an arduino.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.