ESP8266使用INA226

芯片特性

  1. 测量电压范围:0~36V
  2. INA226最大采集稳定分流电压:81.92mV
  3. 测量电流范围取决于分压电阻的阻值和最大分压电压。一般来说,分压电阻越小,测量电流范围越大。例如,使用0.1R的分压电阻时,最大测量电流为817.2mA
  4. 默认分流电阻5mΩ,可采集的最大电流:81.92mV/5mΩ = 16.384A
  5. 芯片工作电压:2.7V~5.5V
  6. 默认IIC地址:0x40

工作原理

INA在工作中进行两次测量:分流电压和总线电压,然后根据校准寄存器值将这些测量值转换为电流,计算功率。
INA226是一款高精度的电流和电压监测器,它可以测量VBUS和VIN之间的电压差(Vsense)。
VBUS引脚是用来测量总线电压的,可以接到0~36V的范围内。
VIN+和VIN-引脚是用来测量分流电阻两端的电压的,它们之间的电压差不能超过±81.92mV
VBUS引脚接到VIN+或者VIN-都可以工作,但是接到VIN-会更准确一些,因为这样可以消除分流电阻两端的共模干扰。

Alert Pin

INA226有一个报警限值寄存器(07h),允许对报警引脚进行编程,Alert引脚为开漏输出,使用时需要接上拉电阻。可用5种报警功能种的任意一个:

  1. Shunt Voltage Over-Limit (SOL)
  2. Shunt Voltage Under-Limit (SUL)
  3. Bus Voltage Over-Limit (BOL)
  4. Bus Voltage Under-Limit (BUL)
  5. Power Over-Limit (POL)

INA226与INA219的区别

  1. INA226是一款高精度电流、电压和功率监测器,而INA219是一款高侧电流/功率检测器。
  2. INA226的总线电压范围036V,INA219的范围为026V
  3. INA226内置了一个2毫欧的电流检测电阻,而INA219需要外接一个电流检测电阻。
  4. INA226具有多达16个可编程地址,而INA219只有4个可编程地址。
  5. INA226的精度和分辨率都比INA219高

测试程序

//INA226库: https://github.com/RobTillaart/INA226

#include "INA226.h"
#include "Wire.h"

INA226 INA(0x40);                             //I2C地址
//INA226 INA(0x44);

//电压电流采样
void VA(){
  float V = INA.getBusVoltage();              //VBUS电压V
  float mA = INA.getCurrent_mA();             //采样电阻电流mA
  float mW = INA.getPower_mW();               //功率
  float mV = INA.getShuntVoltage_mV();        //采样电阻分压             
  Serial.print( V);  Serial.print(" V  \t");
  Serial.print(mA);  Serial.print(" mA \t");
  Serial.print(mW);  Serial.print(" mW \t");
  Serial.print(mV);  Serial.print(" mV \t");
  Serial.println();  
}

//电压电流采样2
void VA2(){
  float V = INA.getBusVoltage();              //VBUS电压V
  float mV = INA.getShuntVoltage_mV();        //采样电阻分压 
  float A = mV/5;                             //采样电阻分压/采样电阻值 = 电流
  Serial.print( V);  Serial.print(" V  \t");
  Serial.print(mV);  Serial.print(" mV \t");
  Serial.print( A, 4);  Serial.print(" A  \t");
  Serial.println();  
}


void setup(){
  Serial.begin(115200);
  Wire.begin();
  INA.setMaxCurrentShunt(8, 0.01);  //最大电流A,分流电阻值R
}

void loop(){
  VA2();
  delay(1000);
}

### 使用 ESP8266INA226 实现电流监测 为了在 ESP8266使用 INA226 传感器,可以利用 I²C 接口来连接这两个设备。ESP-IDF Components 提供了一个强大且全面的开源库,专为 Espressif 芯片设计,这有助于简化开发流程并增强设备的功能[^2]。 #### 连接硬件 首先需要将 INA226 的 SDA 和 SCL 引脚分别接到 ESP8266 的 GPIO0 (SDA) 和 GPIO2 (SCL),同时确保 VCC 和 GND 正确连接至电源端子。 #### 安装必要的库文件 对于 Arduino IDE 用户来说,在安装好 ESP8266 支持包之后还需要额外引入 Adafruit 的 INA226 库以便于操作此款电力监控模块[^1]。 #### 初始化代码设置 下面是一份简单的初始化程序用于配置通信参数以及读取电压数据: ```cpp #include <Wire.h> #include "Adafruit_INA226.h" // 创建一个新的 INA226 对象实例 Adafruit_INA226 ina226; void setup() { Serial.begin(9600); // 开始 I2C 总线通讯 Wire.begin(); if (!ina226.begin()) { Serial.println("Failed to find INA226 chip"); while (true); // 停留在这里如果失败的话 } } void loop() { float shuntvoltage = 0; float busvoltage = 0; float current_mA = 0; float loadvoltage = 0; shuntvoltage = ina226.getShuntVoltage_mV(); busvoltage = ina226.getBusVoltage_V(); current_mA = ina226.getCurrent_mA(); loadvoltage = busvoltage + (shuntvoltage / 1000); Serial.print("Bus Voltage: "); Serial.print(busvoltage); Serial.println(" V"); Serial.print("Shunt Voltage: "); Serial.print(shuntvoltage); Serial.println(" mV"); Serial.print("Load Voltage: "); Serial.print(loadvoltage); Serial.println(" V"); Serial.print("Current: "); Serial.print(current_mA); Serial.println(" mA"); delay(500); } ``` 这段代码展示了如何通过 I²C 协议与 INA226 设备交互,并获取其测量得到的各种电气量值。注意这里的 `getShuntVoltage_mV()` 函数返回的是分流电阻上的压降;`getBusVoltage_V()` 返回负载两端的实际工作电压;而 `getCurrent_mA()` 则直接给出了流经电路中的瞬时电流大小。
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值