Actuator dynamics: from motor voltage to joint torque

Explore actuator dynamics with a DC motor’s current rise, back EMF, and geared load. Compare finite inductance with a reduced model, calculate reflected rotor inertia, and check torque, steady speed, and energy balance.

By 15 min read

What you will learn

  • Calculate current change from voltage, resistance, inductance, and motor speed.
  • Reflect motor rotor inertia through an ideal gear ratio.
  • Distinguish geared electromagnetic effort from output-shaft torque during acceleration.
  • Predict steady current and joint speed for a known signed load.
  • Check a motor simulation with an energy balance and a smaller time step.

Before you start

A voltage step does not create an instant step in a motor's winding current. Current first builds through the inductance, then the moving rotor generates back EMF that changes the current. A gearbox also changes how much inertia the motor must accelerate.

Actuator dynamics connects those electrical and mechanical states. This lesson follows one DC motor driving one joint, with calculations that separate current, electromagnetic torque, and the torque that reaches the load.

Build an actuator dynamics model for one joint

The forward dynamics lesson accepts joint torque as an input. Here voltage is the input, and winding current becomes another state. The experiment isolates a horizontal joint with constant load inertia, so gravity and multi-joint coupling do not enter this model.

Use a brushed DC motor with a constant magnetic field and an ideal rigid gear. Define the positive gear ratio N = motor speed / joint speed; the chosen angle coordinates give both speeds the same sign. Let i be winding current, ω joint speed, and q joint angle, with q̇ = ω.

These illustrative parameters make the response easy to inspect. They describe the teaching model, not a measured commercial motor.

QuantitySymbolValue
Winding resistanceR2 Ω
Winding inductanceL0.05 H
Electromagnetic torque constantkₜ0.1 N·m/A
Back-EMF constantkₑ0.1 V/(rad/s)
Motor rotor inertiaJₘ0.0002 kg·m²
Load inertia about the jointJₗ0.02 kg·m²
Joint-side viscous coefficientB0.02 N·m·s/rad

The voltage V stays constant after time zero. A constant signed load parameter τₗ applies external torque −τₗ to the joint. Positive τₗ opposes positive rotation and assists negative rotation; it keeps its sign through zero speed.

Let current build through the winding

The electrical balance separates voltage across resistance, inductance, and back EMF:

L di/dt = V − Ri − e
e = kₑ Nω
τ electromagnetic = kₜi

Bodson and Chiasson's DC motor chapter derives the winding equation and torque-current relation in section 1.4. It also connects the equal numerical values of kₜ and kₑ in consistent SI units to electrical-to-mechanical power conversion.

With L positive, a finite voltage gives a finite current slope. Current stays continuous through an ideal voltage step. At rest with i = 0, back EMF is zero, so di/dt = V/L.

As speed rises in the direction driven by a positive voltage, back EMF reduces the voltage left to drive current. During other motion, including load-driven reversal, its sign changes with motor speed. The equation handles both cases.

Reflect rotor inertia through the gear ratio

The rotor spins at Nω, so its kinetic energy is Jₘ(Nω)²/2. Expressing the whole system in the joint coordinate gives:

J reflected = N²Jₘ
J effective = Jₗ + N²Jₘ
J effective dω/dt = Nkₜi − Bω − τₗ

Lynch and Park's lesson on actuation and gearing explains the ideal gear's speed-torque conversion and the square-law reflected inertia. A lossless gear preserves transmitted mechanical power. Rotor inertia can still consume a substantial share of the motor's effort during acceleration.

At N = 10, the reflected rotor inertia is 100 × 0.0002 = 0.02 kg·m². It equals the load inertia, giving J effective = 0.04 kg·m². At N = 20, the reflected part rises to 0.08 and the total becomes 0.10 kg·m².

For the same 1 A current, zero speed, and zero load torque, the joint drive term rises from 1 N·m to 2 N·m as N doubles. Joint acceleration nevertheless falls from 1/0.04 = 25 to 2/0.10 = 20 rad/s². The larger ratio also adds more reflected inertia.

Separate electromagnetic effort from output torque

The term Nkₜi acts on the combined reflected inertia in the equation above. During acceleration, part of that effort accelerates the motor rotor. The gear's actual output-shaft torque on the load is:

τ output = Nkₜi − N²Jₘ dω/dt
τ output = Jₗ dω/dt + Bω + τₗ

The two expressions provide an independent check. The first subtracts the rotor's acceleration demand; the second sums the load-side demands. They give the same result for this rigid, lossless transmission.

