DIY锂电池保护板全流程:基于中颖SH367309从原理图到代码实测
2026/9/24 4:29:30 网站建设 项目流程

年初帮朋友做了一个48V锂电池组的保护板,电芯是全新的力神大单体,pack工艺和数据都挺顺利,结果卡在了保护板上。朋友原来图便宜买了一块不知名硬件保护板,用了不到两个月,过放保护没动作,一串电芯直接饿到1.8V,拆开一看里面连温度检测都没有,MOS管和采样电阻也明显缩水。正是这次返工,让我下定决心用中颖SH367309从头到尾自己走一遍完整流程:原理图自己画,PCB自己layout,代码自己编译烧录。这篇把从原理图到代码烧录的全过程、踩过的坑和排查思路整理出来,希望对打算自己做锂电池保护板的朋友有帮助。

DIY锂电池保护板最忌讳的就是把保护板当成“黑盒子”,买来插上就完事。真正出问题的时候,你连从哪里查起都不知道。SH367309这类的方案之所以值得折腾,是因为它把电压采样、温度采样、充放电保护逻辑都做在了前端芯片里,同时留了通信接口给MCU做上层控制。你既能掌握保护阈值怎么设,又能实时看到每一串电芯的电压,这才是做电池管理系统该有的状态。

1. 选型决策:为什么是中颖SH367309而不是BQ系列或纯硬件保护板

1.1 SH367309的定位:AFE加保护逻辑再加MCU协作的架构

SH367309属于锂电池保护前端芯片,行业内一般叫AFE(Analog Front End,模拟前端)。它不是那种单节保护IC,也不是一颗把所有事情都包圆的SoC。它内部集成了多串电芯的电压采集通道、电流采集通道、温度采集通道,以及比较完整的硬件保护逻辑,同时留了I2C这样的通信接口,让外部MCU可以读写寄存器、配置保护参数、读取实时数据。

我第一次接触这个架构的时候,最不适应的就是“原来保护逻辑不一定要MCU参与”。很多DIY玩家习惯把MCU当成万能控制器,觉得所有保护都应该写在代码里。实际上SH367309这类AFE芯片内部有一套独立的硬件保护电路,即使MCU死机或者代码跑飞,只要电压超过寄存器里配置的阈值,芯片自己就会拉断充放电MOS。这种“硬件兜底、软件增强”的思路才是BMS该有的设计,安全等级完全不同。

用生活化的方式来理解:AFE就像大楼里的消防喷洒系统,靠温感和压力开关自动工作,不需要物业的电脑主机来发指令;MCU则像物业的监控中心,负责看数据、做记录、发警报。两者各司其职,又不能互相依赖过头。

1.2 常见替代方案对比:从DW01到BQ76940

做选型的时候,我把市面上几种常见方案放在一起比过,对比维度包括保护参数可配置性、均衡能力、通信接口、开发门槛、单板成本和供货稳定性。

方案保护参数配置均衡通信接口开发门槛单板成本供应链情况
纯硬件保护IC(DW01/BM3451等)固定或电阻配置基本无极低最低稳定,但功能简陋
SH367309 + MCU寄存器可配可做被动均衡I2C中等中低国产供货较稳,资料相对开放
TI BQ769x0 + MCU寄存器可配可做被动均衡I2C/SPI中高较高采购周期和价格波动是个问题

纯硬件保护IC的局限性很明显:保护阈值出厂就定死了,不同电芯的规格书要求不同,你想微调过充保护电压或者过放恢复电压,基本没戏。而且没有通信接口,你不知道每一串当前到底是多少伏,只能等保护动作了才知道出问题。TI的BQ系列性能确实强,ADS、库仑计、各种高级功能都有,但价格高,芯片不好买,烧录工具和软件授权又是一笔成本,对DIY玩家和中小批量项目来说不太友好。

