Recommendations for a Quadrature Decoder IC or MicroController

Jul 30, 2008 13 Replies

I have an atmega16 that interfaces to a motor with a quadrature encoder sensor. Turns out the frequency of the pulses are much more than my little 4Mhz can handle (the micro does other things as well!) As a result, the motor control isn't very accurate, nor does it react very fast.



SO.. I'm looking for either a quadrature decoder IC that can take the load off (will calculate position/velocity and interface to a host micro via serial/parallel bus), OR, a beefy microcontroller with built- in decoders (and pwm output). 32-bit with lots of GPIO is ideal if going the microcontroller route.



Quad counters are less common Peripherals than they should be.

A CPLD is often the solution, and can count very fast.

I think the xmega may have mentioned a Quad mode - not sure of their sample status.

-jg

Are you sure?

How do you read the quandrature signals?

If you use a Pin Change Interrupt on both signals, it appears to me that you can very quickly check which way the motor turns and in- or decrement a counter. In assembly of course. Shouldn't take more than a couple of microseconds on an ATmega.

Meindert

Hello Benn,

Look at ST Cortex High Density parts:

fits your spec quite well, has quad decoders, motor control timer stuff, reasonably large RAM and Flash, 144 pin parts if you neeed a lot of IO.

I hope they work OK because I have just designed one into a new project but the boards are not built yet (about 2 weeks away).

Michael Kellett

formatting link

You haven't mentioned much about your situation, such as the motor's rate, the number of A/B transitions per revolution, etc. You might be okay with what you have, but just need to think more closely about the details to make it work cleanly. Hard to do anything more than accept your conclusion, though, without more info.

There is (or was) an expensive HP part that I've used in the past, as well, the HCTL-2020. It is designed for the purpose and works well, but you pay for it when you find it. A separate micro would be cheaper, I think, but you've have to code it up. I'll leave the do-all micro recommendations to others.

Jon

P.S. I've handled motors running at 250 RPM (actually, I controlled the motor speed, too, and 250 RPM was the max), coupled to optical encoders with 10000 A/B transitions per rotation (medical pumps.) There is a cam attatched to the motor, so there was also analog conversion of that and a real time graphics display set up to display the home and certain key pulses other than A and B, along with the cam height, so that the workman could adjust the optical encoder relative to the cam shaft to calibrate the motor while spinning (requirement.) I mapped the timing in a hand-drawn paper diagram before attempting the coding. By the time I was writing code (and I did use assembly for some critical parts of it), I'd already resolved the mechanism to use and knew it was sufficient.

If you can use the SPI port, try the LS7366 quadrature counter.

I have used this on my micromouse:

formatting link

I use a dsPIC but it will work just fine with the AVR.

Very easy to use and almost certainly fast enough.

Data sheet here:

formatting link

Pete Harrison

formatting link

Basic interfaces & interface + counter ICs here:

formatting link
Cheaper than the old HP offerings.

You might look at:

formatting link

Luminary, dsPIC and other chips have QEI interfaces. The Luminary ones have some extra features for speed measurement, IIRC.

Many DSPs have them as well... motor control is one of those crossover areas. LSI makes some stand-alone counter chips, or you could use a CPLD or FPGA.

Best regards, Spehro Pefhany

"it's the network..." "The Journey is the reward" speff@interlog.com Info for manufacturers: http://www.trexon.com Embedded software/hardware/analog Info for designers: http://www.speff.com

I had exactly the same problem a while ago - the quadrature output was much faster than my micro could keep up with (even if it wasn't doing anything else!).

I successfully used the Agilent (now Avago) HCTL-2022 decoder chip. Very fast & accurate and no "gotchas" (from memory - ymmv).

Here's the URL for the datasheet - good luck.

formatting link

Hi, You could give a look at the HCTL2016 datasheet and then choose between using the part or implementing it in a PLD (as I did).

more

if

A seperate chip is a bad idea as their are so many micros with 2 phase counters built in. There are even several design kits (board and software) for peanuts around.

"benn" skrev i meddelandet news: snipped-for-privacy@u12g2000prd.googlegroups.com...

Why not try an XMEGA which has the Quadrature Encoder built in.

Best Regards, Ulf Samuelsson ulf@a-t-m-e-l.com This message is intended to be my own personal view and it may or may not be shared by my employer Atmel Nordic AB

Well done Ulf, I said the same thing 8 days ago ;)

An app note is here

formatting link

Any news on the sampling status of the xmega - can the OP actually get any ?

[Shame they are not 5V parts (nor even 5V tolerant)

- hard to drive Power MOSFETS from a 3v uC ]

They get a tick for the peripherals tho....

-jg

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required