开发笔记本电脑的移动电源。从布局到成品。第二部分

在有关为笔记本电脑开发PowerBank的文章的最后一部分中我们着眼于制造好的布局,测得的效率以及对下一步工作的理解。然后有必要使铁片恢复活力。因此,我向您介绍第二部分:软件布局。



零件之间的断裂被证明是很大的-所有的力量都集中在一个快速充电的外部电池的项目上,该电池现在正在为繁荣启动者提供支持 让我们继续。 为了理解我们将要编程的微电路,我们将看一下布局的框图, 从这里很明显,我们将必须编写用于控制MK的软件(STM32F042),并配置锂离子电池控制系统+充电器(BQ40Z60)。我从第二个开始,因为我认为这是最困难的部分。 要对BQ40Z60控制器进行编程,我们需要: -EV2400和EV2300适配器(现成或自制)。我已经将EV2300从过去的项目中删除,所以我使用了它。 -程序







电池管理工作室(bqStudio)
适配器通过SMBus总线连接,在连接时我将焊点留在了SMBD和SMBC线上(不是最实用的解决方案-然后我意识到我必须安装连接器)。

用铃鼓跳舞后,BQ40Z60决定使用Battery Management Studio。原因是睡眠模式,当SMBus总线上没有上拉且无法访问它时,控制器进入该模式。连接内存时他会醒来。
接下来,我们将直接调整BQ40Z60芯片。说他有很多登记册,什么也没说。一百万个设置。由于配置是一个漫长而复杂的过程(需要单独的文章进行描述),因此我将对其进行简要描述。

启动后,出现Battery Management Studio主窗口。

数据存储选项卡包含大量字段,我们必须在其中输入电池参数和控制器操作模式。

在化学选项卡上,您可以尝试找到所用电池的现成校准物。


对于我的YOKU LP 5558115 3500mAh,没有现成的校准(顺便说一下,校准会不断更新)。发现类似的YOKU LP 656193 4000mAh。意识到自己对可用软件包一无所知后,我选择了此个人资料。

然后,在数据存储选项卡中,我配置了:
校准:电压表(电池,电池和外部适配器)的校准值,电流传感器的电阻,温度传感器的校准值。
设定:包括保护,热敏电阻,LED,睡眠模式,电池配置。
保护:设置保护阈值(电压,时间,温度),设置外部适配器的电压阈值。
永久失败:设置不可逆错误的阈值(以致无法进一步操作电池)。
先进的充电算法:设置充电器(电流,不同温度范围的电压,充电结束的信号,平衡)。电量
监测:设置确定电量级别的单位(铭牌容量/电池电压,导线电阻,统计数据)。
电源:设置控制器的工作模式。
PF状态:永久失败状态位状态
系统数据:制造商数据的字段。
SBS配置:设置警报触发的触发阈值,基本电池信息(序列号,生产日期,制造商,名称,化学成分)。
LED支持:设置LED指示灯的模式。
黑匣子:黑匣子(保护状态位的变化历史)。
寿命:电池统计信息。
Ra Table:内部电池电阻表。

在设置过程中,我没有更改所有字段,但这足以启动。

在电路的这一部分中,只有一个硬件门框连接到21-AFEFUSE微电路的输出。事情是这样的:
除了次级保护微电路和保险丝烧断外, 我还从调试板上撕下了电路。 BQ40Z60具有21个AFEFUSE引脚,用于燃烧保险丝(如我所想)。因此,我查看了BQ40Z60数据表的第5页,在表格中看到了

输出Output 类型,并且出于良知,将其悬空了。问题是在焊接电路板之后出现的:我整理了所有设置(当时有很多疑问),但是没有用-充电和放电晶体管没有打开。经过2天的怀疑/商议/反复试验后,我注意到FUSE_EN位未设置,并决定“问人”,当我发布问题时,我得到了见解。

查看调试板的电路板时,我建议AFEFUSE引脚也可以作为输入,这在9.3.2.4 p.24节中得到了确认,该条款规定,如果不使用该引脚,则必须将其接地。我用镊子做到了,而且奏效了。 5分钟后,他们在e2e.com上回答了我-答案是正确无误的,我在输出表中表达了有关错误的“ phi”-他们承诺将在以后的文档版本中进行修复。
为了结束控制器设置,我进行了2个训练周期,充满电/放电+放松(总共花费了30个小时)。

