Home
探索 Uedu
學生控制台
註冊會員/登入
研究知情同意中心
問卷中心
教師控制台
課程設定
支援與訊息
Uptime 數據

UeduGPTs

--

Jupyters

3

UG26 CISOSE26
陽明交大 AQI 47 29°C PM2.5 9

AI 回覆桌面通知

AI 助教回覆完成時顯示桌面通知

聊天訊息通知

同學在討論區發送訊息時通知

聲音通知

每當有新通知時播放提示音

控制系統

為什麼洗澡時調水溫總是來回擺盪?

從浴室水溫的來回震盪出發,講透回饋控制、轉移函數、PID 與穩定性,直到狀態空間與 LQR 的研究所視角。

為什麼洗澡時調水溫總是來回擺盪?

你一定有過這種經驗:浴室的水太冷,於是把熱水轉大一點,等了幾秒後水變得太燙,趕緊把熱水轉小;過一會兒又太冷……如此來回好幾次才終於穩定。這個再日常不過的動作,其實濃縮了整個控制系統(control system)最核心的問題:如何讓一個量(水溫)穩定地落在我們想要的目標值上,而且不要劇烈震盪、不要永遠調不準。

你之所以會「來回擺盪」,有兩個關鍵原因。第一,你是在根據當前誤差做修正——水太冷就加熱、太燙就減熱,這叫回饋(feedback)。第二,水從水龍頭流到你身上、再讓皮膚感覺到溫度的變化,中間有時間延遲(time delay),所以你修正的依據其實是「幾秒前的水溫」,而不是「此刻的水溫」。回饋讓系統能自我修正,延遲與過度反應卻可能讓它失去穩定性(stability)。這篇文章,我們就來談機械工程裡這套既優雅又危險的回饋控制。

控制系統概念示意圖

開迴路與閉迴路:要不要「看結果」

控制系統最根本的分野,是它有沒有量測輸出並拿來修正

開迴路控制(open-loop control)不看結果。例如老式烤麵包機,你設定 2 分鐘就跳起,它不管麵包實際烤到幾分熟。它的輸出(麵包顏色)不會回頭影響輸入(加熱時間)。開迴路系統簡單便宜,但只要環境一變(麵包厚度不同、室溫不同),結果就跑掉。

閉迴路控制(closed-loop control)會量測輸出、計算它與目標的差距,再依此調整。洗澡調水溫、汽車的定速巡航、無人機懸停,全都是閉迴路。它的核心是一條回饋路徑,把輸出 $y(t)$ 量回來,與參考值(setpoint)$r(t)$ 相減,得到誤差(error)

$$ e(t) = r(t) - y(t) $$

控制器(controller)再根據這個誤差決定要施加多少控制力 $u(t)$。整個訊號流是:

$$ r(t) \;\to\; \underbrace{e(t)=r-y}_{\text{比較}} \;\to\; \underbrace{C}_{\text{控制器}} \;\to\; u(t) \;\to\; \underbrace{P}_{\text{受控體 plant}} \;\to\; y(t) \;\xrightarrow{\text{量回}}\; $$

這裡的「受控體」$P$(plant)就是你要控制的物理對象——馬達、機械手臂、車輛、化學反應槽。控制工程師的任務,就是設計那個 $C$,讓 $y(t)$ 又快又穩地追上 $r(t)$。

用轉移函數描述系統的「個性」

要分析閉迴路行為,我們需要一個數學語言來描述「輸入進去、輸出出來」的關係。對線性非時變(LTI)系統,這個語言就是轉移函數(transfer function)——它是輸出與輸入在 Laplace 域的比值。

回想優物理裡的彈簧—質量—阻尼系統。質量 $m$、阻尼係數 $c$、彈簧常數 $k$,受外力 $f(t)$,位移 $x(t)$ 的運動方程式是牛頓第二定律:

$$ m\ddot{x}(t) + c\dot{x}(t) + k x(t) = f(t) $$

