Back to Sensors & Actuators Series

Linear Actuators: Lead Screw, Ball Screw & Voice Coil

April 10, 2026 Wasil Zafar 18 min read

Converting rotation to straight-line motion — or skipping rotation entirely. Master linear actuator types, mechanical design, position feedback control, and practical embedded code.

Contents

  1. Overview & Types
  2. Working Principle
  3. Electrical & Mechanical Specs
  4. Driver Circuits
  5. Control Methods
  6. Code Example — Arduino & ESP32
  7. Real-World Applications
  8. Advantages vs. Alternatives
  9. Limitations & Considerations

Overview & Types

Linear actuators convert energy into straight-line motion, providing push or pull force along a single axis. They are essential wherever rotary-to-linear conversion or direct linear force is needed – from adjustable desks to CNC machines to camera autofocus systems.

Key Insight: While motors naturally produce rotation, most real-world tasks require linear motion — opening valves, pressing buttons, moving payloads, adjusting positions. Linear actuators bridge this gap either through mechanical conversion or direct electromagnetic action.

Major Types

  • Lead Screw Actuator: A motor (DC or stepper) drives a threaded rod through a nut. Simple, self-locking at rest, widely used in 3D printers (Z-axis), adjustable furniture, and automation. Typical efficiency: 25–50%.
  • Ball Screw Actuator: Uses recirculating steel balls between screw and nut for rolling contact instead of sliding. Higher efficiency (85–95%), lower friction, used in CNC machines and precision positioning. Not self-locking.
  • Belt/Rack-and-Pinion: Motor drives a belt or gear that moves a carriage linearly. High speed, long travel, used in 3D printers (X/Y axes), pick-and-place, and sliding doors.
  • Voice Coil Actuator (VCA): A coil in a magnetic field produces force proportional to current. Extremely fast response (sub-millisecond), short stroke (0.1–25 mm), used in hard disk heads, camera autofocus, and haptic devices.
  • Electric Linear Actuator (enclosed): Self-contained units with motor, gearbox, lead screw, and limit switches in a sealed housing. “Plug and play” for automation, furniture, medical equipment.
  • Linear Stepper Motor: Direct electromagnetic linear motion without rotary-to-linear conversion. High precision, used in semiconductor manufacturing.

Working Principle

Rotary-to-Linear Conversion

Most linear actuators use a rotary motor coupled to a mechanical converter:

  • Lead Screw: Thread pitch determines travel per revolution. Example: 8 mm lead × 200 steps/rev = 0.04 mm per full step. Lead angle determines self-locking capability.
  • Ball Screw: Balls in helical grooves convert rotation to translation with minimal friction. Preloaded designs eliminate backlash.
  • Rack and Pinion: Pinion gear on motor shaft meshes with linear rack. Travel per revolution = π × pitch diameter.

Direct Linear Actuation

Voice coil actuators work on the Lorentz force principle directly:

  • A coil moves within a radial magnetic field.
  • Force is proportional to current: F = BIL (B=field, I=current, L=coil length).
  • No mechanical conversion losses → near-instantaneous response.
  • Position proportional to current (with spring return) or requires feedback for positioning.

Lead Screw Design Calculations

Linear Speed: v = (RPM × Lead) / 60 [mm/s]

Linear Force: F = (2π × Torque × Efficiency) / Lead [N]

Example: NEMA 17 (0.4 N·m) with 8 mm lead, 40% lead screw efficiency:

F = (2π × 0.4 × 0.4) / 0.008 = 125.7 N ≈ 12.8 kg force

Electrical & Mechanical Specifications

ParameterLead ScrewBall ScrewVoice CoilElectric Linear
Stroke50–1000 mm100–3000 mm0.1–25 mm50–600 mm
Force10–500 N50–50,000 N0.1–100 N50–10,000 N
Speed1–50 mm/s10–500 mm/s1–100 m/s5–50 mm/s
Precision0.01–0.1 mm0.001–0.01 mm0.001 mm0.5–2 mm
Efficiency25–50%85–95%30–50%20–40%
Self-LockingYes (low lead angle)NoNoYes (worm gear)
CostLowMedium–HighMediumLow–Medium
Voltage5–48 V (motor)24–400 V5–48 V12–36 V

