<<<写在前面>>>

最近想做一块移动充电板子,想着以后其他小制作能用得上,起个名字就叫“蒸汽核心”吧,电源就像心脏,为机器提供源源不断的能源,所以这块板卡就是心脏卡。在选择PMIC的时候选中了BQ24610,不得不说这是颗PMIC真的坑啊啊啊啊!!第一版做出来后端系统电始终是2V,查了半天规格书没发现问题,结果找了一下TI的论坛才发现不止我一个人遇到,捣鼓捣鼓就有了下面这块板子,先上图!!!

1.jpg
2.jpg
3.jpg
4.jpg

回板了,以后要换方案也不一定,如果功率上到百瓦这颗心脏就可能顶不住了

实物图
实物图

做了个程序 DEMO

15.png
7.jpg
8.jpg

硬件设计

BQ24610

特性简介

参考链接:https://www.ti.com.cn/document-viewer/cn/bq24610/datasheet
BQ2461x 1 节至 6 节电池的独立同步降压电池充电器控制器

特性

600kHz NMOS-NMOS 同步降压转换器
适用于锂离子或锂聚合物电池的独立充电器
工作输入范围为 5V 至 28V VCC,支持 1 节至 6 节电池 (BQ24610)
工作输入范围为 5V 至 24V VCC,支持 1 节至 5 节电池 (BQ24617)
充电电流和适配器电流高达 10A
自动选择适配器或电池作为系统电源
电池检测
FET 提供反向输入保护
充电使能引脚
适用于同步降压转换器的 6V 栅极驱动
关闭状态电池放电电流 < 15µA
关闭状态输入静态电流 < 1.5mA

原理图 设计

原理图部分基本没什么大的问题有疑问可以去看我之前转载的文章

原理图设计
原理图设计

Layout 设计指导

以下来自TI官方论坛下载

BQ24610, BQ24616, BQ24617, BQ24618, and BQ24630

下面有翻译

Layout设计指导
Layout设计指导
Layout设计指导
Layout设计指导
Layout设计指导
Layout设计指导
指导方案:
  • 建议采用多层PCB。至少布置两层地面。BQ24610EVM使用4层PCB(顶层,两个信号层和底层)
  • 将输入电容尽可能靠近QH MOSFET的漏极和QL MOSFET的源极,并使用尽可能短的铜走线连接。这些部件应该放在PCB的同一层上,而不是在不同的层上,并且应该使用过孔来进行连接。
  • IC应放置在开关MOSFET栅极端子附近,以保持栅极驱动信号走线短,以实现干净的MOSFET驱动。IC可以放置在PCB的另一侧,与开关mosfet分开
  • 将电感输入端尽可能靠近开关MOSFET输出端。尽量减少该走线的铜面积,以降低电场和磁场辐射,但使走线足够宽以承载充电电流。不要使用多层并联进行此连接。最小化从该区域到任何其他走线或平面的寄生电容。
  • 充电电流感应电阻应该放在电感输出的右边。将穿过感测电阻连接的感测引线路由回同一层的IC,彼此靠近(最小化环路面积),并且不要将感测引线路由通过大电流路径(参见开尔文连接BQ24610数据表的图27,以获得最佳电流精度)。将去耦电容放在IC旁边的这些走线上。
  • 将输出电容放置在感应电阻输出和接地旁边。在连接系统地之前,必须将输出电容接地连接在连接输入电容接地的同一根铜线上。
  • 模拟地与电源地分开走线,使用单一接地连接将充电器电源地绑在充电器模拟地上。在IC下方,使用倒铜作为模拟接地,但避免电源引脚,以减少电感和电容噪声耦合。使用热垫作为单地连接点,将模拟地和电源地连接在一起。或者使用0-Ω电阻将模拟地连接到电源地(在这种情况下,热垫应连接到模拟地)。强烈建议在热垫下方采用星形连接。
  • 将IC封装背面暴露的热垫焊到PCB接地上是至关重要的。确保IC的正下方有足够的热通孔,并与其他层的接平面相连。
  • 将去耦电容放置在IC引脚旁边,并使走线连接尽可能短。
  • 对于给定的电流路径,所有过孔的大小和数量必须足够。
错误layout布局
错误layout布局
错误layout布局

上图箭头是电流方向,最重大的问题应该是在于精密电阻的焊盘下方的过孔,此国控会影响BQ24610侦测电压和电流,使得输出端只能到2V。

成功的第一版本layout布局
成功layout布局
成功layout布局

上图是按照TI给的设计图基本完全照搬做的,输入18V成功打出18V系统电。

关于充电路径

充电路径layout布局
充电路径layout布局

