电池性能分析

⚠️
大家好. .谢谢你来参加论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,并包含在Dialog主网站中。所有的帖子和账户都已迁移。我们现在只接受新论坛的流量-请张贴任何新的线程//www.xmece.com/support。我们将在未来几天修复漏洞/优化搜索和标签。
12个岗位/ 0个新岗位
最后发表
dlo
离线
最后看到:1周前3天前
加入:2017-05-26十六21
电池性能分析

我研究了UM-B-075以及如何使用smartsnippet工具分析电池。然而,如果没有这些设备,我就无法运行提供的软件来生成lut。

我有一个DL3021A负载计,具有电池分析功能,我用来收集数据。

在我的情况下,我使用的是110mAh的锂离子电池。我是否正确地假设LUT是使用这些原则生成的?

电池放电100% = 0mAh

90% =电池放电11mAh

电池放电80% = 22mAh

70% = 33mAh电池放电

60% = 44mAh电池放电

50% = 55mAh电池放电

40% = 66mAh电池放电

30% = 77mAh电池放电

20% = 88mAh电池放电

10% = 99毫安时电池放电

0% = 110mAh从电池放电

如果是这样,我已经生成了使用110mA负载和2mA负载的lut(由于设备精度,1mA负载没有实现)。

static const int16_t vol_dis_low_0[VOL2SOC_LUT_SIZE] = {
3450、3510、3561、3591、3634、3681、3743、3833、3934、4053、4170
};
static const int16_t vol_dis_high_0[VOL2SOC_LUT_SIZE] = {
2900、3193、3291、3346、3392、3443、3509、3595、3694、3802、4021

测试这些表,报告%似乎是错误的。我正在使用Joulescope电流计来验证通过BLE电池服务报告的值,以及查看DEBUG_SOC UART输出语句。

例如,将单元(定制板)插入USB充电,在充满电(90mAh充电率)时,在禁用充电后,UART调试语句报告Soc为875,电压为4190。在充电结束时,Soc不应该设置为1000或接近1000吗?

电压报告似乎准确地跟踪电池,但Soc是相当错误的。

请确认这是创建lut的正确方式,如果是,为什么Soc报告错误的值?

谢谢你!

设备:
dlo
离线
最后看到:1周前3天前
加入:2017-05-26十六21
/ * *
/** **************************************************************************************** * * @ 文件custom_socf_battery_profile.h * * @brief电池电荷状态* *档案数据版权(C) 2016年半导体对话框。yabo国际娱乐*此计算机程序包含Dialog Semiconductor的机密、专有信息*。yabo国际娱乐版权所有。* **************************************************************************************** */ # 如果未定义CUSTOM_SOCF_BATTERY_PROFILE_H_ # define CUSTOM_SOCF_BATTERY_PROFILE_H_ # define VOL2SOC_LUT_SIZE 11 / *电池配置文件数据110毫安电池* / # define SOCF_BATT_LOW_CURRENT 2000 /马/ 2负载马# define SOCF_BATT_HIGH_CURRENT 110000 / / 110 # define SOCF_BATTERY_CAPACITANCE 110 / /电池容量(110 mah) # define SOCF_CHARGING_CURRENT 90静态常量int16_t vol_dis_low_0 [VOL2SOC_LUT_SIZE] = {3450、3510、3561、3591、3634、3681、3743、3833、3934、4053、4170};static const int16_t vol_dis_high_0[VOL2SOC_LUT_SIZE] = {2900, 3193, 3291, 3346, 3392, 3443,3509,3595, 3694, 3802, 4021};静态const int16_t vol_chg_0_0 = 3447;//90mA充电#endif /* CUSTOM_SOCF_BATTERY_PROFILE_H_ */

dlo
离线
最后看到:1周前3天前
加入:2017-05-26十六21
我添加了对socf_get_avg的调用

我添加调用socf_get_avg_current(active_count, active_period),它似乎报告正确的值。如果我从socf_get_avg_current()取返回值并除以0.277,我应该在uA中得到结果,这是正确的吗?

dlo
离线
最后看到:1周前3天前
加入:2017-05-26十六21
我正在使用PXP_Reporter

我正在使用PXP_Reporter演示,并进行了以下修改:
水晶由16MHz降为32MHz

用上面附加的代码更新了custom_socf_battery_profile.h。

dlo
离线
最后看到:1周前3天前
加入:2017-05-26十六21
我算出了这个

我算出了这个
定义SOCF_BATT_CAPACITANCE_ADJ (1)

检测到充电结束后将容量设置为1000。

报告的socf_soc似乎仍然有很多错误。在我的特殊情况下,在使用44mAh(60%)后,socf_soc仍然报告90%的电池电量。

PM_Dialog
离线
最后看到:2天17小时前
工作人员
加入:2018-02-08 11:03
嗨dlo,

嗨dlo,

请让我检查一下,然后回复你。

谢谢,PM_Dialog

dlo
离线
最后看到:1周前3天前
加入:2017-05-26十六21
1)恢复custom_socf

