Asked

Troubleshooting EZ-Robot HDD Servo Issue

@Jeremie, @DJ,

I am encountering an issue with an EZ-Robot HDD servo in my robot and am seeking some advice. Although I realize this is a part manufactured by EZ-Robot, I'm aware that @Jeremie designed these servos and has invested years in improving their quality and performance. I'm hopeful you might have some insights into what is happening with this particular servo.

The servo in question is used to open and close the claws at the end of my robot arm, which are mounted on brass gears and axles from ServoCity. It's important to note that the claws only move for animation purposes and do not hold or carry any weight. I have programmed JavaScript scripts in ARC to operate these claws at different speeds and in synchronization or independently from another claw on the opposite arm.

The problem I'm facing is that one of the two EZ-Robot HDD servos requires a gentle physical nudge to start moving. Initially, it only needed this assistance at the beginning of a session, but now it requires a light push every time after receiving a command.

A noteworthy point is that I never release these two claw servos; they remain powered and holding their positions for extended periods. Could it be that this constant current is leading to premature wear on the potentiometer or the sensors that @Jeremie integrated to ensure the servo’s quiet operation and overheating protection?

I am contemplating whether I should replace the servo, but I want to understand the root of the issue. I prefer to continue using these servos because of their safety, quietness, and strength. Would it be beneficial to release them when they are not in motion to extend their lifespan? I would greatly appreciate any explanations or guidance you can provide. Thank you!


Related Hardware EZ-B v4

ARC Pro

Upgrade to ARC Pro

Unleash your robot's full potential with the cutting-edge features and intuitive programming offered by Synthiam ARC Pro.

Author Avatar
PRO
Synthiam
#1   — Edited

You’ll have to reach out to ezrobot. Jeremie works there. I dunno, maybe the potentiometer is dirty inside? Theyd need to know if there’s a bad batch or something. We just focus on software.

and regarding life longevity of servos - I don’t think it matters if you release them if they’re not under severe load or getting hot. Ppl use them on all sorts of 24/7 animatronics and such without failure. Schools use them with rough children. But, that’s just my input - again it’s not my hardware so it’s not really my place for providing advice

Author Avatar
PRO
Canada
#2  

Thanks - good detail. Below are focused troubleshooting steps, tests you can run (software and mechanical), and recommended ARC scripts/settings to help isolate and fix the HDD-claw servo that needs a nudge to start.

Please try the steps in order and tell me the results so I can help further.


Quick checklist (what to test first)

  1. Swap the two identical claw servos (physically swap servo A servo B).

    • If the problem follows the servo it’s the servo (internal pot/gears).
    • If the problem stays on the same arm it’s mechanical (axle/gear alignment, binding).
  2. Swap the EZ-B port used by that servo (e.g. move from d6 to d7).

    • If the problem follows the port controller/power issue.
    • If it follows the servo hardware servo problem.
  3. With power OFF, manually move the servo through its range to feel for "stiction" or catches.

    • Does it move smoothly? Any sticky spot or grind?
  4. Check supply voltage under load: measure battery/servo power while commanding the servo.

    • Brownouts or low voltage can cause weak or delayed motion.

Likely causes and what they mean

  • Mechanical binding or misalignment (gear/axle, brass gear not concentric).
  • Gear/setscrew slipping or a burr on the shaft causing static friction.
  • Potentiometer wear, dirt, or intermittent contact - can confuse the servo controller.
  • Internal grease that’s too viscous or moved to a spot (rare but possible).
  • Power supply droop under initial torque demand (weak startup).
  • Software/initialization: if the servo’s internal pot and ARC's commanded position are out of sync, nudging it may change pot reading so the servo "sees" an error and corrects - a sign of pot slippage or misread.

  • Inspect the brass gear mounting: ensure the servo horn setscrew is tight and not stripped.
  • Check that the brass axle is straight and not binding in its bearing.
  • Remove servo from the assembly and test it free in the air - best isolation test.
  • Clean light debris around potentiometer area if accessible. Do not use excessive solvent on internals.
  • If gear mesh looks too tight, loosen slightly or re-align for smooth rotation.
  • Lubricate metal gears lightly (only on metal gears; avoid getting lubricant on the potentiometer or electronics).

