数码之家

 找回密码
 立即注册
搜索
查看: 25917|回复: 183

[Arduino] TP4056 实现可编程锂电充电器+电量计(原创)

    [复制链接]
发表于 2021-4-22 15:33:59 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
手头有些容量非常小的软包锂电,直接使用市面上的大功率充电板(500mA/1A)倍率太大,容易损坏电池。
索性拿 TP5046 搭一套充电系统,配合 Arduino 实现电压、电流采样,实现电池容量检测。

【原理】
TP4056 是 1A 锂电池线性充电器,适合 3.7v 三元锂电池充电。
芯片除了自带指示灯驱动(充电/满电),还支持单电阻 Rprog 设定、检测电流:

IMG1.png

图中 Rprog 与恒流电流的关系:Icc= 1v/Rprog *1200
实时充电电流与 Vprog 的关系:Ibat= Vprog/Rprog *1200

恒流阶段 Vprog=1.0v,充满以后 Vprog<0.1v.
使用 ADC 同步采样电池电压 Vbat、参考电压 Vprog 即可获得电压、电流参数,
电流参数对时间进行积分,即可获得电池容量参数。


【硬件】
硬件的主要功能包括:电压电流滤波采样、编程电阻 Rprog 的动态切换。
Rprog 采用 8-4-2-1 比例方式由 Arduino 切换,调整 IO 通断即可设定 60mA-950mA 充电电流,步进值 60mA.

IMG2.png

硬件做成了 Arduino 扩展板的形式,由于 TP4056 需要有些散热设计,因而再搭棚一层 TP4056 最小系统。
Vprog 由 ADC 直接采样,Vbat 经过 47k-10k 分压网络后采样,最后焊接扩展板:

IMG3.JPG

安装上 Arduino UNO 的组合样子:

IMG4.JPG


【软件】
由于没有复杂的控制逻辑,整套代码使用 ICCAVR 编写:

IMG5a.png

运行过程中使用串口助手接收电压、电流数据,供后期计算使用:

IMG5b.png


附上运行固件及源码,供参考或直接烧录: LiCHGTest_APP SRCv1.0.zip (5.83 KB, 下载次数: 42)


【效果】

堆叠板上保留了 TP4056 经典的红/绿充电状态指示,效果如下:

IMG6.gif

串口收到的数据统一替换下格式粘贴进 EXCEL,顺手处理电压电流换算:

IMG7.png


最终 EXCEL 绘制电池充电电压(蓝)、电流(红)曲线,含时间标签:

IMG8.png

电流曲线(红)下方的面积即为电池容量,实际用 EXCEL 做个累加直接就有了。
我这个二手软包电池测得大约 160mAh 的容量。

从电流曲线上可以明显看出 TP4056 工作流程:恒流到4.2v,再恒压到1/10电流,最终停止充电。
电压曲线则可以看出 3.9-4.2v 区间段容量较大,恒流持续时间较长;而 <3.7v 区间几乎没什么容量。

------------------------------------------------------------------------------------------------------

以上,使用 TP4056 搭接了一套可编程锂电充电系统,支持电压电流采样,可用于估算电池容量。
恒流充电电流 60mA-950mA 可调,可以适配各路中小容量的三元锂电池充电。

最后祝大家 DIY 愉快!


打赏

参与人数 24家元 +2403 收起 理由
mydigit + 2000 恭喜获得原创文章热度奖励2000M.
rallyezhang + 20 原創內容
zx61107 + 20 謝謝分享
kkdkj + 20 謝謝分享
沙漠臭屁虫 + 20
hfsp + 20 優秀文章
亚历山大 + 20
李拜天 + 20 謝謝分享
moontree + 20
cao57508 + 20 優秀文章

查看全部打赏

本帖被以下淘专辑推荐:

发表于 2021-4-22 16:17:51 | 显示全部楼层
DIY很好,但楼主你不知道最近芯片涨价吗?还用单片机:sweat:

打赏

参与人数 1家元 +20 收起 理由
rallyezhang + 20 精彩回帖

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2021-4-22 16:20:54 | 显示全部楼层
160mAh太小了吧,能干啥???
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-22 16:23:17 | 显示全部楼层
石墨 发表于 2021-4-22 16:17
DIY很好,但楼主你不知道最近芯片涨价吗?还用单片机

所以才要用 Arduino,底板拔掉可以换作他用。

扩展板只是做了接线+模拟调理
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-22 16:26:41 | 显示全部楼层
邪恶海盗 发表于 2021-4-22 16:20
160mAh太小了吧,能干啥???

