IT8511+表测试电芯的直流内阻

最近公司的一个案子是要测量电芯的直流内阻,费了相当大的力气,主要是对直流内阻这种测量玩法不太清楚。

一直以来测试的要么是电芯的电压,要么是电芯的电阻,或者是电芯边电压,它们都是直接测量,并且一次搞定。

直流内阻不同,它需要两个步骤,第一次取放电前的电压,第二次取放电后的电压,而且放电后需要间隔指定时间再取电压。

然后通过公式算出直流内阻(DCIR),通过这个DCIR,可以判断电池的好坏。


有关电芯的内阻参数的介绍贴子见: 关于电池的内阻知道这几点就够了?


image.png这个是8511+表的品牌

其26字节格式的参考手册是这个,自己去下,这是个图片:

image.png



it8511+表的指令分为两种格式。


  • ASCII串形式(还有一种专业术语称呼,勇哥忘记了,所以这个名字是我起的)

  • 26个字节的指令格式


ASCII串形式指令集如下:


SYST:REM     远程模式

MODE CURR    设置定电流模式

CURR 10      设置放电电流

MEAS:VOLT:DC?  读取电压值

INP 1        打开电子负载

MEAS:VOLT:DC?  读取电压值

INP 0        关闭电子负载

MEAS:CURR?     读取电流


这些指令可以用串口助手调试,但是需要特殊的串口助手,它必须能有按一定时间间隔轮发的功能。

可以参考:

工业自动化行业软件工程师们的常用软件(一)


这个文章中介绍的那个 串口调试软件4.5 软件


26字节指令格式如下:


标准帧长度为26字节:

字节1:同步头

字节2:负载地址

字节3:命令字

字节4-25:相关信息内容

字节26: 校验码


由于这个项目使用的是字节指令完成的,所以勇哥在这里详细解释一下:

整个测量分为10步指令交互:

1.设置远程控制

2.允许本地操作

3.设置定电流模式

4.开启远端传感器数据接收

5.读取放电前当前电压的数值

6.设置定电流模式

7.打开

8.设置放电电流

9.读取放电后电压数

10.关闭


我来详细解释一下,童鞋们连参考手册都不用翻了。


1.设置远程控制

发送:AA,00,20,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,CB

参考返回:AA 00 12 80 0E 00 00 56 4A 00 00 0B 1B 00 00 3C 40 00 00 00 00 00 00 00 00 8C


20H 设置负载操作模式

字节4:操作模式(0 为面板操作模式,1为远程操作模式)

字节5-25:系统保留


2.允许本地操作

发送:AA,00,55,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00

参考返回:AA 00 12 80 0E 00 00 56 4A 00 00 0B 1B 00 00 3C 40 00 00 00 00 00 00 00 00 8C 


55H 设置是否允许LOCAL键使用,若LOCAL键允许使用,则负载在REMOTE操作模式时,用户可以按面板上的SHIFT+LOCAL键使负载返回到LOCAL操作模式。

字节4:LOCAL 键状态(0为禁止,1为允许)

字节5-25:系统保留


3.设置定电流模式

发送:AA,00,28,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,D2

参考返回:AA 00 12 80 0e 00 00 56 4A 00 00 0B 1B 00 00 3C 40 00 00 00 00 00 00 00 00 8C


28H 设置负载的操作模式(CC,CV,CW,CR)

字节4:负载模式(0为CC,1为输出CV,2为CW,3为CR)

字节5-25:系统保留


4.开启远端传感器数据接收

发送:AA,00,56,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01

参考返回:AA 00 12 80 0E 00 00 56 4A 00 00 0B 1B 00 00 3C 40 00 00 00 00 00 00 00 00 8C


56H 设置负载的远端测量模式的状态

字节4: 远端测量状态(0为关闭,1为打开)

字节5-25:系统保留


5.读取放电前当前电压的数值

发送:AA 00 5F 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0A

参考返回:
AA 00 12 90 0E 00 00 56 4A 00 00 0B 1B 00 00 3C 40 00 00 00 00 00 00 00 00 9C

AA 00 5F D6 0E 00 00 7F 00 00 00 30 00 00 00 35 40 20 40 20 1B 00 00 00 00 AC


按下面指令解释,返回值中字节4-7位是测量的电压值,也就是D6 0E 00 00  这4个字节

算出来是3.798,跟表的实际屏幕显示是一致的。

第9条指令读的是放电后的电压,其指令和第5条是相同的。


勇哥来谈谈,我是怎么样算出是3.798的。

image.png

请下载这个小工具。

先注意一点:这个表返回的值不是浮点数,而是整数。