對兩邊做 Laplace 轉換(假設初始條件為零),$\dfrac{d}{dt}\to s$,得到:

$$ (ms^2 + cs + k)\,X(s) = F(s) $$

於是這個系統的轉移函數(從力到位移)為:

$$ G(s) = \frac{X(s)}{F(s)} = \frac{1}{ms^2 + cs + k} $$

分母多項式 $ms^2 + cs + k = 0$ 的根稱為極點(poles),它們決定了系統的動態「個性」——震不震盪、衰減多快、會不會發散。把它整理成標準二階形式,更能看出物理意義:

$$ G(s) = \frac{\omega_n^2}{s^2 + 2\zeta\omega_n s + \omega_n^2} $$

其中自然頻率(natural frequency)$\omega_n = \sqrt{k/m}$,阻尼比(damping ratio)$\zeta = \dfrac{c}{2\sqrt{mk}}$。這兩個參數直接決定系統怎麼回應一個突如其來的擾動:

  • $\zeta = 0$:無阻尼,永遠等幅震盪(理想單擺)。
  • $0 < \zeta < 1$:欠阻尼(underdamped),會震盪但逐漸衰減(汽車輾過坑洞後車身的彈跳)。
  • $\zeta = 1$:臨界阻尼(critically damped),最快回到平衡且不超越。
  • $\zeta > 1$:過阻尼(overdamped),慢慢爬回平衡,不震盪(門上的緩衝器)。

這就是為什麼汽車懸吊的避震器要設計成接近臨界阻尼——既要吸收衝擊,又不能讓乘客在坑洞後彈個沒完。

PID 控制器:工業界的萬用瑞士刀

知道了系統的個性,接下來就是設計控制器 $C$。實務上最廣泛使用的,是PID 控制器——比例(Proportional)、積分(Integral)、微分(Derivative)三項的組合。它的控制律是:

$$ u(t) = K_p\, e(t) + K_i \int_0^t e(\tau)\,d\tau + K_d \frac{de(t)}{dt} $$

對應的轉移函數為:

$$ C(s) = K_p + \frac{K_i}{s} + K_d s $$

三項各有不同的「直覺」,我們用洗澡水溫的例子來體會:

  • 比例項 $K_p e(t)$:誤差越大,修正越猛。水差目標 10 度就大轉,差 1 度就微調。但純比例控制通常會留下穩態誤差(steady-state error)——因為要維持輸出,就得維持一點誤差來「餵」控制力,誤差歸零控制力也歸零。

  • 積分項 $K_i \int e\,d\tau$:把過去累積的誤差加總。只要還有一丁點誤差沒消除,積分項就會持續增大控制力,直到誤差真正歸零。它專門消滅穩態誤差。代價是反應較慢,且累積過頭會造成超越(overshoot)。

  • 微分項 $K_d \dot{e}(t)$:看誤差變化的趨勢。如果水溫正快速逼近目標,微分項會「踩煞車」,提前減弱控制力,避免衝過頭。它能抑制震盪、增加阻尼,但對量測雜訊極度敏感(雜訊的微分很大)。

調好這三個增益是門藝術。經典的 Ziegler–Nichols 法提供一套起點:先只用比例控制,逐漸加大 $K_p$ 直到系統剛好持續等幅震盪,此時的增益記為臨界增益 $K_u$、震盪週期 $T_u$,再依經驗表設定:

$$ K_p = 0.6\,K_u,\quad K_i = \frac{2K_p}{T_u},\quad K_d = \frac{K_p T_u}{8} $$

這只是起點,實務上還要依需求微調。

穩定性:回饋的最大風險

回饋是雙面刃。設計得好,系統穩定又精準;設計不好,輕則持續震盪,重則控制力越來越大、系統發散——馬達燒毀、機構撞壞、飛機失控。穩定性分析因此是控制工程的重中之重。

