文章程式碼顯示

2017年11月25日 星期六

《進階※電子電路篇》寫程式Arduino教學 - 05:電池使用 以 Panasonic NCR18650 舉例

在前一章節我們有說到使用電池來幫 Arduino 進行供電,在此章節我們會針對一個電池來說明一些基本的知識


該電池的規格為

額定電壓:3.6 V
額定容量:2950 mAH ( min. 2750mAH )

充電最大截止電壓:4.2 V
放電最大截止電壓:2.5 V(一般而言我們不會把它用到這麼低的電壓,過度放電會導致電池出現不可逆的損壞,例如儲電能力下降或者甚至無法再次充電。3.1V是許多電池保護板的廠商慣用的最低保護電壓,某部分廠商會用到2.8V)



上圖說明了電池在充電的過程中電池電壓、電池電流以及電池容量(Capacity)的關係。

ASOC 稱為"絕對電荷狀態",與之對應的還有相對電荷狀態。因為電荷狀態就表示著電池儲存的能量多寡,我們將這些電荷用 0~100% 來表示電池的電量,絕對電荷狀態針對的是一顆全新的電池;相對電荷狀態針對的是已經被使用過(老化)的電池。

絕對電荷狀態用於此章節的說明會比較容易一些,例如 NCR18650 出廠時標稱為 2900 mAh,則 ASOC = 100% 時就是對應到 2900 mAH。

在對一顆電池充電時,首先我們會用定電流的方式來進行充電(對應到粉色區塊),當電池電壓達到約 4.2 V 時轉換為定電壓的方式來進行充電(對應到藍色區塊)。

我們可以看到,在定電流充電區間電池的容量(capacity)是線性增加的。

充放電率(C-rate) 

我們常用 C數 來代表這個電池的充放電能力。例如 1C

1C 代表著 NCR18650 理想狀態下以 2900mA 的電流放電,一小時整的時間會讓可用電荷全部耗盡。

我們可以回到上面的圖示中看到,在定電流充電的模式下,圖片上方有一排小字(0.7C MAX) 。代表的是定電流充電時,充電電流最大不能超過 2900ma * 0.7 = 2030mA (一般而言我們會用 0.5C 或是更小的 C數 例如 0.2C 0.1C 來對電池進行充電)。

註 : 廠商在計算 0.7C 時使用的是 2750mAh 來進行計算(2750*0.7=1925),因為在 datasheet 中有說明額定容量最小值為 2750 mAh,會有最小值出現是考量到電池的老化所造成的可儲存容量下降。以廠商的角度想當然爾會用比較安全的值來進行標示。但為了本章說明方便,我還是使用 2900mAh 來進行計算。

C 數的倒數代表的就是多久可以充飽電。例如 0.5C 理論上可以在 1/0.5 = 2 小時內將電池充飽



我們在使用電池時因為應用的不同,所以會遇到不同溫度的環境
對於不同的溫度而言,是會影響到 "電池可用容量" 的

上圖中的橫坐標 discharge capacity(mAh) 稱為放電容量。不知道是不是我對於電池不夠了解,總覺得這個中文翻譯有點怪怪的,所以我私自將它翻譯成 "已放電容量" ,並把它理解為"與電池剩餘容量(capacity)互為補數"

我們可以將 ASOC 的座標軸反過來與 Discharge capacity 重疊。會有這樣的想法是因為根據基本電學之電流的定義為"電荷(庫倫)/單位時間(秒)",而絕對荷電狀態(ASOC)描述的是電池內所儲存的電荷量,也就是說單位就是"庫倫",而 mAh 明顯是 電流 x 時間。

首先我們以上圖紅線的 60 度C 來進行說明。在全新的一顆電池充飽電的情況下 ASOC = 100% 開路電壓 4.2V。

以 1C 的放電率進行放電測試,在測試一開始電壓就會掉到大約 4V 的位置,這是因為電池本身具有"內阻"

繼續放電測試,由計算得知已放電容量 1200 mAh 對應到的時間為 (1200/2900*1C) 小時,約等於 25 分鐘,此時電池剩餘容量 ASOC = 58% 電壓約 3.55V 

直到總時長大約 60 分鐘過去,此時電池電壓掉到大約 2.5V ,電池的電荷也完全放光。




接著我們看上圖黃線 0度C

