使用iPhone电池设计可穿戴电子设备

问候,读者。

通常,我的任务是开发由单节锂离子电池供电的便携式设备。 而且,如果通常这不是客户关心的问题,那么作为一名经验丰富的工程师,当我看到这样的传统知识时,就会感到发抖。 这是因为评估电池电量以及剩余电池寿命是一项非常艰巨的任务,尽管乍一看似乎有些不同。



在这种情况下,有几种处理方法,我们将在下面讨论。

-最简单的事情是什么都不做来确定电池电量。 简单线性存储器(例如TP4054)上的充电电路和用于为设备供电的电压转换器。 在没有任何警告的情况下并且在最不适当的时刻关闭。

-测量电池电压。 结果与上一段大致相同,但需要更多的努力。 典型的测量方案:



实际上,这是电阻器R19和R21的分压器,通过VT6键连接。 需要VT7晶体管来消除通过EN端子对MK的寄生功率。
VBAT-电池电压
VBAT_mes-电压进入ADC
EN-分频器控制信号(0-off,1-on)

现在我们知道电池电压,我们是非常棒的人。 但是它几乎什么也没有! 事实是,锂电池的典型放电曲线是线性的,它取决于电流消耗和电池本身的温度:



查看这些图,您能说出在3.5V电压下剩余的电池容量是多少? 我想不是...

通过在MC中使用内置的热传感器来大致估算电池温度,可以对该方法进行一些改进,或者可以使用传感器来测量电流,或者(如果消耗电流近似恒定)构建典型消耗电流的放电曲线。 这至少可以使劳动力成本得到合理的证明,但是没有任何准确性可言。 要指示3个LED上的电量-是的,它将显示。

在恒定电流消耗的情况下,您可以利用电池寿命并估算消耗的电量以及充电所花费的时间以评估累积电量。 这种方法会产生累积误差,因为校准只能在两个点(完全充电或完全放电)上进行,而并非总是能够实现。 另外,随着电池的老化,应调整最大工作时间,但总的来说,该方法具有生命权。

-制作自己的电池电量监视系统(BMS)。 对于其实现,我们需要用于电流,温度和电池电压的传感器。 我们认为MK已经存在于设备中,并且仍然“仅”为其编写软件,而这一次只花了我不到一年的时间。

-取出成品的电量监测计芯片(例如,来自TI或Maxim Integrated的产品),进行配置,校准和工作。 例如,bq27220的图:



选择此概念时,有一些细微差别:

  1. 如果电池是可拆卸的,则必须将电路用于确定电池本身的电量(否则在断开连接时它将重置为零),或使用特殊版本的电量监测计来断开电池的连接。 在第一种情况下,设备的电池变得唯一,只有在您参与的情况下才可以更换电池,这并不总是很方便。 在第二种情况下,存在将温度传感器放置在电池上的问题。
  2. 高成本解决方案。 主要部件:电量监测计芯片,保护芯片,晶体管,热敏电阻,电流传感器电阻。

-为交钥匙解决方案(例如CW2015)使用更简单的选项:



这是MAX17048芯片的中文模拟。 没有温度和电流传感器的绝对简单的芯片,具有相应的低精度,但同时价格便宜,易于使用和编程。 它具有在设备侧面工作的能力,这允许不修改电池本身。 在编写材料的过程中,在网络的开放空间中发现了微电路,虽然没有经验,但希望尝试一下,因为这种选择确实很有趣。 也许在下一篇文章中,我将更详细地讨论该芯片。

-最后,我知道我想献给今天的文章的最后一种方法。 我认为这种方法最简单,但效果最好。 这是因为我们从带有内置电量监测计和保护功能的iPhone中取出电池,通过HDQ或I2C连接,进行询问并开始工作。 在这种情况下,电池已经组装好并已校准。 下表列出了我所知的电池选项:



该表部分取自ripitapart.comwww.macplus.ru网站。 请特别注意标记为A1141的未知控制器。 该芯片由PowerFlash制造,这就是可以找到的所有信息。 我从中拿出桌子的博客作者不确定他是否从iPhone SE取得了原装电池。 由于召回了asterix_tyumen ,它从SE拆卸了原始电池,因此发现它的成本为sn27545。 下面我们将被迫更详细地考虑A1141。 现在,让我们看一下电池:



