| ??? 01/03/04 07:59 Read: times |
#61814 - RE: Quadrature encoder Responding to: ???'s previous message |
Well, I believe in many cases the "fastest response" hardware is the best solution. Say, you want to count pulses from a 10.000 RPM, high-resolution encoder. Either you implement some CPU that can handle way more than 1MHZ pulses, or use dedicated/custom hardware. In that case, raw '51 is out of question. But if the only case where high frequency is possible is read error conditions, I highly doubt the problem would appear.
Say, our signal is like this: _ = low, - = high, # - high-freq noise. If, as you say, this happens only when the encoder comes to a complete stop, only four variants are possible: low-noise-low, low-noise-high, low-noise-low, high-noise-high, low-noise-low: Readouts on edges of A and B. Noise gets antialiased and rounded to "1". We get a common "turn-back" scenario. First, the encoder comes to complete stop, then changes direction. A:-----______--------____###____------____---__ B:---_____------_______-------_____-----____--- We round the noise to "1". A:-----______--------____---____------____---__ B:---_____------_______-------_____-----____--- We have normal turn-around. High-noise-High: The other turn-back scenario: A: __--__---____----##----____---__ B: _--__--____----______----____--__ # = - A: __--__---____----------____---__ B: _--__--____----______----____--__ Scenario High-noise-low. Our encoder stops, then continues running in the same direction as before. A: __--__---____-------####______----___--__ B: _--__--____------_________------___---__- Filtered: A: __--__---____-----------______----___--__ B: _--__--____------_________------___---__- Our edge readout is delayed by the length of the noise, but the "error" is the margin of the noise-generating area. Second variant of this problem (with low to high transition) isn't much different. Our readout appears maybe a bit "ahead of schedule" but shouldn't cause problems. A: __--__---____------____####-----___---___ B: _--__--____------____--------____---____ Applying antialias to 1 A: __--__---____------____---------___---___ B: _--__--____------____--------____---____ If we never approach frequency at which our smoothing function creates a continuous wave, do we risk missing anything? Of course if we do approach, or reach the speed, like that... A: ------____---------___---___--__--___--- B: ---_____-------______---___--__--___---_ into: A: --------__-----------_-----_--------_--- B: -----___---------____-----_--------_---- then the whole idea will fail. Signal treated like noise will get filtered out. |



