bq25703电源管理芯片电池充放电管理快充芯片PD充电宝芯片

硬件 专栏收录该内容
4 篇文章 1 订阅

序言:

    写这篇博客的主要原因是因为公司的产品涉及到电池充放电管理,而且充电电压和电池电压可能会有多种组合,针对这种设计需求,发现目前流行的PD快充协议正好是多级电压,所以在TI支持PD快充的芯片中选择支持多节电池充放电管理的芯片。基于上述原因,选择了国内比较容易买到,价格也适中的bq25703。

    从了解芯片到Demo板调试基本完成,林林总总共历时大约1个月,整理成博客也是为了日后有个参考。

    好了,不多说,踩坑的日志开始~

涉及到的链接:

 

介绍bq25703:

官方的介绍大家可以参考芯片的DataSheet,我就不复制粘贴了,重点功能如下:

  1. 支持1~4节锂电池充电,或者其他自定义充电电压(1.024V~19.2V),自定义充电电流(0.064A~8.128A);
  2. 支持3.5V~24V宽电压输入
  3. 无论是否充电状态,都可以向系统提供自定义电压(这里有坑,后面会说);
  4. 可以反过来向输入接口输出自定义电压(OTG功能),所以常被用来做快充充电宝电源管理芯片(这里有坑,后面会说)
  5. 充放电等详细设置均通过内部寄存器的配置完成,使用I2C与控制芯片通讯

知道基本功能,下面介绍如何实现这些功能,附上Demo板的原理图截图,后面的设计都会根据这个图来介绍:

 

这个图和DataSheet中的推荐应用图完全一样(事实上也没有自由发挥的空间 (0.0))

简单介绍一下核心芯片bq25703外围电路的主要功能:

  • P1为电源输入口,支持3.5V~24V宽电压输入,一般接在TYPE-C的接口上,负责充电时的输入和OTG时的输出
  • R14是自己放置的采样电阻,后面加上运放后,目的是为了用单片机ADC功能呢获取到充/放电的电流大小和方向
  • ACP与ACN中间的采样电阻是BQ25703要求的,也是为了采集充放电电流,但实际似乎没有输出(后面详解)
  • Q1,Q2,Q3,Q4和L3共同组成BUCK-BOOST升降压电路,也是整个电路的核心,所以电感的电流尽可能选择的大一点,当然尺寸也要考虑在内,做Demo板当然无所谓尺寸,但是日后设计成形产品时,为了能够整体散热,能够让导热硅胶尽可能贴合MOS、芯片、电感,最终电感的选型肯定是尽可能的薄
  • SYS这个地方就是为整个系统提供自定义电压的地方,如果是在笔记本或者平板当中使用,就是为整个主板供电的地方
  • BAT+就是接电池正极的地方,可以是1~4节锂电池,也可以是特殊电压
  • R20采样电阻就是BQ25703检测电池充放电电流的地方
  • R23+R24就是负责在电路中设置为几节锂电池充电,具体的设置方法后面会说,图上的配置是为两节电池(8.4V)充电

 

电池保护部分:

因为Demo板的设计采用了18650电池,而且是无保护板的18650,所以需要DW01KA+两个SC8205S的NMOS作为保护。

实际上,这样的保护板常常出现在锂聚合物电池上,那个跟买来的电池总是包在一起的小小的条状保护板,基本都是类似的设计,这样的设计可以实现:

  • 防止过充,电池电压上升超过4.3V就会断开电流流入电池的通路以阻止继续充电,但是放电依然畅通
  • 防止过放,电池电压低于3.5V就会断开电流流出的通路,但是充电通路畅通
  • 防止过流,在电流超过2A就会断开电流流出通路,然后很快恢复,继续检测是否过流,反复如此

各部分电压电流检测,由单片机内部ADC采样完成,又快又准:

从上到下依次是:

  • 外部接入的电流大小及方向检测
  • 外部接入电压检测
  • 电池电压检测
  • 电池充放电电流大小及方向检测

Q:电流检测在第二级运放的同相输入端为什么要接偏置电阻?

