你(们)好
我正在通过Nfet将12V灯(高达20A)切换至接地。 我有一个0.002欧姆的并联电阻器在负载的低侧,在灯的负极和Nfet的排卸之间。 Nfet具有非常低的RDS-ON,因此对于所有目的和目的,当灯亮起时,引脚Vin-处于接地或0V。
我正在使用用于Arduino的Adafruit_INA219库。 稍微修改以返回老虎而不是浮点。 readRegister() 函数返回一个intiger,因为我的LSB = 1mA返回的intiger应该是我的电流消耗(以mA为单位)。
以1.8A的抽取,我会得到相当于小数1.8万的结果,但我得到152。 如果两个灯并联,我得到的电流为3.2安培,而三个灯的电流为4.8A,我得到的读数为456。 标度是准确的,因为安培数加倍,读数加倍,但我期望返回值以毫安为单位,所以我不知道为什么返回值这么低。
当灯熄灭时,并联电阻器处的电压是总线电压,即与高压侧相同,返回的电压完全为1.2756万 (12.756V),因此我知道我的I2C工作正常。
我正在使用相同的库和函数调用,但使用不同的IC和配置设置来测量太阳能电池板的电流为电池充电,它工作正常。 但是,分流电阻器位于高压侧,即调节器输出和蓄电池+之间。
您是否认为分流器位于低侧导致了问题?
计算和设置如下:
VSHUNT_MAX = 0.04 ...... (20A * 0.002欧姆= 0.04V)
MINIMAL_LSB = 20A/3.2767万 = 0.0.061万
舍入后,我选择我的Current_LSB为1mA或0.001
//calValue =.0.4096万/(0.001 * 0.002)= 2.048万
INA219_currentDivider_mA = 1;//当前LSB = 1mA /位
我的配置设置如下所示:
calValue = 2.048万;
WireWriteRegister (INA219_REG_CALIBRATION,INA219_calValue);
UINT16_t config = INA219_CONFIG_BVOLTAGERANGE_16V |
INA219_CONFIG_GAIN_1_40mV |
INA219_CONFIG_BADCRES_12位|
INA219_CONFIG_SADCRES_12bit_1S_532US |
INA219_CONFIG_MODE_SVOLT_CONTINUIAL; //仅读取灯泡的并联电压,我对总线电压不感兴趣。
WirWriteRegister (INA219_REG_config,config);