如何使用 INA226 直流電流感測器與 Arduino 配合使用

如何使用 INA226 直流電流感測器與 Arduino 配合使用

使用 INA226 直流電流感測器與 Arduino 搭配的完整教學

在這篇教學中,我們將學習如何將 INA226 直流電流感測模組與 Arduino 進行介接。INA226 和它的前身 INA219 一樣,是一款可以測量電流、電壓和功率的設備。然而,它具有更擴展的量測範圍,能夠測量高達 36V 的電壓和最大 20A 的電流。因此,您可以利用這款感測器製作直流能量計專案、12V 電池監控系統專案,或是太陽能板監控系統專案。

INA226 是由德州儀器 (Texas Instruments) 推出的分流和總線電壓監控器。它提供了集成的零漂移雙向介面,能夠監測分流電壓、總線電壓、電流和功率。INA226 透過 I2C 介面與微控制器進行通訊,使數據傳輸和解釋變得更加簡單。

INA226 的一個獨特功能是它可以配置的平均與轉換時間,適用於分流電壓和總線電壓的測量。這為各種應用和系統需求提供了優化設備的方式。此外,它還包含可編程的閾值和警報功能,這可以用來進行系統級的優化,例如節能和事件驅動的中斷編程。

INA226 直流電流感測模組具有多樣性,廣泛應用於伺服器電源管理、電信、電源設備和電池管理系統等領域。本質上,任何需要高精度、具成本效益的功率和電流監測的系統,都可以從這款模組中獲益。

材料清單

要將 INA226 直流電流感測模組與 Arduino 進行介接,我們需要以下元件。您可以從提供的連結購買這些元件:

INA226 是一款由德州儀器 (Texas Instruments) 開發的先進高端電流分流與功率監控 IC。它透過 I2C 或 SMBus 相容的介面運作,能與微控制器進行直接的數位通訊。相較於 INA219,INA226 提供了更高的準確性、更廣的電壓與電流範圍,以及內建數學運算功能,可直接以瓦特 (W) 為單位報告功率。

下載 INA226 資料表:INA226 資料表

INA226 板路圖與電路圖

INA226 模組由 INA226 晶片、一些電阻以及一顆電容組成,電容的作用是減少雜訊或不必要的電信號。

INA226 的功能與規格

  • 工作電壓(2.7 – 5.5V): INA226 的工作電壓範圍為 2.7 至 5.5 伏特,讓其能與不同電壓等級的系統相容,適用於多樣化的電路設計需求。
  • 總線電壓範圍(0 – 36V): INA226 可監測高達 36 伏特的電源供應,拓展其在各種電源管理應用中的適用性。
  • 電流感測範圍(±500mA 至 ±50A): 根據分流電阻的數值,INA226 可監測廣泛的電流範圍,適用於電源管理、電池充電器和直流馬達控制等應用。
  • 功耗:
    • 連續模式: 0.35 mA
    • 低功耗模式: 2.3 µA
  • 測量模式: 支援連續測量模式或隨需觸發的測量模式(“觸發模式”)。
  • 平均功能: 可選擇對 1、4、64、128、256、512 或 1024 筆測量數據進行平均。
  • A/D 轉換時間: 可調整為 8 級,範圍從 0.14 ms 至 8.2 ms。
  • 高精度: INA226 透過內建的 16 位元 ADC 提供更高的測量精度,確保數據更加準確。
  • 可程式化警報: 配備可程式化的警報腳位,用於檢測閾值違反或數據可用的情況。

INA226 的腳位說明

INA226 感測模組通常具有 8 個腳位,詳細功能如下:

  1. VCC: 接受 2.7V 至 5.5V 的輸入電壓,用於為模組供電。
  2. GND: 接地腳,需與電源的地相連接。
  3. SDA: I²C 介面的序列數據線,用於雙向數據傳輸。
  4. SCL: I²C 介面的序列時鐘線,用於數據傳輸過程中的同步。
  5. ALE(Alert): 警報腳,為開漏輸出,需外接拉高電阻。此腳位可用於觸發各種警報或作為轉換完成信號。
  6. VBUS: 用於測量電源電壓的腳位,可測量高達 36V 的電壓。
  7. IN-: 與負載相連的腳位,用於放置分流電阻以進行電流感測。
  8. IN+: 與電源正極相連的腳位。

