I'm controlling a Permanent Magnet DC motor with PWM for a treadmill. I'm using a reflective sensor with 6 pulses per rev to get a speed feedback. So I'm actually doing "speed control" directly, but not "torque control". So I have two specific questions:

1- Do I need direct torque control for this application by measuring the current? Or a combination of speed and torque control where a cascade PI is needed?

2- Do I strictly need to know the DC motor parameters (R, L, K, J, B) in order to do speed control?

It's okay I can vary the speed by changing the duty cycle. But, beyond a simple analogy of pulse-width-modulation, I know it should be a whole lot more complicated than that.


2 Answers 2


1-No not necessarily. You need to control the torque, since in a treadmill you want at a specific setting a constant speed no matter how much the load varies, and the speed loop will make sure that happens. however adding internal torque loop ( cascade PID ) could help with improving response and better disturbance rejection if it is needed.

2-Not at all, but you have to work with trail and error to tune your PID loop and do a lot of testing to ensure stability at all settings and loads.

  • \$\begingroup\$ I'm actually trying to tune the PI controller. With Kp=1 and Ki = 0, the overshoot and oscillations are excessive. I lowered the gains (Kp = 0.25 Ki = 0.021), and the system is now more stable. But... only a higher speeds. At low speed (300 RPM) the system becomes a little unstable under load. \$\endgroup\$
    – user115094
    Nov 21, 2018 at 15:48
  • \$\begingroup\$ there are many methods online on how to tune a PID controller , you could use the D gain to handle the overshooting , but use with care as it can easily make your loop unstable . another thing to worry about is the resoultion of the sensor and the loop time , for example if PID loop time is 10ms and during this time at low speeds only few encoder ticks are accumulated , the control becomes harder . \$\endgroup\$
    – ElectronS
    Nov 21, 2018 at 17:41
  • \$\begingroup\$ search for an article called : PID without PhD , \$\endgroup\$
    – ElectronS
    Nov 21, 2018 at 17:42
  • \$\begingroup\$ I increased the PI loop time to 20 ms for that reason. \$\endgroup\$
    – user115094
    Nov 21, 2018 at 17:51

Strictly, you don't need torque control. You could simply wire a fixed value resistor to the generator.

The downside is the current in the resistor is speed dependent, which gives you a quadratic speed-power relation. This doesn't feel like natural running, more like running in molasses.

  • \$\begingroup\$ What about question 2? \$\endgroup\$
    – user115094
    Nov 11, 2018 at 23:43
  • 1
    \$\begingroup\$ No, you don't need to know the motor parameters, you could also make a guess, then trial and error. You don't know the mechanical parameters of your treadmill assembly either. \$\endgroup\$
    – Janka
    Nov 12, 2018 at 0:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.