Servo gripper buzzes and gets hot when it closes: stop at the object

A servo that is told to go further than the object lets it will stall and heat up. Limit the closed position.

What the message means

The servo keeps pushing toward its target with full effort. Against a stop or an object it draws stall current and can strip its gears.

Fix it in this order

  1. Find the closed angle on the object and set the command just past contact, not far past.
  2. Add a mechanical stop or a soft pad on the jaw.
  3. Move in small steps and stop when the current rises, if you can measure it.
  4. Detach the servo, or hold a gentle target, when it is gripping for a long time.
  5. Use a servo with metal gears if the load is high.
  6. Check the supply can give the stall current.

Why it happens

When a gripper closes on an object, the servo keeps trying to reach its target angle and stays in stall. A stalled servo draws high current, heats up and wears its gears.

Limit the closed angle in code so the servo stops before it presses hard, stop driving it after the grip is made, and use a sensor or a soft limit if you need a firm but safe hold.

If you see this, do this

You seeDo this
Buzzing at the objectTarget too far. Limit the angle.
Gets hot while holdingReduce hold effort or detach.

servo buzzing and heating, servo pulse range.

Last reviewed: November 2026. These are the usual causes and the order that finds them fastest. Test on your own board; clones and cables differ.

Why this happens

A hobby servo holds an angle with a small control loop: the pulse says where to go, the potentiometer inside says where it is, and the motor is driven in proportion to the difference. When a gripper closes on an object, the target is past the position it can reach, so the error stays large and the motor keeps pushing as hard as the loop allows. The result is heat, a buzzing sound and a load on the plastic or metal gears.

The fix is to command a position no further than the object needs, or to sense the contact and stop there. A soft pad or a spring in the finger also lets a command beyond the object produce only a gentle force instead of a stall.

How to confirm the cause

  • Touch the servo after a minute of holding an object. Warm is fine; too hot to hold means a stalled motor.
  • Measure the supply current while the gripper holds an object and compare with the open position. A big rise points to the stall.
  • Listen for buzzing. A servo holding without a load is quiet.
  • Watch the supply voltage at the servo; a sag when closing shows the supply is also overloaded.
  • Find the angle where the fingers first touch the object and compare it with the angle you command.

Worked example

Close step by step to a limit measured on your own gripper, then back off a little. The angles are examples.

#include <Servo.h>
Servo g;
const int OPEN = 40;
const int CLOSED = 110;      // just past contact, found by testing

void setup() {
  g.attach(9);
  g.write(OPEN);
  delay(500);
  for (int a = OPEN; a <= CLOSED; a++) { g.write(a); delay(15); }
  g.write(CLOSED - 3);       // ease off the stall point
}

void loop() {}

Common mistakes

  • Commanding 0 or 180 degrees when the mechanism stops short of that.
  • Powering the servo from the board’s 5 V pin, whose current is limited.
  • Holding full closing force for long periods.
  • Assuming an angle value is an exact position under load.
  • Using rigid fingers with no pad or spring.

If this did not fix it

  • The supply cannot give the stall current, causing resets or buzzing.
  • A signal outside the servo’s pulse range; the Servo library defaults to about 544 to 2400 µs.
  • Worn or stripped gears that slip and then grab.
  • Electrical noise causing jitter; add a capacitor across the servo supply.