At steady speed, rotor acceleration is zero, so output torque equals Nkₜi. At N = 10 with 1 A, zero speed, and no external load, the 25 rad/s² acceleration from the previous section leaves 1 − 0.02 × 25 = 0.5 N·m at the output shaft. The load uses that torque to accelerate its own 0.02 kg·m² inertia.

Calculate the first response to 12 volts

Start with i = ω = q = 0, N = 10, and τₗ = 0. Apply V = 12 V at time zero. The initial current slope is 12/0.05 = 240 A/s, while the initial electromagnetic torque and acceleration are both zero.

Integrating the coupled state (i, ω, q) with RK4, using a 0.001 s step, gives these values at 0.05 s:

QuantityValue
Current i4.239870 A
Joint speed ω3.856769 rad/s
Motor speed Nω38.567689 rad/s
Back EMF kₑNω3.856769 V
Joint acceleration104.068365 rad/s²
Joint drive term Nkₜi4.239870 N·m
Gear output torque2.158503 N·m

Using the rounded values, the current slope is (12 − 2 × 4.239870 − 3.856769)/0.05, about −6.73018 A/s. Current has already passed its peak at this instant. Motor speed is still increasing.

The gear output check gives 4.239870 − 0.02 × 104.068365 = 2.158503 N·m. This difference matters when connecting the motor model to a link model that includes only the load's inertia.

Solve the steady current and speed

Set di/dt and dω/dt to zero. The two balances become V = Ri + kₑNω and Nkₜi = Bω + τₗ. Solving them gives:

ω steady = (NkₜV − Rτₗ)/(RB + N²kₜkₑ)
i steady = (V − kₑNω steady)/R

For the default 12 V and N = 10, steady joint speed is 12/1.04 = 11.538462 rad/s. Current settles near 0.230769 A. Even with zero external load torque, viscous damping still requires torque and electrical power.

Changing N to 20 lowers the no-external-load steady speed to 5.940594 rad/s. At a fixed current the larger ratio supplies more geared electromagnetic effort, while its higher motor speed at a given joint speed also produces more back EMF. These tradeoffs do not create extra power.

A hypothetical mechanically locked rotor has ω = 0. After the electrical transient, its current would be V/R = 6 A at 12 V. This stalled value is a model prediction; it is not a current limit or a continuous operating rating.

Replay current and speed under different loads

The solid curves use finite winding inductance. The dashed curves use the reduced L = 0 equations from the next section. Both begin with zero joint speed, while only the finite-inductance model retains zero initial winding current after the voltage step.

Interactive experiment

Follow current and joint speed after a voltage step

A DC motor drives one horizontal joint through an ideal rigid gear. Current and speed start at zero. The comparison removes winding inductance while keeping the same motor, gear, and load.

12
10
0.00
0.05 s

Positive load torque applies a fixed negative torque to the joint. It keeps that direction if the joint reverses, so it can drive backward motion. Voltage 0 V shorts the ideal motor terminals; it does not disconnect them.

Current (A) after the voltage stepTime runs from 0 to 0.2 seconds. The vertical scale runs from -1 to 7. Solid blue shows finite inductance; dashed orange shows the L equals zero approximation. The vertical line marks 0.05 seconds. The finite-inductance value is 4.239870.0.00.10.2-17Time (s)Current (A)
Winding current: the finite-inductance model starts at 0 A. The reduced model starts at V/R.
Speed (rad/s) after the voltage stepTime runs from 0 to 0.2 seconds. The vertical scale runs from -5 to 15. Solid blue shows finite inductance; dashed orange shows the L equals zero approximation. The vertical line marks 0.05 seconds. The finite-inductance value is 3.856769.0.00.10.2-515Time (s)Speed (rad/s)
Joint speed: both models include back EMF and reflected rotor inertia. Their steady speeds agree.

Solid blue: L = 0.05 H. Dashed orange: L = 0. The plot window expands with replay time, from 0.2 s up to 1 s. Curves show the computed response throughout that window; the vertical line selects the readouts.

Winding current (A)
4.239870
Joint speed (rad/s)
3.856769
Motor speed (rad/s)
38.567689
Back EMF (V)
3.856769
Joint drive term (N m)
4.239870
Gear output torque (N m)
2.158503
Reflected rotor inertia (kg m²)
0.020000
Effective joint inertia (kg m²)
0.040000
Steady joint speed (rad/s)
11.538462
Steady current (A)
0.230769
Current with L = 0 (A)
3.242572
Energy balance residual (J)
0.000000

