如何使用 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 個腳位,詳細功能如下:
- VCC: 接受 2.7V 至 5.5V 的輸入電壓,用於為模組供電。
- GND: 接地腳,需與電源的地相連接。
- SDA: I²C 介面的序列數據線,用於雙向數據傳輸。
- SCL: I²C 介面的序列時鐘線,用於數據傳輸過程中的同步。
- ALE(Alert): 警報腳,為開漏輸出,需外接拉高電阻。此腳位可用於觸發各種警報或作為轉換完成信號。
- VBUS: 用於測量電源電壓的腳位,可測量高達 36V 的電壓。
- IN-: 與負載相連的腳位,用於放置分流電阻以進行電流感測。
- 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 |
選擇建議:
- 大電流應用: 使用低阻值(如 1mΩ 或 5mΩ)的分流電阻,可減少功率損耗,但需注意測量精度可能會受到影響。
- 小電流應用: 使用較高阻值(如 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 位址,範圍從 0x40 到 0x4F。您可以透過修改 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-,測量電流並與序列監視器中的值進行比對。
-
設定分流器和母線電壓轉換的測量次數
使用setAverage()
設置:- 可以平均的測量次數為:1、4、16、64、128、256、512 或 1024 次。
-
設定分流器和母線電壓的 A/D 轉換時間
使用setConvTime()
設置:- 有 8 個級別可調,範圍從 140 µs 到 8.244 ms。
- 注意:獲取一組分流器和母線電壓數據的時間為轉換時間的 兩倍。
-
設定測量模式
使用setMeasureMode()
設置:- CONTINUOUS:持續測量模式。
- TRIGGERED:按需測量模式(在下一個範例中解釋)。
- POWER_DOWN:關閉 INA226,但建議使用更方便的
powerDown()
函數(在後面解釋)。
-
僅測量分流器或母線電壓
INA226 實際上支持僅測量分流器或母線電壓,但在此庫中未實現。使用該庫時,測量結果僅以成對的形式提供。 -
設定電流範圍
使用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 的介面,我們可以大幅提升在電子系統中監控與管理電力的能力。
發佈留言
很抱歉,必須登入網站才能發佈留言。