INA230测量电压电流功率

news/2024/11/8 20:55:04/

INA320测量电压电流功率

INA320 可以测量电压电流功率

基本ADC功能
可以测试分流电阻的电流和VBUS的电压
工作电压2.7--5.5V 可以测量电压为0---28V
测量电流是VIN+ VIN-,测量电压是VBUS 对地的电压
VBUS电压寄存器每个单位是1.25mv,最大量程是40.98V,但是这个引脚不能够超过28V
1,如果模式寄存器设置为111也就是连续模式,INA320先转换分流电阻的电压和VBUS的电压,然后将结果转换为分流电阻的电流和
根据cal寄存器计算功率。ADC转换n次后将结果平均值放到对应的寄存器
2,如果模式寄存器设置为 001,010,011也就是触发模式,每次转换后就停下来,
等将结果电压寄存器读了后,再重新写模式寄存器才能够继续AD转换,即使模式不变
除了连续和触发模式,还有power down 模式,不使用的时候关闭可以降低功耗
转换结果放到结果寄存器后,我们就可以读,转换准备标志位就设置为1
转换准备标志寄存器的清除可以由写配置寄存器或者读状态寄存器

功率计算
如果没有数值写到calibration寄存器,calibration寄存器的值为0,分流电阻电流寄存器
值也为0,功率寄存器的值也为0.
(但是我们现在没有写calibration,但是可以读到电压值!!!!和TI沟通!第7页!!!!!!!)
ADC转换的电压电流结果放到累加寄存器累加,达到配置寄存器的个数就计算平均值
在放到对应的结果寄存器也就是我们要读的寄存器
times次数
time时间

求平均和转换时间
分流电阻的电压和VBUS的电压的ADC转换时间可以编程,140us--8.422ms
例如,如果要5ms更新结果寄存器,选588us的转换时间,求平均个数选4
那么就要转换8次,4次分流电阻电压,4次VBUS电压,8×588=4.7ms

分流电阻的电压和VBUS的电压的ADC转换时间可以不一样,如果VBUS的电压比较稳定,可以用多的时间
给分流电阻电压的转换,选分流电阻电压4.156ms VBUS电压588us,求平均次数为1,
这种配置结果导致更新时间也为4.156+588us=4.7ms
为了提高结果的精确度,用最长的转换时间和最多的平均次数

滤波
转换时间和转换参数可以在配置寄存器设置
转换时钟频率为500k,这样谐波高,大于1M,用小电阻和小电容就可以滤波10欧姆和0.1U电容

ALERT引脚
监控测试结果,如果超出范围alert寄存器地址7或者ADC结果准备好就通过alaer引脚告知host
MASK/ENABLE寄存器(地址为6)选择5个监控参数或者转换准备状态
shunt voltage over limit (SOL)
shunt voltage under limit (SUL)
BUS voltage over limit (BOL)
BUS voltage under lim (BUL)
power over limit (POL)
如果MASK/ENABLE寄存器选择了要监控的参数,当ADC转换结果超过ALERT寄存器的值就会通过
ALERT引脚告知host
如果MASK/ENABLE寄存器多个监控源选择,高位的优先级比地位高
如果ALERL和conversion ready 同时选择了,当产生中断的时候,要通过多MASK/ENABLE寄存器(地址为6)
判断conversion ready flag(CVRF) D3和ALERT function flag(AFF) D4是CVRF还是AFF原因
如果CVRF不需要就把它屏蔽,ALERT引脚就是超出极限的中断信号


alert limit寄存器和相应的转换结果对比
例如如果alert功能选择shunt voltage over limit(SOL),每次ADC转换完成
都将结果和alaert limit寄存器的值比较,如果超出范围,
MASK/ENABLE的第4位AFF设置为1,另外ALERT引脚的电平根据
MASK/ENABLE的第1位APOL的设置,如果ALERT LATCH位被使能,要对配置寄存器
写或者对MASK/ENABLE寄存器读了后ALERT引脚才恢复无限状态。
BUS电压测量后和alert limit寄存器比较,超出范围就将AFF为设置为1并且设置ALERT引脚电平
功率测量后和alert limit寄存器比较,超出范围就将AFF为设置为1并且设置ALERT引脚电平

