TP4056 实现可编程锂电充电器+电量计

本文作者:t3486784401

链接:https://www.mydigit.cn/forum.php?mod=viewthread&tid=250916&extra=

手头有些容量非常小的软包锂电,直接使用市面上的大功率充电板(500mA/1A)倍率太大,容易损坏电池。


索性拿 TP5046 搭一套充电系统,配合 Arduino 实现电压、电流采样,实现电池容量检测。

【原理】

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

图中 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.

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

安装上 Arduino UNO 的组合样子:

【软件】

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

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

附上运行固件及源码,供参考或直接烧录:公众号后台回复关键词:008,或者 可编程充电。

【效果】

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

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

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

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

从电流曲线上可以明显看出 TP4056 工作流程:恒流到4.2v,再恒压到1/10电流,最终停止充电。


电压曲线则可以看出 3.9-4.2v 区间段容量较大,恒流持续时间较长;而 <3.7v 区间几乎没什么容量。

以上,使用 TP4056 搭接了一套可编程锂电充电系统,支持电压电流采样,可用于估算电池容量。


恒流充电电流 60mA-950mA 可调,可以适配各路中小容量的三元锂电池充电。

最后祝大家 DIY 愉快!


推荐阅读:

专辑|Linux文章汇总

专辑|程序人生

专辑|C语言

我的知识小密圈

关注公众号,后台回复「1024」获取学习资料网盘链接。

欢迎点赞,关注,转发,在看,您的每一次鼓励,我都将铭记于心~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/465972.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET获取路径的方法

HttpContext.Current.Request.PhysicalPath; // 获得当前页面的完整物理路径.比如 F:\XFU.NSQS\project\website\Default.aspxHttpContext.Current.Request.PhysicalApplicationPath; // 获得当前程序运行的物理路径比 如F:\XFU.NSQS\project\website\HttpContext.Current.S…

《我也能做CTO之.程序员职业规划》 水准之上,期望以下

高老师的新作已经大致拜读了&#xff0c;看完之后确实有点不吐不快的话。在这献丑一说&#xff0c;大家多批评指正。个人感觉老老师这书写的实在是&#xff0c;水准以上&#xff0c;期望之下。这话怎么解呢&#xff0c;简单的说&#xff0c;确实这书达到了高老师的平均水准&…

电车防盗报警器电路原来是这样的!

前几天电路菌从电车上拆开了一个防盗报警器&#xff0c;今天来看看防盗报警器这内部的电路到底是怎样的&#xff01;上图就是防盗报警器的主机&#xff0c;引出来的这根黑线是天线。在防盗报警主机的侧面&#xff0c;可以看到印刷有文字“RP-48V-64V”&#xff0c;应该是指这主…

vue 重定向

//重定向 { path: /*, component: Home} 转载于:https://www.cnblogs.com/1032473245jing/p/9018304.html

每日一题(14)—— 交换a,b的值(不使用中间变量)

如何将a,b的值进行交换&#xff0c;并且不使用任何中间变量&#xff1f; 推荐答案&#xff1a; a a ^ b; b a ^ b; a a ^ b; 下面的答案不好&#xff0c;可能会导致越界的问题 a a b; // 可能越界 b a - b; a a - b;

买到假芯片,血的教训!

关注星标公众号&#xff0c;不错过精彩内容作者 | 写代码的篮球球痴素材来源 | 云汉芯城2021年太难了&#xff0c;芯片涨价不说&#xff0c;涨价之后还买不到芯片&#xff0c;芯片交货周期已经超过一年了。嵌入式Linux1涨价、缺货 ——> 翻新、假货在芯片涨价、缺货的背景下…

Windows 7 :微软目前最好的操作系统

好消息&#xff0c;各位&#xff01;如果你是 PC 用户&#xff0c;如果你仍然在使用有 8 年历史的 Windows XP&#xff0c;或者令人讨厌的 Windows Vista &#xff0c;现在你终于可以解脱了&#xff1a;Windows 7 就在眼前。微软交付了一套设计巧妙、改进巨大的操作系统&#x…

[Robot Framework] 怎么做数学运算?

运用BuiltIn里面的Set Variable 转载于:https://www.cnblogs.com/MasterMonkInTemple/p/9020406.html

每日一题(15)—— static有什么用途