對閉迴路系統,我們關心的是閉迴路轉移函數。設受控體 $P(s)$、控制器 $C(s)$,採單位回饋,則開迴路轉移函數 $L(s) = C(s)P(s)$,閉迴路轉移函數為:

$$ T(s) = \frac{L(s)}{1 + L(s)} $$

系統穩不穩定,取決於特徵方程式(characteristic equation)

$$ 1 + L(s) = 0 $$

的根(即閉迴路極點)落在複數平面的哪裡。判準很乾淨:

所有閉迴路極點的實部都必須為負(落在左半平面),系統才漸近穩定。

為什麼?因為時域響應裡每個極點 $s = \sigma + j\omega$ 對應一項 $e^{\sigma t}(\cos\omega t + \cdots)$。若 $\sigma < 0$,這項隨時間衰減;若 $\sigma > 0$,它指數成長、系統爆炸;若 $\sigma = 0$,臨界震盪。極點的虛部 $\omega$ 決定震盪頻率,實部 $\sigma$ 決定衰減(或發散)速率。

對高階系統手算極點很麻煩,工程師發展了不用解根就能判穩的工具。Routh–Hurwitz 判據只看特徵多項式的係數,透過建表判斷有幾個根落在右半平面,無需真的解方程式。Nyquist 判據與 Bode 圖則從頻率響應角度分析,並引出增益裕度(gain margin)相位裕度(phase margin)——它們量化系統「離不穩定還有多遠」,是實務設計時最常看的安全餘裕指標。

看一個例子

考慮一個直流馬達的位置控制。簡化後受控體(從電壓到角位移)近似為:

$$ P(s) = \frac{1}{s(s+2)} $$

注意分母有個 $s$,代表系統含一個積分器(位置是速度的積分)。我們先用最簡單的純比例控制器 $C(s) = K_p$,求閉迴路行為。

開迴路:$L(s) = \dfrac{K_p}{s(s+2)}$,特徵方程式:

$$ 1 + L(s) = 0 \;\Rightarrow\; s(s+2) + K_p = 0 \;\Rightarrow\; s^2 + 2s + K_p = 0 $$

對照標準二階式 $s^2 + 2\zeta\omega_n s + \omega_n^2$,可得:

$$ \omega_n = \sqrt{K_p}, \qquad 2\zeta\omega_n = 2 \;\Rightarrow\; \zeta = \frac{1}{\sqrt{K_p}} $$

這條式子告訴我們一個深刻的取捨:

  • 我們想要反應快,就要大 $\omega_n$,也就是大 $K_p$。
  • 但 $K_p$ 一大,$\zeta = 1/\sqrt{K_p}$ 就變小,系統越來越欠阻尼、超越量越大、震盪越久。

舉具體數字。若取 $K_p = 1$,則 $\omega_n = 1$、$\zeta = 1$,臨界阻尼,反應慢但不超越。若取 $K_p = 16$,則 $\omega_n = 4$、$\zeta = 0.25$,反應快了 4 倍,但阻尼比掉到 0.25,會產生明顯超越。欠阻尼系統的超越百分比(percent overshoot)有公式可估:

$$ M_p = \exp\!\left(\frac{-\zeta\pi}{\sqrt{1-\zeta^2}}\right) \times 100\% $$

代入 $\zeta = 0.25$:

$$ M_p = \exp\!\left(\frac{-0.25\pi}{\sqrt{1-0.0625}}\right) \approx \exp(-0.811) \approx 44\% $$

也就是說,馬達會先衝過目標位置約 44%,再震盪回來。這在精密定位(如 CNC 工具機、3D 列印)是不可接受的。

此時微分項就派上用場。改用 PD 控制器 $C(s) = K_p + K_d s$,特徵方程式變成:

$$ s^2 + (2 + K_d)s + K_p = 0 $$