SH367309的方案正好卡在中间。价格和供货比TI亲民,功能比纯硬件IC强出一大截,寄存器配置灵活,原厂SDK里也能找到不少参考例程。对于想做一两块样板,或者小批量给电动自行车、储能、电动工具配套的玩家来说,这个平衡点很关键。

1.3 选型时容易被忽略的隐性成本

芯片本身便宜,不代表整套方案便宜。我第一次做的时候只算了芯片价格,忽略了几个隐藏开销,这里给后来者提个醒。

第一,需要一个配套的MCU。SH367309是前端芯片,不是主控,你至少得有一颗带I2C接口的单片机来读写它的寄存器。中颖自己的8位MCU可以配,STM32也能配,关键是你会哪颗用哪颗,没必要为了“配套”强行换平台。

第二,烧录器是必需的。虽然有些型号支持ISP串口下载,但最稳妥的还是官方烧录器加调试器。这笔钱省不了,买兼容的也能用,但驱动和固件版本兼容性要提前确认好。

第三,SH367309的寄存器手册和SDK需要通过正规渠道获取。找原厂或者代理申请,一般会给你完整资料包,包括数据手册、参考原理图、PCB封装、例程代码。别去网上找那种来路不明的旧版本,芯片版本和SDK版本对不上会浪费大量时间。

第四,也是最容易被低估的——你自己得有一点单片机开发和PCB设计的基础。这不是买散件组装,是一套完整的硬件开发流程。如果你只会用现成的模块,建议先补一补基础再上手。

2. 原理图设计:外围网络的计算逻辑与易错点

2.1 芯片供电与采样网络:RC滤波和分压电阻的精度账

原理图设计是整个项目的龙头,这里出问题,后面全部白干。我这次的样板是13串48V电池组,每个环节都以这个为例来展开。

SH367309这类前端芯片的供电一般不是直接用电池总电压,而是经过稳压电路降到芯片工作电压范围内。上电瞬间的冲击电流和电池组总电压的波动都要考虑,否则芯片容易被“电”坏。我第一版原理图用的是简单线性稳压,结果电池组刚接上,稳压器输入端的电容耐压不够直接鼓包,后来换成耐压足够的高压差稳压电路才算稳住。

采样网络是原理图里的重点。每一串电芯的电压都要经过分压电阻网络才能进入ADC采样范围。分压电阻的精度直接影响最终的电压读数——1%精度的电阻和0.1%精度的电阻,价格差不少,但误差表现完全不在一个级别。以一节满电4.2V的电芯为例,如果分压网络用的是1%电阻,最坏情况下采样误差可能到几十毫伏;对一致性要求高的电池组来说,这个偏差会让均衡逻辑误判,也会让保护阈值实际动作点偏离设定值很多。

具体计算起来并不复杂:如果芯片ADC的满量程是3.6V,而单串电芯电压是4.2V,分压比就是4.2比3.6,也就是1.167倍。你用两颗电阻搭这个比例,1%精度的两颗电阻串联误差是最坏叠加的。算下来你读到的电压可能比实际高或者低几十毫伏,这还只是一串,如果每串都偏,整体一致性数据就乱了。所以采样分压电阻我建议用0.1%甚至更高精度的薄膜电阻,成本多不了几块钱,但调试时省下的时间远超这个价。

RC滤波电路也不能忽略。采样引脚前面加RC滤波是必要的,用来滤掉开关电源或者MOS开关带来的高频噪声,但R和C的取值不能拍脑袋。电容太大会让电压变化时间常数变大,ADC读到的是“滞后”的电压;R太大又会产生额外的压降。按照官方手册的推荐值来,最好再根据实际波形微调。我第一次选了比较大的滤波电容,结果放电瞬间电压读数“粘”住了,保护动作延后了上百毫秒,这种偏差在过放保护场景下是很危险的。

2.2 充放电MOS驱动:为什么是N-MOS对管加栅极泄放电阻