INA230的编程
我们不要计算电流和功率,将通过IN+和IN-对分流电阻的两端电压和VBUS对地的电压测量就可以
通过INA230的硬件计算出分流电阻的电流和功率
CAL=0.00512/(CULLENT_LSB×Rshunt)-------------------1
CURRENT_LSB =(MAXMUM expected CURRENT)/2^15---------2
按照上面的公式计算CAL,填入校准寄存器,这样电流寄存器读出来的是电流值
电流寄存器是按照下面的公式计算的电流
CURRENT=(ShuntVoltage×Calibration register)/2048

配置寄存器00 读写
RST bit15 复位,和上电复位的功能一样效果
AVG9--11 取平均值模式
多少个数据取平均值 对应1,4,16,64,128,256,512,1024
AVG2 AVG1 AVG0
000 1,
001 4,
010 16,
011 64,
100 128,
101, 256,
110, 512,
111 1024

VbusCT bit6--8 BUS VOLTAGE CONVERSION TIME
设置VBUS电压转换时间
D8 D7 D6
000 140us
001 204us
010 332us
011 588us
100 1.1ms
101 2.116ms
110 4.156ms
111 8.224ms

VshCT bit3--5 shunt voltage conversion time
设置分流电阻shunt电压转换时间
D5 D4 D3
000 140us
001 204us
010 332us
011 588us
100 1.1ms
101 2.116ms
110 4.156ms
111 8.224ms

mode mode
bit0--2
000 power down
001 shunt voltage triggered
010 bus voltage triggered
011 shunt and bus triggered
100 power down
001 shunt voltage continuous
010 bus voltage continuous
111 shunt and bus continuous

SHUNT VOLTAGE REGISTER (01) 分流电阻电压寄存器只读
最高位是符号位,每一个单位为2.5uv


SHUNT VOLTAGE REGISTER (01) 分流电阻电压寄存器只读
最高位是符号位,每一个单位为2.5uv
SHUNT VOLTAGE REGISTER (01) 分流电阻电压寄存器只读
最高位是符号位,每一个单位为2.5uv

vbus VOLTAGE REGISTER (02) vbus电压寄存器只读
每一个单位为1.25uv

POWER REGISTER (03) 功率寄存器只读
功率为这个寄存器的25倍

CURRENT REGISTER (04) 电流寄存器只读
这个寄存器为分流电阻的电压和校准寄存器的值计算的电流值

CALCULATION REGISTER (05) 校准寄存器只读
这个寄存器设置电流寄存器的单位


MASK/ENABLE寄存器(06)
选择Alert引脚的功能,alert limit 寄存器的功能为D15--D11的高位最高优先权有效位的功能
CNVF conversion ready 转换准备
bit10 如果bit3 CVRF为1,则将Alert引脚设置为有效通知host可以进行下一次转换


SOL
bit15 配置Alert引脚作为shunt voltage 寄存器的值大于alert limit寄存器的通知标志

SUL
bit14配置Alert引脚作为shunt voltage 寄存器的值小于alert limit寄存器的通知标志
BOL
bit13配置Alert引脚作为bus voltage 寄存器的值大于alert limit寄存器的通知标志

BUL
bit12配置Alert引脚作为bus voltage 寄存器的值小于alert limit寄存器的通知标志

POL
bit11配置Alert引脚作为power 寄存器的值大于alert limit寄存器的通知标志

AFF alert function flag 报警功能标记
每一次只能够对一个alert limt报警,AFF这个标志表示是否alert引脚的中断是否alert limit引起。
发生alert中断后,根据alert latch enable的状态1 latch模式 0 透明模式
透明模式,当故障排除后,ALERT引脚恢复正常状态
latch模式,当故障排除后,ALERT引脚没有恢复正常状态,要对MASK/ENABLE寄存器读操作后才恢复



CVRF 转换准备标志
bit3用于协作一次或者触发转换,当转换,平均,乘法后CVRF被设置1.
CVRF标志要被清除通过下面
1,对配置寄存器写power down或者清除命令
2,对MASK/ENABLE寄存器读操作

OVF bit2
溢出标记

APOL bit1 alert polarity
1 高有效
0 低有效 默认状态

LEN bit0
1 latch模式
0 透明模式
alert latch enable
透明模式,当故障排除后,ALERT引脚恢复正常状态
latch模式,当故障排除后,ALERT引脚没有恢复正常状态,要对MASK/ENABLE寄存器读操作后才恢复