如您所见,有和没有苹果,每种口味和颜色的电池。 它们也可以并联连接以增加容量,并具有单独的轮询功能。 其中的缺点是,值得注意的是长/宽比约为3:1,这并不总是很方便,而且还有用于连接的独特连接器。 由于Apple手机的普及,这些电池可以在许多地方安全地大量购买(事实证明,这并不完全正确)。

在开发无线独立RFID阅读器时,我们采用了这种方式。



选择了iPhone 6的电池,它在容量和大小方面都适合我们。 在不同位置购买了几份副本进行验证:



合适的是在中国购买的,其余的是在莫斯科购买的。 费用是6-11美元。 当检查它们时,将获得相当有趣的结果。 请特别注意带有“ Orig”字样的框,稍后我们将返回到该框。 验证是使用RFID读取器本身,TI EV2300编程器和Battery Management Studio进行的。

RFID阅读器的电源电路如图所示:



基于STC4054(TP4054)的线性存储器,500 mA充电电流,基于磁簧开关SF1,电容器C19,二极管VD4和电阻R15的自选功率开关,以及基于NCP1529的脉冲转换器。

首先,我以6美元的价格连接了来自中国的副本:



电池会作出反应,但无论是在充电期间还是在放电期间均不显示电流,电压与实际测量的值不符,并且充电程度没有变化。 电池未响应命令。 假设此实例是假的,所以我从其上撕下了保护胶带,以查看电路板:



这是转弯……我什至没有重画电路-很明显,这里有一个bq27545仿真器和一个用于过度充电/过度充电的电路。 立刻有个节省时间并打开所有电池的想法。



8美元的中国同事左边的邻居类似于芯片上标记的区别。 其余的行为相同。 这2份副本立即丢进了垃圾箱。 不幸的是,我没有手头的iPhone 6来检查目标设备中的这些电池,很高兴看到用这些电池工作时手机的运行情况。



这是一个中央电池,售价8美元。 它甚至具有一个电流传感器和某种带有适度标记6G3的8引脚微电路。 在Battery Management Studio中,该电池假装为bq27545。 显示电量,正确的电压,电池电流。 但是,如果所有这些都是真实的,那么假货就不会是假货。 实际上,温度是由一个常数设定的,因此电流测量非常差。 该图显示了RFID读取器的电流消耗,该电流由电池在不断读取卡的情况下测得。



实际上,在这种工作模式下,电流约为55 mA,并且由于读取器字段始终为开,因此它不能为零。 充电时(电流在很长一段时间内保持恒定),电流传感器可以正常工作。 自然,所有其他参数的计算都不正确(充电水平,到完全放电的工作时间等)。 FC(满充电)标志设置为4.4V。



电池不响应命令,未设置QEN和RUP_DIS标志。 通常,这是中国人尝试在MK上写bq27545技巧的尝试,但未成功(无论如何,我认为是)。 也在垃圾桶里。

还记得我要求特别注意标有“ Orig”字样的框中的副本吗? 原来是他与我们所寻找的尽可能接近(以及现在如何不相信该广告?):



它的成本是9美元。 在中间,您可以清楚地看到标记为SN27545的芯片-这正是我们想要的。 在这种情况下,我开始更加紧密地工作。 在充放电测试周期中,出现了问题。 我无法设置FC(完全充电)标志,这意味着充电过程已结束。 电池电压接近4.2 V时的充电电流变得非常小(约20 mA),并且充电过程可能永远不会结束。 可能的原因之一是USB电缆的压降较大(存储芯片达到4.5V),我们将其替换为电压降较小的更好USB电缆。 指标有所改善,电池充电至4.2V,电流降至0,但SOC(充电状态-充电水平)仅达到85,因此未设置FC标志。



