No Code AI(肉寇)AI自動化兩日精通|實體6小時+線上6小時
|

如何管控LinkIt ONE的電池?

   

作者:陸向陽

 

BAT Ctrl

LinkIt ONE與正規Arduino很大的一個不同點,是一起頭就考慮可選用電池運作,因此有一套專屬的函式庫可以呼用(呼叫使用,英文為Call,大陸慣稱:調用)。

要讓LinkIt ONE改用電池供電運作,必須先撥動LinkIt ONE電路板上的一個開關,從USB(指USB埠供電)檔位打到BAT檔案(BAT為Battery的縮寫),而在此之前必須先把LinkIt ONE配套的鋰電池接上。

當然,電池內要有電,不然,也可以先持續接上USB埠,透過USB埠的供電為鋰電池充電。否則,一旦切成由鋰電池供電,且電力不足,LinkIt ONE系統就會停擺了。

接著的所有動作都與軟體有關,必須在Arduino IDE中,在程式撰寫的一起頭就要將電池相關的程式檔含括進來,語法即是:#include <LBattery.h>

而後,在初始程式部分不用撰寫任何東西,但在主體循環程式執行時,就開始能用程式語法與鋰電池溝通。首先是偵測鋰電池是否真的已經接上,語法是:LBattery.isCharging()

如果有接上,理論上LBattery.isCharging()函式的回傳值為1,反之為0,但實際上沒偵測到鋰電池接入,也是會回傳1。(筆者的LinkIt ONE電路板為v1.0,2014年8月8日的,可能新版已經修正)。

用軟體確定接入狀態後,進一步是探知電池的剩餘電量,關於此,也只要呼叫LBattery.level()函式,取得此函式的回傳值即可,回傳的數值只有4種,分別是:0、33、66、100,對應的實際意涵是0近乎沒電,33剩餘電量1/3,66剩餘電量2/3,100近乎飽充。

BAT Level

既然如此,有些人可能會疑問:那就以0、1、2、3來表示即可,何必用0、33、66、100呢?

剩餘電量的量測與表示

其實,剩餘電量的量測主要有兩種方式,一是直接量測電池的電壓,供電電壓下滑即意味著電量短減,如此只要將剩餘電量在「飽充、2/3、1/3、用盡」等4種狀態下量測出電壓值,未來偵測到接近的電壓值,就回報對應的電量刻度即可。

用這種方式來回報剩餘電量,還有更粗略的作法,就是只等電量快沒時,電池電壓低到一定程度,回報一下「Battery Low」訊息即可,平價的數位相機多採行此種作法。

只回報Battery Low可說是Low、非Low(Low是剩餘多少電能,要看產品說明書,各家定義不同)兩個電量刻度,而0、1/3、2/3、100則是四個刻度,且刻度比前者均勻,但這種量測法,隨著電池不斷充放、充放使用,電池會逐漸老化,之後顯現的電壓,將與對應的電量逐漸偏差。

因此,各位有時候看到明明飽充,但很快就從3刻度飽充降到2刻度,或者1刻度時可以撐很久,或者比過去更快退到1刻度等,各種與過往使用經驗不準的出入情形開始出現。

而另一種比較好的作法,是使用庫倫計的電量量測法,真的偵測進出的電荷量來精準計算剩餘電量,且建立較嚴謹詳盡的電池老化曲線數據在微控制器內,隨著充放電次數的增加,持續精準對應計算、查詢,顯示出精準的剩餘電量。

這種作法比較精準,所以可以有0%~100%的剩餘電量顯示,每百分之一的電力用去,都可以即時顯示出來,但缺點是實現電路的成本較高,通常是較高級的電子產品才會具備。

回到主軸,LinkIt ONE的LBattery函式庫,其實也是著眼未來可能使用較先進、較精準但成本也較高的庫倫計作法,但眼前先以粗略提供剩餘電量,所以回傳值才會設定成0/33/66/100,未來若真的採行庫倫計作法,原有的回報值才能持續相容使用,不需要修改。

附帶一提的,LinkIt ONE官方配屬的鋰電池為1,050mAh/3.9Wh,3.7V(典型鋰電池供電電壓),雖然已經合乎RoHS,但真的不再使用還是要回收。

陸向陽

訂閱MakerPRO知識充電報

與40000位開發者一同掌握科技創新的技術資訊!

Author: 陸向陽

從電子科系畢業後,即以媒體人的角色繼續這段與「電子科技」的不解之緣。歷任電子技術專書作者、電子媒體記者、分析師等角色,並持續寫作不殆。近來投入Arduino、Raspberry Pi等開放硬體的研究與教程介紹。

Share This Post On
468 ad

1 Comment

  1. 我想要知道完整的程式,謝謝你

    Post a Reply

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *