您好、专家!
我尝试从 INA219器件读取电流。 我已成功读取总线电压、表明 I2C 驱动器工作正常。 但是、当我读取电流时、接收到的值大约比预期高2.2倍(我通过与 Fluke 测量进行比较来验证了这一点)。 根据 Fluke 的测量结果、我正在使用的电流大约400 -500 mA、因此这种差异很明显。
以下是我设置的默认值:
#define INA219_SHUNT_RESISTOR_Ohm 0.004f #define INA219_CURRENT_LSB_A 0.0004f #define INA219_CALIB_VALUE (((uint16_t)(0.04096f / (INA219_CURRENT_LSB_mA * INA219_SHUNT_RESISTOR_Ohm))) << 1) #define INA219_POWER_LSB_W (INA219_CURRENT_LSB_A * 20.0f)
寄存器值为:
0x00 | 配置 | 0x0443 | 增益= 1;范围= 40mV、BADC = 1 (总线过采样)、SADC = 1 (分流过采样)、分流和总线、触发 |
0x05 | 校准 | 0xC800 |
ina219.bus_voltage = (float)(bus_voltage_raw >> 3) * 4.0; // mV ina219.shunt_voltage = (float)((int16_t)shunt_voltage_raw) / 100.0; // mV ina219.current = (float)current_raw * INA219_CURRENT_LSB_A * 1000.0; // mA ina219.power = (float)power_raw * INA219_POWER_LSB_W * 1000.0; // mW
您能帮我确认一下错误吗? 我已经检查了自己多次,没有找到它。
提前感谢您、
Genadi.