利用 PIC 與 XTR116 實現 SPI 控制 4–20 mA 工業電流環|設計解析與實測

在工業自動化系統中,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#,其包含主動箝位電路,這將激發你潛在的半導體理論知識。