锂电池保护板的充放电回路里,MOS管扮演的是开关角色。这里用的一定是“背靠背”连接的两个N-MOS管:两个管子的源极接在一起,一个管控制充电回路,一个管控制放电回路。为什么要背靠背?因为单个MOS管自带一个体二极管,如果只用一个管子,电流会从体二极管漏过去,相当于开关失效一半。两个管子对头接,体二极管的导通方向互相抵消,充电和放电两个方向都能被真正切断。

用一道双向闸门来理解就很容易了:一道门管“进”的方向,一道门管“出”的方向,平时两道门都关上,电芯既充不进去也放不出来。护板唤醒后,根据充放电状态分别打开对应的门。

MOS管驱动电路里有几个细节很容易抄错。栅极串联电阻用来抑制开关瞬间的振铃,一般取10欧到100欧,具体值要根据PCB走线电感来调,不是越大越好。栅源之间必须并联一个几十千欧的泄放电阻,作用是保证上电瞬间MOS管栅极是确定的低电平,处于关断状态。这个泄放电阻相当于是保险丝,如果省了,上电瞬间MOS管可能因为栅极悬空而误导通,电池正负极直接短路,能量瞬间释放出来,板子和电芯都完蛋。

我踩过的一个坑是MOS管的型号选小了。当时算的是持续放电电流30A,选的MOS管标称电流也够,但没仔细看SOA(安全工作区)曲线。实际测试时瞬间过流达到标称的两倍以上,管子直接进了放大区,热量来不及散掉就烧穿了。后来换成更大电流余量的管子,并且在软件里把过流保护的延时调短,才算稳定下来。

2.3 被动均衡与NTC测温:功耗算不明白会出大事

均衡电路是BMS的核心功能之一,SH367309方案做的是被动均衡——把高电压那串电芯的电能通过电阻放掉,等电压降下来,从而让整组电芯电压趋于一致。这个逻辑很简单,但均衡电阻的功耗计算必须严谨。

以单节电芯4.2V为例,如果用100欧姆的均衡电阻,均衡电流就是4.2V除以100欧,也就是42mA,功率则是电流乘以电压,约0.176W。普通0603封装的电阻额定功率只有0.1W,直接超了,用一段时间就会变色甚至开路。至少要用1206封装(额定0.25W)或者0805封装(额定0.125W)都偏紧——我建议直接上1206,留够余量。如果是多路均衡同时开启,整个均衡区域的发热量不可小觑,PCB上要给这块铜皮留出散热面积,不要让均衡电阻紧挨着采样电阻和芯片,否则热量会让ADC读数漂移。

NTC测温电路的设计也不难,但容易在细节上出错。常见的接法是10k NTC配合10k上拉电阻,从分压点读取电压来换算温度。注意NTC的B值和25℃阻值必须和软件里的查表数据对应,差一个B值温度就能偏好几度。另一个坑是NTC探头的位置,一定要贴近电芯本体或极耳,走线要远离大电流回路,否则测到的是环境温度而非电芯温度,过温保护就没有意义了。

2.4 参考电路不是万能:TVS方向、电容耐压、0欧电阻的作用

原厂给的参考原理图是很好的起点,但“照抄”也会抄出问题。我见过不少童鞋把参考图里的TVS管方向画反了——原理图符号库里某个器件的引脚定义和实际封装不一致,或者纯粹是封装旋转角度搞错,上电瞬间TVS直接反向导通钳位,轻则保护板不工作,重则烧毁电源。画完原理图后一定要逐个核对TVS、二极管、电解电容的方向,这种低级错误在样板阶段极难排查。

电容耐压是另一个高频坑点。采样引脚上的滤波电容,如果只看到参考图上标了“0.1uF”就顺手选了6.3V耐压的瓷片电容,真正接到几十伏的电池组上,上电瞬间电容就击穿漏电了。我当时遇到的现象是“电压读取永远不对,而且数值随负载变化乱跳”,排查了半天才发现是采样端的滤波电容击穿。所有电容的耐压至少按实际工作电压的两倍来选,高压侧的分压电阻节点更要仔细检查。

