an engineering journalShivam Hegadi
shelvedRobotics3D PrintingCAD

Desktop Robot Arm

A small 4 degree of freedom robot arm using servos, currently shelved after the wrist joint kept stripping under load.

started Nov 1, 2025updated Dec 20, 2025
Desktop Robot Arm

Links

Components

  • 4x MG996R servos
  • Arduino Nano
  • PCA9685 servo driver board
  • 5V 5A power supply

Files

What I was trying to make

A small desktop robot arm that could pick up and move a lightweight object, mostly as a way to actually learn inverse kinematics instead of just reading about it. I picked 4 degrees of freedom, base rotation, shoulder, elbow, and wrist, as a target that felt achievable without needing a gripper with its own actuator yet.

Design process

Modeled each arm segment in Fusion 360 as a separate part with a servo horn mount at one end and a servo body mount at the other, so segments bolt directly to the next servo in the chain. This kept the design modular, I could reprint a single segment without touching the others.

Electronics and components

Four MG996R servos driven through a PCA9685 PWM driver board over I2C from an Arduino Nano. MG996R servos are cheap and have decent torque on paper, which is part of why this didn't work out, more on that below.

Build process

Base and shoulder joints worked fine through testing. The elbow was okay under light load. The wrist joint is where things fell apart, literally: the printed servo horn mount at the wrist kept stripping its screw holes under the combined torque of everything past it in the chain.

Problems and failed attempts

I tried three different wrist mount designs. First was a direct screw-in mount into printed PLA, which stripped within about a dozen cycles. Second added a heat-set insert instead of screwing directly into plastic, which held longer but the surrounding plastic around the insert started cracking under repeated torque instead.

Third attempt redesigned the mount with more wall thickness around the insert and switched that one part to PETG for better layer adhesion under stress, printed the rest in PLA. That held up better in bench testing but by that point I'd moved on to the line follower PCB project and haven't come back to finish testing it under real working conditions.

The honest underlying issue is probably that MG996R servos have more backlash and torque variance than this design accounted for, and a cleaner fix might be redesigning around different servos entirely rather than continuing to patch the wrist mount.

What changed between versions

  • v1 wrist: screwed directly into PLA, stripped after about a dozen cycles
  • v2 wrist: added heat-set insert, insert held but surrounding plastic cracked under torque
  • v3 wrist (last tested): thicker walls around insert, switched that part to PETG, held up in bench testing but not fully validated under real load

Final result

Shelved for now. Base, shoulder, and elbow all work, the wrist is the unresolved piece. If I come back to this, I'd probably start by reconsidering the servo choice before touching the mount design again, since I think I've been treating a servo problem as a plastic problem.

servosinverse kinematicsPLArobot arm