找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2526|回复: 12
收起左侧

51单片机怎么显示可充5号电池的电量?

  [复制链接]
ID:889832 发表于 2021-10-10 10:15 | 显示全部楼层 |阅读模式
萌新一个,搞不懂怎么显示电池的电量
回复

使用道具 举报

ID:624769 发表于 2021-10-10 14:06 | 显示全部楼层
哎……  方法如下:

一,记录电池总电量
二,记录电池耗电量
三,计算电池剩余量
四,按指定方式显示电池的电量

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:414168 发表于 2021-10-10 14:08 | 显示全部楼层
这个问题可以简单也可以复杂,简单的,直接使用AD口实时检测电池端口电压,简单的将检测到的端口电压分段比例显示(比如按4段显示分25%、50%、75%、100%);复杂的最好使用现成的电池管理IC,不过单纯考虑技术发挥的运用,可以直接使用单片机设计复杂的程序,配合硬件检测电池的充电、放电电流和电压电路,每次更新存储充电、放电容量的数据并加权修正,最后显示出来,化肥的时间会比较多吧!!

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:889832 发表于 2021-10-10 16:22 | 显示全部楼层
goinwin 发表于 2021-10-10 14:08
这个问题可以简单也可以复杂,简单的,直接使用AD口实时检测电池端口电压,简单的将检测到的端口电压分段比 ...

多谢大佬
回复

使用道具 举报

ID:883242 发表于 2021-10-10 19:43 | 显示全部楼层
goinwin 发表于 2021-10-10 14:08
这个问题可以简单也可以复杂,简单的,直接使用AD口实时检测电池端口电压,简单的将检测到的端口电压分段比 ...

你这是异想天开,实际上完全不可行。可充5号电池都是镍铬或镍氢电池,中间放电曲线非常平坦,电池电压跟放电率以及温度密切相关,通过检测电压的方式测量电池电量是做不到的。而到了电池电压发生明显下降,电池里面基本上已经没有电了,就算能显示出来也没有什么意义了。
A123-discharge-curve.jpg
回复

使用道具 举报

ID:419909 发表于 2021-10-10 19:52 | 显示全部楼层
如果要精确测量,需要知道具体电池规格以及总容量。再通过专业的电池管理IC测试充放电过程的使用的电量才可以。
回复

使用道具 举报

ID:420836 发表于 2021-10-11 08:13 | 显示全部楼层
先找个例子。 应该有很多。
回复

使用道具 举报

ID:414168 发表于 2021-10-11 14:48 | 显示全部楼层
Hephaestus 发表于 2021-10-10 19:43
你这是异想天开,实际上完全不可行。可充5号电池都是镍铬或镍氢电池,中间放电曲线非常平坦,电池电压跟 ...

你说的没错!我也没说错,简单的偷懒做法,仅仅是形式主义,实际起不到什么作用,蛋撕相对简单,容易做出来而已,要求不高的花做做装饰品吧!国内很多产品就喜欢这么糕!我也说了,要复杂的搞就复杂了,楼主也没说明确的目的要求,俺们也不好肥得让他一定妖做复杂的咯!!具体的还得看楼主自己的实际情况!!俺们这里只能指瘦花脚一二点,蛋撕不能越俎代庖!谢谢!
回复

使用道具 举报

ID:836515 发表于 2021-10-11 17:03 | 显示全部楼层
可以用adc0832读出电池的电压,再显示,我这有adc0832的程序可以参考一下
sbit cs=P1^0;
sbit clk=P1^1;
sbit dati=P1^2;
sbit DI=P1^2;
sbit dato=P3^0;
sbit DO=P3^0;
sbit led=P2^0;
uchar pmdat;
void delaynop()
{
_nop_();
_nop_();
_nop_();
}
void delayus(uchar i)
{
while(i--);
_nop_();
}
void CLK()
{
clk=1;
delaynop();
clk=0;
}
uchar adc0832()
{
uchar i,test;
clk=0;
DO=1;
delaynop();
cs=0;
delaynop();
CLK();
DI=1;
delaynop();
CLK();
DI=1;
delaynop();
CLK();
DI=1;
        for(i=0;i<8;i++)
        {
        test=test<<1;
        CLK();
        if(DO)
        test|=0x01;
        else
        test|=0x00;
        }
cs=clk=DI=1;
return test;
}
回复

使用道具 举报

ID:339654 发表于 2021-11-1 08:25 | 显示全部楼层
ADC采样获取电池电压
回复

使用道具 举报

ID:976493 发表于 2021-11-1 17:18 来自手机 | 显示全部楼层
一般是显示电压,电量比较复杂
回复

使用道具 举报

ID:1008076 发表于 2022-3-20 22:47 | 显示全部楼层
网络上的案子
回复

使用道具 举报

ID:1011864 发表于 2022-3-21 09:22 | 显示全部楼层
采集电压值吧,有好多种方法
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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