还有那些看起来不起眼的0欧电阻和跳线,千万别随便删。参考图中的0欧电阻往往承担了两个作用:一是作为模拟地和功率地的单点连接点,二是给调试时断开采样线用的。你把它删了,地平面回流路径变了,ADC参考地不干净,各种奇怪问题都会冒出来。

3. PCB Layout:采样线、地线、热设计这三件事决定成败

3.1 开尔文接法:大电流回路和电压采样线必须分家

原理图没问题,PCB Layout上翻车是DIY玩家最常见的情况。这块板子我前后打样了两版,第一版就是死在采样线上。

第一版我把采样线直接连到了功率走线的输出端,觉得“反正都是同一个网络,连哪都一样”。结果负载一切入,MCU读到的电压值跳动超过100mV,过流保护阈值完全不稳定,好几次误触发。原因在于功率电流流经采样线那一段铜皮时产生了压降,把功率路径上的噪声和压降一起送进了ADC采样引脚。

解决办法就是开尔文接法(Kelvin Sensing)。采样线必须从采样电阻的两端单独引出,而且要从电阻焊盘的内侧引出,尽量避开大电流路径。采样线本身不需要粗,细线反而好,这样可以减少和功率线之间的寄生耦合。这样设计之后,功率电流通过铜皮产生的压降只会影响功率路径本身,不会叠加到采样信号里。

用测体重的例子来说:你站上体重秤,如果脚下还踩着电线杆上的拉线,身体的重量会顺着拉线传走一部分,读数自然不准。开尔文接法就是让信号回路独立,不在功率回路上搭便车。

另一个注意点是采样线尽量短,而且要远离MOS的驱动信号线。MOS开关瞬间的dv/dt很高,采样线如果和驱动线并行走线,会耦合出大量噪声,导致ADC读数漂移。

3.2 模拟地与功率地的单点连接

地线设计是决定信号完整性的关键。锂电池保护板上同时存在两种“地”:一种是承载几十安培电流的功率地,另一种是承接芯片、ADC、通信信号的模拟地。如果把这两种地用一整块铜皮直接铺在一起,功率地上的高频噪声就会直接灌进模拟地,ADC参考地电位不稳,所有采样数据都会跟着漂。

这次我采用的是模拟地和功率地单点连接,连接点用一颗0欧电阻或者一个磁珠。磁珠可以吸收高频噪声,但在大电流回流场景下要确认它的额定电流够不够,不然磁珠本身会发热。0欧电阻更简单直接,注意焊盘要留够。

布局上还有一点要养成习惯:MOS开关瞬间的di/dt很大,所以功率地的回流路径面积要尽可能小,输入和输出电容要紧贴着MOS管放置,让高频回路形成一个紧凑的环。环面积越小,对外辐射和拾取噪声的能力就越弱。

3.3 高压间距与散热:锂电串数越高越不能图省事

电池串数越高,系统电压越高,PCB上的爬电间距要求也越严格。13串电池组满电电压大约是54.6V,这个电压等级虽然不算超高,但PCB表面在高湿度环境下很容易出现爬电现象。我自己的习惯是:低压信号线上的间距至少留0.5mm,功率节点之间的间距至少留到1mm以上,如果空间允许,就按更保守的2mm来做。对于更高串数的系统,比如16串或者20串,建议在电池正负极之间开槽,槽缝能有效增加爬电距离,这是低成本又有效的做法。

散热设计上,MOS管是最大的发热源。以Rds(on)为5毫欧的管子为例,持续通过30A电流时,功耗等于电流平方乘以导通电阻,也就是30乘以30再乘以0.005,等于4.5W。这个功耗放在TO-252封装上,如果不加散热铜皮,管子的结温会迅速上升。实际Layout的时候,我给每个MOS管下面都铺了大面积铜皮,并打了两排过孔阵列把热量导到背面的铜皮去。均衡电阻区域也同样处理,但注意不要让均衡电阻的热量传回采样电阻和AFE芯片附近。

