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.


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\$ – Blue_Electronx Nov 21 '18 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 '18 at 17:41
  • \$\begingroup\$ search for an article called : PID without PhD , \$\endgroup\$ – ElectronS Nov 21 '18 at 17:42
  • \$\begingroup\$ I increased the PI loop time to 20 ms for that reason. \$\endgroup\$ – Blue_Electronx Nov 21 '18 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\$ – Blue_Electronx Nov 11 '18 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 '18 at 0:28

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.