37D DC Motors with encoders undershoots

I’m using two of the 37D DC motors with encoder 100:1 ( https://www.pololu.com/product/4755 ) connected to a BeagleBone Blue using the robotics cape python library for motor control and encoder ( https://github.com/mcdeoliveira/rcpy )

For testing purposes, I’m simply trying to make them do one revolution and stop once the encoder value is greater than 6533. My issue is that they both stop short of one revolution - around 15% to soon I’d say and the encoder value reads greater than 6533 due to stopping time, I presume.

I’ve checked the encoder signals using an oscilloscope, which all looks to me, as it should.

I realize the input voltage required for the encoders are 3.5V - 20V, however having them directly connected to the BeagleBone Blue, they’ll only ever receive 3.3V at most.

It puzzles me, seeing as the values I’m getting from the encoders seem to match what would be required for one full rotation. If this is due to the lower voltage supplied, I would assume it would overshoot if anything.

I’ve checked the gearing ratio on the product specifications and in my code multiple times. I would very much like to avoid opening the gearing and counting myself if possible.

Let me know if you need to more information, code or video.

Any help is greatly appreciated. Thank you.

Best regards,


I am sorry to hear you are having an issue with your 37D gearmotors. Could you also post a picture showing the marking on the gearbox? Do you have a level shifter you could use, so that you can supply the encoders with a higher voltage? Does the behavior change if you increase or decrease the motor speed?