主题中讨论的其他器件: INA190
您好!
我有 INA220。 我需要读取电流。
因此我的分流电阻器为:02R
读取并联寄存器为:1766十进制
我的测量电流为:0、022mA
INA220处于默认设置:
配置= 0x399F
我的问题是:如何将1766dec 转换为 mA? 我尝试了所有操作、但我不知道我的计算失败的原因。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我修改了我的代码。 现在、我在这里:
包含信息的计算:
// VBUS_MAX = 16V (假设32V、也可以设置为16V) // VSHUNT_MAX = 0.04 (假设增益为1、40mV、也可以是0.32 0.16、0.08、0.04) // RSHUNT = 0.2 (电阻值、单位为欧姆) // 1. 确定可能的最大电流 // MaxPosible_I = VSHUNT_MAX / RSHUNT // MaxPosible_I = 0、2A // 2。 确定最大预期电流 // MaxExpected_i = 0.2A // 3. 计算 LSB 的可能范围(最小值= 15位、最大值= 12位) // MinimumLSB = MaxExpected_I/32767 // MinimumLSB = 0.0000061 (每位6.1uA) // MaximumLSB = MaxExpected_I/4096 // MaximumLSB = 0.000048(每位48uA) // 4. 在最小值和最大值之间选择一个 LSB //(最好是接近 MinLSB 的圆形数字) // CurrentLSB = 0.00005 (每位50uA) // 5。 计算校准寄存 器// Cal = trunc (0.04096/(Current_LSB * RSHUNT))// Cal = 2048 (0x1000) INA220_calValue = 4096;//十六进制:0x1000 // 6。 计算功率 LSB // PowerLSB = 20 * CurrentLSB // PowerLSB = 0.001 (每位2mW) // 7。 计算溢出前的最大电流和分流电压值 // // Max_current = Current_LSB * 32767 // Max_current = 1.63835A before overflow // // If Max_current > Max_Possible_I then // Max_Current_Overflow = MaxPosible_I // else // Max_Current_Overflow = 0.2 // Max_Current_Overflow = 0.2/RST_Voltage/IF Overflow = Max_Overshunt_Overflow / Max_Overshum_Overflow = 0.2 // // Max_ShuntVoltage = 0.04V // If Max_ShuntVoltage >= VSHUNT_MAX // Max_ShuntVoltage_Bee_Overflow = VSHUNT_MAX // else // Max_ShuntVoltage_Before_Overflow = Max_ShuntVoltage // End If // Max_ShuntVoltage_Bee_Overflow = 0.04V // 计算最大功率 //最大功率= Max_Current_Before_Overflow * VBUS_MAX //最大功率= 0.2 * 16V //最大功率= 3.2W //设置用于转换原始电流/功率值的乘法 器// INA220_currentDivider_mA = 20;//电流 LSB = 50uA 每位(1000/50 = 20mW/ INA220_mW/分频器) //功率 LSB = 1mW/位
这里是我的调用函数:
if (INA220_SetCalibrateRegister (I2Cbus_INA220、INA220_address、0x1000)< 0) { //失败写入 }
//范围16V;范围40mV;12位;12位,连续模式 IF (0!= INA220__init (I2Cbus_INA220、INA220_address、AUBOARD_BSP_invert_INA220_beler, 0x19F)) { //失败写入 }
每个人都能验证我的计算结果吗?
我在计算中出错了:
我重复了以下内容:
我使用 INA220测量最大 I:1、6A
使用万用表进行实际测量:
I REAL 测量:88mA
测量 Vshunt 上的电压:17、66mV
和我的计算:
// VBUS_MAX = 32V (假设为32V。 也可以设置为16V) // VSHUNT_MAX = 0.32 (假设增益为1。 40mV。 也可以是0.32 0.16。 0.08) // RSHUNT = 0.2 (电阻值、单位为欧姆) // 1. 确定可能的最大电流 // MaxPosible_I = VSHUNT_MAX / RSHUNT // MaxPosible_I = 1.6A // 2. 确定最大预期电流 // MaxExpected_i = 0.15A // 3. 计算可能的 LSB 范围(最小值= 15位。 MAX = 12位) // MinimumLSB = MaxExpected_I/32767 // MinimumLSB = 0.0000046 (每位4.6uA) // MaximumLSB = MaxExpected_I/4096 // MaximumLSB = 0.000036 (36uA /位) // 4. 在最小值和最大值之间选择一个 LSB //(最好是接近 MinLSB 的圆形数字) // CurrentLSB = 0.00005 (每位50uA) // 5。 计算校准寄存 器// Cal = trunc (0.04096 /(Current_LSB * RSHUNT))// Cal = 4096 (0x1000) INA220_calValue = 4096;//十六进制:0x1000 // 6。 计算功率 LSB // PowerLSB = 20 * CurrentLSB // PowerLSB = 0.001 (1mW/位) // 7。 计算溢出前的最大电流和分流电压值 // // Max_current = Current_LSB * 32767 // Max_current = 1.63835A before overflow // // If Max_current > Max_Possible_I then // Max_Current_Overflow = MaxPosible_I // else // Max_Current_Overflow = 0.2 // Max_Current_Overflow = 0.2/RST_Voltage/IF Overflow = Max_Overshunt_Overflow / Max_Overshum_Overflow = 0.2 // // Max_ShuntVoltage = 0.32767V // 如果 Max_ShuntVoltage >= VSHUNT_MAX // Max_ShuntVoltage_Before_Overflow = VSHUNT_MAX // else // Max_ShuntVoltage_Before_Overflow = Max_ShuntVoltage // End If // Max_ShuntVoltage_Before_Overflow = 0.04V // 计算最大功率 //最大功率= Max_Current_Before_Overflow * VBUS_MAX //最大功率= 1.6 * 32V //最大功率= 51W //设置用于转换原始电流/功率值的乘法 器// INA220_currentDivider_mA = 0.2;//电流 LSB = 50uA 每位(1000/50 = 20mW/ INA220_mW/分频器) //功率 LSB = 1mW/位
现在、当我设置时:
INA220 -配置寄存器:0x399f (默认值)
INA220 - 校准寄存器:0x1000
电流寄存器中的值为88mA。 但我计算得出的电流分压器= 20
// INA220_currentDivider_mA = 0.2;//电流 LSB =每位50uA (1000/50 = 20