Benefit of a quadrature decoder chip?

Hey guys,

I need to gather data from three quadrature encoders and send them to the computer. I have an arduino due that I can dedicate to this task, with no other computation it needs to do. After looking at a lot of people having trouble reading more than one encoder at a time reliably, I was considering buying three quadrature decoder chips like this: http://www.lsicsi.com/pdfs/Data_Sheets/LS7082N.pdf

After reading through the datasheet however it seems like the chip does barely anything to help reduce the load on the arduino... It seems like it sets two digital outputs ('moved' and 'direction') high or low, and the arduino would still have to have an ISR for each encoder to deal with these digital outputs. I guess it would make the actual code simpler but the hardware more complex.

My question is this: if I already had the chips, would there be any benefit that I am not seeing to use them instead of deal with everything in software? Also, do you think the arduino due would be able to keep up with three 600ppr quadrature encoders moving at relatively slow speeds (~1rev/sec)?

Thanks!

I find (other wont) to get the reliable full range from an encoder just using Arduino pins needs 2 interrupt pins (for A & B) and that's all you get on the 328 based chips if using external interrupts. The encoder chip would reduce this to one interrupt pin and one normal pin to detect direction so that doubles the number of encoders I could reliably use.
Most all pins on the 328 based Arduinos also support pin change interrupts but the overhead of using them is a bit higher and slower.

However you say your using the Due and according to the interrupt reference page here you can use any digital pin for external interrupts so you should not need the chips.

I did a project with 4 LS7184 and a 328P, reading the encoders and sending changes via serial to another 328P.
PCINT were used to detect pulses, the ISR noted the encoder that was turned, set appropriate bits in a register (a variable), and loop() code sent the register pulse and direction out to change a DAC level up & down. Seemed very responsive to me. I believe that not having to deal with 2 PCINTs per encoder to determine the direction helped with that.

LS7183_LS7184.pdf (190 KB)

First, you need to explain exactly what quadrature encoders you are talking about.

Paul__B:
First, you need to explain exactly what quadrature encoders you are talking about.

The encoders I am using are these: http://wemakethings.net/2014/05/26/rotary-encoder-teardown/

They have open collector inputs with no index signal.

They have open collector inputs

No.

They have open collector outputs. Open collector inputs make no sense.

Grumpy_Mike:
No.

They have open collector outputs. Open collector inputs make no sense.

Your name checks out ;D

My mistake.

Your name checks out

Why do you think I chose it? :slight_smile:

take a look at this link.

works with 5V Arduino's, but I believe you could change one pull up resistor to make it work with 3.3V.

it would be easy to roll your own board, The chip is pretty inexpensive as well, see,

http://usdigital.com/products/interfaces/ics/LFLS7366R-S

For more information.

PS, There are examples for code for this chip On the Arduino website, you just have to look for it.