Driver Circuits

DC Motor-Based Linear Actuators

Self-contained electric linear actuators use a DC motor and accept H-bridge control (same as DC motors):

  • L298N / BTS7960: For actuators up to 10 A. Direction via H-bridge, speed via PWM.
  • IBT-2 (BTS7960 module): 43 A capacity for heavy-duty actuators.
  • Limit Switches: Most enclosed linear actuators have built-in limit switches that cut power at full extension/retraction.

Stepper-Based Linear Systems

Lead screw / ball screw driven by stepper motors use standard stepper drivers (A4988, TMC2209). Position accuracy comes from step counting.

Voice Coil Drivers

Voice coils need current-mode amplifiers (not voltage-mode). A linear amplifier or high-bandwidth current-controlled PWM driver is used. Position feedback typically from an LVDT, encoder, or Hall sensor.

Feedback Options: Linear actuators can use potentiometer (built-in on some models), encoder, LVDT, Hall sensor, or optical linear scale for position feedback. Look for “actuator with feedback” models that include a built-in potentiometer on the third wire.

Control Methods

Bang-Bang (On/Off)

Simplest control: extend fully or retract fully using direction pins. Common for door locks, window openers, and simple automation.

Position Control with Feedback

Read the built-in potentiometer or external encoder, and use PID control to hold a precise position. The potentiometer provides absolute position without homing.

Force-Limiting Control

Monitor motor current to detect when the actuator hits an obstacle or reaches the desired clamping force. Cut power or reduce PWM to prevent damage. Essential for safety-critical applications (pinch protection).

Code Example — Arduino & ESP32

Arduino: Position Control with Feedback Pot

// Linear actuator position control with feedback potentiometer
// Wiring: RPWM→D5, LPWM→D6, POT→A0, VCC→12V via BTS7960

const int RPWM = 5;   // Extend
const int LPWM = 6;   // Retract
const int POT_PIN = A0;

// Calibrate these values for your actuator
const int POS_MIN = 50;    // ADC at full retract
const int POS_MAX = 950;   // ADC at full extend
const int DEADBAND = 10;   // ± tolerance

void setup() {
    pinMode(RPWM, OUTPUT);
    pinMode(LPWM, OUTPUT);
    Serial.begin(9600);
    Serial.println("Linear Actuator Position Control");
    Serial.println("Send position 0-100 via Serial");
}

void stopActuator() {
    analogWrite(RPWM, 0);
    analogWrite(LPWM, 0);
}

void moveToPosition(int targetPercent) {
    int target = map(targetPercent, 0, 100, POS_MIN, POS_MAX);
    Serial.print("Moving to ");
    Serial.print(targetPercent);
    Serial.println("%");

    unsigned long timeout = millis() + 10000; // 10s safety timeout

    while (millis() < timeout) {
        int current = analogRead(POT_PIN);
        int error = target - current;

        if (abs(error) <= DEADBAND) {
            stopActuator();
            Serial.println("Position reached");
            return;
        }

        // Proportional speed control
        int speed = constrain(abs(error), 80, 255);

        if (error > 0) {
            analogWrite(RPWM, speed);
            analogWrite(LPWM, 0);
        } else {
            analogWrite(RPWM, 0);
            analogWrite(LPWM, speed);
        }
        delay(10);
    }
    stopActuator();
    Serial.println("Timeout - position not reached");
}

void loop() {
    if (Serial.available()) {
        int pos = Serial.parseInt();
        pos = constrain(pos, 0, 100);
        moveToPosition(pos);
    }
}

ESP32: Stepper-Driven Lead Screw with Homing

// Linear motion via stepper + lead screw on ESP32
// Wiring: STEP→GPIO18, DIR→GPIO19, LIMIT→GPIO21
// Lead screw: 8mm lead, stepper 200 steps/rev, 1/16 microstep

