很多坛友都喜欢拆些笔记本的锂电池来diy手电或者移动电源,但由于电池时从废旧机器上拆下来的,剩余的容量还有多少往往很难看出来,心里没底。我特意做了个锂电池容量测试仪来帮你更为直观的了解电池的剩余价值了
利用lm317进行恒流放电,lm358作为电压比较强来判断电池电压,通过单片机定时器统计放电时间,并自动转换为容量通过数码管显示出来,并且可以通过开关来切换放电速度,实现以每小时600ma或每小时240ma的不同速率放电。满足不同容量电池不同场合的使用。当电池放电到3v时自动断开放电电路,切换到充电电路。
单片机用的是at89c2051,也可以用stc的2051 4052之类的兼容的单片机,当然也可以使用最常见的stc89c51·52单片机,显示用的是四位共阳数码管,建议用四位一体的那种,可以省很多不必要的连线,我用的是两位一体的,板子后面线很乱,
317恒流放电,358的一个比较器检测电压,第2脚和第6脚连在一起,通过旋转电位器来设定放电终止电压,建议设置在3v以上,另一个比较器作为数码管的延时开关,因为我们测电池容量是并不需要数码管一直亮着,所以加入这个电路后可以在按下显示键后一段时间后自动关闭数码管电源,节约电能,具体的延时长短可以通过调整电阻电容的值来实现,继电器的常闭触点是通过一个2.2欧的电阻和一个1n4007接到+5v电源上的,可以为带有保护板的锂电池充电,接入电池后按下启动键继电器上电自锁,单片机开始测试容量,当电压降到3v以下是自动断开放电电路,连接到充电电路上。
元件貌似很多,实际上没几个
万能板出场,diy离不开它。。
焊接完毕,
调试成功,测试时有一个led会以1秒得周期闪烁,测试完成停止闪烁
背面有点乱,还可以了,没画pcb直接开工焊接的
下面有个小视频演示下
http://www.tudou.com/v/rggSQEb2avo/&%3brpid=78698299&%3bresourceId=78698299_05_05_99&%3bbid=05/v.swf
程序如下:
//51单片机,12M晶振
#include<reg51.h>
#define uint unsigned int
unsigned char int_time;
unsigned int s,m,ma;
sbit led0=P3^2;//第1个数码管
sbit led1=P3^3;//第2个数码管
sbit led2=P3^4;//第3个数码管
sbit led3=P3^5;//第4个数码管
sbit jiance=P3^0;//j启动检测
sbit gz=P3^7;//工作指示灯
sbit qiehuan=P3^1;//放电电流切换
unsigned char Tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳极的段码
void delay(uint z)//延时程序
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void interserve(void)interrupt 1 using 1//定时器中断
{
int_time++;
if(int_time==20)
{
int_time=0;
s++;
}
if(qiehuan==0)//以240ma电流放电
{
if(s==15)
{
s=0;
ma++;
}
}
if(qiehuan==1)//以600ma电流放电
{
if(s==6)
{
s=0;
ma++;
}
}
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
void display()//显示程序
{
led0=led1=led2=led3=1;
P1=Tab[(ma%10000)/1000];
led0=0;
delay(5);
led0=led1=led2=led3=1;
P1=Tab[(ma%1000)/100];
led1=0;
delay(5);
led0=led1=led2=led3=1;
P1=Tab[(ma%100)/10];
led2=0;
delay(5);
led0=led1=led2=led3=1;
P1=Tab[ma%10];
led3=0;
delay(5);
}
void main(void)//主程序
{
TMOD=0X01;
ET0=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
int_time=0;
s=0;
while(1)
{
if (jiance==0)
EA=1;
display();
if (jiance==1)
EA=0;
if(s%2&jiance==0)
gz=0;
delay(10);
gz=1;
}
}
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【笔记】生成报错synthdesignERROR被打赏50分 | |
【STM32H7S78-DK评测】LTDC+DMA2D驱动RGBLCD屏幕被打赏50分 | |
【STM32H7S78-DK评测】Coremark基准测试被打赏50分 | |
【STM32H7S78-DK评测】浮点数计算性能测试被打赏50分 | |
【STM32H7S78-DK评测】Execute in place(XIP)模式学习笔记被打赏50分 | |
每周了解几个硬件知识+buckboost电路(五)被打赏10分 | |
【换取逻辑分析仪】RA8 PMU 模块功能寄存器功能说明被打赏20分 | |
野火启明6M5适配SPI被打赏20分 | |
NUCLEO-U083RC学习历程2-串口输出测试被打赏20分 | |
【笔记】STM32CUBEIDE的Noruletomaketarget编译问题被打赏50分 |