注意微分增益 $K_d$ 直接出現在一次項,等效於增加了阻尼:新的有效阻尼比 $\zeta_{\text{eff}} = \dfrac{2+K_d}{2\sqrt{K_p}}$。所以我們可以用大 $K_p$ 換取速度,同時用 $K_d$ 補回阻尼、壓制超越——魚與熊掌兼得。這正是 PD/PID 控制在伺服系統無所不在的原因。

重點回顧

  • 回饋是核心,也是風險:閉迴路控制透過量測誤差 $e=r-y$ 自我修正,能對抗擾動與不確定性;但回饋加上延遲或過度增益,會讓系統震盪甚至發散。
  • 轉移函數刻畫系統個性:二階系統由自然頻率 $\omega_n=\sqrt{k/m}$ 與阻尼比 $\zeta=c/2\sqrt{mk}$ 決定,分出欠阻尼、臨界阻尼、過阻尼三種響應。
  • PID 三項分工明確:比例求快、積分消除穩態誤差、微分增加阻尼抑制超越;調參是速度與穩定的權衡。
  • 穩定性看極點位置:所有閉迴路極點實部為負(左半平面)系統才穩定;Routh–Hurwitz、Nyquist、Bode 提供不解根的判穩工具與安全裕度。
  • 存在根本取捨:純比例控制下,加大增益提速會降低阻尼比、增加超越;微分項能在保留速度的同時補回阻尼。

深入探討(研究所視角)

上述古典控制(classical control)以單一輸入單一輸出(SISO)的轉移函數與頻域工具為主,適合直覺與快速設計。但現代工程系統往往是多輸入多輸出(MIMO)、且有複雜耦合,這時狀態空間(state-space)表示法成為主流。我們把系統寫成一階矩陣微分方程:

$$ \dot{\mathbf{x}} = A\mathbf{x} + B\mathbf{u}, \qquad \mathbf{y} = C\mathbf{x} + D\mathbf{u} $$

其中 $\mathbf{x}$ 是狀態向量(如位置與速度)。系統穩定性此時由矩陣 $A$ 的特徵值(eigenvalues)決定——它們就是極點,全部位於左半平面即穩定。透過狀態回饋(state feedback)$\mathbf{u} = -K\mathbf{x}$,我們能把閉迴路矩陣 $A-BK$ 的特徵值任意放置(只要系統可控 controllable),這稱為極點配置(pole placement),給了設計者遠超 PID 的自由度。

兩個更深的議題值得研究所階段探討。其一是最佳控制(optimal control):與其手動配置極點,不如定義一個成本函數同時懲罰誤差與控制力,

$$ J = \int_0^\infty \left( \mathbf{x}^\top Q \mathbf{x} + \mathbf{u}^\top R \mathbf{u} \right) dt $$

最小化 $J$ 會導出線性二次調節器(LQR),其最佳增益 $K$ 來自求解 Riccati 方程,自動在「追得快」與「省能量」間取得最佳折衷。其二是可觀測性與狀態估測:真實系統往往無法直接量測所有狀態(馬達能量到位置卻量不到速度),此時需要觀測器(observer)或在雜訊下使用 Kalman 濾波器從可量測的輸出重建完整狀態。LQR 加上 Kalman 估測就構成著名的 LQG 控制

最後值得一提的是強健控制(robust control):現實中受控體模型永遠不完美(參數會漂移、有未建模動態)。$H_\infty$ 控制與 $\mu$-合成等方法,明確地把模型不確定性納入設計,保證系統在一整族可能的受控體下都維持穩定與性能。從洗澡調水溫到火星探測車的姿態控制,背後都是同一套思想的延伸——而它的數學深度,足以支撐一輩子的研究。

AI 共讀助教正在陪你讀:為什麼洗澡時調水溫總是來回擺盪?
嗨!我是這篇文章的共讀助教,只根據〈為什麼洗澡時調水溫總是來回擺盪?〉的內容回答。可以問我「解釋某段」「舉個例子」「出題考我」,或反白文中段落後點下方「解釋選取段落」。