劉相中,張建文,唐李生,王宇廷,仇懷利
(合肥工業大學電子科學與應用物理學院,安徽 合肥 230000)
人們在處理不同事務時需要適宜的亮度和光色的燈光照明,在不同活動場所需要不同顏色的燈光來營造氛圍。近年來,隨著LED照明技術的發展,智能家居及室內照明系統解決方案不斷被推出[1,2], 照明的舒適性和光色的可控性需求變得愈發重要。為研制依據環境亮度、色度而自動轉變顏色的LED燈,本文設計了一種依據環境實現亮度和顏色調控的“變色龍”LED燈,其主要由顏色傳感器、Arduino單片機[3]、LED發光矩陣三大模塊構成。
我們采用的元件材料主要有:Arduino UNO R3主板、GY-33(TCS34725)顏色傳感器、WS2812BLED發光矩陣、LCD1602A顯示屏、測試用面包板、Arduino Power Shield、光敏傳感器、紅外接收器、紅外遙控板、旋鈕滑動變阻器等各1件,杜邦線、電阻若干件。設計時分別采用軟件Arduino、matlab、Protues、Fritzing進行程序設計、數據處理和電路仿真繪圖。
方案實施的難點在于色度識別和顏色信息處理。色度識別能力在于傳感器的顏色測量能力。GY-33工作原理是,內置照明LED發光,照射到被測物體后,返回光經過檢測濾鏡,通過光電積分法測算RGB的比例值,從而識別顏色。具體情況見圖1。顏色信息處理需在耦合發光程序和傳感器程序時需要建立控制算法,讓輸出光的顏色特征值與采樣相吻合。輸出機理為LED的PWM調制理論,通過改變方波的占空比以達到調節LED光度和顏色特征量(主波長和顏色純度)的效果。從而起到調節三基色混色比例的作用,實現情景照明系統的混色功能[4]。

圖1 顏色傳感器工作機理
經過探討,我們最終確立2套發光方案。方案一:為發光矩陣的三色驅動使用color函數,這個函數引用了三個數據,分別將模擬量輸送到三色LED燈珠的三個發光核心,而這三個核心為三基色發光基點,根據格拉斯曼色光混合原理,不同基色的配比決定了總體發光顏色的色調與飽和度;方案二:通過對比色卡的CIE 1931標準色域分析,換算并建立了RGB顏色庫,分析GY33的RGB數值分布特點,采用條件語句,由劃定的區間進行篩選,設置了高飽和度的發光數據,從而實現對七彩色的準確識別與顯示。方案一的優勢在于LED呈現的色域更寬,但顏色飽和度不足。方案二的優勢在于顏色的飽和度高、輸出穩定,但色域識別模糊。綜合兩種方案,紅外遙控模塊的按鍵編碼可進入對應模式的子程序中,從而實現發光模式控制。
在日光燈做背景光源的使用環境下,讓LED燈呈現不同顏色,使用色度計測量其CIE 1931標準下的色品坐標,繪制典型顏色的徑跡圖。確立典型色品點的位置后,分析X-Y-Z系統和R-G-B系統的對應關系,這樣就可以在算法中實現RGB數值的相對變化來調制顏色特征值。傳感器可對光源顏色和物體顏色進行檢測,依據LED燈使用環境,可進行修正算法的改良。分析離散RGB數據,由GY33顏色識別程序計算的8種關鍵顏色的RGB值見表1。

表1 RGB數據對比
采樣前進行白平衡校正[5],依據RGB顏色庫的統計分析,建立顏色判定的隸屬函數,從而使用模糊控制算法[6]讓采樣RGB值與比色卡標定值基本相符,從而優化了LED顏色與比色卡標定顏色的匹配度。通過控制不同外界光照條件,大致分為光敏傳感器完全遮擋、部分遮擋、自然日光、強光照射四個區間,通過光照度間斷變化收集傳感器的離散反饋數據,程序標定參數控制LED的驅動電壓,從而改變LED的光強,光敏傳感器程序的數值線性擬合情況如圖2所示。

