在这里插入图片描述

INA219可以作为功率计使用。
可以采集电压,和电流值,并且内置一个乘法器,所以能得到功率

供电3.3-5V
电压采集范围0-26V
电流最大值为40ma,可以使PGA设置为1/2,以采到80ma的电流值

在这里插入图片描述
在这里插入图片描述
将Rshunt电阻串联在电源高端,通过采集Vin+和Vin-的区间来得到电流值。并且通过得到Vin-到GND之间的电压值来测量负载俩端的电压。

芯片通过IIC通信,还有俩个地址位 A0 和A1决定了器件地址
在这里插入图片描述
下面是寄存器的细节部分
在这里插入图片描述
从这里能看到INA219一共是6个寄存器,第一个和最后一个是配置寄存器,并且都是32位的
1-4分别是可以读取四个参数,分别是电压,母线电压,功率,和电流

在这里插入图片描述
其实接下来就是寄存器5和如何计算电流了
我们可以看到这个公式

在这里插入图片描述
根据式1计算校准寄存器。这个方程包括术语Current_LSB,它是当前寄存器(04h)的LSB的编程值。用户使用此值转换当前寄存器(04h)到实际电流(安培)的值。电流的最高分辨率寄存器(04h)可以通过使用允许的最小Current_LSB来获得,Current_LSB基于期望的最大值如公式2所示。虽然这个值可以产生最高的分辨率,但是通常要选择一个值将Current_LSB设置为高于此值的最接近的整数,以简化当前寄存器的转换
(04h)和功率寄存器(03h)分别到安培和瓦。RSHUNT项是外部的值用于在输入引脚之间产生差动电压的分路器。电源寄存器(03h)内部设置为是程序Current_LSB的20倍见方程3。

其实就是我们在计算电流值的时候,我们需要知道你外部的串联电阻到底是多大,我们需要寄存器5去帮助我们校准,我们需要将校准值发送给寄存器5。

公式计算如下
在这里插入图片描述
分别来介绍
Trunc是取整函数
Current_LSB是电流最小分辨率,是最大的期望电流值除以2的15次方
其实这个电流的分辨率的含义就是每bit代表的电流是多大
期望值就是我们在config寄存器设置的最大值
从arduino库中看到这么一段
在这里插入图片描述
没有在芯片手册上面找到,是谈到了LSB的这个位是2的12次方到15,所以可以得到一个最大分辨率和一个最小分辨率,我们在其中选一个合适的值就可以了,他在这里选了个0.0001

在这里插入图片描述
Rshunt代表的是串联外部电阻的值

即在得到上述参数之后,我们就可以计算出CAL的值
所以我们在一开始只需要将其发给寄存器5就完事了。
在此之后我们需要将config寄存器设置成某些值,符合实际电路的配置即可。具体可参考PDF19-21页

至此我们就完成了初始化的工作,接下来我们只需要读取寄存器1234就可以得到自己想要的值(在datasheet里功率那边的计算有点奇怪?没太看懂,但是在datasheet较前面的介绍中说道,功率的值就是将电压值和电流值进入一个乘法器得到,个人认为如果搞不懂的话,直接单片机里面乘一下也不费事。)

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