基本微控制器的例子特點是「軌內」電壓測量。一個主要的例子是測量可變電阻的輸出。電阻的一端連接到微控制器的 5.0V 電壓軌,另一端接地,電刷被接到微控制器的類比數位轉換器(ADC)接腳。由此產生的電壓以接地和微控制器電壓軌為界。
本文提供了為測量軌外電壓的微控制器選擇電阻的指南。你將學習如何準確地測量這些更高的電壓而不損壞你的微控制器。本文的重點是優化電阻的選擇。
我們的討論僅限於一般小於 30VDC 的直流電壓。交流的考慮超出了這篇短文的範圍。此外,更高電壓的直流測量可能需要額外的安全考慮,這也超出了本文的範圍。
微控制器類比輸入模型
讓我們從微控制器模擬輸入的模型開始。圖 1 提供了 Microchip(Atmel)ATmega4809 的簡化模型。這是 Arduino Nano Every 上的一個熱門微控制器。這個模型的主要組件是樣品和保持電容。在轉換開始之前,取樣訊號必須存在於該電容上。
圖 1 :微控制器類比輸入腳相對於被測外部電壓的簡化模型
技術提示:一個小錯誤就會導致微控制器的毀滅。我們必須特別小心 R1 附近和較高的電源電壓。一個接線或偵測的錯誤可能會無意中將高電壓傳送到微控制器的 I/O 引腳。雖然軌道箝位二極體提供了一小部分保護,但它可能與微控制器本身一起在瞬間被破壞。在極端情況下,較高的電壓將一路行進到相關 PC 機上的 UPS 連接埠。如果幸運的話,它只損壞 PC 機的連接埠。如果你運氣不好,你將需要一台新的 PC。
這個採樣和保持(S/H)要求是各種微控制器結構之間的複雜交互,包括:
-
模擬選擇器 mux 的 操作。從 Arduino 的角度來看,當你區分類比輸入引腳(如 A5 和 A7)時,就會發生這種情況。
-
S/H 電容的大小。 ATmega 4809 在 Control C 特殊功能暫存器中有一個取樣電容選擇(SAMPCAP)位元。根據規格書:「這個位元選擇採樣電容,因此,輸入阻抗。最佳值取決於參考電壓和應用的電氣性能。」
-
內部的貢獻者。這包括與引腳的箝位二極體、電阻和相鄰引腳之間的電容性相互作用等元件相關的洩漏。
我們可以將電容器電壓/穩定性要求視覺化為時間常數,重點是輸入阻抗。其結果就是圖 2 所示的簡化模型。內部微控制器結構已被瞬時開關和 S/H 電容器所取代。 外部電壓源和分壓器被替換為它們的戴維寧(Thévenin )等效電路。
圖 2:微控制器輸入引腳與來源相關的高階模型。
當 ADC 轉換啟動時,瞬時開關將關閉一小段時間。這是 S/H 電容器充電到所需電壓的「取樣相位」。一段時間後,開關打開。這是「保持相位」,電容將保持(取樣)電壓呈現給 ADC。
S/H 時間與源的戴維寧阻抗之間有一定的關係。當我們考慮 \tau = RC 關係時,為了精確測量, R_{Th} 必須提供一個小的時間常數。在這裡,「小」一詞意味著 S/H 電容器將在瞬時開關閉合時的短時間內充滿電。
技術提示:戴維寧等效電路是一個強大的工具,其重要性類似於歐姆定律。它允許一個複雜電路被表徵為一個理想電壓源 (V_{Th}) 和一個串聯電阻 (R_{Th}) 。然後可以使用該模型進行簡化計算。這包括本文中提到的時間常數。
在這一點上,我們將注意力回到 ATmega4809 規格書。我們得到了一些指導方針:
-
ADC 針對來源 R_{Th} 小於10kΩ 進行了最佳化。
-
可以啟動前面提到的 SAMPCAP 位,以將 S/H 電容器的尺寸從 10pF 減少到 5pF。
-
取樣長度(SAMPLEN)控制暫存器可用於增加阻抗較高的來源的保持時間。
綜上所述,這些建議為我們的電阻選擇提供了一個很好的起點。
用於 ADC 縮放的分壓器
為了選擇合適的電阻,我們必須考慮要測量的電壓和戴維寧電阻。
分壓器的定義為:
V_{Out} = V_{In(Max)}\dfrac{R_2}{R_1 + R_2}
其中:
-
V_{Out} 是滿量程微控制器 ADC 輸入電壓。
-
V_{In(Max)} 是要測量的最高電壓,包括任何突波或充電電壓。如果電壓異常高,ADC 將飽和。例如,設定10位元 ADC 來測量 16VDC(最大)訊號,則對於高於 16VDC 的所有電壓,它將飽和並讀取 1023。
分壓器的戴維寧電阻為:
R_{Th} = \dfrac{1}{1/R_1 + 1/R_2}
我們已經簡化了計算,假設分壓器不會明顯地負載源。也許我們可以在另一篇文章中探討源的戴維寧等效電路上的負載。
技術小秘訣:Arduino 的預設 ADC 參考是正電壓軌本身,Arduino Nano Every 的正電壓軌約為 5VDC。為了提高效能,可以透過呼叫 analogReference(internal) 來使用內部 1.1VDC 參考。也可以使用外部參考標準,如 LM4040AIZ-4.1/NOPB。 這些裝置在溫度係數小的情況下具有良好的耐受性。「滿量程」ADC 輸入電壓分別為 5.0、1.1 和 4.096。
電阻的選擇沒有限制;在這種情況下,我們可以選擇 R1 或 R2,然後計算對應的電阻。不幸的是,沒有完美的解決方案。我們能做的最好的是平衡源負載的競爭需求,電池供電電路的分壓器中的能量耗散,需要保持在微控制器 10kΩ 輸入阻抗以下,或者需要延長 ADC 轉換時間以適應高 R_{Th} 。
設計實例
為了說明電阻選擇過程,讓我們設計一個電路來測量與淹水鉛酸電池充電器相關的標稱 12VDC 系統。我們首先確定可能遇到的最高電壓。雖然該系統被稱為「12VDC」,但涓流充電約為 13.8VDC,均衡充電可能高達 14.7VDC(請參閱電池規格書以獲取準確值)。如果我們允許 10% 的開銷,那麼我們將設計為 16VDC(最大)電壓。
將微控制器配置為 4.096VDC 外部參考。
4.096 = 16\dfrac{R_2}{R_1 + R_2}
透過收集變量,我們可以確定 R1 與 R2 的比值:
\dfrac{R_1}{R_2} = 2.906
我們的目標是找到一個盡可能接近這個比率的電阻對,而得到的 R_{Th} 小於 10kΩ。
選擇電阻對本身就是一個引人入勝的議題。在另一篇文章「How to select resistor pairs for op amp and voltage divider applications」介紹了使用 E-24(5%)系列的技術,R1 和 R2 最接近的匹配對分別為 4.7k 和 1.6kΩ,比率為 2.937。使用 E-96(1%),我們可以選擇 8.98kΩ 和 3.09kΩ,以獲得 2.906 的改善比率。
在理想情況下,進入 ADC 的滿量程電壓為:
V_{ADC} = 16.0\dfrac{3.09 k}{3.09 k + 8.98 k} = 4.0961 \ VDC
在實際操作中,仍然存在一個錯誤。可以肯定的是,1% 的電阻改善了這種情況。然而,它們並不完美。考慮每個電阻的可接受值範圍:
8.8902 kΩ < R_1 < 9.0698 kΩ
3.0591 kΩ < R_2 < 3.1209 kΩ
當應用於分壓器時,滿量程(16 VDC輸入)將從 4.0355 到 4.1574VDC 變化。這個 +/-61mV 誤差歸因於所選的電阻公差。這種困境有幾種解決方案,包括使用低容差(高成本)電阻,手動選擇電阻,安裝微調電阻,或在微控制器中應用校準校正。每種解決方案都有其自身的成本和時間損失。然而,這是提高精度不可避免的代價。
系統效能
一個公平的批評是,我們對電阻的選擇過於挑剔。當我們考慮整個系統的性能時,這種挑剔的選擇的原因就顯而易見了。
回想一下,我們原始的 10位元 ADC 及其外部參考電壓被限制為 1023 的滿量程二進位讀數。如果我們正確地選擇了分壓器,那麼當測量電壓達到 16VDC 時就會發生這種情況。結果是系統現在具有大約 16mV 的分辨率(最小可檢測電壓變化)。這是我們所能做的最好的,因為我們已經忠實地取了最大預期電壓,並將其降壓以匹配 ADC 的滿量程輸出。
讓我們考慮一個明顯的反例。假設我們選擇 R1 和 R2,分別使用方便的 10kΩ 到 1kΩ 值。測量電壓需要達到 45.1VDC, ADC 才能達到 1023 的滿量程計數。由於 45.1VDCX 有 1023 步,解析度惡化到 44mV。這是非常不希望的,因為我們不再能夠辨別測量電壓的微小變化。
技術提示:電壓參考值如 1.024、2.048 和 4.096 可能看起來很熟悉,因為電壓與2的冪(Power of Two)相關,如 1,2,4,…,512,1024,2048 和 4096。這些都是方便的值,特別是當使用整數數學時。在我們的範例中,配備 4.096VDC 基準的 10位元 ADC 用於測量 16VDC(最大)訊號。假設我們為分壓器選擇了理想的電阻,每個位元的變化與PO2電壓的變化一致。在這個例子中,每個 ADC 位元代表 1/64 伏特。這可能對你的應用有用,也可能沒用,因為乘法可以使用一系列右移運算子來執行。請注意,當我們使用類型浮點值來縮放這些獨特的電壓參考值時,速度優勢就會流失。
回顧
微控制器可用於測量高於其 5.0 或 3.3VDC 電源軌的電壓,前提是使用適當的分壓器來降低測量的電壓。考慮到測量電壓和 ADC 的電壓基準,正確選擇電阻器可確保微控制器具有最佳可用解析度。上一篇文章有助於選擇合適的電阻器,其中包括一個粗略的 C 程序,可幫助從標準值中找到最佳的可用電阻器對。