訊號鏈搭好了——現在讓它說實話
在這一整階裡,你組起了一整套類比前端。一個換能器把世界的某個片段變成電壓;一座惠斯登電橋把一個微小的電阻變化從藏身處揪出來;一顆儀表放大器把那個微小的差動訊號乾淨地抬起;上一篇則把它縮放、平移電平、做了抗混疊濾波,交給 ADC 一條整潔的波形。訊號調理到此完成。剩下的是初學者會跳過的部分——也是把「一個數字」和「一次量測」區分開來的部分:讓那個讀數真的代表關於真實世界的某件真事。
底下這一切,由這個框架來整理。沿著整條訊號鏈,ADC 的位元數是你買得到的最便宜、最容易的精度——你只要挑一顆位元數夠多的零件就好。難的、昂貴的、無法再壓縮的精度住在上游,住在感測器與它的調理電路裡。轉換器之前的每一級,都早已把自己的誤差蓋印在訊號上,而下游再多的位元也擦不掉那個印章。
線性度:大自然真正給你的曲線
夢幻感測器是一條直線:輸入加倍,輸出加倍。真實的換能器各有各的彎曲形狀。白金電阻溫度感測器(RTD)在很寬的範圍內漂亮地近乎線性;熱電偶則是溫和地彎曲,它每度的電壓會隨溫度漂移;熱敏電阻則高度非線性——近似指數,靈敏度極高,但只在一個窄窗裡。線性度衡量的,就是輸出有多忠實地貼著一條直線,而它是物理的性質,不是你能用放大消掉的東西。
面對一條曲線,你有三種誠實的辦法。把範圍縮小,讓其中一小段弧看起來是直的——這正是規格書上「在 0 到 50 degC 間呈線性」的真實意思。或者用數學替曲線建模——一個多項式,或已知的物理方程式(熱敏電阻用 Steinhart-Hart、熱電偶或 RTD 用標準對照表)。或者在微控制器裡存一張查找表。注意這個規律:類比前端幾乎從不試圖把曲線扳回去。你準確地把彎曲的訊號數位化,然後在軟體裡把它拉直,因為在那裡扳彎不花一毛錢。
校準:把電壓綁回真實世界
線性度給你直線的形狀;校準給你它的兩個錨點——它實際落在哪裡。有兩種系統誤差要釘住。偏移(offset)是整條線上下平移,於是零輸入讀不出零(想想儀表放大器的輸入偏移電壓,或荷重元自身的重量)。增益(gain),又叫量程(span),則是斜率不對。一點校準只修偏移——那正是廚房秤上「扣重(tare)」做的事。兩點校準則藉由量兩個已知的參考點、解出穿過它們的直線,把兩者一起修好。
- 卸下所有負載,讀出原始輸出。那是你的零點——比方說系統在 0.00 kg 時讀到 Vzero = 0.20 V。
- 放上一個已知、接近滿刻度的參考質量,再讀一次——比方說在恰好 50.00 kg 時讀到 Vfull = 4.20 V。
- 算出量程:span = (Vfull - Vzero) / mass = (4.20 - 0.20) / 50 = 每 kg 0.080 V。
- 從此以後,把任何讀數換算:mass = (V - Vzero) / span = (V - 0.20) / 0.080。於是 2.20 V 的讀數代表 (2.20 - 0.20) / 0.080 = 25.0 kg。
- 記下當下的條件——溫度、電源電壓——因為這次校準只在它們附近有效。感測器會隨溫度與老化漂移,所以要排定重新校準。
要弄清楚校準能做什麼、不能做什麼。它消除系統性、可重複的誤差——那個穩定的偏移與錯誤的斜率。它對隨機雜訊毫無作用(只有平均能把那壓下去),它也不修非線性(只有更多校準點或一個曲線模型才行)。而校準本身會過期:熱係數與緩慢老化會在數週數月間把零點與量程一點點帶偏。這正是真實儀器標著「校準有效期限」的全部原因——你今天錨定的真相,會慢慢鬆脫漂走。
比例式量測:抵銷你控制不了的東西
這裡有一個比多一位元 ADC 更值錢的招數。一座惠斯登電橋輸出的不是固定的電壓——它輸出的是激勵電壓的一個比例。一個 2 mV/V 的荷重元,每一伏激勵就給 2 mV:在 5 V 激勵下,滿刻度是 10 mV。但若激勵電源垂落到 4.9 V,輸出就自己掉到 9.8 mV。對一顆配著固定參考電壓的 ADC 而言,那 2 percent 的垂落和重量真的變了 2 percent 是分不出來的——你資料裡一個徹頭徹尾的謊言。
解法美得簡單:把激勵電橋的同一個電壓,餵進 ADC 的參考輸入。ADC 回報的是輸入除以參考,所以它現在回報的是一個純粹的比值。隨激勵漂去它愛去的地方吧——分子與分母一起移動,比值毫髮無傷。這就是比例式量測,也是為什麼橋式感測器與它的轉換器會被設計成共用一個電源:你讓讀數對著那個你偏偏穩不住的東西,完全免疫。
注意這替你免費換來什麼。比例式接法放寬了對你激勵與參考電壓的規格要求:你不再需要一個超穩定、昂貴的電壓源,只要一個還算安靜的就行——因為緩慢的漂移現在會抵銷掉(不過共用軌上快速的雜訊仍會一路跟過去,所以它還是得乾淨)。這是一次靠「你怎麼接零件」賺到、而非「你花錢買更好的零件」買到的精度升級。又一次,技巧勝過矽。
4-20 mA 電流迴路:能熬過長電線的類比訊號
現在來個不同的問題:把一個類比讀數送過嘈雜工廠裡的 200 公尺。電壓是錯的信差——它在電線的電阻上垂落、又沿途撿拾干擾,所以抵達時是錯的。經典的答案是改用電流來編碼這個值。在單一的串聯迴路裡,電流沿途每一點都一模一樣(克希荷夫電流定律),無論電線多長多細,所以接收端讀到的,正是發射端送出的。這就是4-20 mA 電流迴路,工業感測的主力馬。
THE 4-20 mA CURRENT LOOP (transmitter -> long wire -> receiver)
------------------------------------------------------------------
+24V --+
|
[ TRANSMITTER ] sensor + conditioning SET the loop current
|
| I = 4..20 mA (one series loop: same I at EVERY point)
|
( long 2-wire cable -- its resistance does NOT change I )
|
[ Rsense = 250 ohm ] turns the current into a voltage for the ADC
|
GND
------------------------------------------------------------------
live zero : 4 mA = 0% 20 mA = 100% 0 mA = broken wire (FAULT)
at Rsense : 4 mA -> 1.0 V 12 mA -> 3.0 V 20 mA -> 5.0 V
decode : value% = (I_mA - 4) / 16 x 100為什麼零對應到 4 mA、而不是 0?這就是優雅的「活零點(live zero)」。因為即使是真正的零讀數,仍帶著 4 mA,電線裡永遠有電流在流——所以恰好 0 mA 的讀數只可能代表電纜斷了或發射端死了,那是一個你能偵測出來、而不會誤認成真零點的故障。解碼不過又是那條校準直線:value percent = (I - 4) / 16 times 100,於是 12 mA 讀作 50 percent。許多發射端是兩線式的,從迴路自取電力,這逼得它們得靠不到 4 mA 過活——而接收端的工作,不過是讓自己的迴路負擔保持低、並把那顆感測電阻上的電壓數位化。
精度真正住在哪裡
現在來到這一階誠實的重點。靠買一顆更花俏的轉換器去追精度,是很誘人的。但一顆樸素的 16 位元 ADC 已經給你 2^16 = 65536 個階——解析度約 0.0015 percent。把同一顆轉換器擺在一個公差為正負 1 percent 的感測器後面,再加上會貢獻自己偏移、增益誤差與漂移的調理電路,你的量測就是正負 1 percent。那些多出來的位元,是在以精緻的細節解析雜訊與你自己的誤差;它們並不是在解析真相。
把精度想成一份把每一級誤差都加總起來的預算:感測器的公差與非線性、儀表放大器的偏移、漂移與有限的共模拒斥比、你縮放電路裡電阻的公差、參考電壓的漂移,最後才是 ADC 自身的有效位元數(一旦把它自己的雜訊算進去,永遠少於型錄標稱)以及整個前端的訊雜比。把這些平方相加再開根號,那個主導項幾乎總是坐在遠遠的上游,在感測器與它的類比調理裡——早在轉換器有機會投票之前。