3.4 打样回来的第一轮检查与上电前准备

PCB打样回来后不要急着焊芯片。先用万用表做一轮低成本的检查:测电源输入端的正负极是否短路,测MOS管的栅源、漏源之间有没有击穿,测关键IC供电引脚对地电阻是否正常。这些检查只需要几分钟,能筛掉大部分“低级故障”。

焊接顺序上,我建议先焊电源部分,再焊MCU和AFE,最后焊MOS管。这样如果你用的稳压电路有设计问题,上电检查时芯片还没焊上去,不会连芯片一起带走。

上电前把可调电源限流调到100mA左右,再给板子供电。如果电流异常大,立即断电排查,而不是直接接上电池组。这个习惯我养成了很多年,救过我好几块板子。直接接电池组的问题是电池内阻极低,电流上来了就是几百安,芯片瞬间就报废了。

4. 代码编译与烧录:从中颖IDE到ISP下载器,最容易卡住的几个环节

4.1 建工程选芯片:不同版本SDK的差异必须看清楚

原理图和板子都搞定后,进入软件环节。我用中颖自带IDE配合Keil工程来做开发。这里第一个坑是芯片型号的选择。中颖的MCU型号后缀差别很大,Flash和RAM容量不同,选错了型号,编译出来的代码可能烧进去根本不跑。

第二个坑是SDK版本。不同版本的SDK里,寄存器定义、示例代码的接口函数可能有差异,尤其是SH367309这颗AFE的不同批次芯片,寄存器的默认值和兼容性也可能不一样。拿到SDK后先看版本号,再对着芯片丝印确认版本,一定要确保SDK里的头文件和寄存器定义跟手册一致。如果拿旧SDK配新芯片,I2C通信时序对不上,读出来的数据全是错的。

建工程的时候还有个细节:初始化代码里对系统时钟的配置。中颖的8位MCU内部振荡器可能默认不是最终工作频率,如果启动代码没有正确配置时钟,I2C的波特率就是错的,通信自然失败。先把一个简单的LED闪烁例程跑起来,确认时钟正确,再继续后面的AFE调试,这是比较稳妥的顺序。

4.2 ISP下载接线与供电要求

ISP下载接口一般需要VDD、GND、CLK、DIO、RST这几根线。目标板的供电最好是独立的稳压电源,不要依赖电池组供电,尤其是电池组处于欠压状态时,MCU供电不稳会导致下载握手失败。

接线要短,杜邦线不要超过15厘米,越短越好。下载线周围如果有大电流导线,特别是MOS的驱动信号线,干扰会耦合进去导致烧录假死。我之前有一块板子烧录总失败,换了短线和USB隔离口就正常了,其实就是干扰问题。

如果板上有大容量的电解电容,下载时可能会拉低VDD导致握手失败。这时候要么把电容断开,要么用一个缓启动的供电方式,让电压先慢慢爬升再开始烧录。烧录器本身如果支持目标板供电,要注意供电电流是否够,不够的话还是外部供电更稳。

4.3 烧录失败排查:接触不良、供电不稳、读保护三座大山

烧录失败是新手最容易崩溃的环节,但绝大多数问题其实集中在三个方面。

接触不良排名第一。杜邦线插接氧化、排针虚焊、转接板的触点脏了,都会造成下载线时通时断。排查方法很简单:把线重插一次,或者换一根线,经常就好了。我家里常备一把好的杜邦线,省了很多时间。

供电不稳排名第二。电池组电压低、稳压电路本身有问题、下载瞬间电流冲击导致电压跌落,都会让ISP握手失败。用稳压电源直接给板子供电,把电压调到芯片工作范围内,再试一次,基本能解决。

读保护排名第三。如果你之前给芯片设置过读保护,或者芯片是带代码保护状态出厂,ISP工具会提示ID错误或者连接失败。这时候需要先执行全擦除或者解锁流程,把保护位清掉。具体操作每个烧录工具不一样,但逻辑是一致的:先解锁,再烧录。