从系统电经过表层HL MOS 电感 精密电阻 输出,这里由于有电池电压反馈,默认不插入电池该路径关闭。

电池放电路径

放电路径layout布局
放电路径layout布局

通过一个 NMos 输出到系统电。

自举电容

自举电容在BUCK中有关键作用

放电路径layout布局
放电路径layout布局
放电路径layout布局
放电路径layout布局
放电路径layout布局
放电路径layout布局

原文翻译
特性描述(续)
上部装置总是有足够的电压保持完全接通。如果BTST引脚到PH引脚的电压低于4.2 V超过3个周期,则关闭高侧n沟道功率MOSFET,打开低侧n沟道功率MOSFET,将PH节点拉下并给BTST电容充电。然后,高侧驱动器返回到100%占空比工作,直到检测到(BTST- ph)电压再次下降,因为泄漏电流使BTST电容器放电低于4.2 V,并重新发出复位脉冲。
定频振荡器在输入电压、电池电压、充电电流和温度等各种条件下都能严格控制开关频率,简化了输出滤波器的设计,使其远离可听噪声区域。关于如何选择电感、电容和MOSFET,请参见应用和实现

另一款 BUCK IC MP1484(MPS家的)规格书中写到

放电路径layout布局
放电路径layout布局

原文翻译
转换器使用内部n沟道MOSFET开关将输入电压降压到调节的输出电压。由于高侧MOSFET需要大于输入电压的栅极电压,因此需要连接在SW和BS之间的升压电容器来驱动高侧栅极。当SW低时,升压电容器从内部5V轨道充电。

程序设计

函数说明

OLED部分

目前移植 0.91 OLED 成功

OLED部分
OLED部分
OLED部分
OLED部分

移植参考链接:

https://github.com/yangjinhaoaa/OLED0.91-SSD1306-HAL

功率检测

功率检测
功率检测
功率检测
功率检测

移植参考链接:

https://zhuanlan.zhihu.com/p/659846231

电池电压检测

关于电池包电压,下面表格方便查看,列出了1~20串锂电池最高最低电压以及通过分压电阻得出的电压,还有理论上ADC寄存器中的值

功率检测
功率检测
batVbat minVbat maxRupRloVadc minVadc maxadc minadc min
13.74.26801000.4743589740.5384615384096589668
27.48.46801000.9487179491.076923077409611781337
311.112.66801001.4230769231.615384615409617662005
414.816.86801001.8974358972.153846154409623552673
518.5216801002.3717948722.692307692409629443342
622.225.26801002.8461538463.230769231409635334010
725.929.46801003.3205128213.769230769409741224680
829.633.66801003.7948717954.307692308409847135349
933.337.86801004.2692307694.846153846409953036020
1037426801004.7435897445.384615385410058946690
1140.746.26801005.2179487185.923076923410164847361
1244.450.46801005.6923076926.461538462410270768032
1348.154.66801006.1666666677410376678703
1451.858.86801006.6410256417.538461538410482599375
1555.5636801007.1153846158.0769230774105885110047
1659.267.26801007.589743598.6153846154106944310720
1762.971.46801008.0641025649.15384615441071003611392
1866.675.66801008.5384615389.69230769241081062912065
1970.379.86801009.01282051310.2307692341091122212739
2074846801009.48717948710.7692307741101181613413

代码部分使用ADC检测。判断电池部分使用if,简单粗暴,下面是识别1~6串代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if(ADC_Value_int <= 300){
OLED_ShowNum(110,0,0,1,16);
}
if(ADC_Value_int >= 588 && ADC_Value_int <= 689){
OLED_ShowNum(110,0,1,1,16);
}
if(ADC_Value_int >= 1177 && ADC_Value_int <= 1337){
OLED_ShowNum(110,0,2,1,16);
}
if(ADC_Value_int >= 1766 && ADC_Value_int <= 2005){
OLED_ShowNum(110,0,3,1,16);
}
if(ADC_Value_int >= 2355 && ADC_Value_int <= 2674){
OLED_ShowNum(110,0,4,1,16);
}
if(ADC_Value_int >= 2943 && ADC_Value_int <= 3342){
OLED_ShowNum(110,0,5,1,16);
}
if(ADC_Value_int >= 3532 && ADC_Value_int <= 4011){
OLED_ShowNum(110,0,6,1,16);
}

<<<文末闲语>>>

这个电源暂时没有计划后续做了,原本想要搭配其他板子做扫地机器人,最近时间不够承宇,暂时搁置了。不过在这里也学到了不少和 buck 升压有关的电路知识,虽然没有继续做了,但是也学到了不少。