Ball Screw Critical Speed: When Your Axis Vibrates at High RPM

A ball screw axis that vibrated violently above 2000 RPM. The customer thought the servo tuning was off. It wasn’t. The screw was approaching its critical speed — the natural frequency of the screw as a rotating beam. At critical speed, even tiny imbalances resonate and the screw shakes. This is the critical speed calculation that prevents that.

What critical speed is

A ball screw is a long, thin shaft rotating between bearings. Like a guitar string, it has a natural frequency. When the RPM matches that frequency, the screw resonates. The amplitude grows. The screw whips. At critical speed, it can self-destruct — the screw flexes enough to contact the nut, or the bearings fail.

The critical speed formula for a screw supported at both ends is:

N_c = (4.76 × 10⁷ × d) / L²

Where N_c is the critical speed in RPM, d is the screw root diameter in mm, and L is the unsupported span (between bearing centers) in mm. The constant 4.76e7 assumes steel, both ends fixed. If one end is supported (not fixed), the constant drops to 2.4e7.

The example

The customer’s screw: Ø20 mm nominal, root diameter about 17 mm. Span L = 1,200 mm. Both ends fixed (angular contact bearings at both ends). N_c = (4.76e7 × 17) / 1200² = 809,200,000 / 1,440,000 = 562 RPM. That’s the critical speed. The customer was running the screw at 2000 RPM — nearly 4x critical speed. Of course it vibrated. The screw was operating far above its natural frequency. It was a design error, not a tuning issue.

The correction factors

Support condition Constant Effective span
Both ends fixed (angular contact) 4.76e7 Full span
One fixed, one supported 3.4e7 Full span
Both ends supported (simple bearings) 2.4e7 Full span
One fixed, one free (end supported) 0.94e7 Half span

Most servo ball screws use angular contact bearings at both ends (fixed-fixed). That’s the stiffest support and the highest critical speed. A simple deep-groove bearing at the drive end is “supported,” not “fixed.” The critical speed drops by 30%. I specify angular contact bearings at both ends for any screw over 500 mm span.

What I changed

1. Added a middle support. The screw spanned 1,200 mm. I added a support bearing in the middle. The span dropped to 600 mm per section. N_c = (4.76e7 × 17) / 600² = 809,200,000 / 360,000 = 2,248 RPM. The customer runs at 2000 RPM — now it’s under critical speed with margin. The middle support is a simple pillow block bearing that allows axial float (the screw can expand with heat). It doesn’t fix the axially — it just prevents lateral whipping.

2. Upsized the screw. If a middle support isn’t possible, I go to a larger diameter. Ø25 screw, root 21 mm: N_c = (4.76e7 × 21) / 1200² = 695 RPM. Still too low. Ø32 screw, root 27 mm: N_c = 894 RPM. Still under 2000. The only way to get N_c above 2000 without a middle support is to shorten the span or use a much larger screw (Ø40, root 35: N_c = 1,160 RPM). Still not enough. The middle support was the right fix.

3. Reduced the maximum RPM. If the application doesn’t need 2000 RPM (the axis moves at 1000 mm/s, screw lead 10 mm, that’s 100 RPM), the customer was running at 2000 RPM for no reason. The actual need was 100 RPM. I told them to set the servo’s max speed to 1000 RPM (10x margin). The vibration disappeared. They didn’t need the speed.

The DN value

Critical speed isn’t the only limit. Ball screws also have a DN limit (diameter × RPM). For standard ball screws, DN should be under 100,000. For the Ø20 screw at 2000 RPM: DN = 20 × 2000 = 40,000. That’s fine. For the Ø32 at 2000: 64,000. Also fine. The DN limit is about the ball recirculation speed — too fast and the balls wear prematurely. But for long screws, critical speed is the bottleneck, not DN.

The number I check: N_c = 4.76e7 × d / L² for both-ends-fixed. If the operating RPM exceeds 80% of N_c, the screw will resonate. Add a middle support, shorten the span, or upsized the diameter. The axis that vibrated above 2000 RPM wasn’t a tuning problem — the screw was being spun above its natural frequency. No servo tuning fixes that.