我遇到过一个特别隐蔽的问题:选项字节里看门狗默认开启,而我的主循环里没有喂狗,烧录后代码运行几秒就复位一次,表现是“闪烁的LED节奏不对”。排查了很久才发现是选项字节的问题,关闭看门狗才正常。烧录前花五分钟检查选项字节配置,能省下好几个小时的排查时间。

4.4 不要从零造轮子:基于原厂例程改保护参数

很多DIY玩家喜欢从零开始写代码,觉得这样才能锻炼能力。但在锂电池保护板这个场景下,我强烈建议不要从零造轮子。SH367309的保护逻辑很成熟,原厂SDK里提供了完整的初始化流程、I2C读写函数、状态读取函数,你只需要在此基础上修改保护参数和增加自己的显示逻辑。

核心思路是这样的:AFE芯片本身的硬件保护逻辑不需要MCU干预。你只需要在初始化的时候把过充保护电压、过放保护电压、过流保护电流、各保护项的延时时间通过I2C寄存器写进去,AFE就会自动执行。MCU的工作是定期读取各串电压、温度、状态位,做显示和告警,以及在特殊场景下发控制指令,比如主动关断MOS、触发均衡等。

把保护参数做成宏定义或者常量数组放在代码头部,调试的时候改一个值编译烧录一次,一目了然。寄存器位的定义一定要对着官方手册逐位确认,尤其是“使能位”和“延时时间位”,有的位是反逻辑,设错了会把保护功能关闭,那是非常危险的事。

另一个容易忽视的点是均衡策略。是充电末端均衡还是任意时刻电压差超阈值就均衡,这个逻辑写在MCU代码里,可以按自己的需求来实现。我用的策略是:充电状态下,某一串电压高于平均电压一定值且总电压大于某个阈值时,开启对应串的均衡MOS,退出条件也设好,防止反复开关。

5. 上电实测与联调:保护误触发、静态功耗异常、精度校准的实战记录

5.1 先不进电池:用可调电源模拟电芯验证通信

整板焊接完成、代码烧录成功之后,先不要急着接真实电池组。我强烈建议用多个可调电源串联来模拟电芯组,比如做13串就先准备几组稳压源,每组调到3.5V左右,串联起来接到保护板的采样输入端。每组电源的线径电流能力要求不高,因为只是用来验证采样和通信,不是真实充放电。

上电后第一件事是确认MCU和AFE之间的I2C通信能正常建立。可以通过读设备ID或者状态寄存器的默认值来判断。如果读出来全是0xFF或者0x00,大概率是通信时序问题;如果答非所问,可能I2C地址不对或者芯片供电有问题。确认通信正常后,逐串读取电压,和电源上显示的电压对比,看看偏差有多大。这一步能提前发现原理图或者layout上的电压采样问题,比接真实电池后再排查安全得多。

用可调电源模拟的优势是可以随时把某串电压调到异常值,来验证过压保护是否动作。把某一路电源电压慢慢调高,超过过充保护阈值后,观察MOS是否关断,状态寄存器是否置位,MCU是否触发了告警逻辑。这个过程可以反复进行,不会损耗电芯。

5.2 保护功能逐项实测:过充、过放、过流、短路的模拟方法

保护功能是保护板的灵魂,每一项都要实测确认。过充保护测试,在模拟电芯模式下把某串电压抬到设定值以上,观察充电MOS是否关断,延时是否符合预期。过放保护测试则反过来,把某串电压拉到保护阈值以下,观察放电MOS是否关断。

过流保护和短路保护的实测要更谨慎。用电子负载把放电电流拉高到过流保护点之上,观察保护动作的时间和电流曲线。如果你有一台带录制功能的电子负载,能看到瞬间的电流波形最好;没有的话,用万用表测电压变化也能判断。短路测试比较刺激,操作前先把供电电流限制在一个安全值,比如5A,然后直接短路输出端,观察MOS能不能在几十微秒内快速断开。不要直接用动力电池去短路测试,那相当于把能量瞬间灌到MOS上,管子扛不住就炸了。