i2c通信
写操作
对寄存器进行写操作首先要向Master传输一个字节。这个字节是Slave的地址,
此时要求R/W位为低电平。传输完成后INA220返回一个信号确定收到一个有效地址。
Master传输的下一个字节是要被写入数据的寄存器的地址。
这个地址位将寄存器指针更新到下一个要被写入数据的寄存器上。
再下面两个字节是写入寄存器指针所指的寄存器里。
INA220对每个字节都发送一个确认收到的信息。
Master最后会产生一个START信号或STOP信号来终止数据的传输。

读操作
在从INA220读取数据时,每次读操作器件读取的寄存器由最后一次写操作
向寄存器指针内存储的值决定。
如果要在读操作器件改写寄存器指针,必须向指针内写入一个新的值。
写操作的实现是将R/~W位置低电平,然后指定一个Slave的地址字节加上一个标致寄存器指针的字节。
不需要额外的数据。
之后Master产生一个START信号,将R/~W位置高电平并发送Slave地址字节,
这样就实现了读命令的初始化。
下一个字节由Slave传输,是由寄存器指针标识的最高有效位。
这个字节之后是Master传出的确认信号;再之后Slave传输最低有效位,Master返回一个确认信号。
Master终止数据传输的方式,可以在收到某个数据字节之后产生一个Not-Acknowledge(没收到)信号,
或者产生一个START或STOP信号。
如果需要从同一个寄存器内重复读取数据,就不必每次都发送寄存器指针字节;
INA220会自动保存寄存器指针的值,直到下一次写操作将这个值刷新。



http://www.ppmy.cn/news/484327.html

相关文章

【AUTOSAR】UDS协议的代码分析与解读(九)----UDS读取数据2Ah

8.11 读取数据(周期标识符) Read Data By Periodic Identifier (2Ah) 此服务允许诊断工具请求读取ECU中由一个或多个周期数据标识符(periodic Data Identifier)标识 的周期发送的数据记录值。 在初始响应报文之后,有两种方式来发送周期数据响应报文给诊断工具。本规…

湖大CG满分教程:作业训练一编程题9. 二叉树遍历,从前序、中序到后序

【问题描述】 二叉树是一种非常重要的数据结构,非常多其他数据结构都是基于二叉树的基础演变而来的。对于二叉树,深度遍历有前序、中序以及后序三种遍历方法。 三种基本的遍历思想为: 前序遍历:根结点 ---> 左子树 ---> …

下拉加载刷新

注意传参没有pageNo的话,就不能实现下拉刷新,因为不知道当前要加载哪页的内容 const [list, setList] useState<IgetListUserResponce[data]>(); const [showLoading, setShowLoading] useState(false);const memoState useMemo<{pageNo: number;total: number;ca…

electron 连接打印机打印pdf文件

electron 打印内容 区分系统 类似unix系统的使用 npm包&#xff1a;unix-printwindow系统使用&#xff1a; pdf-to-printer 运行线程 视图线程 函数参数 两个包都提供了print函数来打印文件&#xff0c;配置基本一致&#xff0c;只是参数形式有所不同&#xff0c;pdf-to-pr…

保证水库大坝安全需要做好哪方面的监测

水库安全监测是保证水库大坝安全的重要手段是确保水库大坝安全运行的基础也是做好水库安全管理的重要技术保障。根据《水库大坝安全管理条例》《水库大坝安全监测技术规范》等有关规定&#xff0c;对坝体变形、渗透、应力应变等进行监测&#xff0c;以掌握坝体、坝基和库岸的运…

三网话费充值优惠接口API分享

话费充值接口文档 接口版本&#xff1a;1.0 ―、引言 文档概述 本文档提供话费充值接口规范说明&#xff0c;提供一整套的完整的接入示例(http 接口)供商户参 考&#xff0c;可以帮助商户开发人员快速完成接口开发与联调&#xff0c;实现与话费充值系统的交易互联。 公司官网…

【Flutter——复选框实例代码超详细讲解!】

Flutter——复选框实例代码超详细讲解&#xff01; 文章目录 Flutter——复选框实例代码超详细讲解&#xff01;代码实现效果代码实例代码结构总结 代码实现效果 代码实例 import package:flutter/material.dart; // 导入 Flutter 的核心库void main() {runApp(const MyApp())…

.Net6 WebAPI 手动开启gRPC服务

文章目录 .Net6 WebAPI 手动开启gRPC服务引用包开启服务配置gRPC通道完整代码 总结新建一个Service.cs类&#xff0c;继承自生成的类后&#xff0c;重写处理方法&#xff08;如果没有生成就先编译一下工程文件&#xff09;必须重写proto中定义的所有方法 .Net6 WebAPI 手动开启…