這些腳位的功能使得 INA226 感測模組在電壓與電流監測中具備靈活性,適合多種應用場景。

INA226 的最大可測電流並非由晶片本身直接決定,而是取決於所使用的分流電阻值。

INA226 透過測量分流電阻上的電壓降,並利用歐姆定律(I=V/RI = V/R)計算出電流。由於 INA226 的最大分流電壓為 81.92mV(解析度為 2.5µV),因此最大電流取決於分流電阻的阻值。

以下是一個建議分流電阻與對應最大電流的表格:

分流電阻(Rshunt) 最大電流(Imax)
1 mΩ 81.92 A
5 mΩ 16.384 A
10 mΩ 8.192 A
50 mΩ 1.638 A
100 mΩ 0.819 A

選擇建議:

  1. 大電流應用: 使用低阻值(如 1mΩ 或 5mΩ)的分流電阻,可減少功率損耗,但需注意測量精度可能會受到影響。
  2. 小電流應用: 使用較高阻值(如 50mΩ 或 100mΩ)的分流電阻,可提高測量精度,但功率損耗會增加。

透過選擇適當的分流電阻,您可以根據應用需求靈活調整 INA226 的測量範圍與精度。

ADC 解析度

INA226 的總線電壓暫存器為 16 位元有號數,具備每位元 1.25mV 的最小有效位元(LSB)或解析度,支持 ±40.96V 的全量程電壓測量範圍。

INA226 為分流電阻設計的類比輸入,可接受最高 81.92mV 的全量程電壓。當搭配 4mΩ 的分流電阻時,能夠測量高達 ±20.48A 的電流,並且解析度高達 625µA。

  • 總線電壓解析度: 1.25mV
  • 總線電壓範圍: ±40.96V
  • 分流電壓範圍: 最大 81.92mV
  • 電流範圍(搭配 4mΩ 分流電阻): ±20.48A
  • 電流解析度: 625µA

透過高解析度的 ADC,INA226 能夠提供精確的電壓和電流測量,適用於高精度電源監控與電流管理應用。

I2C 位址
與 INA219 相似,INA226 使用 I2C 通訊協定與微控制器進行通訊。INA226 的預設 I2C 位址為 0x40。此位址可被修改,以便在同一 I2C 匯流排上使用多個 INA226 感測器。

INA226 支援最多 16 種不同的 I2C 位址,範圍從 0x400x4F。您可以透過修改 A0 和 A1 腳位的連接方式來更改 I2C 位址。

暫存器位址與數值計算
INA226 內部有多個暫存器,這些暫存器可透過 I2C 介面訪問。以下是一些主要的暫存器:

配置暫存器(地址 = 00h):
與 INA219 類似,此暫存器用於控制 INA226 的各種功能設定。

分流電壓暫存器(地址 = 01h):
此暫存器保存分流電壓的原始測量值。

分流電壓(V)=分流電壓暫存器值×2.5 μV\text{分流電壓(V)} = \text{分流電壓暫存器值} \times 2.5 \, \mu V

總線電壓暫存器(地址 = 02h):
此暫存器保存總線電壓的原始測量值。

總線電壓(V)=總線電壓暫存器值×1.25 mV\text{總線電壓(V)} = \text{總線電壓暫存器值} \times 1.25 \, mV

功率暫存器(地址 = 03h):
此暫存器保存計算出的功率值。

功率(W)=功率暫存器值×Power_LSB\text{功率(W)} = \text{功率暫存器值} \times \text{Power\_LSB}

電流暫存器(地址 = 04h):
此暫存器保存計算出的電流值。

電流(A)=電流暫存器值×Current_LSB\text{電流(A)} = \text{電流暫存器值} \times \text{Current\_LSB}

校準暫存器(地址 = 05h):
此暫存器用於設定電流和功率計算的校準值。

如何將 INA226 直流電流感測器與 Arduino 搭配使用

現在讓我們來實現 INA226 直流電流感測模組與 Arduino 的介接。硬體連接非常簡單。

以下是一個簡單的連接圖,展示如何將 INA226 電流感測器與 Arduino 進行介接,並同時連接外部負載與電源:

將 INA226 的 VCC、GND、SCL 和 SDA 腳位分別連接到 Arduino 的 5V、GND、A5 和 A4 腳位。
Vin+ 腳位連接到電源,Vin- 腳位連接到負載,如上圖所示。
INA226 感測器還有一個 VBus 腳位,用於測量電源電壓。將 VBus 腳位連接到 Vin- 腳位。

在測試中,我使用 3.7V 和 9V 電池作為電源,並使用直流馬達作為負載。

Vin+ 腳位最多可接受 36V 的輸入電壓。
該裝置的輸入腳位額定電壓為 36V(絕對最大值為 40V),因此請勿供應超過 36V 的電壓。

如果需要測量更高的電流,您可能需要將模組上的分流電阻進行除焊,並替換為上述建議的電阻值。

INA226 Arduino 程式庫
市面上有多種 INA226 的程式庫可供使用。我測試了大部分的程式庫,發現由 Wollewald 提供的程式庫最為準確。

您可以從 GitHub INA226 函式庫 下載該程式庫,或者直接透過 Arduino IDE 的 程式庫管理員 安裝。總共有七個範例程式可用來展示該程式庫的功能。我使用了其中的 連續模式範例。許多功能在所有範例中都有使用,因此只需要解釋一次即可。

原始程式碼/程式
將以下程式碼複製並貼到 Arduino IDE 的編輯器視窗中。在上傳程式碼之前,您可能需要進行一些修改。

程式修改與設置
從此程式碼中,您需要進行一些修改以準確獲得結果。

這一行設定電阻和電流範圍。如果電阻為 5.0 mΩ,電流範圍可達 10A。預設為 100 mΩ,約為 1.3A。

如果 INA226 提供的電流值與校準設備測得的值存在固定的差異,您可以定義一個校正係數。

校正係數 = 從校準設備測得的電流值 / INA226 提供的電流值
您可以將萬用電表串聯連接到 Vin-,測量電流並與序列監視器中的值進行比對。

  1. 設定分流器和母線電壓轉換的測量次數
    使用 setAverage() 設置:

    • 可以平均的測量次數為:1、4、16、64、128、256、512 或 1024 次。
  2. 設定分流器和母線電壓的 A/D 轉換時間
    使用 setConvTime() 設置:

    • 有 8 個級別可調,範圍從 140 µs 到 8.244 ms
    • 注意:獲取一組分流器和母線電壓數據的時間為轉換時間的 兩倍
  3. 設定測量模式
    使用 setMeasureMode() 設置:

    • CONTINUOUS:持續測量模式。
    • TRIGGERED:按需測量模式(在下一個範例中解釋)。
    • POWER_DOWN:關閉 INA226,但建議使用更方便的 powerDown() 函數(在後面解釋)。
  4. 僅測量分流器或母線電壓
    INA226 實際上支持僅測量分流器或母線電壓,但在此庫中未實現。使用該庫時,測量結果僅以成對的形式提供。

  5. 設定電流範圍
    使用 setCurrentRange() 設置:

    • 最大電流可設置為 400 mA 或 800 mA
    • 電流範圍越小,電流和功率的分辨率越高。

這些功能設置能幫助優化 INA226 的性能並滿足不同應用場景的需求。

測試結果
當您將程式碼上傳到 Arduino 開發板後,即可開始測試設置。

首先,將 3.7V 鋰離子電池 連接到 Vin+ 腳位,並將 直流馬達 連接到 Vin- 腳位。直流馬達將開始旋轉。

現在打開序列監視器,您將看到來自 3.7V 電源 的以下結果。

移除 3.7V 電池,然後連接 9V 電池

當相同電路使用 9V 直流電源 測試時,會得到以下結果。

總結來說,INA226 直流電流感測模組 是一款高度多功能且性能卓越的裝置,非常適合需要精確監測功率、電流和電壓的多種應用。相較於前代產品 INA219,其具備更廣的範圍,可測量高達 36V 的電壓20A 的電流

將 INA226 電流感測模組與 Arduino 結合,讓我們能夠以簡單直觀的方式利用其先進功能,成為追求高精度且具成本效益監測解決方案的不可或缺工具。因此,透過掌握 INA226 與 Arduino 的介面,我們可以大幅提升在電子系統中監控與管理電力的能力。

原始英文版本

分享到社群

發佈留言