电子说
手册如下,INA219 是TI推出的具有I2C 接口的零漂移双向电流/功率监测计,
INA219内部结构图如上,芯片同是支持差分分压电流检测跟总线电压检测,
芯片外部引脚A0、A1引脚,支持支持16路地址设置,同时可挂载16路设备,
INA219操作其实很简单,内部共有六个寄存器,其中需要用户设置的只有两个
Configuration Register 配置寄存器(地址= 00h)[reset = 399Fh
Shunt Voltage Register 分流电压寄存器(地址= 01h)
Bus Voltage Register 总线电压寄存器(地址= 02h)
Power Register 功率寄存器(地址= 03h)[reset = 00h]
Current Register 当前寄存器(地址= 04h)[reset = 00h]
Calibration Register 校准寄存器(地址= 05h)[reset = 00h]
8.6.2.1 Configuration Register,配置寄存器(地址= 00h)[reset = 399Fh]
RST:重置位,将此位设置为“1”会产生与上电复位相同的系统复位。将所有寄存器重置为默认值; 这一点自我清除。
BRNG:总线电压范围,0 = 16V FSR,1 = 32V FSR(默认值)
PG:PGA(仅限分流电压),设置PGA增益和范围。请注意,PGA默认为÷8(320mV范围)。表4显示了各种产品增益设置的增益和范围。
BADC:BADC总线ADC分辨率/平均,这些位调整总线ADC分辨率(9位,10位,11位或12位)或设置总线电压寄存器的平均结果时使用的采样数(02H)。
SADC:SADC分流ADC分辨率/平均,这些位调整分流ADC分辨率(9位,10位,11位或12位)或设置分流电压寄存器的平均结果时使用的采样数(01H)。
BADC(总线)和SADC(分流)ADC分辨率/平均和转换时间设置如表5所示。
MODE:操作模式,选择连续,触发或断电操作模式。这些位默认为连续分流和总线
8.6.3.1 Shunt Voltage Register,分流电压寄存器(地址= 01h)
分流电压寄存器存储当前的分流电压读数VSHUNT。分流电压寄存器位根据配置寄存器(00h)中选择的PGA设置进行移位。当存在多个符号位时,它们将是相同的值。
负数以2的补码格式表示,通过补充绝对值二进制数并加1来得到负数的2的补码。
通过设置MSB = 1来扩展符号,表示负数。将符号扩展到任何其他符号位以形成16位字。
示例:对于值VSHUNT = -320 mV:
1.取绝对值(包括精度到0.01 mV)→320.00
2.将此数字翻译为整数十进制数→32000
3.将其转换为二进制→111 1101 0000 0000
4.补充二进制结果:000 0010 1111 1111
5.在Complement中添加1以创建Two‘s Complement格式化结果→000 0011 0000 0000
6.扩展符号并创建16位字:1000 0011 0000 0000 = 8300h(记住根据PGA设置,根据需要将符号扩展到所有符号位。)
8.6.3.2 Bus Voltage Register,总线电压寄存器(地址= 02h)
总线电压寄存器存储最新的总线电压读数VBUS。
满量程范围= 32 V(十进制= 8000,十六进制= 1F40),LSB = 4 mV。
满量程范围= 16 V(十进制= 4000,十六进制= 0FA0),LSB = 4 mV。
CNVR:转换就绪,虽然可以随时读取上次转换的数据,但INA219转换就绪位(CNVR)指示数据输出寄存器中何时有转换数据。
所有转换,平均和乘法完成后,CNVR位置1。 CNVR将在以下条件下清除:
1.)将新模式写入配置寄存器的工作模式位(掉电或禁用除外)
2.)读取功率寄存器
OVF:数学溢出标志,当功率或电流计算超出范围时,数学溢出标志(OVF)置位。 它表明当前和电力数据可能毫无意义。
8.6.3.3 Power Register,功率寄存器(地址= 03h)[reset = 00h]
满量程范围和LSB由校准寄存器设置。 请参见编程校准寄存器。
功率寄存器通过将电流值乘以总线值来记录功率,单位为瓦特
8.6.3.4 Current Register,当前寄存器(地址= 04h)[reset = 00h]
满量程范围和LSB取决于校准寄存器中输入的值。
有关详细信息,请参阅编程校准寄存器。 负值以2的补码格式存储。
通过将分流电压寄存器中的值乘以校准寄存器中的值,根据公式4计算电流寄存器的值:
8.6.4.1 Calibration Register,校准寄存器(地址= 05h)[reset = 00h]
电流和功率校准由校准寄存器的FS15至FS1位设置。 请注意,在计算中不使用位FS0。
该寄存器设置与分流器上的满量程压降相对应的电流。 满量程范围和电流和功率测量的LSB取决于在该寄存器中输入的值。
请参见编程校准寄存器。 该寄存器适用于整个系统校准。 请注意,0 POR值都是默认值。
FS0是一个空位,始终为0.无法向FS0写入1。 CALIBRATION是存储在FS15:FS1中的值。
接下来我们重点说一下各个寄存器等配置问题,INA219共有六个寄存器,其中只有Configuration跟Calibration需要用户自己配置具体的寄存器为上面已经做了详解。
Configuration配置寄存器
配置寄存器主要配置芯片测量的量程、精度及工作模式,复位值0x399F
PG位用于配置差分模式下,芯片测量差分分压电压的量程,说白了就是把IN+与IN-两引脚间的电压再等分多少分之一
BADC与SADC位同样适用上面的参数,用于设置ADC的采样精度及采样周期,
其中绿框内表示设置不同的精度只采样一次,采样周期不同,红框表示使用12bit精度,采集多少次取平均值,采样周期不同
MODE位用于设置芯片的工作模式,
一般用最后一项,默认差分电压与总线电压都连续采样
Calibration校准寄存器
校准寄存器的设置,要针对芯片外部使用的采样电阻的阻值,通知设置校准寄存器,方便芯片直接计算测量值,用户就可以直接从其余四个寄存器中直接读出测量的数据了
关于校准寄存器的计算,手册中给出了公式,如下所示
此处需要结合配置寄存器中我们设置的BRNG位,即总线电压范围是16V还是32V,下面我们以32V为例,说一下计算过程,参考如下程序
使用的电路如下
第一步
我们先根据测量需要,设定我们的电压测量范围0-32V,以及使用的采样电阻阻值0.05欧姆
并假定IN+与IN-引脚间的最大差分电压为±320mV
第二步
根据N+与IN-引脚间的最大差分电压±320mV,计算出电路中可测量的的最大电流为6.4A计算出
第三步
根据外部电路中可能流过的最大电流,配合Shunt Voltage Register查分分压寄存器的设置,
计算出使用15bit精度时的测量分度196uA,与使用12bit精度时的测量分度1562uA,
这两个数值即我们可以测量的线路中电流是可以达到的最小分度值范围
第四步
从第三步计算的范围中,选取一个比较方便计算,且符合测量要求的数值,即Current_LSB值
一般取比15bit精度时的分度196uA稍大一点的整数,必须我们此处使用的0.0002A(200uA);
此数值也可使用手册中给出的公式2计算得到
第五步
根据手册中给的计算公式1,我们使用即Current_LSB值及我们的外部采样电阻值,
可以计算出Calibration校准寄存器需要设置的数值,即程序中的 ina219_calValue = 4096;
第六步
由我们计算得到的Current_LSB,使用手册中给出的公式5,
我们可以计算的到Power功率寄存器的最小分度值为4mW
此数值与工具寄存器的值相乘及时我们电路中的功率了
第七步
此处主要用于说明几个主要测量值的范围
第八步
根据我们程序中设计的最大电流值及最大电压,计算出可以测量的最大功率值
并给出了此配置下的最小电流分度,ina219_current_LSB_uA = 200; // Current LSB = 200uA per bit
及最小功率分度,ina219_power_LSB_mW = 4; // Power LSB = 4mW per bit = 20 * Current LSB
第九步
根据我们上面的计算,设置我们的Configuration配置寄存器及Calibration校准寄存器
-
全部0条评论
快来发表一下你的评论吧 !