Servos overshooting too far

Hi all,
So I'm working on this project where I need to turn a HBL 380 servo from 0 to 90 degs., and it keeps over shooting occasionally.

For example, it'll work perfectly a few times, then it will jump past 90 deg, or when it goes back to 0, it'll blow past the position and jitter around.

My code works perfectly with the cheaper micro servo 9g, but connecting it to a high torque servo causes the issues.

The operating voltage is up to 7.4 volts, and all the grounds are connected.

I'm thinking the issue might be the Working frequency, which is 1520 micro seconds / 333Hz.

I've tried to change the servo library's REFRESH_INTERVAL to 3003, but that doesn't seem to help.

Once again, the code works for other servos flawlessly.

Thanks in advance if anyone can help point me in at least the right direction.

"The operating voltage is up to 7.4 volts, and all the grounds are connected."

Is that the proper operating voltage for the servo, and is the power supply adequate to power a larger servo?

The specs state the operating voltage is 3.5 ~ 8.4 V,
and I'm using a 7.4 V Battery (2000mah, LiPo, 100c).

If it works as expected sometimes, and not other times, check the ground wire between the servo ground and the arduino ground. A lose connection there can cause erratic servo operation.

Connections floating or breadboard by any chance..??

The 8.4 V upper limit only means that you won't burn your servo. Try operate with 5 V. It might get slower and weaker, but it won't overshoot as easily. The upper limit is for when you need maximum torque and don't mind overshooting. Like in RC SUV cars with wheels having to turn in rough terrain.

7.4V is a normal working voltage for that servo but bear in mind that the stall current at that voltage is 7.5A so you will need to have good quality low resistance wiring and decent plugs breadboards or skinny Dupont wires or things like crocodile clips in the circuit. You might get away with things like with an SG90 but not with that highpower servo.

The stated working frequency SHOULD just be a maximum frequency. The normal 50Hz of the Servo library should still be o.k.


Is that servo moving something heavy? Inertia may also help it overshooting. If so you have to slow it down before it reaches the end point. Look at the sweep example code how to do a constant speed; same principle but with longer intervals as you reach the end point.