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.
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.
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.
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
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).
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.
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.