INA219例程

INA219

简介

26V、双向、零漂移、低侧/高侧、I2C 输出电流/功率监控器,可以用来检测电流,电压,功率。

这款芯片有两种封装,这些是引脚定义:

IN+和IN_:分别是接检测分流电阻的两端。

GND:接电源负极

Vs:电源正极(电压范围:3-5.5V)

SCL:通讯时钟线

SDA:通讯数据线

A0和A1:地址选择引脚(接到不一样的地方对应的地址不一样,地址对应表如下图)

电路图:

这是简易的电路图,主要是一个分流电阻的接法,负载是跟分流电阻串联的。

寄存器:

通讯协议使用的是IIC通讯协议。INA219一共有6个寄存器,分别功能为:

00:配置寄存器,主要是用来配置INA219的工作方式和参数    

01:分流电阻电压

02:总线电压

03:功率

04:电流

05:基准值寄存器,用于设置基准值

00寄存器:配置寄存器

bit15:复位位,用于复位整个INA219,将改为设为1则复位。

bit14:保留位

bit13:设置检测最大检测电压    0=16V,1=32V;

bit11,12:设置总线分流电阻最大的电压,后面用于计算最大检测电流。参数如下表(灰色为默认值)

bit7-10:这些位设置总线电压ADC分辨率(9,10,11,或12位)(02寄存器)

bit3-6:这些位调整分路ADC分辨率(9,10,11,或12位)

bit0-2:设置工作模式:(灰色为默认工作模式:连续检测模式)

02寄存器:总线电压寄存器,用于存储检测到当前总线的电压

bit0:转换完成标志位(个人理解)

bit1:溢出标志位:当电流超出设置的功率或电流的范围

bit2:保留位

bit3-15:保持总线电压位。

03寄存器:功率寄存器,用于存储当前检测的消耗功率

04寄存器:电流寄存器,用于存储当前检测的电流

05寄存器:基准值存放寄存器,用于计算功率和电流

基准值的计算:

首先确定硬件参数:R(检测电阻的阻值)=0.1R,设置最大检测电压为:32V,设置电阻电压范围为320mV

I_MAX(最大能检测的电流)=0.32V/0.1R=3.2A

I_LSB_MIN=I_MAX/(2^15)=3.2/32767=97*10^-6

I_LSB_MAX=I_MAX/(2^12)=3.2/4096=0.00078125

I_LSB的选值范围为 I_LSB_MIN和I_LSB_MAX之间,选择靠近I_LSB_MIN

这里选择100*10^-6

I_LSB=100*10^-6=100uA=0.0001A(每位对应的电流大小)

计算基准值:Cal=0.04096/(I_LSB/R)=0.04096/(0.0001A*0.1)=4096=0x1000

当配置时05寄存器的值为:0x1000

计算功率LSB

P_LSB=20*I_LSB=20*0.0001A=0.002W

程序部分:

标准的iic部分我就放出来了 ,只放出操作INA219部分。本人使用的是基于stm32,io模拟iic

操作寄存器部分:

因为INA219寄存器是16为的,但是iic发送一次为8位,所有需要分开发送。

start->发送INA219地址->发送需要操作的寄存器地址->发送高8位->发送低8位->stop

这就是操作寄存器的步骤了。

读取寄存器部分:

同样我们读取也需要分开两次读取。

start->发送INA219地址->发送需读取的寄存器地址->start->发送INA219地址+0x01(让从机知道我需要读取数据)->

读取出高8位->发送应答->读取低8位->不应答->stop

这就是INA219读取寄存器的步骤了。

初始化INA219:

1、先配置00寄存器,参数是根据上面表格和自己所需的工作模式得出的。

2、配置05寄存器,4096为上面计算所得。

就这样INA219就配置完成了 。

获取电压函数(单位:mv):

首先发送0x02寄存器地址,然后读取出16位的数据,因为刚刚也介绍了。0x02寄存器最低三位是有功能的,不是存储转换的电压值,所以我们需要去掉这三位,“data_temp[0]<<8)+data_temp[1]) >> 3”这里先合并高8位和低8位,然后右移三位就去掉了最低三位,最后根据官方文档说明,读出来的数据需要乘以上4MV所以就得到:“(data_temp[0]<<8)+data_temp[1]) >> 3)*4”计算所得出来的就是检测到当前的电压,单位为:mv,需要转换为V就再除以1000就可以了。

获取电流函数(单位:mv):

首先,有时候防止外在原因导致寄存器配置丢失,我们可以重新配置一下0x00寄存器,然后一样,读取书0x04寄存器的值,

合并两位数据,“(data_temp[0]<<8)+data_temp[1])”再乘以0.1MV(0.0001uV)根据上面计算所得,个人理解为,每一位数据对应就是电压0.1mV。然后就得到当前总线的电压。

获得功率函数(单位:mw):

首先,读取书0x04寄存器的值,合并两位数据,再乘以2MV根据上面计算所得。个人理解为,每一位数据对应就是功率2mw。然后就得到当前的功率。

程序源码

这些都是我本人学习INA219的心得。不保证完全正确,如有错误望各位大神们指出。写出来为了方便给各位跟我一样刚学的朋友们一点参考,同时也记录一下我自己的成长,以后忘记了,自己也可以回来看看。

  • 32
    点赞
  • 237
    收藏
    觉得还不错? 一键收藏
  • 102
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明
INA3221是一款用于电流监测和电源管理的芯片,常用于电池管理、充电器监测和电源供电等应用。要下载INA3221的例程,可以按照以下步骤进行操作: 1. 找到INA3221的例程:可以在网上搜索INA3221的例程,常见的地方包括Arduino论坛、GitHub等。在搜索结果中选择合适的例程,确保其适用于你所使用的硬件平台和编程语言。 2. 下载例程:点击相关链接,进入例程的下载页面。根据页面提示,选择合适的下载方式,一般可以选择直接下载ZIP文件或通过Git进行克隆。 3. 解压例程:如果下载的是ZIP文件,将其解压到本地计算机的指定文件夹中。如果使用Git进行克隆,则将克隆的文件保存到本地指定的文件夹中。 4. 打开例程:打开你常用的集成开发环境(IDE),如Arduino IDE,选择“打开”或“导入”项目,然后导航到解压或保存的INA3221例程文件夹,并选择打开该文件夹下的主文件(通常是以.ino为后缀的文件)。 5. 配置硬件连接:根据例程中给出的电路图或者说明,连接INA3221芯片到你的目标硬件平台上。确保连接正确并稳定。 6. 编译和上传:在集成开发环境的界面中,选择对应的硬件平台和端口,然后点击“编译”按钮,该步骤将把你的源代码转换为机器可以执行的二进制文件。编译成功后,点击“上传”按钮将编译后的二进制文件上传到目标硬件平台中。 7. 检查例程输出:在终端或串口监视器中查看INA3221例程的输出结果,确保芯片能够正常运行并提供所需的功能。 通过上述步骤,你应该可以成功地下载、配置和运行INA3221的例程程序。如果遇到任何问题,可以在相关论坛或社区提问,寻求帮助和支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 102
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值