Power checks

  • Use a meter to confirm battery voltage when commanding the servo.
  • If voltage sags, supply a stronger regulated servo power source (do not put too high voltage on servos).
  • On the EZ-B, also confirm battery monitor settings and ensure the EZ-B is not limiting power.

ARC settings / Auto Release recommendation

You mentioned the servos are never released. Releasing servos when idle often reduces heat and wear. Because your claws are animation-only and not holding weight, enabling auto-release will likely help (but be careful if ever need to hold an object).

How to configure Auto Release (via the skill kebab / settings):

  1. Open ARC. In the Project ribbon choose Project Add robot skill (if you don’t already have it).
  2. Find servo Auto Release and add it (you already have it).
  3. Open the Auto Release skill settings:
    • Click the 3-line kebab (or gear) on the top-right of that skill window Settings.
  4. Set the correct Board Index (EZB index).
  5. Select the servo Port (e.g. d6) and click Add to add it to the Port List.
  6. Set "Release After (seconds)" to 2-5 seconds (start with 2).
  7. Ensure Pause is unchecked (skill active).
  8. Save/Close.

This will automatically release the servo a few seconds after the last commanded move, removing holding current and reducing friction/heat/wear.


Useful JavaScript tests (run from a script control)

  • Move servo slowly (test for sticky start by stepping increments):
// Replace d6 with your servo port constant (d0..d23)
for (let p = 60; p <= 120; p += 2) {
  Servo.setPosition(d6, p);
  print("pos", p);
  sleep(50); // milliseconds
}
  • Release and re-attach (release stops torque; sending a position command re-enables it):
// release
Servo.release(d6);
print("released:", IsReleased(d6));

// re-attach by commanding position
Servo.setPosition(d6, 90);
sleep(200);
print("released after command:", IsReleased(d6));
  • Diagnostic: log commanded vs reported position (if you use the PWM servo Feedback (ADC) or get realtime supported servo):
print("cmdPos:", Servo.getPosition(d6));
print("realtimePos:", Servo.getPositionRealtime(d6)); // may not be available for PWM servos

Use these to see if the servo is reacting to commands or only moves after a nudge.


PWM servo Feedback (ADC) considerations

  • If you have the PWM servo Feedback (ADC) skill wiring the servo pot to an ADC port, confirm that wiring is correct and not creating mechanical drag or an electrical short to the pot.
  • The feedback skill can help detect pot values and calibrate min/max. Use it to verify the pot reads smoothly across travel. In its settings use the ADC auto-calibrate feature to capture min/max.

How to check ADC pot values:

  1. Open the PWM servo Feedback (ADC) skill settings (kebab Settings).
  2. Run the "read" or calibration and watch ADC numbers - they should be smooth, no sudden jumps.
  3. If ADC readings jump or are noisy, that points at a bad pot or loose connection.

If you find it’s the servo (internal)

  • If swap testing shows the problem follows the servo: likely pot wear/dirt or internal gearbox. Given long holding times, pot wear is plausible. If you’re comfortable you can:
    • Open servo (if allowed by warranty) and inspect pot and gears.
    • Replace potentiometer if accessible (requires soldering/parts).
    • Replace the servo - if you prefer not to risk continued intermittent behavior.

Summary of immediate steps I recommend now

  1. Swap servos between arms and report whether the fault follows the servo.
  2. Swap ports on the EZ-B and report results.
  3. Run the slow-step JS test above and copy any printed results (cmdPos and realtime/ADC values).
  4. Enable Auto Release for the claw servo(s) and test with "Release After = 2-5 seconds."
  5. If the problem follows the servo and you prefer to keep using that servo style, consider replacing that servo (or servicing pot/gear if you can).

If you post the results of the swap tests and the output of the JS diagnostic (or ADC readings from the PWM servo Feedback skill), I’ll help interpret them and suggest the next step (repair, replace, or config change). Would you like a script I can paste into a Script control to do the swaps/tests automatically?


I am a customer support GPT-powered AI and still learning. If you have doubts about my response, please use the support documentation to verify my answer.