在工業自動化系統中,4–20 mA 電流環(current loop) 是最常見且最可靠的類比訊號傳輸方式之一。本篇文章透過簡單測試示範,深入解析如何利用 Microchip PIC 微控制器 與 Texas Instruments XTR116,建構一個具備隔離與高精度的 SPI 控制電流環。
同時,我們也將拆解 MIKROE 4–20 mA Click board (MIKROE-1296),理解其電路設計邏輯,幫助工程師將這些關鍵模組直接導入自有 PCB 設計中。
核心重點摘要(Key Takeaways)
- 微控制器可透過 SPI 串列介面,經由隔離鏈驅動 4–20 mA 電流環:
MCU → 數位隔離器 → DAC → XTR116 → 電流輸出 - MIKROE Click board 是一個完整的參考設計,涵蓋:
- 電氣隔離
- 數位轉類比(DAC)
- 電流調變
- 突波與反接保護
- 使用 Fluke 789 進行的桌上型測試表明,迴路電流穩定性在約 ±0.02 mA 以內,同時也能觀察到微小的溫度驅動漂移。
圖 1:使用處理計 Process Meter 來驗證基於微控制器的 4-20 mA 電流環的效能
測試系統架構
本測試系統包含:
- Microchip Curiosity MIKRO 開發板
- PIC16F13145 微控制器
- B&K Precision 直流電源供應器
- Fluke 789 處理計(Process Meter)
PIC 被編程為每 5 秒將迴路電流增加 0.1 mA,用以驗證系統線性與穩定性。
實測結果分析
- 電流誤差維持在 ±0.02 mA
- 溫度變化可觀測:
- 手指觸碰 XTR116 → 約 0.001 mA 漂移
- 升溫可能使誤差接近 0
設計提醒:
我們當然樂於見到誤差接近零。然而,在溫度可能從極寒驟降至酷熱的工業環境中,這一點並非至關重要。作為設計人員,我們要么接受 XTR116 電壓基準的溫度係數,要么選擇使用性能更高的型號,而非只追求室溫下的最佳精度。
MIKROE Click board 訊號流程解析(Signal Path)
-
請務必參考官方原理圖。
-
Analog Devices ADuM1411:四通道數位隔離器,用於在微控制器和工業電流環路之間提供電氣隔離。其中三個隔離器用於 SPI 訊號,包括 SC_NOT、SCK 和 MOSI。
-
Microchip MCP4921:12-bit DAC 將 SPI 訊號轉換為物理電壓,其滿量程為 4.096 VDC,由 XTR116 的電壓基準決定。
-
Texas Instruments XTR116:這是一個 4-20 mA 電流環路發送器。它是一個線性元件,接收電壓並調製環路電流。請注意,我們說的是“調變電流”而不是“提供電流”,因為如前文所述,該發送器不提供環路電流。
-
電流環介面和保護電路包括傳輸電晶體、抑制電容、TVS 和全橋整流器。
SPI 隔離說明
Analog Devices 的 ADuM1411 是一款基於空心變壓器技術的四通道數位隔離器。它提供 kV 級隔離,同時支援 Mbps 訊號傳輸。如圖 2 所示,三個單元的資料從左到右傳輸,一個單元的資料從右到左傳輸。這對於 SPI 訊號來說是一個很好的解決方案。有三個訊號(CS_NOT、SCK 和 MOSI)從微控制器流向該裝置。還有一個 MISO 訊號從裝置流向微控制器。需要注意的是,MISO 連線在本應用中未使用。在 Click 板原理圖中,我們可以看到 Vi_D 接地。
光耦合通常用於將敏感邏輯電路與惡劣的工業環境隔離。然而,這裡我們介紹的是一種獨特的技術。為了理解其原因,讓我們查閱 Analog Devices 的規格書,其中解釋了其優勢,包括高速資料傳輸、減少元件數量和降低功耗。
請注意: ADuM1411 需要兩個電氣隔離的電源。在微控制器側,我們看到 VDD1 和 GND1。在工業迴路側,我們看到 VDD2 和 GND2。
- MCU 電源由系統提供。
- 電流環路的電源由 XTR116 的 5VDC 輸出供應。 DAC 也由此電源供電。
DAC 與 XTR116 皆位於隔離後側,與 MCU 呈浮動關係。兩側不得直接電氣連接,否則隔離將被破壞,從而使敏感的微控制器暴露在惡劣的工業環境中。
圖 2:ADuM1411 的框圖,各部分間採用變壓器耦合
使用 4.096 VDC 基準電壓實現 DAC 精度
Microchip MCP4921 是一款功能強大的單聲道 12-bit DAC。它具有一個 SPI 輸入和一個類比輸出,可在 0 VDC 和施加在接腳 6 的基準電壓之間擺動。
在前文中,我們提到 XTR116 發送器可實現電路集成,從而省去許多必要的元件。這包括 5 VDC 穩壓器和高精度 4.096 VDC 基準。 MCP4921 DAC 的連接完美地展示了這種整合的優勢,因為它利用了 XTR116 的兩個輸出。
請注意: 4.096 VDC 與 12-bit DAC 非常匹配。此基準電壓符合 2 的冪次方要求,相當於每個計數 1 mV。這在微控制器中轉換為乾淨的整數,例如,當 XTR116 輸出 4 mA 電流時,輸出為 800。
演示程式碼
Microchip MCP4921 DAC 的輔助函數包含在列表1 中。這是一段簡單的 Microchip PIC 程式碼,它不使用浮點數。相反,迴路電流的表示形式儲存在變數“current_tenths_mA”中。因此,我們看到的不是浮點值“12.0”,而是整數“120”。圖 3 包含 SPI 訊號的示波器螢幕截圖。這篇相關文章展示如何將 Digilent Analog Discovery 與 Click 開發板連結。
void MCP4921_Write(uint16_t dac_value)
{
uint8_t SPIBufferData[MCP4921_SPI_BUFFER_SIZE];
uint16_t command;
dac_value &= 0x0FFF; // Keep only 12 bits
command = 0x3000 | dac_value; // 1x gain, active output
SPIBufferData[0] = (uint8_t)(command >> 8);
SPIBufferData[1] = (uint8_t)(command & 0xFF);
CS_NOT_SetLow();
SPI1_BufferExchange(SPIBufferData, MCP4921_SPI_BUFFER_SIZE);
CS_NOT_SetHigh();
}
void C420MAT_SetCurrentTenths_mA(uint16_t current_tenths_mA)
{
uint16_t dac_value;
/* 4.0 mA -> current_tenths_mA = 40 -> DAC = 800
* 20.0 mA -> current_tenths_mA = 200 -> DAC = 4000
*/
dac_value = 20 * current_tenths_mA;
if (dac_value >= 800 && dac_value <= 4095) // FIXME: Add error handling code as opposed to silently holding the last known value.
{
MCP4921_Write(dac_value);
}
}
列表 1:用於與 Microchip MCP4921 通訊的函數
圖 3:SPI 訊號的示波器螢幕截圖
延伸應用與設計建議
工業控制系統是探索微控制器設計的重要場域,其中包含兩大學習方向:
- 電路功能
- 隔離設計
本設計展示:
- XTR116 的高整合特性
- ADuM1411 的隔離應用
作為延伸,可研究其他參考設計,例如 MAX14912EVKIT#,其包含主動箝位電路,這將激發你潛在的半導體理論知識。


