Home
Explore Uedu
Student Console
Register as Member/Login
(2) In future presentations of the research findings, in addition to the course project website and public presentations, your real name and personal information will not appear in this research report. If you are interested in the research results, we can provide you with an executive summary after the study is completed.
問卷中心
Teacher Console
Course Setup
Support & Messages
Uptime Data

UeduGPTs

--

Jupyters

0

Local AI

--

CISOSE26 本地 AI UG26
政治大學 AQI 15 29°C

AI Reply Desktop Notifications

Show a desktop notification when the AI TA finishes replying

Chat Message Notifications

Notify me when classmates post messages in the forum

Sound notification

Play an alert sound whenever there is a new notification

控制系統

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

從浴室水溫的來回震盪出發,講透回饋控制、轉移函數、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 共讀助教正在陪你讀:為什麼洗澡時調水溫總是來回擺盪?
嗨!我是這篇文章的共讀助教,只根據〈為什麼洗澡時調水溫總是來回擺盪?〉的內容回答。可以問我「解釋某段」「舉個例子」「出題考我」,或反白文中段落後點下方「解釋選取段落」。