W

I have a closed loop electronics with encoder to drive a stepper motor in closed loop. That means that the rotor field is always set in dependence of the rotor and an optimal load angle is reached all time.

I implemented speed control with an PID controller. To get the right PID parameters I will increment the P-part until the system begins to oscillate. With the P-part and the oscillating-frequency you can determine the I and the D-part.

But what happened? I always set I and D to zero - only P is incremented. At first, the motor runs fine. Then by the further P-increasing there is a point where the motor turns with the set speed, but begins to grumble. The grumble has a frequency of about 200 Hz.

If I mount a load to the motor and get the new PID parameters, I have the same behaviour. For example, the speed is set to 250 rev/min and the P-part is increased until the grumbling, then the motor rotates with about 250 rev/min with the same superposed frequency of 200 Hz, which generates the grumbling.

I expected that with the load and the too strong P-part, the oscillation is 250 rev/min +- 50 rev/min. But I never reach this high amplitude oscillation. Independent of the load - if the P-part becomes too high, always the 200 Hz grumbling dominates.

Who has experience with this effect? This behaviour is strange and I can't adjust the PID to the controlled system - because the grumbling of the motor dominates and determines the PID values.

Is there a way to eliminate the grumbling?