所以我们应该在软件界面上红框的位置输入00 00 0E D6, 按下10<-16按钮,就可以把十六进制数转为十进制数。

为什么不是输入D6 0E 00 00呢?

这是因为计算的内存在表示数字的字节顺序有关系。有时候低字节在前 高字节在后,有时候又是反的,这个大家可以试试。

也就是四种排列组合的可能。

image.png

这个结果3798要除1000,得到单位V,因为这个值默认单位是毫伏。

如果你希望用C#编码来转换,可以使用netMarketing类库的函数。



00111100

010000000000000000


5FH 读取负载的输入电压,输入电流,输入功率及相关状态

字节4-7:实际输入电压值(低字节在前,高字节在后)

字节8-11:实际输入电流值(低字节在前,高字节在后)

字节12-15: 实际输入功率值(低字节在前,高字节在后)

字节16:操作状态寄存器

字节17-18:查询状态寄存器

字节19-20:系统保留

字节21:散热器温度

字节22:工作模式(0 为Fixed, 1为short,2为Transition,3为list )

字节23:当前的list步数

字节24-25:当前list的循环次数


6.设置定电流模式

发送:AA,00,2A,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,D4

参考返回:AA 00 12 80 0E 00 00 56 4A 00 00 0B 1B 00 00 3C 40 00 00 00 00 00 00 00 00 8C


2AH设置负载的最大定电流值

字节4:电流值的低字节

字节5:电流的次低字节

字节6:电流值的次高字节

字节7:电流值的高字节

字节8-25:系统保留


7.打开

发送:AA,00,21,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,CC

参考返回:AA 00 12 90 0E 00 00 56 4A 00 00 0B 1B 00 00 3C 40 00 00 00 00 00 00 00 00 9C


21H 设置负载的输出状态(on/off)

字节4:负载输入状态(0为输出off,1为输出on)

字节5-25:系统保留



8.设置放电电流

发送:AA,00,2A,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00

参考返回:AA 00 12 90 0E 00 00 56 4A 00 00 0B 1B 00 00 3C 40 00 00 00 00 00 00 00 00 9C


2AH: 设置负载的最大定电流值

字节4:电流值的低字节

字节5:电流的次低字节

字节6:电流值的次高字节

字节7:电流值的高字节

字节8-25:系统保留


9.读取放电后电压数

发送:AA,00,5F,01,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,09

参考返回:


5FH 读取负载的输入电压,输入电流,输入功率及相关状态

字节4-7:实际输入电压值(低字节在前,高字节在后)

字节8-11:实际输入电流值(低字节在前,高字节在后)

字节12-15: 实际输入功率值(低字节在前,高字节在后)

字节16:操作状态寄存器

字节17-18:查询状态寄存器

字节19-20:系统保留

字节21:散热器温度

字节22:工作模式(0 为Fixed, 1为short,2为Transition,3为list )

字节23:当前的list步数

字节24-25:当前list的循环次数


10.关闭

发送:AA,00,21,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,CB

参考返回:AA 00 12 80 0E 00 00 56 4A 00 00 0B 1B 00 00 3C 40 00 00 00 00 00 00 00 00 8C


21H 设置负载的输出状态(on/off)


字节4:负载输入状态(0为输出off,1为输出on)

字节5-25:系统保留


直流电阻的算法


DCIR=(放电前的电压-放电一定时间后的电压)/放电电流

放电前的电压是上面的第5步取得

放电一定时间后(通常为200ms,各个公司可能会有差别)的电压由第9步取得

放电电流大小由第8步设置


遇到的坑


上面10条指令的发送例子,第26个字节内容可能不都是正确的。

第26个字节是校验码,是前面1-25个字节的累加和,如果累加和超出FF,则取低字节

由于勇哥不想再重新算校验,所以各位不要直接把上面那10条指令拿来用,要自己算一下校验码。正确了再用。



一些经验


测量直流电阻,会遇到测量放电后电压不稳定的现象。

比如标准的放电电压是3.7V左右,如果你多次放电测量,会发现有3.5, 3.6, 3.7, 3.8 这样的随机波动现象。

这个问题跟表的测量频率设置有直接关系。


另外,还可能会出现测量电压稳定,但是其值偏低的现象,这个跟线路有关系,你要把表的测量端应该直接引线到探针上去,不能转接。


还会出现测量时接触不可靠的问题,这个就需要增加接触面,比如使用大面积的压块(铜制)代替探针,机器动作上需要在测量失败时再次抬起下压的动作,而不是仅仅靠重新触发表的测量。


--------------------- 

作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864