A:因为单片机的ADC只能检测0-5V,如果没有偏置电阻,那么至少有一个方向的电流是检测不到大小的,除非增加一路采样和运放,成本增加不说,还要多一路AD采样,编程和处理都会复杂;而且电流检测不需要太高精度,偏置后,两个方向都可以检测到电流大小,编程也方便

Q:为什么电压采样还要用运放,而且是直接电压跟随,并没有放大?

A:这里的运放主要起到保护作用,单片机ADC引脚最高输入不能超过5V,否则有击穿风险,所以用运放隔离了采样电压,保护芯片

上位机通讯部分:

采用CH340C作为与上位机通讯的串口,是因为外部电路太简单(只有一个电容),没有晶振,没有容易摔坏的风险

主控芯片:

主控芯片用的是新唐的NUC029单片机,采用ARM-M0构架,50MHz主频,64K编程空间,支持串口升级,内部EEPROM

软件部分:

    bq25703这款芯片大部分功能都要通过I2C通讯,修改内部寄存器才能实现,所以务必需要至少一颗逻辑控制芯片负责通讯。

如果没有主控芯片,就连最基本的充电功能都无法实现(充电电流为0)

I2C的通信形式是标准,在网上有资料,大部分单片机也自带I2C接口,直接配置单片机寄存器就可以完成通讯

这里简单介绍一下通过I2C是如何控制bq25703

指令有两类:按地址写入数据,按地址读取数据

按地址写入数据:  开始→写地址+0→从机应答→写寄存器地址→从机应答→写寄存器数据→从机应答→结束

按地址读取数据: 开始→写地址+0→从机应答→写寄存器地址→从机应答→ 再次开始→写地址+1→从机应答→读取寄存器数据                                 →结束

读取数据都是一次一个地址读取的,写入数据大部分都是直接一次一个地址写入,但是如下4个寄存器,需要一次写入两个地址,而且必须遵循先写小端,再写大端的形式,且必须在一次I2C通讯中完成,通讯顺序如下:

开始→写地址+0→从机应答→写寄存器基址(偶数地址)→从机应答→ 写低位寄存器数据→从机应答→写高位寄存器数据→从机应  答→结束

需要这样操作的特殊寄存器如下:

  • ChargeCurrent(0x02,0x03)充电电流
  • MaxChargeVoltage(0x04,0x05)充满电压
  • OTGVoltage(0x06,0x07)反向供电电压
  • InputVoltage(0x0a,0x0b)最小输入电压
     

详细的寄存器表在DataSheet里有详细说明

上位机软件配合调试:

因为为大量的寄存器需要配置,那么如果每次试验数据都是使用串口调试,不够直观,也不够方便。

在TI官网上发现一个这个软件,是IT官方制作的,支持全系列芯片的寄存器管理软件,为什么我不用这个软件而是自己写呢?因为这个软件需要配套一个调试工具,类似烧录器,已经做好的调试板在官网也有,但是价格实在比较感人,最终决定自己写上位机软件,配合单片机,自己定的协议进行调试,所以这个工具用上,但是可以用来参考

 

自己做的开发板使用CH340C串口转USB设备,通过USB线与电脑相连,在系统中识别为CH340设备

通过串口调试工具,测试进行测试,确定所有寄存器都可以写入并且读取到对应的值,那么就开始上位机的编写

其实编写图形化软件,作为一个软件小白,似乎VB,MFC,QT等才是最优先的选择,但是,既然都是从头开始,为什么不选一个更加大胆的选择呢?

最终决定使用 Electron 开发上位机软件,效果如下

左侧可以看到所有的寄存器都被显示在表格里,而且通过颜色区别出当前的状态,点击可以改变寄存器的数值,实测下来方便了很多

实际调试:

那么硬件软件都准备好了,就开始激动人心的测试吧~

我这边的硬件测试环境除了Demo板以外,还有一个DC-DC的升降压可调模块作为输入,用来模拟DP快充的多级电压

插上电池 插上供电 调整输入为12V 插入上位机USB线 看到调试工具红红绿绿的小方块一个一个出现时,成就感还是很高的

紧接着发现充电电流是0A,VSYS为7.6V(与电池电压相同),电池也没有输入和输出电流

拔掉电池后,VSYS输出为6.14V

 

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值