While I was trying to find the gain (K constant) of a motor, I gave different voltages to see if I will have the same gain constant in each of them.

While doing it, I come through an issue. When I vary the voltage directly from the power supply the motor rotates at the right speed, for example: if I change the voltage from 24V to 12V, the motor speed drops exactly to the half. However, if I do the same thing with the PWM (ie: give PWM = 50% ) the motor rotates at a higher speed than the half value.

Has anyone have an explanation for this? this is crucial as the PWM will be used to control the motor speed and position.

Thank you for your help.

  • \$\begingroup\$ Do we have a datasheet for the motor? How are you supplying PWM (Arduino, 555)? Can we see a circuit? \$\endgroup\$ – Doodle Mar 23 '16 at 14:10
  • 1
    \$\begingroup\$ Probably something wrong with h-bridge, post the schematics. Do you have freewheeling diodes? \$\endgroup\$ – Marko Buršič Mar 23 '16 at 14:17
  • \$\begingroup\$ Which K are you on about? And what kind of motor? \$\endgroup\$ – Majenko Mar 23 '16 at 15:25
  • \$\begingroup\$ if I change the voltage from 24V to 12V, the motor speed drops exactly to the half, that would be purely coincidental. The same goes for PWM. 25% duty cycle PWM doesn't mean the motor will run at a quarter of the speed. You'll have to measure different speeds at different duty cycles, and create your own curve for it. But speed will also vary with the load attached. You could attach a sensor to read the RPM and adjust the duty cycle to get the correct RPM. \$\endgroup\$ – Gerben Mar 23 '16 at 16:15
  • 3
    \$\begingroup\$ Possible duplicate of Why is the DC motor receives higher voltage from the PWM than what is given? \$\endgroup\$ – Olin Lathrop Mar 23 '16 at 20:57

An unloaded DC motor will have a speed proportional to voltage as you expect.

  • At stall the current into the motor will be limited only by the motor coil resistance. This will result in high starting current and torque.
  • As the motor accelerates the back-emf will rise. The current into the motor will reduce to \$ \frac {V_{IN}-V_{BACKEMF}}{R}\$.
  • The motor speed will settle down when the back-EMF is close to the supply voltage.

When running with PWM the situation may change a little. (I've never studied this but it shouldn't be too far off the truth.)

  • If we take the 50% PWM condition and assume initially that the motor is running at 50% speed: we can see from our previous discussion that the back-EMF will be half the full-speed level.
  • We now apply a full voltage PWM pulse. The current produced will be half the stall current which is much higher than that required to keep the motor running at no load. The result is that the motor will continue to accelerate until it settles down at a much higher speed than expected.

As a result you should expect that the % speed will be higher than % PWM until you approach 100%. This concurs with your observations.

One way to create a more linear response would be to use a switched-mode power supply (SMPS) approach where the supply the motor sees is smoothed and stable. A buck converter may achieve this.

An alternative would be to use an encoder feedback signal to adjust the PWM to give the desired speed.

  • \$\begingroup\$ Or just place a physical load on the motor - the PWM control will suddenly appear much more "linear" and the voltage control, much less so. \$\endgroup\$ – rdtsc Mar 23 '16 at 21:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.