几天来,我一直以期望电池能学习的方式驾驶自行车,但这无济于事。 该问题原来很普遍,但是其搜索花费了2天的时间。 在某个时候,我注意到电池为4.35V,这是所有问题的答案。 内存的标准电压为4.2V,我一点也没有注意到电池电压为4.35V,并且充电不完全。 由于电路板已经制造出来,因此摆脱这种情况的唯一方法是寻找4.35V电压的STC4054替代品。 事实证明,这样的微电路存在,但是您不能在我们的伟大国家/地区购买它们(显然,它们从字面上看完全不受欢迎)。 因此,订购了MCP73832T-3版本需要等待几个星期。

同时,在订购的游乐设施上,我们将制作一个集体农场补丁以验证该概念。 为此,使用二极管对存储芯片进行0.15V的“备份”:



我必须承认集体农场工作正常,设置了FC标志,一切正常,但是最终电池电压为4.4V(二极管的压降大于所需的0.15V)。



重要的是要注意,可以充电到4.2V,同时损失约15%的容量,但同时会大大延长电池的使用寿命。 我们完成了Orig的副本-可以安全地将其投入开发。

剩下最后一份。 最昂贵的产品(11美元),采用最凉爽的包装,并且需要最长时间。 我们看里面:



这是未知的A1141芯片,除了制造商的页面之外,没有其他文档。 关于Battery Management Studio中的bq27545的强制连接,我们看到以下图片:



满垃圾。 尝试以〜500 mA的电流充电时,其显示为125 mA,而以〜25 mA的电流放电时,其显示为214 mA。 显然,如果A1141与bq27545相比具有不同的参数地址或不同的格式来存储数据,则没有此电池的文档,一切就不会发光。 因此,它被搁置一旁,但是在编写材料的最后,我决定再次连接它。 我拿了bq27545芯片命令表:



然后通过Advanced Comm菜单读取电压寄存器(0x08和0x09):



获取0x10 << 8 | 0x38 = 4152或4.152V,对应于用万用表测量的4.15V电压。 因此,如果数据正确,为什么在程序中显示57mV? 我们注意到57mV正好是0x38,也就是说,值是0x08寄存器。 电池电压为4.152V时,96%的充电水平看起来非常正确;您可以通过读取寄存器0x2c和0x2d来获得它。 读取0x2c = 0x60,0x2d = 0(对于SOC参数,最高寄存器始终为零)。 假定程序或EV2300无法读取(或电池不响应)请求中的高字节或地址为奇数的字节。 为了验证该理论,将电池直接连接到RFID阅读器,并通过MK对电池进行轮询。 HDQ接口是根据TI文档实现的。 bq27545芯片使用单线HDQ协议与控制控制器进行通信,由于支持半双工模式,因此在STM32上基于单线UART可以非常方便地实现该控制控制器。

因为 我们的RFID阅读器在MicroPython上工作,我们将HDQ的工作包装在一个类中,并以以下形式获取了电荷控制器的工作:

从hdq导入HDQ
蝙蝠= HDQ(pyb.UART(1))
bat.charge()#收费
bat.read_u16(0x14)#任意寄存器

实际上,事实证明A1141不响应读取具有奇数地址的字节的请求。

该波形显示有一个请求,但没有响应。 当他们在每个请求之前(每隔两次)添加了重新启动数据交换逻辑(中断)时,但微电路开始正确响应。



然后,我们比较了EV2300和阅读器的RFID的汇率,结果发现EV2300使用的速度比TI设置的速度低10-15%:



放慢HDQ速度并完成Break之后,每次请求电池均能正常工作! 读取电池的主要参数:



完成胜利! 实际上,事实证明,A1141是bq27545的高质量克隆,带有微小缺陷。 仍然需要从软件方面谈论使用电池的细微差别(使用睡眠模式,唤醒电流等),但这将使记录量增加一倍,也许我会再写一次。

结论


如您所见,开发由锂离子电池供电的设备有很多选择。 坦率地说,原本计划以“来,见,赢”的风格来编写材料,但是在此过程中却产生了许多细微差别(与A1141的斗争特别出色),结果证明该材料非常有趣且广泛。 实际上,在5个电池中,只有2个可以正常使用。 因此,在这种情况下选择供应商非常重要。 如果您从包含BMS的其他设备上看到了电池,请在注释中编写模型。 谢谢大家的关注!

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


All Articles