圖2 光敏線性度測試(光照度-傳感器采樣值關系)
程序結構融匯了硬件系統的控制方法,顏色識別程序使用了PID控制,其顏色測量能力受到運行環境、系統結構和工作狀態的制約。顏色信息處理與顯示環節使用了模糊控制,按照模糊控制器的設計思路[6],對已經量化的R、G、B數值形成模糊集合,從而依據參數設計中的修正處理建立模糊控制規則。程序主框架分為定義,setup和voidloop三部分,如圖3所示。

圖3 程序設計流程圖
setup可設置波特率為9600,讓Arduino連接計算機從而用IDE中的串口監視器觀察數據。紅外遙控程序的編碼譯碼函數會初始化,LCD顯示程序自啟動,同時TCS34725會進行啟動判斷,使用遙控按鍵可開啟或關閉其RGB測算子程序。
loop循環中紅外遙控按鍵可決定發光模式的選擇,傳感器的采樣值會傳遞至LED發光矩陣程序,通過color函數判定采樣值與真實值是否匹配,若數值相近從而進行賦值經PWM輸出,若不匹配,則會先進行數值修正,再調制輸出,兩種方式的RGB值都會收到光敏傳感器的調節。然后LCD程序會調用函數“jieshou”,功能為接收字符并顯示。
利用if函數對紅外編碼進行判斷,如果無信號則不輸出,存在信號時,利用switch結構判斷輸出的選擇。switch設置分支“CH-”按鍵為顏色傳感器的標準讀數顯示(發光模式1),“CH”為擴大顏色明顯程度的七彩色顯示(發光模式2),“CH+”為關閉顯示程序。當接收信號為“CH-”,這里我初始化發光矩陣并顯示所有LED為關狀態。引入while循環只要無其他信號輸入就一直執行循環,讀取顏色傳感器的RGB并輸出,從而維持LED顯色隨傳感器的穩定變化,通過模糊控制中的條件語句。利用if與elseif嵌套來實現對于物體RGB的判斷,并輸出飽和度更高的相近顏色。當接收信號“CH+”按鍵,直接將三個變量賦值為0即為關閉所有LED。
由于程序結構要求,測試采用了tcs34725和LED發光矩陣。LED發光矩陣采用內置驅動電路[7],調整發光矩陣的供電電壓,發現存在4.2 V的門限電壓,低于門限電壓會出現頻閃和顏色畸變,而高于門限電壓則由于已達到亮度極大值,因此幾乎不變。相關實驗[8]表明,通過調節占空比可以精確地實現預期的混合光。引入遙控模塊和光敏電阻,接入一塊LCD1602液晶屏顯示發光RGB值,將Arduino Power Shield Li電池契合至主板上,程序燒錄至主板后,接通電池開關即可啟動,設備總體功率低于3 W。將ArduinoIDE的編譯結果采用HEX文件導出二進制代碼,用proteus進行電路仿真(具體情況見圖4)。硬件采用PCB電路板建立主板和各模塊關聯,提升集成度,也有利于“變色龍”LED的封裝。

圖4 總成品電路示意圖
依據以上參數設置和電路設計要求,我們設計了“變色龍”LED燈樣品,如圖5所示。該樣品燈可整體封裝,外觀可制成不同形狀,且材質可選用新型材料[9],適用于家居照明。

圖5 “變色龍”LED裝置(成品模型形式)
基于Arduino和GY33顏色傳感器的“變色龍”LED燈實現了控制照明相關參數的功能,實現了顏色識別與LED發光顏色匹配的功能,可依據環境亮度通過負反饋調節以實現節能,其創新點包括:①通過編程中的參數設計與模糊控制方法,提高了傳感器色度識別能力;②Arduino可智能調節LED的發光模式,可以滿足不同場合或情景下的照明需求;③使用可太陽能充電的鋰電池供電,實現了節能的低功耗設計。
我們利用顏色傳感器技術和PWM調制技術設計了“變色龍”LED燈,設計了耦合各模塊的控制電路,介紹了對LED發光顏色進行模糊控制的優化算法。“變色龍”LED燈可以依據環境改變發光亮度和顏色,優化照明空間,提升人們的視覺感受與心理體驗。當然,我們的設計還存在不足,如未實現對精密色域的準確識別與色度匹配、亮度感光調節的梯度較大、產品設計樣品不夠美觀等,我們將在后續研究中進行優化與改進。