This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DRV8214: Position Resolution from Ripple Counting

Part Number: DRV8214


Hi, I am looking into solutions that allow me to control the speed and know the position of a very small motor and came upon the DRV8214. This part looks to have most of the features I want, however I can't find much information on the position measurement, in particular I want to know what determines the position resolution. 

Is the position measurement only dependent on the number of commutator poles, if so, is the resolution of the position equal to the physical spacing between commutator poles, or are there other factors that are used to get a more accurate position?

Thanks!

  • Hey J.S.,

    The position resolution is based on the current ripples, and these are caused each time a brush goes from one commutator segment to another.  For typical small DC motors (<12V, <2A for example) they usually have 3 commutator segments and 2 brushes.  This will result in 6 ripples per output shaft revolution. Therefore your resolution is 60° mechanically per ripple in a typical motor.  

    Number of ripples per revolution = #Brushes * #CommutatorSegments 

    If there's a gearbox attached to your motor, then output the number of ripples per revolution by the gear ratio.  Note that many gearboxes will advertise an even number "ex. 99:1" but the actual ratio will be a fraction - take Pololu 99:1 Metal Gearmotor  for example, its actual gear ratio is (22 * 22 * 22 * 22 * 22 * 23) / (12 * 10 * 10 * 10 * 10 * 10) = 98.777.  This becomes important for ripple counting if being off by 1 ripple repeatedly will induce drift.  

    Note that the device can only internally stop at an even number of ripples due to RC_THR_SCALE setting (options of 2, 8, 16, 64), but you could use an external MCU and interrupt to count the ripples on RC_OUT to stop wherever you want. I made a demo for this device and used this external interrupt method, setting the outputs to BRAKE mode to instantly stop whenever the desired ripple count was reached.  

    Let me know if this helps! 

    Best,

    Jacob