#include <Arduino.h>

#define STEP_PIN  18
#define DIR_PIN   19
#define LIMIT_PIN 21  // Limit switch (normally open, active LOW)

const float LEAD_MM = 8.0;
const int STEPS_PER_REV = 200 * 16;  // 3200 microsteps/rev
const float MM_PER_STEP = LEAD_MM / STEPS_PER_REV;

long currentPosition = 0; // steps from home

void setup() {
    Serial.begin(115200);
    pinMode(STEP_PIN, OUTPUT);
    pinMode(DIR_PIN, OUTPUT);
    pinMode(LIMIT_PIN, INPUT_PULLUP);
    Serial.println("Homing...");
    homeAxis();
    Serial.println("Homed. Send distance in mm via Serial.");
}

void stepMotor(int delayUs) {
    digitalWrite(STEP_PIN, HIGH);
    delayMicroseconds(2);
    digitalWrite(STEP_PIN, LOW);
    delayMicroseconds(delayUs);
}

void homeAxis() {
    digitalWrite(DIR_PIN, LOW); // Retract direction
    while (digitalRead(LIMIT_PIN) == HIGH) {
        stepMotor(500);
    }
    currentPosition = 0;
    // Back off limit switch
    digitalWrite(DIR_PIN, HIGH);
    for (int i = 0; i < 100; i++) stepMotor(500);
    currentPosition = 100;
}

void moveToMM(float targetMM) {
    long targetSteps = (long)(targetMM / MM_PER_STEP);
    long stepsToMove = targetSteps - currentPosition;
    digitalWrite(DIR_PIN, stepsToMove > 0 ? HIGH : LOW);

    long absSteps = abs(stepsToMove);
    Serial.printf("Moving %.2f mm (%ld steps)\n", targetMM, absSteps);

    for (long i = 0; i < absSteps; i++) {
        if (digitalRead(LIMIT_PIN) == LOW && stepsToMove < 0) {
            Serial.println("Limit hit!");
            break;
        }
        stepMotor(200); // ~2500 steps/s ≈ 6.25 mm/s
        currentPosition += (stepsToMove > 0) ? 1 : -1;
    }
    Serial.printf("Position: %.2f mm\n",
                  currentPosition * MM_PER_STEP);
}

void loop() {
    if (Serial.available()) {
        float mm = Serial.parseFloat();
        moveToMM(mm);
    }
}

Real-World Applications

Furniture & Home

  • Adjustable standing desks
  • Reclining chairs and beds
  • Motorized TV lifts
  • Automated window openers

Industrial & Precision

  • CNC machine axes (ball screw)
  • 3D printer Z-axis (lead screw)
  • Semiconductor wafer positioning
  • Camera autofocus (voice coil)

Advantages vs. Alternatives

vs. ActuatorLinear Actuator AdvantageLinear Actuator Disadvantage
Pneumatic CylinderPrecise positioning, no air supply needed, quieterGenerally slower, lower force-to-size ratio
Hydraulic CylinderCleaner, no fluid leaks, simpler maintenanceMuch lower force capacity
SolenoidVariable position (not just two states), higher forceSlower response, more complex
Rotary Motor + LinkageTrue linear motion, no complex linkage designLimited to single-axis motion

Limitations & Considerations

  • Speed: Lead screw types are inherently slow (5–50 mm/s). Ball screws are faster but more expensive. For high speed, use belt or rack-and-pinion.
  • Load Rating: Duty cycle affects load capacity. Most electric linear actuators specify load at 25% duty cycle. Continuous operation reduces maximum force.
  • Backlash: Lead screws and rack-and-pinion systems have backlash. Ball screws minimize it via preload. Voice coils have zero backlash.
  • Temperature: Motor heating at high duty cycles reduces performance. IP-rated enclosures may limit heat dissipation.
  • Side Loading: Avoid applying forces perpendicular to the axis of motion. Side loads accelerate wear and can bend the shaft.
  • End-of-Stroke Protection: Always include limit switches or current monitoring to prevent the actuator from driving past its travel limits.