Abstract: A motor controller controls motor rotational speed by repeatedly executing a sequence of operations. Initially, a pulse is generated that causes a predetermined fixed current to be supplied to the motor winding for a predetermined driving interval. The winding current is forced to zero after the pulse has occurred. A settling interval is allowed to pass in which the back EMF across the motor winding stabilizes, and then the winding back EMF is compared to a velocity command voltage representing the desired rotational speed of the motor. If at the end of the settling interval the back EMF is less than the velocity command voltage, indicating that the motor speed is less than the desired speed, then a new control cycle is begun, starting with the assertion of the current-driving pulse.