找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 18055|回復(fù): 10
打印 上一主題 下一主題
收起左側(cè)

STM32單片機(jī)如何實(shí)現(xiàn)電池電量的實(shí)時(shí)顯示

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:407232 發(fā)表于 2019-10-25 22:00 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
各位大佬,在下有一個(gè)問題,就是如何用單片機(jī)STM32做一個(gè)電池電量的實(shí)時(shí)顯示,類似于手機(jī)上面那個(gè)電量顯示條一樣。各位有什么好的設(shè)計(jì)方案嗎?還望各位不吝賜教。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:98195 發(fā)表于 2019-10-26 07:28 來自手機(jī) | 只看該作者
我的思路是用電池的當(dāng)前電壓比上一個(gè)數(shù),然后A/D轉(zhuǎn)換,I/O口檢測顯示
回復(fù)

使用道具 舉報(bào)

板凳
ID:609400 發(fā)表于 2019-10-26 08:43 | 只看該作者
樓上基本正解,開機(jī)時(shí)檢測多個(gè)新電池電壓值,求其平均值作為電池總量,(也可以不檢測,直接設(shè)一個(gè)電壓總值)。檢測獲取的電池總值精準(zhǔn)一些,不檢測略差。檢測完成后,此段程序要屏掉。
主程序:設(shè)定每隔一段時(shí)間檢測電池電壓值,并將檢測值與電壓總值比較,然后送顯即可!
回復(fù)

使用道具 舉報(bào)

地板
ID:401564 發(fā)表于 2019-10-26 10:24 | 只看該作者
電量并不等于電壓,如果你要顯示電壓就直接ADC顯示就可以了
但如果是電量的話,就不是單單的顯示電壓比而已了,特別是鋰電池
有一種算法好像是叫積分算法之類,亂得很,看不明白,文化太低
手機(jī)和大多的實(shí)際應(yīng)用,包括電動(dòng)車之類的,一般都是用庫侖計(jì)IC,對充電的放電進(jìn)行比例運(yùn)算來顯示電量的,像DS2784就是一個(gè)庫侖計(jì),你看一下它的數(shù)據(jù)手冊就知道了
回復(fù)

使用道具 舉報(bào)

5#
ID:609400 發(fā)表于 2019-10-27 08:14 | 只看該作者
樓上提醒的對,確實(shí)電量并不等于電壓,復(fù)雜精確的做法就如同樓上的解釋。
但是簡單一點(diǎn),我想還是可以用電壓進(jìn)行估算的,百度了一下,可以參考:
鋰電池4.2v 剩100%;3.8v 剩70%左右;3.6v 剩30%左右,好一點(diǎn)的10%-20%;
樓主可以做個(gè)實(shí)驗(yàn),近乎完全放電后,測一下電壓,如3.5v,作為顯示電量0%,這樣4.2v與3.5v對應(yīng)的就是100%-0%了。
回復(fù)

使用道具 舉報(bào)

6#
ID:290583 發(fā)表于 2019-10-27 20:59 | 只看該作者
大體思路還是AD檢測,關(guān)鍵是AD檢測回來的值怎樣和電壓對應(yīng)起來。如果要求不高的話可以近似把電壓值和AD值看成是線性的關(guān)系。要求高一點(diǎn)的話可以用電池管理芯片,TB上很多,你只需要不停讀取芯片反饋回來的數(shù)值即可,這樣精度高很多,一般精度都在0.05V。
回復(fù)

使用道具 舉報(bào)

7#
ID:687759 發(fā)表于 2021-7-6 13:09 | 只看該作者
本帖最后由 余金渠 于 2021-7-6 13:11 編輯

C:\Users\余金浚\Downloads\43AXRZ)A0FM`HB6VNDU%5BSB1.png
正如這張圖所示
電池電量與電壓的關(guān)系可以分為3個(gè)界段
下面是3個(gè)階段的函數(shù)
設(shè)電池電量為y(%)電壓為x
當(dāng)電池電壓大于3.8v小于4.2v時(shí);
70 = 3.8k+b
100 = 4.2k+b
k = 75
b =-215
y = 75x-215
當(dāng)電池電壓大于3.6V小于3.8V時(shí);
70 = 3.8k+b
25 = 3.6k +b
k = 225
b = -785
y =225x-785
當(dāng)電池電壓大于3.2V小于3.6V時(shí);
25 = 3.6k+b
0   = 3.2k+b
k =62.5
b =-200
y =62.5k-200
就如樓上所說簡單的電壓對應(yīng)電量是不準(zhǔn)的只不過我這種可以降電壓更準(zhǔn)確的對應(yīng)電量

43AXRZ)A0FM`HB6VNDU[SB1.png (28.58 KB, 下載次數(shù): 138)

43AXRZ)A0FM`HB6VNDU[SB1.png
回復(fù)

使用道具 舉報(bào)

8#
ID:1063617 發(fā)表于 2023-3-1 13:54 | 只看該作者
有推薦的AD芯片嗎
回復(fù)

使用道具 舉報(bào)

9#
ID:111280 發(fā)表于 2024-9-8 07:48 | 只看該作者
庫侖計(jì)可以準(zhǔn)確測量充放電量,如果純單片機(jī)制作也是可以的,STM32的ADC測量電流,但要做到雙向電流測量,哪得用一個(gè)運(yùn)放做雙向電流測量,STM自帶的12位ADC的一半電壓作為負(fù)電流,一半作為正向電流,哪分辨力就只能是一半了,即充電電流和放電電流,用定時(shí)器+DMA+ADC按相應(yīng)的時(shí)間測量出電流,然后積分起來,充電時(shí)積分起來,放電時(shí)積分起來,與標(biāo)稱容量做百分比,得到實(shí)際的剩余電量,這種方式只要有ADC的單片機(jī)基本可以做到,只是精度一般般
或者使用庫侖計(jì)專用芯片,比如DS2740,13位ADC,ADC以18.6kHz的速率采樣電流,經(jīng)過轉(zhuǎn)換周期后,芯片自動(dòng)保存電流值和自動(dòng)累加電流值,只要讀出來就得到相應(yīng)的電流值和累計(jì)的電流值了,非常簡單的,而且精準(zhǔn)
回復(fù)

使用道具 舉報(bào)

10#
ID:628113 發(fā)表于 2024-9-11 10:31 | 只看該作者
dbxzjq 發(fā)表于 2024-9-8 07:48
庫侖計(jì)可以準(zhǔn)確測量充放電量,如果純單片機(jī)制作也是可以的,STM32的ADC測量電流,但要做到雙向電流測量,哪 ...

理想狀態(tài)下是這樣。
但是 電池有內(nèi)阻, 充電效率 達(dá)不到 100% , 放電也達(dá)不到 100%。
更糟糕的是還有自放電。

所以 UIdt 積分 思路 并不準(zhǔn)確。
如果有條件 能夠 測量 確切 電池 發(fā)熱的 能量, 也許可以得到準(zhǔn)確值。
回復(fù)

使用道具 舉報(bào)

11#
ID:1034262 發(fā)表于 2024-9-11 11:53 | 只看該作者
根據(jù)充放電曲線計(jì)算、顯示電量,測量電流做庫侖計(jì)是最準(zhǔn)確的。
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表