In speed control, the speed resolution in case of an incremental encoder feedback depends on the encoder resolution and on the slow loop sampling period.
The minimum speed that can be controlled (1 IU/sampling) can be computed using the following formula:
Vmin [rpm] = 60 / (4 * Slow_Loop_period [s] * enc_lines * Tr)
where:
– “Vmin” represents the minimum speed that can be controlled (in rpm);
– “Slow_Loop_period” represents the slow loop sampling period (in s). It is displayed in the Drive Setup dialog, when you press the Advanced button;
– “enc_lines” represents the number of encoder lines;
– “Tr” represents the transmission ratio set in the Motor Setup dialog (motor displacement [rotations] / load displacement [rotations])
Example: Consider a brushless motor with a 500 lines incremental encoder, a slow loop period of 1 ms and direct connection to the load (trasmission ratio is 1:1). The minimum measurable speed in this case would be:
Vmin = 60 / (4 * 0.001 * 500 * 1) = 30 rpm
Here are some details that can help better understand what happens when speed control is used:
The feedback coming from the encoder is basically a train of digital pulses (LOW/HIGH – 0/1 states) that are reaching the drive. In order for the drive to determine the speed of the rotating device (or linear – it’s all the same) it has to count the pulses received over a certain amount of time. This is where the slow loop comes in. The slow loop is basically the speed/position loop of the digital system. The sampling time of the this “slow” loop is by default 1ms for brushless and brushed DC motors and 0.8ms for stepper motors.
To be easier for understanding we’ll use the 1ms for the examples below.
As already mentioned, the drive determines the speed by counting the pulses received during the slow loop period (1ms). Let’s assume that the drive counts 5 transitions each 1ms – the measured speed will be in this case 5 counts/ms and knowing the resolution of the encoder (the number of counts per revolution is 4 times the number of encoder lines), the speed can then be expressed in rpm, rad/s and so on.
The faster the speed, the more pulses will be counted during this 1ms time. As the speed decreases, we can notice that we’ll eventually arrive to the situation where the motor is moving slow enough so that the drive is only recording 1 pulse at each 1ms. This is the minimum measurable speed. Considering a digital controller that can only work with integer numbers (which is the case of the speed controller) this is also the minimum controllable speed. As you might have guessed by now, the controllable speeds will be exactly multiples of 1, that is 1, 2, 3 … and so on, but nothing in between. The resolution with which the speed is measured and controlled is 1 IU/ms, since +/- 1 IU is the smallest error that the speed controller can “see” between the speed reference and feedback.
This is why we say that the higher the speed the better we control that speed – imagine the +/-1 deviation for a speed of 10counts/sampling (which means an error of 10%) and the same +/-1 deviation for a speed of 100counts/sampling. This time the same digital control structure will ensure a 1% speed accuracy (as opposed to the 10% of the example before).
Now it’s also easy to understand why, if we actually increase the sampling time (that 1ms is increased to 2 or 5ms or whatever else), the minimum measurable / controllable speed will decrease. Considering the new sampling time of 5ms and the same mininum speed as before (30 rpm) – now instead of counting only one pulse per period, we’ll count 5pulses per period. It follows now that increasing the sampling time 5 fold, means we can detect a minimum speed 5 times lower that before.
However, increasing the sampling time can lead to the drive reacting slower to deviations (error) from the imposed speed. This in turn translates to a poorer control.
Using a positioning mode, not a speed mode will eliminate the “integer only” limitation of the speed controller, effectively providing a filtering of the encoder reading, that is averaged over time. Imagine the 1ms sampling time, but the speed of the motor half the minimum mentioned above. The drive will actually count 1 pulse during the first sampling and then 0 counts during the next sampling. On the third sampling will count again 1 pulse and so on – the average speed will in fact be 0.5 counts/sampling. Since now the drive controls position, instead of speed, the motor command will still be in +/-1 increments, but averaged over time will result in a speed of 0.5counts/sampling.
To conclude, if you want to obtain better speed resolution try using a position profile instead of a speed profile (it’s true that in the position mode the drive is actually controlling a position, which means that eventually the motor will stop when the imposed position is reached, but if you command a very high position value and/or reset the actual motor position from time to time, the result will be a never ending positioning movement which in other words is a speed command).