现在让我们继续编程STM32F042。在模拟阶段,该处理器不需要太多:
-控制电压转换器,处理按钮。
-尽可能进入睡眠状态,以免使电池放电。
-从控制器读取主要电池参数(电压,电流,充电水平,温度,电流状态,循环次数,完全充电/放电的时间),并通过USART将它们输出到PC(因为板上已经装有CP2102转换器)。尽管处理器板载USB,但是我没有在布局中使用它,而是为051 MK进行了布局,但是我无法购买。

转换器的控制被简化为设置两个结论(接通和工作模式),向LTC3780芯片转换频率设置的输出提供PWM(具有随后的RC滤波)(因此,将频率设置为最大400 kHz)和PowerGood信号监视输入。但是即使在这里,我也设法踩了耙。该错误是浮动的,是在Power Bank长时间放下时发生的,表示它根本无法打开。问题在于,我首先打开了LTC3780对PowerGood信号的中断,然后打开了芯片本身(EN)。事实证明,该中断甚至在转换器启动之前就已触发并将其关闭。重新安排了地方的事件并增加了延迟-问题消失了。否则,此功能很容易。

决定创建一个具有1个按钮和5(6)个LED的用户界面(尽管布局板上有2个按钮和10个LED)。它的工作方式如下:
关闭设备->短按(<500 ms)-4个LED上的电量显示动画。
设备已关闭->长按(> 500 ms)-打开设备(第5个LED点亮)。
设备关闭->连接内存-> 4个LED上的充电水平动画,直到充电过程结束。
设备处于打开状态->短按-4个LED上的电量水平动画。
设备打开->长按-关闭设备。
设备关闭->电流消耗低于50 mA的时间超过3分钟。 -关闭设备。
这样可以从设备中删除27个元素。

我已经在STM32F0xx上实现睡眠模式的经验,因此在这里我没有指望过分。为了优化功耗,我首先用自己消耗的低电流用mcp1703替换了3.3V LDO(有必要不要从调试中撕裂,而要立即安装它)。尺寸,价格,消耗,车身套件-都比LP2951小。
感谢 Hardegor为Li-ion 4s编辑LDO,由于输入电压低,无法使用Mcp1703。我将LiFePo4用于化学反应-没有这样的问题。小心!!!
-当设备关闭时,MK处于待机模式,并且仅对按下按钮或内存连接作出响应。该模式下的功耗为108μA(其中100个功耗为BQ40Z60)。
-开启设备后,处理器大部分时间(BQ40Z60的指示和轮询时间除外)处于STOP模式,消耗的电流为1.5 mA(LED为1 mA)。在查询和指示时,电流消耗范围为4.5至9 mA。
-在48 MHz RUN模式下连接USB MK时,功耗为15 mA。将来,我将通过USB在此模式下为MK供电。

最大的潜在问题是BQ40Z60调查。我没有使用SMBus,直到最后一个希望SMBus是I2C 1v1(部分原因是因为它们的物理级别相同),但是事实证明通道级别非常不同,这带来了许多困难。在这里,我不会描述SMBus和I2C之间的区别,但会提供指向相当称职的文章的链接。在布局阶段,我没有参与与SMBus的斗争(顺便说一下,作为一名程序员,我比电路设计师要弱得多),并且由于SMBus和I2C中的字节发送和接收命令完全相同,因此我只使用了它们。结果,我从BQ40Z60中读取了SOC,SOH,Current,CellVolt,TimeToFull,TimeToEmpty。取决于寄存器的值,操作模式已更改(发出警告,发生任何关机)。

嗯,在PC端,当然需要一个程序,该程序可以方便的方式显示从电池读取的数据。由于我只能在Borland C ++ Builder中使用GUI,并且需要很长时间,因此我要求程序员为我设计一个简单的调试程序。快速鞭打一下,出现了以下内容:


这是在布局阶段执行的所有工作。在计划的进一步内容中(并且由于我描述了已经完成的操作,因此部分工作已经完成),将技术规范转让给设计人员以开发/制造PowerBank套件,纠错/电路修订,外壳更换,软件修订。此后,该设备将类似于产品,并且在完成后将成为字面上的产品。在本文的以下部分中,我们将考虑从布局到最终产品过渡的阶段和主要困难,包装工作,考虑各种解决方案和操作,优化的成本,并查看最终结果。

Source: https://habr.com/ru/post/zh-CN386899/


All Articles