After calculating the PWM Equivalent Voltage, we generally assume that the motor will operate ideally and respond as if it was connected to a non-PWM power source providing the voltage. But that's not the case. For example, a Yellow-TT motor will spin if a single 1.5-volt battery is connected, but will not turn until the PWM Equivalent Voltage coming from a Motor FeatherWing reaches 2.0 volts. And when it does start, it suddenly rotates at 4000 RPM. Why is that?
Since a brushed DC motor’s internal rotor consists of two or more coils of wire wound around laminated magnetic core material, the motor acts like an inductor. Depending on size of the rotor coil, it may take a few milliseconds for the energy to build sufficiently to turn the shaft.
Rotor coil inductance becomes a primary factor to consider when using PWM for motor speed control. The motor coil works best when the applied voltage is relatively steady since it needs time for its magnetic field to reach the needed strength. At higher PWM frequencies, the pulses from the motor controller board are changing too quickly to provide enough energy to spin the motor until the equivalent voltage reaches 2.0 volts.
When the PWM frequency is lowered, the motor’s coils extract more energy from the pulsed PWM signal. That means that the motor will start spinning at a lower equivalent voltage and will operate with improved torque at low speeds. The following graph compares the Yellow-TT motor's speed response when the default PWM frequency of 1600Hz is changed to 25Hz.
The spin threshold at 25Hz starts at 0.3 volts, increasing the useable motor speed range to as low as 100 RPM. The Yellow-TT gearbox reduces the motor’s RPM by a factor of 48, so the attached wheel will be turning at 2 RPM or about 0.6cm/sec. A velocity like that will make it much easier for your robot to sneak up on the cat.
How do we choose the best PWM frequency for our robot’s motors?