2019年3月28日 星期四

模組介紹: faya 紫外線感應模組


學習目標 : 認識faya 紫外線感應模組的功能及使用方式
學習時間 : 50min
示範模組 : (1) fayaduino Nano
                   (2) faya 紫外線感應模組
                   (3) faya 串列LCD顯示模組
其它工具 : (1) 樂高積木底板 (相容)
                   (2) 紫外線手電筒 (或天然陽光)


====================功能介紹====================
faya紫外線感應模組使用了一紫外線感應晶片(ML8511),根據紫外線的強度將光電流轉換為電壓值,透圖表的比對,讓紫外線感測模組所測得的輸出電壓,依照曲線對映出相對UV值,可運用在紫外線等級監視器、環境監測儀、氣象站、DIY紫外線互動裝置等…。

產品特徴 (取自 ML8511 datasheet)  

● 適用於UV-A和UV-B頻段
● 嵌入式運算放大器
● 類比電壓輸出
● 工作電流低(典型值 300uA),待機電流低(典型值 0.1uA)
● 小而薄的表面貼裝封裝(4.0mm x 3.7mm x 0.73mm,12引腳陶瓷QFN)



模組在Vref3.3V的腳位會輸出恆定的3.3V電壓,如此一來微控制器(Arduino)進行類比數位轉換的時候,才能讓所轉換的Vout類比值有穩定的相對電壓數值可參考...方法是將Vout和Vref腳位分別接到Arduino的不同類比腳位,此時Vref所測得的類比值會恆定,大約等於(1024/5)x3.3附近 (視VCC而定),另外Vout也會測得一個類比值,大約等於 (1024/5)xVout)

有了以上兩個數值,我們就可以還原Vout電壓值 

analogRead(Vout) / analogRead(Vref) = [(1024/5) x Vout] / [(1024/5) x 3.3]

Vout = 3.3 * analogRead (Vout) / analogRead(Vref)

接著根據此Vout值,即可從datasheet所提供的(輸出電壓與UV強度)曲線中找出相對應的UV強度,曲線圖如下


大家可以發現從在室溫時(25C的紫色曲線),UV的輸出電壓從0.99V上升到2.8V時,UV的強度則以線性的方式由0上升到15。

有了此關係,我們可以透過公式回歸出在某電壓所對應的出的強度值,由於兩者關係是線性的,最簡單的方式就用Arduino內建的map()函式,但時由於map()函式只適用於整數,因此我們必須在程式中自行創造一能夠處理浮點版本的map()函式,mapFloat(),使用方式和map相同。

====================相關知識====================

faya紫外線感應模組採用ML8511傳感器,它具有UV光電二極管和內部放大器,可根據UV光強度將光電流轉換為電壓輸出,有興趣深入了解 ML8511的使用者,可以參照datasheet


紫外線的波長位於 100 ~ 400 nm ( nanometer ) 的範圍,按照ISO-DIS-21348此範圍可分為 UV-C、UV-B 和 UV-A 這三大區段,分別解釋如下:



● UVA ( 波長 315 - 400 nm )
在紫外線中佔 95 %,可以穿透透明的玻璃和塑膠,可以直達肌膚的真皮層,導致皮膚曬傷、曬黑、老化與產生皺紋。

● UVB ( 波長 280 - 315 nm )
到達地球表面的 UVB,在紫外線中只佔 2%,只有在夏天或是午後特別強。部分的 UVB 會被透明玻璃吸收,過量照射會使得皮膚曬黑、曬傷脫皮勝制有致癌的可能。但適當的 UVB 能觸進體內礦物質代謝與形成維生素 D。

● UVC ( 波長 100 - 280 nm )
此波長範圍無法穿透透明玻璃與塑膠。短時間曝曬會灼傷皮膚,長時間曝曬會導致皮膚癌,但可作為殺菌燈使用。

其中UV-A和UV-B就是我們一開始提到適合ML8511感應的頻段,從datasheet所提供的資料,也可以發現感測器在此範圍的反應特別敏感。



===================範例實作(1)===================
了解模組功能(原理)後,我們用以下範例來展示模組的功能:

目標:
(1)每3秒在Arduino Serial Monitor和LCD模組秀出目前ML8511各電壓值與UV值 (0~15)

接線:
(1) 電源線連接如下圖所示,連接的說明請看這篇文章簡易版


(2) 訊號線連接

Arduino_A0 ===> 紫外線感應模組_VOUT
Arduino_A1 ===> 紫外線感應模組_Vref 3.3



Arduino_A4 ===> LCD顯示模組_SDA
Arduino_A5 ===> LCD顯示模組_SCL



範例程式:

備註:
- LCD顯示模組的使用方式與範例請參考[模組介紹:faya串列LCD模組]
- L30~32 : 為了還原Vout電壓值,我們先將Vout和Vref的類比值取出(L30-31),並利用L32的公式算出Vout電壓
- L33 : 利用mapFloat求出Vout電壓所對應出的UV強度
- L58~60 : mapFloat副程式,用法和map()相同,但可針對浮點數進行轉換,可參考Arduino map()的功能介紹。

範例結果:

首先利用紫外線手電筒做測試


另外我們在不同的時間在陽光下做測試

在上午10點的時候,我們從氣象局的即時系統得知台北紫外線指數大約在等級4



從模組上測的UV值為 (4.9mW/cm2)


下午1點的時候,紫外線指數高達7~8


從模組上,我們也發現UV強度也跟著上升到 6.36 (mW/cm2)


到了下午五點的時候太陽下山了,氣象局報導紫外線子指數下降至1


我們的感測器UV強度也明顯地跟著下降到1.03 (mW/cm2)


 

同一個時間,我們將感測器稍微一動一下到有陰影的位置,可以發現UV數值又下降了 (0.88 mw/cm2),


最後我們觀察一段影片,看看由室內到有陽光的地方的UV值所產生的變化差距 (隔日 上午11:30,天氣多雲,比前一天陰暗許多),量測當時的氣象局即時測報如下圖



討論:

(1) 模組上所量測到的紫外線強度 (mW/cm2)和氣象局所預測的紫外線指數是不同的,ML8511只針對特定的紫外線頻段進行偵測,並且算出其強度,而氣象局所公布的紫外線指數,是經由一系列的紫外線量測,搭配不同頻段給予的權重,並且考量雲層與地理位置狀況,所算出來從0~10的指數,千萬不要把模組量測出來的數值當成紫外線指數,兩者並不相同,但是所得到的相對趨勢倒是一致的。


有興趣了解氣象局指外線指數如何算出來的人,底下這篇文章有精簡的介紹

https://www.cwb.gov.tw/V7/knowledge/announce/PDFfile/service13.pdf

(2) 
類比轉數位(A/D)的晶片使用上,參考電壓 (Vref) 的穩定度非常重要喔!
以 10-bit 解析度的 ADC 來說,若Vref是 3.3V,則每一個變化代表 3.223 mV (3.3/1024) 的變化。若Vref降為 3.25V,則每一個變化代表 3.174 mV (3.25/1024) 的變化。當 ADC 取值為 100 時,兩者之間的差距就會有 4.883 mV;這是在電壓變化 0.05V 的輸出差距。

解決的方法可以使用穩定的參考電壓晶片,或是額外將參考電壓引入到另一個類比轉數位通道中,先取一定的值後,再取平均值,得到平均的參考電壓在與取值後的數據做運算,就能得到特定通道中更準確的類比轉數位值。

也歡迎大家在底下留言或到我們的粉絲團留言喔!
====================================

fayalab 粉絲團
FB本篇留言版

沒有留言:

張貼留言