矿坛参加了最近一次 DIY 大赛,一个自动开合的垃圾桶盖。
这个 160mAh 电池连续续航了 4.5 月,还觉着容量小吗?

我挂风筝上测高度的帖子,电池标称容量只有 60mAh,比这个还迷你。
回复 支持 2 反对 0

使用道具 举报

发表于 2021-4-22 16:32:03 | 显示全部楼层
用TP4056 VPROG和VBAT来判断充电电流大小。。这创意不错。。
回复 支持 反对

使用道具 举报

发表于 2021-4-22 16:32:05 来自手机浏览器 | 显示全部楼层
牛掰了,给楼主点赞
回复 支持 反对

使用道具 举报

发表于 2021-4-22 16:41:48 | 显示全部楼层
买了几个4056充电板  截止电压都很低 才4.02V——4.08V
回复 支持 反对

使用道具 举报

发表于 2021-4-22 16:44:17 | 显示全部楼层
这个项目真好 我一直想做 但是无奈不懂程序不会搞
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-22 16:49:32 | 显示全部楼层
asnake 发表于 2021-4-22 16:32
用TP4056 VPROG和VBAT来判断充电电流大小。。这创意不错。。

Vprog 在设计的时候就是可以检测充电电流的,这个要感谢 4056 的厂商,预留了这么个彩蛋
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-4-22 16:51:03 | 显示全部楼层
aacyxjz 发表于 2021-4-22 16:32
牛掰了,给楼主点赞

感谢捧场!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-22 16:53:27 | 显示全部楼层
luzhishen 发表于 2021-4-22 16:41
买了几个4056充电板  截止电压都很低 才4.02V——4.08V

一般是 4.15v-4.25v 比较正常,我前后入手的几批都在 4.21v 左右,没见着太大的区别。

可有芯片近拍图,发来学习下坑长啥样?当然有时候也是万用表的锅。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-22 16:55:24 | 显示全部楼层
1064865056 发表于 2021-4-22 16:44
这个项目真好 我一直想做 但是无奈不懂程序不会搞

Arduino + 图形编程可还行,基本就是简单的图块拼装;

不过 ADC 采样、二进制还是得会搞,数据处理的时候逃不开
回复 支持 反对

使用道具 举报

发表于 2021-4-22 17:48:13 | 显示全部楼层
有详细的电路图吗?新手需要学习:handshake:
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-22 17:52:46 | 显示全部楼层
听雨亭 发表于 2021-4-22 17:48
有详细的电路图吗?新手需要学习

源码里有写明接线, TP4056 接线就是 PDF 里标准的
回复 支持 反对

使用道具 举报

发表于 2021-4-22 19:45:31 | 显示全部楼层
我都想把废板子上的单片机利用起来。没用过AVR在寻源代码:lol:
回复 支持 反对

使用道具 举报

发表于 2021-4-22 21:18:43 来自手机浏览器 | 显示全部楼层
t3486784401 发表于 2021-4-22 16:53
一般是 4.15v-4.25v 比较正常,我前后入手的几批都在 4.21v 左右,没见着太大的区别。

可有芯片近拍图, ...

楼主,我一直很好奇,4056这模拟芯片
靠什么保证大批量生产,充电截止电压基本一致?
还有那个恒流大小与电阻之间函数关系,模拟电路真不易

打赏

参与人数 1家元 +20 收起 理由
rallyezhang + 20 歡迎探討

查看全部打赏

回复 支持 反对

使用道具 举报

发表于 2021-4-22 21:47:07 | 显示全部楼层
t3486784401 发表于 2021-4-22 16:26
矿坛参加了最近一次 DIY 大赛,一个自动开合的垃圾桶盖。
这个 160mAh 电池连续续航了 4.5 月,还觉着容量 ...

我X,牛屁了...

----------------------------------
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-23 00:06:09 | 显示全部楼层
cnhncs 发表于 2021-4-22 19:45
我都想把废板子上的单片机利用起来。没用过AVR在寻源代码

这个是基于 AVR 的 Arduino,十几块一套的山寨板子都能很好运行
回复 支持 反对

使用道具 举报

发表于 2021-4-23 00:13:03 | 显示全部楼层
t3486784401 发表于 2021-4-22 09:06
这个是基于 AVR 的 Arduino,十几块一套的山寨板子都能很好运行

硬件上用Arduino,软件上用AVR,可以直接调度单片机,免去使用Arudino IDE的接口,以前经常这样干:lol:

感觉Arduino方便的地方就是板子自带USB接口,不需要有另外的编程器和
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-3-29 08:09 , Processed in 0.468000 second(s), 29 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表