Week 10 · DC Motor Disturbance Rejection

English translation

Before practice

01 A system subject to external effects

An external force acts on a DC motor whose angular velocity should remain constant. Why is control needed even when the target does not change?

Description
  • Effect of disturbance torque on output ω
  • Distinguish target-tracking performance from disturbance rejection

02 Responding to external effects

If the external force itself cannot be removed, what can reduce the angular velocity deviation?

Description
  • Adjust the control action through feedback from angular velocity measurements
  • Distinguish removing the disturbance itself from reducing its effect on the output

Practice

1. Derive the model and calculate gain

  • TdT_d (input): Disturbance Torque.
  • ω\omega (output): angular velocity deviation from the operating point [rad/s].
  • VaV_a: change in armature voltage.
  • ii: Change in armature current.
  • Model assumption: Neglect armature inductance.
SymbolMeaningValue
RaR_aArmature Resistance1
KmK_mTorque Constant0.1
KbK_bBack EMF Constant0.1
JJMoment of Inertia0.01
bbViscous Friction Coefficient0.001
KtK_tTachometer Gain0.05

Motor equations:

  • Va=−KaKtωV_a=-K_aK_t\omega
  • i=Va−KbωRai=\frac{V_a-K_b\omega}{R_a}
  • Jdωdt+bω=Kmi+TdJ\frac{d\omega}{dt}+b\omega=K_mi+T_d
  1. Substitute the expression for VaV_a into the expression for current ii. Then substitute the resulting expression for ii into the equation of motion, and rearrange as a differential equation relating ω\omega and TdT_d.
  2. Set the initial conditions to 0 and apply the Laplace transform to this differential equation. Collect terms containing Ω(s)\Omega(s) on one side, then find Ω(s)Td(s)\frac{\Omega(s)}{T_d(s)}.
  3. Record the numerator and denominator of your derived transfer function as separate coefficient arrays, in descending powers.

Find: The minimum amplifier gain satisfying the tolerance condition.

  • Constant disturbance: Td=D=0.2T_d=D=0.2.
  • Steady-state tolerance: |ωss|≤0.5|\omega_{ss}|\le0.5 rad/s.
  • Amplifier gain range: Ka≥0K_a\ge0.
  • Motor coefficients: values in the table above.
  1. Substitute Td=DT_d=D, dωdt=0\frac{d\omega}{dt}=0, and ω=ωss\omega=\omega_{ss} into the differential equation derived above. Divide both sides by the coefficient of ωss\omega_{ss} to express ωss\omega_{ss} as a function of KaK_a.
  2. Substitute that expression into the tolerance condition |ωss|≤ωlimit|\omega_{ss}|\le\omega_{\mathrm{limit}}. Insert D=0.2D=0.2, ωlimit=0.5\omega_{\mathrm{limit}}=0.5, and the motor coefficients from the table, and find the range of KaK_a that satisfies the condition.
  3. Record the smallest value in the derived range as Ka,minK_{a,\min}. Show the expression for ωss\omega_{ss}, the inequality with numerical values substituted, and the allowed range and minimum of KaK_a. Use this record when comparing with MATLAB calculations later.

2. Open-loop Disturbance Step Response

Use Gd=tf(1,[J b+Km*Kb/Ra]) defined in the Open-loop Disturbance Step Response code. Keep Ra,Km,Kb,J,b at the values defined there.

ConditionDD
10.1
20.2
30.3
  1. For each condition, calculate ωss=D⋅dcgain⁡(Gd)\omega_{ss}=D\cdot\operatorname{dcgain}(G_d) [rad/s].
  2. Record these three columns in one table.
    • DD
    • ωss\omega_{ss} [rad/s]
    • ωss/D\omega_{ss}/D
  3. Compare ωss/D\omega_{ss}/D across the three rows. State whether the ratio is constant and how this result demonstrates proportionality between DD and ωss\omega_{ss}.

3. Disturbance rejection with tachometer feedback

Keep Ra,Km,Kb,J,b,Kt and D=0.2D=0.2 in the disturbance-rejection code with tachometer feedback unchanged; change only KaK_a.

ConditionKaK_a
110
220
340
  1. Rebuild Gc at each KaK_a and calculate dcgain(Gc).
  2. Multiply each DC gain by DD to find ωss\omega_{ss} [rad/s].
  3. Record KaK_a, DC gain, and ωss\omega_{ss} in three columns.
  4. Compare the symbolic coefficient arrays derived in activity 1 with the coefficient expressions written in this activity’s code.
    1. Find the first and second arguments of the tf call defining Gc, and record them as the numerator and denominator coefficient arrays, respectively.
    2. For each representation, divide its entire numerator and denominator by its leading denominator coefficient so that this coefficient becomes 1.
    3. Use two rows (numerator and denominator) and three columns (derived array, code array, and whether they agree). Compare coefficients at the same power and mark any differing terms.

4. Design the amplifier gain

Keep D=0.2D=0.2 and the motor coefficients from the preceding activity. Apply each of the two tolerances below.

  1. First calculate the minimum gain using D=0.2D=0.2 and limit=0.5 from your hand calculation. In the amplifier gain design code, Ka_min is the calculated value of Ka,minK_{a,\min}. Record this output beside the value found by hand in activity 1.
  2. Conditionlimit [rad/s]
    10.25
    21
    Calculate the minimum KaK_a for each limit. The calculated Ka,minK_{a,\min} corresponds to Ka_min in the code; decimal gains are allowed.
  3. Choose one KaK_a slightly below and one KaK_a above the minimum you found. Examples: 0.9Ka,min0.9K_{a,\min}, 1.1Ka,min1.1K_{a,\min}.
  4. Insert each gain into the feedback model Gc, rebuild the model, and calculate ωss=D⋅dcgain⁡(Gc)\omega_{ss}=D\cdot\operatorname{dcgain}(G_c).
  5. Record the calculations for each condition in one table.
    Tolerance [rad/s]
    limit
    Calculated minimum gain
    Ka,minK_{a,\min}
    Gain applied to the model
    KaK_a
    Steady-state angular velocity deviation [rad/s]
    ωss\omega_{ss}
    Tolerance satisfied?
    |ωss|≤limit|\omega_{ss}|\le\mathrm{limit}: true/false
  6. Describe how gains below and above the minimum differ in meeting the tolerance. Use this table to judge whether the calculated minimum separates the two cases.

Submission and saving

Include code, actual outputs and plots, and your own interpretation. Submit through KLAS; check the semester schedule and latest announcements for the deadline.

Filename: Name_StudentID_Week10.mlx.

Restart the runtime, run all code from the top, then save.

Optional practice

Example: treating the last simulation sample as a steady-state value

  1. Keep the motor coefficients Ra,Km,Kb,J,b,Kt at their values from the preceding activity. Set Ka=20 and D=0.2, create Gc=tf(1,[J b+Km/Ra*(Kt*Ka+Kb)]), then find the last value of step(D*Gc,0:0.005:0.05).
  2. Record that value beside D*dcgain(Gc) and calculate the difference. Determine whether convergence is sufficient at 0.05 s.
  3. For the same Gc, increase the end time from 0.05 s to 8 s, keeping the time step at 0.005 s. Run [y_long,t_long]=step(D*Gc,0:0.005:8), then find the difference between y_long(end) and D*dcgain(Gc). Compare it with the earlier difference at 0.05 s.