第4章:TI电池监测芯片BQ79616详解
各位工程师朋友,今天我们来聊聊BQ79616这颗芯片。说实话,在BMS芯片选型时,我最早接触的是BQ76PL系列,后来转到BQ79616时,第一感觉就是——这芯片的集成度真高。它把很多以前需要外围电路做的事情,都塞进了芯片内部。
BQ79616是TI针对高压电池包推出的监测芯片。它支持16串电池电压采样,同时集成了温度检测、电流检测、均衡控制等功能。我去年做的一个48V轻混项目,用的就是它。嗯,咱们今天就把这颗芯片掰开揉碎了讲清楚。
4.1 芯片特性与引脚功能
先说说它的核心特性。BQ79616支持16个通道的电压采样,每个通道的采样精度是16位。你想想看,16位分辨率意味着什么?在4.2V满电状态下,理论分辨率能达到64μV。当然实际应用中会有噪声,但做到1mV以内的精度是没问题的。
温度检测方面,它支持6个外部NTC通道。我个人习惯把其中4个分配给电芯温度,剩下2个留给母排和MOSFET温度。这样布局比较合理。
引脚功能这块,我挑几个重点说:
- VC0~VC16:电压采样输入。注意VC0是负极端,VC16是正极端。我曾经见过有人把VC0和VC1接反了,结果采样值全是负数,排查了半天才发现。
- GPIO1~GPIO6:通用IO,可以配置成数字输入输出,也可以作为NTC采样通道。我一般把GPIO1~GPIO4留给NTC,GPIO5和GPIO6做均衡控制使能。
- COMH/COML:菊花链通信差分对。这是BQ79616的亮点,后面会详细讲。
- VIO:IO电源引脚。注意这个引脚电压决定了通信接口的电平。我建议用3.3V,兼容性好。
关键点:BQ79616的VC引脚输入阻抗很高,但采样时需要一定的建立时间。如果你在采样瞬间切换了均衡MOSFET,电压会抖动。我遇到过这种情况,后来在采样前加了10ms的延时,问题就解决了。
4.2 内部架构详解
BQ79616的内部架构,说白了就是三个核心模块:ADC、时序控制器、通信接口。咱们一个一个看。
4.2.1 ADC模块
ADC是BQ79616的心脏。它采用逐次逼近型(SAR)架构,16位分辨率。采样速率最高可达100ksps。但实际BMS应用中,我们不会跑这么快。为什么?因为电芯电压变化很慢,没必要。
ADC内部有一个多路复用器,可以依次选通16个电压通道和6个温度通道。采样顺序是固定的:先扫电压,再扫温度。这个顺序不能改,但你可以通过配置跳过某些通道。
我记得有个项目,客户要求只监测12串电芯。我直接把VC13~VC16接地,然后在配置寄存器里屏蔽掉这些通道。这样ADC就不会浪费时间去采它们,采样周期缩短了25%。
小技巧:ADC的参考电压是内部产生的,精度在±0.1%以内。但如果你需要更高精度,可以在VREF引脚外接一个高精度参考源。我一般只在研发验证阶段这么做,量产时用内部参考就够了。
4.2.2 时序控制器
时序控制器是BQ79616的大脑。它控制着ADC什么时候采样、什么时候转换、什么时候把数据存到寄存器里。说白了,就是整个采样流程的调度器。
BQ79616支持两种采样模式:
- 连续采样模式:ADC不停地循环采样。适合实时性要求高的场景,比如主动均衡时监测电压变化。
- 单次触发模式:收到命令后采样一次。适合低功耗场景,比如休眠时定时唤醒采样。
我一般用连续采样模式,但会配合一个定时器。比如每100ms触发一次ADC转换,这样既保证了实时性,又不会让芯片一直满负荷工作。你想想看,如果ADC一直跑在100ksps,功耗会很高,而且数据量太大,MCU也处理不过来。
4.2.3 通信接口
BQ79616的通信接口有两种:SPI和菊花链。SPI是本地通信,菊花链是远程通信。咱们重点说菊花链,因为这是BQ79616的杀手锏。
4.3 菊花链通信原理
菊花链通信,说白了就是多颗BQ79616串在一起,用差分信号传递数据。每颗芯片既是中继器,也是终端节点。数据从主芯片发出,经过中间芯片,最终到达最远端芯片。
为什么用差分信号?因为BMS系统里噪声很大。电芯大电流充放电时,地线上会有很大的压降。差分信号可以共模抑制,抗干扰能力强。我实测过,在100A充放电时,菊花链通信依然稳定。
菊花链的物理层是这样的:
- COMH/COML:一对差分线,传输时钟和数据。
- 通信速率:最高可达2Mbps。但实际应用中,我建议用1Mbps。为什么?因为线缆长度和噪声会影响信号质量。1Mbps是个比较稳妥的折中。
- 拓扑结构:环形或链形。环形有冗余,但成本高。链形简单,但中间断了后面全掉线。我一般用链形,因为成本敏感,而且可以在软件里做故障检测。
注意:菊花链通信时,每颗芯片的地址必须唯一。地址是通过引脚配置的。我见过有人把两颗芯片的地址设成一样,结果通信乱套了。排查了半天才发现是地址冲突。
菊花链的数据帧格式是这样的:
帧头(8位) + 地址(8位) + 命令(8位) + 数据(16位) + CRC(8位)
帧头是固定的0x55,用来同步。地址是目标芯片的ID。命令是读或写。数据是具体内容。CRC是校验,防止数据出错。
我记得有一次,客户反馈说通信偶尔会丢包。我分析后发现,是线缆太长导致信号衰减。后来在每颗芯片的COMH/COML引脚上加了100pF的电容,信号质量明显改善。嗯,这种小细节,经验多了自然就知道了。
4.4 实际应用中的注意事项
最后,我总结几个实际项目中容易踩的坑:
- 电源去耦:BQ79616的电源引脚一定要加去耦电容。我习惯在每个电源引脚放一个0.1μF的陶瓷电容,靠近引脚放置。否则ADC采样值会跳动。
- 布局布线:VC引脚走线要短,而且要远离大电流回路。我见过有人把VC走线放在功率MOSFET旁边,结果采样值全是噪声。
- 均衡控制:BQ79616内部集成了均衡MOSFET驱动。但外部需要加限流电阻。我一般用20Ω,均衡电流控制在100mA左右。太大容易发热,太小均衡效果差。
- 休眠唤醒:芯片进入休眠模式后,功耗只有几微安。但唤醒时要注意,需要给芯片足够的时间重新初始化。我一般唤醒后等50ms再开始采样。
避坑指南:我曾经在量产阶段发现,部分芯片的ADC采样值偏差较大。后来排查发现,是VC引脚上的滤波电容容值不一致导致的。BQ79616内部已经有滤波电路,外部电容建议用1nF,不要用太大,否则会影响采样建立时间。
好了,关于BQ79616的芯片特性、内部架构和菊花链通信,今天就讲到这里。下一章我们会深入讲解如何配置BQ79616的寄存器,以及如何实现电压、温度、电流的同步采样。到时候我会分享一些具体的代码示例,敬请期待。