Originally Posted by
TomKerekes
You might try moving manually with all motor supplies off to see if it still accumulates counts. That would provide clues whether it is noise or something about the way the Drive outputs signals.
The drives need to be powered to read the absolute encoder and convert it to the incremental quadrature outputs unfortunately
You might try lots of short direction reversals to try to determine if it could be a lost count on each or most reversals
Appears to be a function of distance traveled, dithering 0.001” still results in offsets but takes a long time
You might check the A+ A- B+ B- voltage levels at Kanalog. They should all toggle between about 0.5V and 3V. Sometimes they operate marginally correct with a broken wire and floating signal.
Measuring across the differential with a multimeter seems to show +2.6 or -2.6V as it moves, but not sure if I am measuring pulses or averages or what. I have ordered an oscilloscope to be able to get insight into this sort of thing...
Kanalog has only moderate termination on the encoder inputs of 470 ohms. Ideally the Termination should be ~120 ohms. So you might consider paralleling 160~200 ohms across each + to - input.
Added 200 ohm resistors, no apparent effect.
KFLOP has digital filtering to reject noise glitches. KFLOP samples the A B signals at 16.67 MHz and requires them to be stable for 7 samples (by default) before considering the signal to have a valid new changed state. 7 samples = 0.42us. You might try increasing the filter value. Numbers higher than 14 will start reducing the max count rate below 1Mhz. The setting is global to all Encoders and can be changed by executing the statement below with the number 7 changed to a larger value (255 max):
FPGAW(ENC_NOISE_FILTER_ADD)=7;
Success! Changing this to a value of 12 seemed to do the trick, a value of 10 reduced the drift significantly but did not eliminate it. If my motor max RPM is 5000 and I get 8192 pulses per rev = 682kHz does this mean I am fine just leaving this filter value higher and declaring success? Similarly if I raise it to 14 (or theoretically up to 24 if it was right on the edge) does that get me additional margin against noise?