# PID tuning - can't get stiffness without going unstable

I'm trying to tune a low-friction actuator. This actuator is controlled via a 24peak amp drive.

I'm running into the problem where the system goes unstable prior to reaching good stiffness. I start off with the PID controller having P = 0, I = 0, D = 0 gains. Because this actuator is low friction, I provide a D gain of 1 to start such that energy is removed the system. I then start ramping up the proportional gain in hopes obtaining stiff control.

However, I keep running into the issue where the system seems to go unstable prior to reaching desired stiffness regardless of how much I increase D.

Essentially I need my P gain to grow such that the actuator resists external forces, yet this just causes the system to go unstable.

Does anyone have any tips as to what I'm doing wrong? I'm fairly confident my feedback signal is good (not too noisy) and I know that the drive is beefy enough to generate enough force to resist any attempts of pushing on the actuator.

Well you have two methods to go with really. As I don't know you're system at all, it's mostly difficult to tell you what to start with.

1. Model it and Auto tune, then fine adjust by hand (how I would generally do things)

Your system is a pretty basic mechanical system with damper...so you can use an equation such as: $$x''(t)+2 D \omega _0 x'(t)+\omega _0^2 x(t)=0$$ to model and run that through PIDTune in mathematica or the equivalent in Matlab.

This seems to be the method most people use, (and myself also successfully for simple things, where modeling wasn't worth the effort).

The Ziegler–Nichols tuning method is a heuristic method of tuning a PID controller. It was developed by John G. Ziegler and Nathaniel B. Nichols. It is performed by setting the I (integral) and D (derivative) gains to zero. The "P" (proportional) gain, $${\displaystyle K_{p}} K_{p}$$is then increased (from zero) until it reaches the ultimate gain $${\displaystyle K_{u}} K_{u}$$, at which the output of the control loop has stable and consistent oscillations. $${\displaystyle K_{u}} K_{u}$$ and the oscillation period $${\displaystyle T_{u}} T_{u}$$ are used to set the P, I, and D gains depending on the type of controller used.

Follow the chart on wiki, then fine tune afterwards to get the desired result.

You're basically doing the same kind of method, however you're starting with the wrong term first :).

• +1 for Zeigler Nichols and that OP is starting with the wrong term.
– Chuck
Commented Aug 3, 2019 at 15:36