作者:陸向陽
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近乎飽充。
既然如此,有些人可能會疑問:那就以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,但真的不再使用還是要回收。
- Ollama官方模型分類觀察 - 2025/06/13
- COMPUTEX Taipei 2025量子技術展示觀察 - 2025/05/29
- Arduino Cloud Editor加入大語言模型幫手功能 - 2025/05/28
訂閱MakerPRO知識充電報
與40000位開發者一同掌握科技創新的技術資訊!
2018/08/03
我想要知道完整的程式,謝謝你