美好的一天! 我计划在我的项目中使用 INA228。 从 VBUS 寄存器读取数据时遇到问题、该值与 VBUS 引脚上的实际电压无关。 使用了多个 IC 来消除硬件错误、但没有任何效果。 所有其他参数均得到正确计算和读取。
参数:
分流电阻- 0.001 Ω;
最大电流-不超过163.84A;
平均数量- 16;
转换时间- 4120us (所有通道相同);
模式-所有通道(HF)连续;
ADC 范围- 163.84mV;
I2C 频率- 400kHz;
DEVICE_ID - 0x2281。
用于 VBUS 的已用代码:
#define INA2228_VBUS_LSB (0.0001953125f)
#define INA2228_x_ADDRESS_x_VBUS (0x05)
uint32_t INA2228_x_VBUS;
空 INA228::ReadBlock (uint8_t regAddress、uint8_t* receiverPtr、uint8_t length)
{
Wire.requestFrom (addresssI2C、length、regAddress、(uint8_t) 1、(uint8_t) true);
对于(uint8_t i = 0;i < length;i++)
{
receiverPtr [i]= Wire.read();
}
}
uint32_t INA228::GetBusVoltage_raw (void)
{
uint8_t data[3]={0};
读取块(INA2228_x_address_x_vBus、data、3);
INA2228_x_VBUS = 0x000FFFFF &(((DATA[0]<< 16)|(DATA[1]<< 8)|(DATA[2]))>> 4);
返回 INA2228_x_VBUS;
}
浮点 INA228::GetBusVoltage_V (空)
{
uint32_t raw = GetBusVoltage_raw ();
返回(浮点)(RAW * INA2228_VBUS_LSB);
}
VSHUNT 的已用代码(例如工作正常):
#define INA2228_x_ADDRESS_x_VSHUNT (0x04)
#define INA222_VSH_LSB_Wide (0.0000003125f)
#define INA222_VSH_LSB_Narrow (0.000000078125f)
typedef 枚举
{
INA2228_ADC_RANGE_Wide = 0、
INA2228_ADC_RANGE_Narrow = 1、
} INA2228_ADC_RANGE_t;
uint8_t adcRange = INA2228_ADC_RANGE_Wide;
uint32_t INA2228_x_VSHUNT;
uint32_t INA228::GetShuntVoltage_raw (void)
{
uint8_t data[3]={0};
读取块(INA2228_x_address_x_VSHUNT、data、3);
INA228_x_VSHUNT = 0x000FFFFF &(((DATA[0]<< 16)|(DATA[1]<< 8)|(DATA[2])>> 4);
返回 INA2228_x_VSHUNT;
}
浮点 INA228::GetShuntVoltage_V (空)
{
浮点数= 1.0;
uint32_t raw = GetShuntVoltage_raw ();
如果(原始>> 19)
{
RAW =((~RAW)& 0x000FFFFF)+ 1;
符号=-1.0;
}
IF (adcRange = INA2228_ADC_RANGE_Wide)
返回(浮点)(符号* RAW * INA2228_VSH_LSB_Wide);
其他
返回(浮点)(符号* RAW * INA2228_VSH_LSB_Narrow);
}
VBUS 引脚电压大约为24.4V
09:57:10.557 -->---------------
09:57:10.557 ->测量值: 16位16位... [二进制]
09:57:10.557 ->
09:57:10.557 ->分流电压: [us]= 0.00017438 V 原始[h/l]:0_1000111011
09:57:10.557 ->
09:57:10.557 ->总线电压: ![Ub]= 204.44746398 V RAW [h/l]:111111_1111100011111100
09:57:10.557 ->功率/电流:![Ub]= 24.44157791 V
09:57:10.557 ->
09:57:10.557 ->温度: [T]= 33.95312500 C 原始[h/l]:0_1000011111011
09:57:10.557 ->当前: [i]= 0.17437500A 原始[h/l]:0_1000111100
09:57:10.557 ->电源: [P]= 4.26200008 W 原始[h/l]:0_1000001111001
09:57:10.557 ->能源: [E]= 4.25600004 J 原始[h/l]:0_0_0_100010100
09:57:10.557 ->费用: [C]= 0.17531249 C 原始[h/l]:0_0_0_1001001
VBUS 引脚电压大约为20.2V (相同负载)
10:00:35.521->-----------------
10:00:35.521 ->测量值: 16位16位... [二进制]
10:00:35.521 ->
10:00:35.521 ->分流电压: [us]= 0.00007281V 原始[h/l]:0_11101100
10:00:35.521 ->
10:00:35.521 ->总线电压: ![Ub]= 0.22519531 V 原始[h/l]:0_10010011001
10:00:35.521 ->功率/电流:![Ub]= 20.21631050 V
10:00:35.521 ->
10:00:35.521 ->温度: [T]=33.85156250 C 原始[h/l]:0_1000011101110
10:00:35.521 ->电流: [i]= 0.07281250A 原始[h/l]:0_11100110
10:00:35.521 ->电源: [P]= 1.47200012W 原始[h/l]:0_10110101101
10:00:35.521 ->能源: [E]= 1.42400002 J 原始[h/l]:0_0_0_1011100
10:00:35.521 ->充电: [C]= 0.07156250 C 原始[h/l]:0_0_0_11101110