標(biāo)題: STM32單片機(jī)如何實(shí)現(xiàn)電池電量的實(shí)時顯示 [打印本頁]

作者: 逍遙子666    時間: 2019-10-25 22:00
標(biāo)題: STM32單片機(jī)如何實(shí)現(xiàn)電池電量的實(shí)時顯示
各位大佬,在下有一個問題,就是如何用單片機(jī)STM32做一個電池電量的實(shí)時顯示,類似于手機(jī)上面那個電量顯示條一樣。各位有什么好的設(shè)計方案嗎?還望各位不吝賜教。

作者: 丶念    時間: 2019-10-26 07:28
我的思路是用電池的當(dāng)前電壓比上一個數(shù),然后A/D轉(zhuǎn)換,I/O口檢測顯示
作者: wukui304    時間: 2019-10-26 08:43
樓上基本正解,開機(jī)時檢測多個新電池電壓值,求其平均值作為電池總量,(也可以不檢測,直接設(shè)一個電壓總值)。檢測獲取的電池總值精準(zhǔn)一些,不檢測略差。檢測完成后,此段程序要屏掉。
主程序:設(shè)定每隔一段時間檢測電池電壓值,并將檢測值與電壓總值比較,然后送顯即可!
作者: Y_G_G    時間: 2019-10-26 10:24
電量并不等于電壓,如果你要顯示電壓就直接ADC顯示就可以了
但如果是電量的話,就不是單單的顯示電壓比而已了,特別是鋰電池
有一種算法好像是叫積分算法之類,亂得很,看不明白,文化太低
手機(jī)和大多的實(shí)際應(yīng)用,包括電動車之類的,一般都是用庫侖計IC,對充電的放電進(jìn)行比例運(yùn)算來顯示電量的,像DS2784就是一個庫侖計,你看一下它的數(shù)據(jù)手冊就知道了
作者: wukui304    時間: 2019-10-27 08:14
樓上提醒的對,確實(shí)電量并不等于電壓,復(fù)雜精確的做法就如同樓上的解釋。
但是簡單一點(diǎn),我想還是可以用電壓進(jìn)行估算的,百度了一下,可以參考:
鋰電池4.2v 剩100%;3.8v 剩70%左右;3.6v 剩30%左右,好一點(diǎn)的10%-20%;
樓主可以做個實(shí)驗(yàn),近乎完全放電后,測一下電壓,如3.5v,作為顯示電量0%,這樣4.2v與3.5v對應(yīng)的就是100%-0%了。
作者: ghghghg    時間: 2019-10-27 20:59
大體思路還是AD檢測,關(guān)鍵是AD檢測回來的值怎樣和電壓對應(yīng)起來。如果要求不高的話可以近似把電壓值和AD值看成是線性的關(guān)系。要求高一點(diǎn)的話可以用電池管理芯片,TB上很多,你只需要不停讀取芯片反饋回來的數(shù)值即可,這樣精度高很多,一般精度都在0.05V。
作者: 余金渠    時間: 2021-7-6 13:09
本帖最后由 余金渠 于 2021-7-6 13:11 編輯

C:\Users\余金浚\Downloads\43AXRZ)A0FM`HB6VNDU%5BSB1.png
正如這張圖所示
電池電量與電壓的關(guān)系可以分為3個界段
下面是3個階段的函數(shù)
設(shè)電池電量為y(%)電壓為x
當(dāng)電池電壓大于3.8v小于4.2v時;
70 = 3.8k+b
100 = 4.2k+b
k = 75
b =-215
y = 75x-215
當(dāng)電池電壓大于3.6V小于3.8V時;
70 = 3.8k+b
25 = 3.6k +b
k = 225
b = -785
y =225x-785
當(dāng)電池電壓大于3.2V小于3.6V時;
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

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

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

所以 UIdt 積分 思路 并不準(zhǔn)確。
如果有條件 能夠 測量 確切 電池 發(fā)熱的 能量, 也許可以得到準(zhǔn)確值。
作者: coody_sz    時間: 2024-9-11 11:53
根據(jù)充放電曲線計算、顯示電量,測量電流做庫侖計是最準(zhǔn)確的。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1