Electrical – How to determine the angular velocity of a DC motor correctly

brushed-dc-motorrobotics

I am given a small robot track vehicle, which uses a DC motor to power the left tracked wheel and another DC motor to power the right tracked wheel. I am using an optical wheel encoder to measure the angular velocity of the motor. Now I want to determine the precision of the optical wheel encoder. To do so, I need to know the EXACT angular velocity of the DC motor. Can somebody tell me how to determine the exact angular velocity?

The datasheet of the motor does not contain any electrical or torque constant. I am only given the no load speed, no load current. I get to choose what voltage I apply to the DC motor myself (in the code). Can I calculate the angular velocity the motor should have based on the voltage that I apply? Or do you know an easier or better way?

I am using this motor: TFK280SC-21138-45

Best Answer

If you have wheel encoders and know their specifications (i.e the number of pulses per full revolution) then you can calculate the angular velocity you're looking for.

If you know pulses per revolution and can count pulses per time period you can calculate the proportion of a revolution which has occurred which gives you, as an instantaneous value, the angular displacement.

Velocity, generically, is the first differential of displacement with respect to time so you need at least two data points. In this case you've calculated the displacement and you know how long it took to occur; displacement per unit time is velocity (angular velocity).

An alternative way is to determine the time between pulses, each pulse indicates a certain proportion of a revolution / angular displacement. (hint: this way is quite microcontroller friendly and it sounds like a job for a simple ISR) This gives you displacement and the time which it took again which you can use to calculate the angular velocity which must be present (on average).

The accuracy and precision (which i think you might be confusing slightly) is mostly governed by the number of pulses per revolution and the kind of angular velocities you'll encounter. You can do things like calculate acceleration to help predict what the wheel is doing between pulses / speed updates if you have a particularly coarse encoder or have to operate a coarse encoder at low speeds but that's heading towards a control problem rather than the original question.