
智能航模聚合物锂离子电池平衡放电器
简介
智能航模聚合物锂离子电池平衡放电器,支持电芯平衡模式和长期储存模式
简介:智能航模聚合物锂离子电池平衡放电器,支持电芯平衡模式和长期储存模式开源协议
:CC BY-NC-SA 3.0
(未经作者授权,禁止转载)描述
项目开发进度
2024.6.10 硬件电路焊接完毕,调试LED指示灯以及按键检测功能
2024.6.11 调试光耦,所有光耦可以正常工作,调试OLED屏幕显示信息
2024.6.12 调试放电功能,每路放电模块都能持续为电池对应的单片电芯进行放电
2024.6.16 调试电池长期储存模式,以及解决ADC采集电压不准确问题
2024.6.18 调试电池电芯平衡模式,调试蜂鸣器,最终的程序修改完成
引言
在当今社会,移动电子设备得到了广泛应用,而优点颇多的锂电池作为向移动电子设备提供能量的装置,对设备起着不可或缺的作用。锂电池的使用和存放安全同样也要引起重视。对于刚充满电的电池如果由于某些原因不能及时使用,就一直放置着,那么随着时间的推移,满电存放的电池会慢慢出现鼓包的现象,当鼓包到一定程度时可能引发爆炸的风险,这是我们不希望看到的事情。因此一款具有智能长期储存模式和电芯平衡模式的放电器应运而生。
项目介绍
此放电器能够对暂时不使用的锂电池进行放电,并且放电到适合电池储存的电压,使得电池能够在未来某段时间内不使用的情况下还能保持较好的性能;同时还可以对电池电芯平衡,对于电池的不同电芯电压不一致的问题,也可以通过此放电器解决,使各电芯压差相近。
此放电器可实现以下功能:
- 检测到无电池接入后返回主界面
- 可测量电池电压,以及显示各个电芯电压
- 放电过程中电池异常拔出则立即关闭光耦,停止放电并返回主界面
- 达到预设放电截止电压后停止放电,并发出警报
- 可在放电中的任何时刻按下按键退出当前放电模式
- 带有放电速度(即输出电流大小)调节,在OLED右上角显示数值,数值越大,输出电流越大
硬件设计
项目硬件系统总览
mcu主控芯片
N32G430系列采用32-bit ARM Cortex-M4F内核,最高工作主频128MHz,支持浮点运算和DSP指令,集成高达64KB嵌入式加密Flash,16KB SRAM,集成丰富的高性能模拟器件,内置1个12bit 4.7Msps ADC,3个高速比较器,集成多路U(S)ART、I2C、SPI、CAN等数字通信接口。基于该项目所需要实现的功能以及成本考虑,故采用国民技术N32G430C8L7这款mcu作为主控芯片。
放电模块
以某一路放电模块为例,解析该电路的设计思路:
采用光耦实现输入到输出的信息传输,这样有两个优势:输出不影响输入;解决输出端可以不与输入端共地的问题。
PNP管与NPN管组成的达林顿电路可大大提高输出电流,电流放电倍数为 β1* β2。
PNP管增加上拉电阻以及NPN管增加下拉电阻,避免在无操作时基极受干扰使管子导通。
H4为排针,可接万用表测量输出电流,不测量时用短路帽短接即可。
信息显示
采用0.96寸128*64的OLED显示系统运行时必要的信息。
电压检测
电池电压采集是一种典型的通过电阻分压配合主控芯片的adc采集并且进行比例换算来获得实际电压的方式。
在此项目中我用电位器来代替分压电阻对电池电压进行采集,因为电位器可以调整阻值来获得不同的分压比例,比使用分压电阻更加方便。
这里介绍一个方法可以使得调整分压阻值的比例更加快捷:
如上图所示,已知mcu电源电压为3.3V,12位ADC采样的总数值为4096,两片电芯串联满电电压为8.4V。第一个式子求出分压比例大约为0.3928,假设现在电池总电压为8.0V,代入计算,第二个式子求得ADC采样的电压大约为3.14V,最后代入求得实际的ADC值约为3897,此时调整电位器使得OLED上显示的ADC值为3897附近即可。
按键检测
提供两个按键方便对放电器进行交互,用以进入菜单、切换放电模式、退出等操作。
声音提示
考虑到需要根据当前系统处于不同的状态而使蜂鸣器发出不同频率的声音来提示当前的状态,选用无源蜂鸣器作为产生声音的来源。这样可以在进入模式、放电完毕、以及电池异常拔出等等状态下产生不同的音调来提示不同的信息。
放电状态LED指示
需要采用某些手段来获取当前电池是否处于放电状态,本项目采用LED指示灯来表示电池放电状态,且使用多颗LED来表示每一个对应电池电芯的放电状态。LED亮表示对应的电芯正在放电,反之则表示不放电。
数据存储
采用AT24C02数据存储芯片,由于目前该放电器正常工作时没有其他数据需要存储,因此该功能未使用。
电流检测
采用LM358集成运算放大器以及外围电路组成的差分放大电路对放电电流进行检测,可能由于电路设计或者干扰的原因导致LM358检测到的电流与万用表检测到的电流相差甚大,故放弃对电流的检测。
软件设计
主程序运行
在main函数的while循环中(如图一),不断执行switch函数,判断System_run_status的数值来执行对应的入口函数。而表示这些函数的状态的常量在n32g430_it.c中定义(如图二),在该系统运行时如果需要执行不同的函数,可以通过按键中断来修改System_run_status的值,即将四个常量的其中一个的值赋给System_run_status。
低电压检测
如上图,如果当前处于电芯平衡模式,则先判断检测到的电芯电压是否低于额定电压3.7V(因为小于此电压还继续使用会损害电池),如果小于3.7V那么将System_run_status的值修改,并提示电压过低,最后返回主界面。
同样的,如果当前处于长期储存模式,则先判断检测到的电芯电压是否低于最佳长期储存电池的电压3.85V,如果小于3.85V那么将System_run_status的值修改,并提示电压过低,最后返回主界面。
放电速度调节
使用一个按键对放电的速度进行调节,其中有增加速度和减少速度,那就要采取手段对这两者进行区分。这里设置长按来增加速度,短按来减少速度,即当按键按下产生中断后,延时大约300毫秒,然后读取GPIO引脚的电平,如果此时为低电平(表示按键仍按下)则high_level_duty的数值加一,如果此时为高电平(表示按键松开)则high_level_duty的数值减一。
蜂鸣器相关参数定义
这里定义了蜂鸣器鸣叫的相关参数,可根据自己习惯改变数值来设置不同的音调和鸣叫时长。
开源说明
本项目除了OLED那部分程序代码是移植了江协科技这位作者的,其余程序算法以及硬件设计均为本人原创,你可以应用在你的个人开发项目中,但严禁将此项目作为商业用途。
3D外壳
视频演示
附件中包含长期储存模式、电芯平衡模式和其他功能演示的视频。
由于放电时间有点长,视频做了倍速和剪辑处理。
设计图

BOM


评论