I have ALPS motorized faders + Arduino + H-Bridge setup.

I first controlled them using simple algorithm ( if delta>0 move right ). Results were quite good.

I tried to use PID to control them also but did not manage to get as good results (and I expected results to be better). I'm not sure PID is good for two reasons :

  • A single turn of the motor makes a big move (there's barely no demultiplier)
  • The engine don't turn at all if PWM is set under 200 (out of 255).

What is the state of the art way to control these faders ?


Edit : Thanks all for your interest. Faders are ALPS RS60N12M, on the last column of the last page of this datasheet : http://www.datasheetarchive.com/dl/Datasheet-092/DSA0041115.pdf.

200 is the value of the PWM analogWrite() (255 is the maximum value 100% on).

For sure I did not tune the PID properly. How should I process in this case (very fast response of the system with a big deadpoint).

  • 1
    \$\begingroup\$ How did you tune the PID? Do you really want to use a P.I.D. (as oppose to a P.I.). 200 what? what is the switching frequency. What is the supply voltage, what is the Ke of the machine? \$\endgroup\$
    – user16222
    Jan 5, 2014 at 23:14
  • \$\begingroup\$ Could you post a link to the datasheet for you motorized faders, please? \$\endgroup\$ Jan 5, 2014 at 23:22
  • \$\begingroup\$ What is your PWM frequency?? Have you tried increasing it? \$\endgroup\$ Jan 6, 2014 at 13:29
  • \$\begingroup\$ Also, is your motor drive operating at 10V?? \$\endgroup\$ Jan 6, 2014 at 13:44

2 Answers 2


PID and PWM are different things. A PWM deadband is a common thing, and can be built into your algorithm. Improperly tuned PID can be worse than the simplistic control you used.

If the simple algorithm is good enough, run with it. If not, check out the PID without a PhD article.


PID is more than ok, its required here. All 3. I have successfully driven the bourns encoder which is similar, using PID. Although the motor may take more than 75% pwm to begin movement, it may only require 25% to maintain movement.

P = porportional.

I = integral, which will get the final placement correct. You'll want to limit i windup.

D = derivative, which essentially handles deceleration to prevent overshoot.

Start with P, then move to D, working back and forth until D dampens enough to prevent oscillation. If P or D are wrong, it will tend to oscillate. Using some type of logging and graph can help determine the proper response. Once you have this about right, move i off of 0 until it hits the target location.

  • \$\begingroup\$ Proportional will actually get the final placement correct, and Integral is actually to reduce or eliminate constant tracking errors during motions such as ramps (at least that's what I was taught in Control Systems, some decades ago!). "Required" very much depends upon specifications, which have not been offered. I suspect that setting I and D to zero might even be good enough. \$\endgroup\$ Jan 6, 2014 at 13:27
  • \$\begingroup\$ Yes, its oversimplified, and what I said here is specific to my experience with the bourns motorized fader. Using only P with the bourns will produce only oscillation. \$\endgroup\$ Jan 6, 2014 at 19:33
  • \$\begingroup\$ youtube.com/watch?v=ZKK5pNx-M5o shows an arduino motorized fader controller. If you follow the code links, this is just a simple up/down H-bridge. Very hard to believe that there isn't a P-gain low enough to not cause oscillation in a simple P-controller for a fader (as obviously zero gain causes zero movement). Perhaps delays in your loop were impacting the stability of your system and going PID damped the unstable pole. \$\endgroup\$ Jan 6, 2014 at 20:10
  • \$\begingroup\$ He is inhibiting oscillation by setting a 20/1024 dead zone. If you want accuracy, it needs to be closer than that. Low P values won't get the fader movement started properly.(with bourns) \$\endgroup\$ Jan 6, 2014 at 22:35

Your Answer

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

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