Current builds through the winding inductance. As motor speed changes, back EMF changes the voltage available to drive that current.

Inspect the energy check

Stored energy = magnetic + kinetic. Source work = stored energy + copper loss + viscous loss + signed load work, up to integration error. Negative load work means the external load supplied energy.

Energy at 0.05 s, in joules
Magnetic energy0.449412
Kinetic energy0.297493
Electrical source work1.869587
Copper loss1.118910
Viscous loss0.003771
Signed load work0.000000

The joint drive term is N kₜ i. Some of that effort accelerates the rotor; the gear output torque subtracts its reflected-inertia demand. This ideal voltage source includes no current controller, current limit, heating model, or gear loss.

  • Select Higher gear ratio and compare drive torque, output torque, and reflected inertia at 0.05 s.
  • Select Positive load torque. The load briefly drives negative acceleration before current builds enough to overcome it.
  • Select Reverse voltage. Current, speed, and torque reverse their signs.
  • Select Load drives a shorted motor. The external torque drives negative speed, while positive motor torque resists that motion.
  • Select No voltage or load. With zero initial state, every state stays zero.

The ideal voltage source holds the selected terminal voltage and can accept either current sign. Setting V = 0 shorts the terminals. An open circuit would need a different electrical model.

The signed load keeps its direction through a reversal. It does not model Coulomb friction or stiction; the friction lesson covers those effects. Presets keep the replay time and integration step, and the reset button restores every default.

Decide when neglecting inductance changes the answer

Setting L = 0 replaces a differential equation with the algebraic relation i = (V − kₑNω)/R. At the default voltage step and zero speed, that model immediately takes i = 6 A. It predicts a 6 N·m joint drive term and 150 rad/s² acceleration at time zero.

Those jumps cannot describe the exact switching instant of the finite 0.05 H winding. A reduced model can still be useful when its electrical transient is fast compared with the motion of interest. Here L/R = 0.025 s is the winding time constant at fixed rotor speed; the moving motor's coupled response also depends on back EMF and inertia.

For constant voltage and load, the reduced mechanical equation has a closed-form solution. Define B effective = B + N²kₜkₑ/R and a = B effective/J effective. From rest, ω(t) = ω steady[1 − exp(−at)], and its current follows the algebraic relation above.

The dashed curves use that exact reduced solution. They keep reflected inertia and back EMF, so they share the full model's steady state. At 0.05 s, the reduced model has already reached 5.514856 rad/s, with current 3.242572 A; the full model's current is higher at that instant because its speed history differs.

This experiment omits current-control electronics, current limits, gear losses, backlash, magnetic saturation, and temperature changes. A real drive needs those details where they affect the task. Parameter identification connects a chosen model to measurements; adding a learned correction also requires testing beyond the data used to fit it.

Integral windup adds an actuator limit to a simpler plant. Its experiment shows how a PI controller can keep accumulating error when the applied effort no longer follows the request, then compares two anti-windup methods.

Cascade control places position and velocity controllers above the actuator. Follow the units of each command and test how finite inner-loop response changes the motion an outer loop requests.

Joint flexibility relaxes the rigid transmission assumption. Its motor and load coordinates can differ as the transmission twists, stores elastic energy, and releases it. A single motor-angle reading therefore does not determine the load angle.

Check electrical and mechanical energy together

Stored energy includes both the magnetic field and the moving rotor and load:

E = ½Li² + ½J effective ω²
dE/dt = Vi − Ri² − Bω² − τₗω

The equality kₜ = kₑ in SI units makes back-EMF power equal electromagnetic mechanical power. Bodson and Chiasson explain this conversion in section 1.4. It leaves copper heating, viscous loss, stored energy, and external load work in the balance.

At the default 0.05 s state, source work is about 1.869587 J. Magnetic energy is 0.449412 J, kinetic energy is 0.297493 J, copper loss is 1.118910 J, and viscous loss is 0.003771 J. Their sum matches source work up to rounding and integration error.

Load work is signed: W load = τₗ[q(t) − q(0)]. Negative load work means the external load supplied energy. In the shorted-motor preset, the source supplies zero electrical work while load work feeds stored energy and losses.

The numerical replay uses RK4 for the three states and the same stages for work and loss integrals. Halving its step reduces the default energy residual from about 6.4 × 10⁻⁸ J to 4.0 × 10⁻⁹ J at one second. The linear system's matrix-exponential solution also provides an independent check of current and speed; energy balance alone would not establish the correct transient.

