|

【Micro:bit】亮度、溫度感測器技法大秘辛!

   

作者:陸向陽

有端詳過Micro:bit電路板的創客友們,會發現Micro:bit板子上根本找不著亮度感測器或溫度感測器,但網路上一些文章卻提及Micro:bit開發板上內建亮度、溫度感測器,究竟是怎麼一回事呢?讓我們繼續看下去…

亮度感測器

嚴格來說,Micro:bit板子上沒有特別設置亮度感測器,但卻有5×5的LED燈,這些LED燈是透過Micro:bit上的主控晶片本身具有的GPIO接腳,以輸出狀態來操控LED燈的亮滅。有趣的是,操控LED燈亮滅的接腳其實是多工(扮演一種以上的多種角色)的,這個時間可以充當一般I/O接腳的輸出腳,另一個時間可以充當輸入腳,或再另一個時間充當類比數位轉換器(Analog Device Converter, ADC)的輸入腳。

而Micro:bit的光感測,其實是利用LED燈的反向原理,當LED燈不亮時,若有接收到外界光源,其實是會在LED接腳上出現逆電流的,這時若接腳切換成ADC輸入角色,讀取接腳的電壓數值,是可以得知外界亮度的,所以切換連接LED燈的接腳的角色就可以感測到外界亮度。但在此還有三點要說明:

  1.  接腳從一般輸出接腳轉變成ADC輸入接腳時,需要一段時間的穩定,才能對最小的逆電流進行精確量測,這約要4mS(毫秒,千分之一秒)的時間。
  2.  啟動亮度感測器後,也會略影響本來的5×5 LED燈顯示,本來是每秒更新55次畫面,會因需要偵測周遭亮度而減少更新頻率,自每秒55次降至50次。
  3.  LED的逆電流感測其實是對自己本有發出的顏色比較敏感,Micro:bit用的是紅色LED,所以周遭附近若有紅光,紅光亮度的弱與強,是Micro:bit比較可以精準感測的。

溫度感測器

Micro:bit沒有配置專屬的溫度感測器,而是運用主控晶片內建的溫度感測器來實現。主控晶片之所以內建溫度感測器,是為了保護主控晶片自身,一旦晶片溫度過高,晶片的保護電路會強制晶片減慢執行速度,使晶片降溫,甚至要求停止運算,達到更快降溫,避免晶片因高溫而損壞。但是,這個內建的溫度感測器,感測器電路是在晶片的裸晶上,是在晶片封裝內的,主要是感測晶片表面溫度,而不是晶片外的溫度,更不是晶片周遭的溫度。所以該感測器量測到的溫度數值與真正在晶片外配置的溫度感測器所量得的數值,是有差異的。

即便如此,溫度的變化卻是一致的。假若晶片內感測器的溫度是20度,外界是17度,當外界升溫到18度時,感測器會顯示21度。嚴格來說,Micro:bit提供的是溫差感測器,時時讀取是可以掌握溫度的消長變化,但不是絕對精準的攝氏溫度,畢竟內建的感測器,所配置的位置不同,原先設計的用途也不在感測外部溫度,我們只是暫時偷用,取巧借用而已。

當然,使用這一取巧招時,有兩個先決條件,一是晶片本身表面溫度要夠冷才行,若晶片一直在密集運算處理執行工作,晶片表面溫度升高,高過周遭溫度,那就難以感測周遭溫度,溫度感測器回歸它本有的晶片表面溫度感測工作;另一是晶片本身不能處於休眠狀態,因為讀取溫度數值,是呼叫晶片工作而取得,晶片一旦睡著了就不可能進行感測工作。

結語

如電影《無間道》第二集所言:「出來混的,總是要還的。」上述我們已經看到,沒有專門設置亮度、溫度感測器,即便可取得亮度、溫度感測數值,也是要付出代價或限定條件的,包含降低顯示器的畫面更新率(refresh rate)、只對紅光比較敏感、只是掌握溫差變化、晶片自身不能過熱等。

所以,Micro:bit的作法充其量是提供概略的亮度變化、溫度變化的感應能力,卻不是精準的感應能力,畢竟Micro:bit是針對學童而設計,只要能初步體驗感測器功用、初步讓學童體驗到感測變化與可採行的因應動作,或以此進行發揮應用(例如:做一隻電子狗,一旦被照射紅光就會汪汪叫,或溫度過低會嗚嗚叫等),已足夠,且能讓Micro:bit系統板更平價,畢竟板子上省去了真正的感測器配置成本與空間。

P.S 如果對Micro:bit開發板有更多興趣,請參考【技術解碼】Micro:bit硬體設計探索

(責任編輯:廖庭儀)

陸向陽
陸向陽

Author: 陸向陽

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

Share This Post On

Submit a Comment

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