1)将custom_socf_battery_profile.h恢复为默认SDK

2) #定义DEBUG_SOC

3) pm_set_sleep_mode (pm_mode_active)

在pxp_reporter和构建调试选项中。闪烁自定义板和观察终端输出。

电池的第一次读数似乎报告大约正确的SOC和电压报告是准确的。然而,随着时间的推移,电池上有~1.5mA的恒定损耗(从运行pxp_reporter,没有额外的负载放在设备上),SOC水平随着电压下降而上升。日志如下:

[1秒]DLG_SWFG SOC= 904 VOL=4104…[1000秒]DLG_SWFG SOC= 908 VOL=4075

PM_Dialog
离线
最后看到:2天17小时前
工作人员
加入:2018-02-08 11:03
嗨dlo,

嗨dlo,

很抱歉耽搁了。正在使用的电池是什么?你能分享一下电池的规格吗?正确地表征电池并使用具有正确值的LUT是非常重要的。您是否使用SDK的pxp_reporter示例来测试这一点?

由于它是一个DA14683, SS Studio v1.6.3包括一个电池分析器工具-你应该需要使用一个源仪表,电压表和分流电阻的工具。在第6节电池分析工具中,您将找到电池分析所需的所有可用信息。

该工具安装在C:\Program Files (x86)\Dialog Semiconductoyabo国际娱乐r\Battery Profiler for DA1468x windows路径。按照文档中描述的步骤进行电池分析。

谢谢,PM_Dialog

dlo
离线
最后看到:1周前3天前
加入:2017-05-26十六21
使用的电池是110毫安时

使用的电池为110毫安时(https://www.digikey.com/en/亚博电竞菠菜products/detail/sparkfun-electronics/PRT-1385..。

是的,使用PXP_Reporter进行测试。

dlo
离线
最后看到:1周前3天前
加入:2017-05-26十六21
这是一些发现

下面是启用#debug_soc后的一些发现:

Debug Count Average是在socf_get_soc_active(void)期间使用的报告active_count的平均计数。

Debug Current Average是socf_get_soc_active(void)中的active_count中的socf_get_avg_current的平均计数除以1000。

焦耳镜是测量仪器在那段时间内的平均电流。

Delta是SOC和Joulescope报告值的差异。

注意,δ不是线性的,它随着电流的增大而增大。

我相信很明显库仑计数是不准确的。

请和我打个电话讨论一下。这很紧急,影响了我们的开发时间。我特别需要知道你的公式是从哪里来的,以及我们如何修正这些来得到正确的结果。

这个数字是如何确定的?

#定义SOCF_MAX_COULOMB_COUNT_PER_MA_SEC 73584LL

为什么需要这两个场景?

If (count > 0) {offset_current = 500 - (250 * avg_current) / 5000;} else {offset_current = SOCF_DEFAULT_OFFSET_CURRENT - (avg_current * 50) / 1500;}

PM_Dialog
离线
最后看到:2天17小时前
工作人员
加入:2018-02-08 11:03
嗨dlo,

嗨dlo,

抱歉耽搁了——可能我没听清你上次的评论。让我内部升级一下,很快给你回复。

谢谢,PM_Dialog

PM_Dialog
离线
最后看到:2天17小时前
工作人员
加入:2018-02-08 11:03
嗨dlo,

嗨dlo,

我们已经从论坛下线,并将直接与您联系。

谢谢,PM_Dialog