一開始的電壓掉到約 3.55V,由計算得知放電容量 1200 mAh 對應到的時間為 1200/2900 h 約為 25 分鐘,此時 ASOC = 58% 電壓約 3.4V。直到總時長大約 51 分鐘過去,此時電池電壓掉到大約 2.5V ,電池的電荷還剩下大約 450mAh

但在這樣的條件(1C放電且溫度為0度C)下我們已經不能使用到這些剩餘的電荷。

由上面的例子,我們可以知道對於相同放電率、不同溫度而言,電池有以下兩點特性

1. 溫度越低,電池可利用的容量(電荷)越少;意謂著可使用的時長變短
→ 電池內部還有電荷,但是電壓已經到底了

2. 溫度越低,在相同使用時間(例如25mins)下,電壓下降幅度較大

說到這,還記得之前看到一篇新聞標題為「手機也會高山症」

通過上面的例子我們就可以了解,手機會高山症的原因就是因為「溫度」。實際上不是你的手機沒電,而是因為低溫所以 "可以使用的電荷量" 減少了(電荷還是存在,但電壓過低所以你的手機內部晶片不能工作)


勘誤 : 上圖中的 5900 應為 5400 才對

剛剛的例子是在 1C 的狀況下分析不同溫度,接著我們來說明在相同溫度(25度)的情況下不同  C 數的放電電流會有什麼影響。

首先以 2C 來舉例,一開始的電壓降到大約 3.7V,大約用(1000/2900*2C) 小時約等於 10 分鐘後已放電容量就會達到 1000mAh ,此時電壓大約剩下 3.3V。隨著時間持續放電,到 2.5V 時同樣會有剩餘的電荷沒有辦法被利用(大約10%),此時時間大約是 27 mins(理想狀況為30mins)。

將時間換算成比例來看大約是 27/30 * 100% = 90%


接著我們看看 1C 的狀況。一開始的電壓降到大約 3.95V,大約用 20分鐘已放電容量就會達到 1000mAh ,此時電壓大約剩下 3.6V。隨著時間持續放電,到 2.5V 時同樣會有剩餘的電荷沒有辦法被利用(大約7%),此時時間大約是 56 mins(理想狀況為60mins)。

將時間換算成比例來看大約是 27/30 * 100% = 93.3%

由上面的例子,我們可以知道對於相同溫度、不同放電率(C數)而言,電池有以下特性

1. 放電率越大,電池可利用的容量(電荷)越少;意謂著可使用的時長變短
→ 電池內部還有電荷,但是電壓已經到底了

綜合以上可以知道,工作在 25度以上且放電率小的狀況可以較有效的利用電池


最後就是電池的循環次數了,這有點類似電池的壽命

循環次數是當一個電池所經歷完整充放電的次數,在 300 次充放電循環後,完全充電的電池容量約會下降 10% ~ 20%。


最後,我們談談 3.1 V 的保護電壓。將電池使用到過低的電壓可能會讓電池產生不可逆的損壞,所以電池保護板的廠商一般用 3.1V 來當作電池的保護電壓。

由上述的幾個例子我們知道,電池的容量減少時輸出電壓也會降低。在我們利用電池來替Arduino 供電的應用中,因為電池的輸出端還要經由電壓轉換器來進行電壓轉換,所以我們必須讓電池的輸出電壓(穩壓IC的輸入電壓) 不得低於某個電壓值(否則穩壓 IC 就罷工了)。換句話說,電池的電壓變成了我們判斷這整個系統(電池 + Arduino)電量的依據。

假設穩壓 IC 的最低輸入電壓就是 3.1 V,以上圖來看我們就會知道越大的放電率會使得不可利用的電池容量越多

例如在 2C (上圖藍線) 的狀況下會有高達 ASOC 37.2% 的容量不可被利用。此時我們只好減輕系統所需要的電流榨乾剩下的容量。

在 1C (上圖綠線) 的狀況下約剩下 15 % 的容量不可被利用

在 0.2C (上圖紅線) 的狀況下,約剩下 6% 不可被利用

由此可知,在電池內僅剩餘少量電荷的情況下,我們應想辦法降低電池的放電電流,來讓電池的輸出電壓可以提升。

↓↓↓ 連結到部落格方針與索引 ↓↓↓

Blog 使用方針與索引