I'm using MG996R servos to control a 6-axis desktop robot arm. When no disturbance (like a gentle push to the robot), the servos are fine and can hold their places. But under a gentle disturbance, servos at the top will oscillate a little and come back to the set position, while servos at the bottom will keep oscillating.
The question here is what is causing the oscillation?
I understand inside a servo there is a PID for angular position control, and the oscillation, really is the response to the disturbance (and one can do s-plane analysis, etc.). The bottom servos have heavier loads, so my suspicion is there is not enough stall torque.
I didn't hear buzz, and without load, the servos would work fine (it could go to the set position, being able to hold its place when I use my finger to rotate the plate right on top of the motor shaft). So I don't think it's the PWM that causes the issue.
The PWM is set to 50%, so that should be near a neutral position.
PS: One follow-up observation is if I change this motor to a different one, the oscillation stops, and the new motor performs quite robustly. Therefore, my current suspicion is manufacturing defects, which make the internal PID loop work less reliably with the real hardware