锂电池充电慢?手把手教你制作锂电池快充充电器
时间:2022-07-22
本文章向大家介绍锂电池充电慢?手把手教你制作锂电池快充充电器,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
最近在GitHub又发现了一个嵌入式软硬件都开源的项目——基于STM32G0的锂电池快充方案,使用Type C接口的充电头供电,基于STM32G0实现,支持为1s - 4s锂电池组充电,并且支持2s-4s平衡充电功能,文末有全套资料下载链接。
目前,这个项目已经作为产品量产上市,在hackaday商城售价60美金。
P.S. 文末有便携式Type C供电的电烙铁试用申请福利!
基本功能
主要有以下功能:
- 单节锂电池和 2s-4s 锂电池组平衡充电
- 支持 USB PD 电源,充电高达 60W
- 支持非 USB PD 电源(仅限于 2.5W - 5V,0.5A)
- 随着设备温度升高,自动降低充电功率
- 通过 RGB LED 提供用户反馈
- 开源原理图、BOM 和固件
用于调试和运行时信息的 UART 命令行接口
目前已经经过以下型号的USB PD快充电源的测试:
- Lenovo Thinkpad 65W Charger
- Lenovo Thinkpad X1 Carbon USB C Port
- Anker PowerPort Atom PD 1 30W
- Aukey PA-Y8 27W Turbo Charger
- Nintendo Switch Power Supply
- Generic 2.5W USB A Wall Wart
涉及到的知识点
- 锂电池平衡充电电路,及其单片机控制逻辑
- STM32G0官方USB PD快充协议中间件的使用
- 运行FreeRTOS,可通过CLI命令行进行交互
- 使用Makefile或TrueStudio编译
- STM32G071CBT6的GPIO/ADC/UART/IIC/TIMER/DMA基本外设使用
- BQ25703ARSNR锂电池充电管理芯片的使用
硬件电路
原理图也很简单,只有3页,整个项目的硬件框图如下:
主控部分采用的STM32G071,这是ST在2018年底推出的一款Cortex-M0+内核的MCU,IO口利用率超过93%,最大的一个特色就是支持 USB-C Power Delivery ,很多充电宝都是基于这款芯片实现的。
充电部分的电路,单节锂电池充电方案采用的是TI的锂电池充电管理芯片BQ25703ARSNR。
多节锂电池平衡充电采用的是MOS开关调节电路实现,电阻分压的方式来实时监控电池的电压状态,电池电压作为反馈,从而实现平衡充功能。
软件实现
软件方面,开发环境使用的 TrueStudio,使用 CubeMX 生成基本驱动代码,FreeRTOS 的移植,STM32G0 的 GPIO、ADC、IIC、TIMER、DMA、UART基本 外设的使用,STM32G0 USB C 驱动库的使用,异常状况保护逻辑和充电管理逻辑,可以通过串口终端实时监测充电的状态:
资料下载
无论你是否尝试自己动手做一个,其中的锂电池充电电路原理、STM32G0快充库的使用,都是非常值得学习和借鉴的。全套资料包括原理图、PCB、BOM、STL外壳文件等。
- 软件
github.com/AlexKlimaj/LiPow-Firmware
- 硬件
github.com/AlexKlimaj/LiPow-Hardware
- Spring 4.0.2 学习笔记(2) - 自动注入及properties文件的使用
- day6、Linux下如何找出7天以前的文件删除
- django模板语法之include
- day7、用户登陆出现-bash-4.1$错误的原因
- Django--admin源码流程
- Spring Security笔记:Remember Me(下次自动登录)
- day8、 显示Linux路由表、各列信息
- day9、用户登陆出现-bash-4.1$错误的原因及解决方法
- jboss eap 6.3 域(Domain)模式配置
- 揭穿数据分析的12个神话
- jboss eap 6.3 集群(cluster)配置
- Django中Q查询及Q()对象
- jboss eap 6.3 集群(cluster)-Session 复制(Replication)
- JSP中的Servlet及Filter
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法