static有什么用途&#xff1f;&#xff08;请至少说明两种&#xff09; (1) 在函数体&#xff0c;一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 (2) 在模块内&#xff08;但在函数体外&#xff09;&#xff0c;一个被声明为静态的变量可以被模块内所用函数访问…

解剖几个有点难度的C笔试题

总结了几个比较经典的笔试题目&#xff0c;这些题目是在面试中遇到的&#xff0c;有难度&#xff0c;但是不是那种特别难的&#xff0c;比较有代表性&#xff0c;如果正在找工作的话&#xff0c;可以看看&#xff0c;丰富一下自己的知识库。1.题目一求下面代码输出&#xff1a;…

亲试白天使:华硕家用级无线路由RT-N11+

拿到机子2个礼拜&#xff0c;说实话&#xff0c;对于我来说&#xff0c;家庭用ASUS RT-N11还是很够给力的。 华硕RT-N11产品资料 <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />无线网络 802.11n Draft 2.0 WAN接口 100Mbps1 L…

基于PHP实现一个简单的在线聊天功能(轮询ajax )

基于PHP实现一个简单的在线聊天功能&#xff08;轮询ajax &#xff09; 一、总结 1、用的轮询ajax 二、基于PHP实现一个简单的在线聊天功能 一直很想试着做一做这个有意思的功能,感觉复杂的不是数据交互和表结构,麻烦的是前端展..于是.. 需求分析 要实现功能,首先要做前端,经过…

C笔试题指针

解剖几个有点难度的C笔试题昨天写的那个面试题&#xff0c;今天在群里讨论&#xff0c;有个同学加工了下&#xff0c;变成了新的题目&#xff0c;写出来大家一起看看。#include <stdio.h> struct node {int a;int b;int c; }; int main() {struct node s {3,5,6};int*pt …

Web安全渗透测试之信息搜集篇(上)

通过使用搜索引擎、扫描器、发送简单的HTTP请求或者专门精心制作的请求&#xff0c;都有可能导致应用程序泄漏诸如错误信息、版本信息以及所使用的技术等信息。 一、测试robots.txt文件 现在&#xff0c;我们首先介绍如何测试robots.txt文件。Web蜘蛛/机器人/爬虫可以用来检索网…

每日一题(16)—— 声明和定义的区别

简述变量/函数声明和定义的区别&#xff1a; 声明&#xff1a;不分配内存空间&#xff1b; 定义&#xff1a;分配内存空间。

数据结构之线性结构之堆栈

二&#xff0c;堆栈 中缀表达式&#xff1a;运算符位于两数之后&#xff1b; ab*c-d/e 后缀表达式&#xff1a;运算符位于两数之后&#xff1b; abc*de/-&#xff1b;计算机表示式求解时的读法&#xff1b;用堆栈实现计算 前缀表达式&#xff1a;运算符位于两数之前&#xff1b…

Qt 开源作品 | 小伙子,给你的 Linux 系统写个 Launcher 吧

今天给大家分享一下&#xff1a;如何用 Qt 实现一个 launcher (程序启动器)。运行效果&#xff1a;github 链接&#xff1a;https://github.com/alamminsalo/qml-launcher代码很少&#xff0c;C 部分大约 100行代码。下面是实现过程。1. 创建 QML 应用在 Qt Creator 依次点击&a…

IT餐馆—第十六回 驱动

声明&#xff1a;在写这个系列文章的过程中&#xff0c;园子里有些人投来了怀疑、鄙视、甚至匿名谩骂&#xff0c;当然也有朋友跳出来支持并提出意见或建议的。我这些天想了一下&#xff0c;感觉写文章不一定要让所有人都接受&#xff0c;必定众口难调&#xff0c;有时为了照顾…

Almost Arithmetic Progression

time limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputPolycarp likes arithmetic progressions. A sequence [a1,a2,…,an][a1,a2,…,an] is called an arithmetic progression if for each ii (1≤i<n1≤i<n) the v…

Sourcetail 一款代码编辑神器,让看源码如丝般顺滑

大家好&#xff0c;我是小麦&#xff0c;上一次的文章《一个超级实用的源码阅读小技巧》&#xff0c;我简单提到通过gccegyptgraphviz(dot)这三个工具&#xff0c;快速生成函数调用图&#xff0c;总体来说也非常好用。众所周知VSCode&#xff0c;Sorceinsight非常好用&#xff…