Reproduce the motor response in Python

This standard-library program implements the same illustrative motor and gear equations. It integrates current, joint speed, and angle together. The returned torque pair separates the joint drive term from output-shaft torque.

from math import exp

R, L, K = 2.0, 0.05, 0.1
JM, JL, B = 0.0002, 0.02, 0.02


def simulate(voltage=12, ratio=10, load=0, h=0.001, duration=0.05):
    inertia = JL + JM * ratio**2
    state = [0.0, 0.0, 0.0]  # current, joint speed, joint angle

    def slope(at):
        current, speed, _ = at
        return [(voltage - R * current - K * ratio * speed) / L,
                (ratio * K * current - B * speed - load) / inertia,
                speed]

    def offset(at, k, scale):
        return [x + scale * dx for x, dx in zip(at, k)]

    steps = round(duration / h)
    assert abs(steps * h - duration) < 1e-12
    for _ in range(steps):
        k1 = slope(state)
        k2 = slope(offset(state, k1, h / 2))
        k3 = slope(offset(state, k2, h / 2))
        k4 = slope(offset(state, k3, h))
        state = [state[j] + h * (k1[j] + 2 * k2[j] + 2 * k3[j] + k4[j]) / 6
                 for j in range(3)]
    current, speed, _ = state
    acceleration = slope(state)[1]
    drive = ratio * K * current
    shaft = drive - JM * ratio**2 * acceleration
    return current, speed, drive, shaft


for name, voltage, ratio, load in [
    ("start", 12, 10, 0), ("loaded", 12, 10, 1),
    ("high gear", 12, 20, 0), ("reverse", -12, 10, 0),
    ("shorted", 0, 10, 1),
]:
    current, speed, drive, shaft = simulate(voltage, ratio, load)
    print(f"{name}: i={current:.6f}; speed={speed:.6f}; "
          f"drive={drive:.6f}; shaft={shaft:.6f}")

steady_speed = (10 * K * 12) / (R * B + 10**2 * K**2)
steady_current = (12 - K * 10 * steady_speed) / R
reduced_speed = steady_speed * (1 - exp(-13 * 0.05))
print(f"steady: i={steady_current:.6f}; speed={steady_speed:.6f}")
print(f"L=0 at 0.05 s: i={(12 - reduced_speed) / R:.6f}; "
      f"speed={reduced_speed:.6f}")

Expected output, with current in A, joint speed in rad/s, and torques in N·m:

start: i=4.239870; speed=3.856769; drive=4.239870; shaft=2.158503
loaded: i=4.561267; speed=2.780356; drive=4.561267; shaft=2.808437
high gear: i=3.718988; speed=2.939147; drive=7.437976; shaft=1.534622
reverse: i=-4.239870; speed=-3.856769; drive=-4.239870; shaft=-2.158503
shorted: i=0.321397; speed=-1.076413; drive=0.321397; shaft=0.649935
steady: i=0.230769; speed=11.538462
L=0 at 0.05 s: i=3.242572; speed=5.514856

Try it yourself

Exercise 1. At one instant, take i = 1 A and ω = 0, with zero load torque. Compare N = 10 and N = 20. Calculate reflected inertia, acceleration, and gear output torque for each ratio.

Check the two gear ratios

At N = 10, reflected inertia is 0.02 kg·m² and total inertia is 0.04 kg·m². The drive term is 1 N·m, giving 25 rad/s² acceleration. Output torque is 1 − 0.02 × 25 = 0.5 N·m.

At N = 20, reflected inertia is 0.08 kg·m² and total inertia is 0.10 kg·m². The drive term is 2 N·m, giving 20 rad/s² acceleration. Output torque is 2 − 0.08 × 20 = 0.4 N·m; each output torque also equals Jₗ times acceleration.

Exercise 2. Set V = 0, N = 10, and signed load torque τₗ = +1 N·m. Find steady joint speed and current. State whether the motor torque drives or resists the joint's motion.

Check the load-driven shorted motor

Steady speed is (0 − 2 × 1)/1.04 = −1.923077 rad/s. Back EMF is also −1.923077 V, so current is (0 − (−1.923077))/2 = 0.961538 A.

The positive motor torque resists the negative rotation. At steady speed, output torque equals the drive term, 0.961538 N·m. The load supplies mechanical power; the shorted winding and viscous damping dissipate it. Zero terminal voltage does not imply zero winding current when the shaft moves.

Sources and further study

Continue with forward dynamics to connect delivered actuator torque to the motion of a robot's links.