Servo Motor Inertia Matching: Why Your Axis Oscillates at Low Speed

A servo axis that buzzed and oscillated at low speed. The motor was 400W, the load was a 20 kg slide on a ball screw. The drive tuned fine at high speed. At 10 mm/s it hummed. The customer said the motor was too small. It wasn’t — the inertia mismatch was 40:1. The drive couldn’t compensate. This is the inertia matching calculation I do for every servo axis.

What reflected inertia means

When a load moves linearly on a ball screw, its mass gets “reflected” back to the motor shaft as an equivalent inertia. The formula is:

J_load = m × (p / 2π)²

Where m is the mass in kg and p is the ball screw lead in meters per revolution. The 2π converts linear motion to rotational motion. The motor’s inertia J_motor is specified in kg·m² in the catalog.

The numbers from that job

m = 20 kg, screw lead p = 0.01 m (10 mm/rev). J_load = 20 × (0.01 / 2π)² = 20 × (0.00159)² = 20 × 2.53e-6 = 5.06e-5 kg·m² = 50.6 g·cm². The motor’s rotor inertia was J_motor = 1.2 g·cm². The ratio is 50.6 / 1.2 = 42:1.

The rule of thumb: inertia ratio should be under 10:1 for a well-tuned axis. Over 30:1, the drive can’t compensate for the load inertia. It oscillates. The customer’s ratio was 42:1. No wonder it hummed.

The ratio that matters

Inertia ratio (J_load / J_motor) Performance
< 5:1 Excellent — tight tuning, fast response
5-10:1 Good — standard applications
10-20:1 Acceptable — needs careful tuning, slower response
20-30:1 Marginal — will oscillate at low speeds
> 30:1 Poor — can’t tune, buzzes, following error

The three fixes

1. Bigger motor (more rotor inertia). A 750W motor has J_motor ≈ 3.0 g·cm². Ratio drops to 50.6 / 3.0 = 17:1. Acceptable. But the bigger motor costs more and uses more power. This is the brute-force fix.

2. Faster screw lead. If I change the screw lead from 10 mm to 20 mm, J_load = 20 × (0.02/2π)² = 20 × (0.00318)² = 202 g·cm². Wait — that’s bigger, not smaller. The lead squared term means a faster lead increases reflected inertia. I need a slower lead to reduce inertia. If I go to 5 mm lead: J_load = 20 × (0.005/2π)² = 12.6 g·cm². Ratio = 12.6 / 1.2 = 10.5:1. Better. But the axis now moves at half speed for the same RPM. The cycle time suffers.

3. Direct drive or belt reduction. I can add a 2:1 belt reduction between the motor and screw. The reflected inertia drops by the square of the reduction: J_reflected = J_load / (ratio²) = 50.6 / 4 = 12.6 g·cm². Ratio = 12.6 / 1.2 = 10.5:1. This is what I did. The 2:1 belt lets the small motor drive the load without the inertia mismatch. The cost is a $20 belt and pulley set. Cheaper than upsizing the motor.

What I actually did

I added a 2:1 timing belt. The motor spins twice as fast, the screw spins once. The reflected inertia dropped by 4x. The ratio went from 42:1 to 10.5:1. The drive tuned normally. The oscillation at low speed disappeared. The axis now runs smoothly at 1 mm/s. The customer thought the motor was too small — it was the right size, but mechanically mismatched.

The acceleration check

Inertia matching isn’t just about tuning. I also check that the motor can accelerate the load. The required torque for acceleration is:

T_accel = (J_load + J_motor) × α

Where α is the angular acceleration in rad/s². For a move that reaches 1000 RPM in 0.2 s: α = (1000 × 2π / 60) / 0.2 = 524 rad/s². Total J = (50.6 + 1.2)e-7 kg·m² = 5.18e-6. T = 5.18e-6 × 524 = 0.0027 N·m. That’s trivial. The motor’s rated torque is 1.27 N·m. It’s fine. The problem was never torque — it was inertia mismatch causing tuning instability.

The number I check: reflected inertia J_load = m × (p/2π)², divided by the motor’s rotor inertia. If it’s over 20:1, I either upsized the motor or add a belt reduction. The axis that buzzed wasn’t underpowered — it was mismatched. The drive can only compensate so much; past 30:1 it gives up.