Course materials · Control Engineering I

DC Motor Disturbance Rejection

English translation

Control Engineering I · Week 10

Run: After signing in to MathWorks, open .mlx in your workspace. Click inside the code → Live Editor → Run Section to run one section at a time. Run runs everything. After changing a value, rerun the relevant section. Edit the text in ⟦enter here⟧ response fields; do not execute them. You can use Ctrl+Enter on Windows/Linux and ⌘+Enter on Mac.

Define symbols and motion directions

Define positive disturbance torque Td in the direction of rotation. Ra is armature resistance, Km the torque constant, Kb the back-EMF constant, J inertia, and b viscous friction. Kt is the tachometer gain converting angular velocity into voltage, and KaK_a is amplifier gain. Set the reference angular velocity deviation to 0 and apply only the disturbance.

1. Transfer function with respect to which input?

This exercise concerns the effect of disturbance torque Td on angular velocity deviation ω, rather than reference tracking. Interpret the disturbance direction specified in the problem as positive.

Transfer function with respect to which input?

Defining load torque in the opposite direction changes the sign. Use absolute values when comparing deviation magnitudes, and first check where the disturbance is summed in the block diagram.

How the motor denominator is formed

Ignoring armature inductance gives Ra·i = va − Kb·ω. The torque balance is J·ω′ + b·ω = Km·i + Td. Substituting voltage change va=0 into the baseline model gives J·ω′ + (b+KmKb/Ra)·ω = Td.

Feedback that reduces voltage when angular velocity increases is va=−KaKt·ω. Substituting this into the same equation adds (Km/Ra)KaKt to the denominator. Thus, this simplified model reduces the angular velocity deviation caused by the same disturbance.

2. Open-loop Disturbance Model

In the model neglecting armature inductance, ΩTd=1Js+b+KmKb/Ra\frac\Omega{T_d}=\frac1{Js+b+K_mK_b/R_a}. The steady-state angular velocity deviation after applying a constant disturbance D is Db+KmKb/Ra\frac D{b+K_mK_b/R_a}. Thus, increasing the denominator term without s reduces the final deviation under the same disturbance.

Open-loop Disturbance Model

Consider a disturbance applied while the armature voltage is constant. Ignore armature inductance.

3. Add tachometer feedback

Applying tachometer gain KtK_t and amplifier gain KaK_a gives denominator Js+b+(Km/Ra)(KtKa+Kb)Js+b+(K_m/R_a)(K_tK_a+K_b).

For a stable model, Gd(0)G_d(0) is the steady-state output under a constant unit disturbance. For input magnitude DD, ωss=DGd(0)\omega_{ss}=D\,G_d(0). MATLAB's dcgain(Gd) calculates this Gd(0)G_d(0).

Add tachometer feedback

dcgain is the transfer function's static gain. If the actual input is D=0.2, multiply by D instead of reporting dcgain itself as the steady-state value.

4. Compare theory with numerical results

Use Ra=1,Km=Kb=0.1,J=0.01,b=0.001,Kt=0.05,D=0.2. Plot the open-loop and closed-loop responses on the same time axis, and find KaK_a giving the target deviation of at most 0.5rad/s.

Compare theory with numerical results

Comparing only the last values on automatic time axes may mistake values that have not converged for steady state. Use dcgain together with a sufficiently long observation interval.

Check your understanding

  1. What values should go into the code, and what does each row and column of the resulting array represent? If calculating physical quantities, have you also checked the units?
  2. Can you identify which parts to rerun when you change one condition?
  3. Do the results match your expectations? If they differ, can you explain why using the output values or plots?

Official MATLAB documentation · Control System Toolbox

Practice materials