延时时间的验证需要示波器。把示波器的两个通道分别接在触发源和MOS栅极上,观察从异常发生到MOS关断的延时,和寄存器配置的值对比。没有示波器的话,可以用MCU的GPIO做一个时间标记,在读取到保护状态位时翻转一个引脚,然后用逻辑分析仪或者万用表记录。精度差一些,但至少能确认延时的大致范围。

5.3 静态功耗异常排查:LED、均衡电阻、电容漏电都是嫌疑犯

电池供电场景下,保护板自身的静态功耗非常重要,尤其是长期待机应用。我遇到过一块板子休眠电流高达几十毫安,这意味着一节100Ah的大电池放几个月也会被保护板自己耗光。

第一轮排查锁定在均衡MOS上。均衡电阻一端是直接接在电池正极的,如果均衡MOS没有完全关断,漏电流会通过电阻到地,虽然单路不大,但十几串加一起就多了。用万用表量每个均衡MOS的栅源电压,确认关断状态是否正常。

第二轮排查指向LED指示灯。很多DIY设计喜欢加上充电、放电指示灯,如果LED的限流电阻选太小,或者LED的供电没做休眠切断,那休眠电流就直接从LED走了。别小看这一个灯,几毫安的泄漏对静态功耗来说已经很大了。

第三轮是电容漏电。电解电容在长期工作后漏电流会变大,一些质量不好的MLCC在高温高湿环境下也有漏电问题。排查的方法是断开外围模块,只保留芯片和电容,用微安表串在供电回路上,从大到小逐个摘除电容,看电流变化。虽然麻烦,但最后总能找到元凶。

5.4 电压采样精度校准:别急着改代码,先查电阻

最后一步是校准。你会发现MCU读到的电压和万用表实测电压之间总是有偏差,这是一个系统性误差,来源包括分压电阻的精度偏差、芯片ADC的参考电压偏差等。

校准之前先做一件事:用万用表实际测量每一串的电压,和板子上读到的值一一对比。如果所有串的偏差方向一致,比如都偏低30mV,那大概率是芯片ADC参考电压的偏差,可以在软件里做一个加性校准。如果只有某几串偏差特别大,那不是ADC的问题,而是那一串的分压电阻精度差,或者这一路的采样线layout有问题。这时候改代码没有意义,换一颗高精度电阻反而立竿见影。

软件校准的思路是增益校准加偏置校准。采集多个点位的实际电压和ADC读数,用最小二乘拟合一条直线,得到增益系数和偏置量,写进Flash。出厂时做一两个点位的校准就够了,想要更精确就多取几个点。校准完成后把Flash里的系数加进计算公式,读出来的电压就和万用表基本一致了。

温度校准的思路也类似。用标准温度计和NTC读数对比,在几个典型温度点记录数据,做查表修正。NTC的B值不准导致的偏差,在低温端会特别明显,如果你在低温环境下使用电池组,这一步不要省。

整个流程走下来,从画原理图到最终校准通过大概花了两周时间,其中一半时间花在Layout改版和烧录失败排查上。做完之后我的一个习惯改变了:每次上电之前,先在脑子里过一遍“先短接检查、再限流上电、最后接电池”这三步,缺一步都不动手。还有一个心得是,锂电池保护板这个东西,功能越丰富越要关注失效模式——如果MCU死机了,保护逻辑还work不work?如果你选的方案里保护完全依赖MCU软件,那这根安全弦就绷得太紧了。SH367309这种“硬件保护兜底、MCU做增强”的架构,从安全角度来说是很值得推荐的。做完这套方案之后,我自己留了一块板子当测试工装,后面再做电池组的时候,每一串的电压和温度心里都有底了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询