|
Re: pic: Encoders and AndyMarks, 341 Style
Dave,
For the past 2 years we have used an identical setup in our transmissions that works fairly well. We have a 128 count quadrature encoder on the output shaft of each transmission interrupting on the A channel, rising edge only. Free spinning speed equates to around 2400 interrupts/sec, but under load is only around 2000 interrupts/sec at maximum speed. With the wheel diameter we have used the past 2 years, this gives about 190 counts/foot traveled. When calculating speed each 26.2 millisecond loop, we get an "instantaneous" velocity resolution of around 2 inches/sec. Just from a personal standpoint, I would like a little better resolution (without averaging over a longer period of time) of closer to 1 inch/sec, but I can't really say I've seen any problems with the current setup (maybe around 3000-3200 interrupts/sec would be "ideal" for us).
As far as RC loading, our 2006 bot had around 12,000+ interrupts/sec worse case without a problem (gut feel of around 20-30% cpu loading max due to interrupts - drive encoders, shooting wheel encoder, internal 250 microsecond clock, analog port scanner, serial port communication). While the number of interrupts/sec is certainly a factor in RC loading, more important ones are the interrupt context saving and the amount "work" performed in the ISR. Having to save the .tmpdata or MATH_DATA sections can add a significant amount of execution time to each interrupt and should be avoided if possible.
Mike
|