主题中讨论的其他器件:BQ78350、 BQSTUDIO
您好!
我已经尝试使用 ESP8266 (Arduino inoIDE)为 bq78350构建记录器、用于记录多节并联电池。 总的来说、这对我来说并不是什么新鲜事、我在读取和记录值时从未遇到过问题、但在这个项目中、我观察到一个我无法理解的奇怪行为。
我有4个 Arduino/ESP8266板,每个连接到一个电池独立。 我每3秒读取一个值序列、将值放入字符串中并通过 MQTT 发布。
顺序如下:
- DAStatus1 (针对电芯电压)/读取块、0x44 0x0071
- DAStatus2 (对于温度)/读取块、0x44 0x0072
- 电压/0x09
- 电流/0x0A
- 相关 SOC/0x0D
- AbsoluteSOC/0x0E
- RemainingCapacity / 0x0F
- FullChargeCapacity / 0x10
除了电流外、所有 Vaues 始终正确。
我将使用恒定5000 mA 为4节电池充电、所有日志中显示的值都不同。 其中一个电池的偏差几乎随时间推移保持恒定、但每个电池的偏差都不同。 这些值而不是5000 mA 在日志中的4600 mA、5800 mA、5300 mA、4700 mA 处趋稳。
当我断开记录器并使用 bqStudio 时、所有的值都正确。 电流显示为~5000 mA、如果我使用高级通信 SMB 调用0x0A、该值也正确。 重新连接记录器后、该值在短时间内读取为正确值、然后再次出现错误。 下图显示了使用5000 mA 进行充电的一个日志。 较大间隙是使用 bqStudio 进行的测试、在对记录器代码进行小幅修改后、其他间隙将复位以进行测试。 一段时间后、偏差会达到一个恒定值。 对数结束时、电流在充电过程结束时降低。 看起来很正确、但与实际电流也存在偏差。

下面是另一个示例。 首先、偏差很高、并稳定在恒定值。 突然,这个值是对的一小段时间,然后它再次错误。
在对电池放电一小段时间后、该值适合测试的其余部分。

对于所有测试用例、我可以清楚地表明电流实际上是5000 mA。
我已经检查了以下内容:
- 在每个 I2C/SMB 请求之间添加20ms 延迟-行为完全相同
- 确保我读取电流、而不是平均电流
- 使用完全相同的函数读取当前值和所有其他值
- 检查其他记录的值-除电流以外的所有值均正确
- 使用 bqStudio 中的高级通信 SMB 作为基准(因此、使用的电池校准命令是正确的)
- 在序列中的不同位置多次读取当前值-原始值始终相同
- 检查从电池返回的原始值-电流计算正确
我精确地检查了我的代码、检查了原始值和所有计算。 bq78350好像实际上发送了错误的值、但我不明白为什么。 当我使用 Arduino 记录值时、我必须能够依赖结果、因此、我必须找到导致此问题的原因。
如果有人知道会导致这种情况的原因、并帮助我理解和解决问题、那将非常好。
谢谢!
此致
G·霍夫曼