劉錦濤,羅 莉*,余向陽,蔡燁帆,洪偉檳
(1. 廣東工業(yè)大學(xué)物理與光電工程學(xué)院,廣州 510000;2. 中山大學(xué)物理學(xué)院光電材料與技術(shù)國家重點(diǎn)實(shí)驗(yàn)室,南昌研究院,廣州 510000;3. 廣州光信科技有限公司,廣州 510000)
在傳統(tǒng)的光譜分析中,操作者通常需要獲得光譜數(shù)據(jù)文件,并將其導(dǎo)入專用的光譜軟件做進(jìn)一步的分析。這些光譜數(shù)據(jù)文件通常以文本或數(shù)字形式存在[1],并且不同的分析軟件可能對文件格式有不同的要求。這些文件能夠提供各個波長處的光譜響應(yīng)數(shù)據(jù),但是需要一些額外的處理才能得出直觀的結(jié)果。相比于光譜數(shù)據(jù)文件,光譜曲線圖像具有更好的可視化效果。光譜曲線圖像能夠直觀地展示不同波長下的光譜響應(yīng)強(qiáng)度差異,更容易觀察到峰值、谷值或其他特征。
目標(biāo)光譜曲線的合成主要基于光譜疊加原理。多個不同的LED 混光后得到的光譜曲線為每個LED 的光譜曲線的線性相加之和[2]。因此,可以通過控制不同波長光的強(qiáng)度和比例來調(diào)整合成光譜的形狀和特征。在LED 的最大工作電流以內(nèi),其光強(qiáng)值與驅(qū)動電流值呈正相關(guān)關(guān)系。針對目標(biāo)光譜的匹配,主要是通過求解各組合的LED 的光強(qiáng)比值,即改變其驅(qū)動電流的大小來實(shí)現(xiàn)。
這一過程通常涉及到優(yōu)化算法和數(shù)學(xué)模型的應(yīng)用。通過建立光譜響應(yīng)與LED 驅(qū)動電流之間的關(guān)系,可以將光譜匹配問題轉(zhuǎn)化為一個求解最優(yōu)參數(shù)的數(shù)學(xué)優(yōu)化問題。在參數(shù)空間中搜索最佳解,找到使得合成光譜最接近目標(biāo)光譜的LED 光強(qiáng)比值。通過調(diào)整LED 的驅(qū)動電流,改變光強(qiáng)度比例來逼近目標(biāo)光譜,最終可以獲得使合成光譜與目標(biāo)光譜相匹配的LED 光強(qiáng)比值,從而實(shí)現(xiàn)目標(biāo)光譜的擬合。
目前,國內(nèi)已有許多對光譜合成方面的研究。朱繼亦等[3]采用修正非對稱高斯函數(shù)擬合單個LED 的光譜分布,并以該模型為基礎(chǔ),使用多個不同峰值波長的單色LED 實(shí)現(xiàn)對任意光譜的擬合;滿國福[4]采用高斯分布加洛倫茲分布組合的分段函數(shù)擬合單色LED 光譜分布函數(shù);唐帆[5]使用LM 算法求解超定方程組的非負(fù)最小二乘解,得出擬合AM1.5 太陽光譜曲線的最優(yōu)單色LED 參數(shù)。以上的研究對于單色LED 的光譜分布都是使用數(shù)學(xué)模型擬合,但由于LED 的種類繁多,盡管研究人員對模型一直在更新優(yōu)化,但并非所有的LED 都適合同一種模型。因此,找到組合中LED 適用的數(shù)學(xué)模型工作量大且算法復(fù)雜。
綜上所述,提出一種基于目標(biāo)光譜曲線圖像與實(shí)測光譜數(shù)據(jù)的光譜擬合方法。首先對將采用的LED 進(jìn)行實(shí)際測量建立光譜數(shù)據(jù)庫,使用編程語言對導(dǎo)入的目標(biāo)光譜曲線圖像進(jìn)行數(shù)據(jù)提取,通過算法獲取最接近目標(biāo)光譜的合成光譜中各LED 的驅(qū)動電流系數(shù)。該系數(shù)結(jié)果可直接應(yīng)用于實(shí)際硬件電路中,更加切合實(shí)際。相較于傳統(tǒng)光譜分析中將數(shù)據(jù)文件導(dǎo)入專用光譜分析軟件的操作,這種方法可以提供更大的自由度和靈活性,減少對特定軟件的依賴性,對健康照明、植物照明等領(lǐng)域有一定的實(shí)踐意義。
本系統(tǒng)的總體目標(biāo)是實(shí)現(xiàn)由上位機(jī)計(jì)算出的LED 光源驅(qū)動電流系數(shù)的傳輸和實(shí)際光源驅(qū)動。為了實(shí)現(xiàn)這一目標(biāo),系統(tǒng)采用上位機(jī)、主控模塊、串口通信模塊、PWM 輸出模塊、驅(qū)動模塊等組成。
上位機(jī)的功能是對導(dǎo)入的目標(biāo)光譜曲線圖像進(jìn)行處理計(jì)算,得到各LED 的驅(qū)動電流系數(shù)并傳輸至硬件電路。主控模塊使用STM32 微控制器作為系統(tǒng)的核心芯片,它具備豐富的性能和功能選項(xiàng),通過串口模塊與上位機(jī)進(jìn)行數(shù)據(jù)傳輸,并支持I2C 總線通信協(xié)議與外部從設(shè)備進(jìn)行通信。主控模塊接收串口通信模塊傳輸?shù)尿?qū)動電流系數(shù),并發(fā)送PWM 信號給驅(qū)動模塊,以調(diào)整LED 光源的光強(qiáng)值。串口通信模塊通過設(shè)置合適的串口參數(shù)實(shí)現(xiàn)上位機(jī)與主控模塊之間的數(shù)據(jù)傳輸。PWM 輸出模塊采用具有16個通道的PCA9685 芯片,可實(shí)現(xiàn)對16 路LED 的獨(dú)立控制。通過與主控模塊的I2C 通信,可以接收PWM 信號設(shè)置LED 的占空比,能充分節(jié)省主控模塊的IO 口。驅(qū)動模塊采用PT4115 恒流源芯片,通過調(diào)整輸入的PWM 信號,調(diào)節(jié)LED 的平均電流值,以實(shí)現(xiàn)對光源光強(qiáng)的調(diào)節(jié)控制。
為光譜曲線分析和匹配設(shè)計(jì)方法時,選擇合適的編程語言和環(huán)境對于高效、靈活地實(shí)現(xiàn)任務(wù)非常重要。Python 是一種開源的、易于學(xué)習(xí)和使用的編程語言,具有豐富的科學(xué)計(jì)算和數(shù)據(jù)處理庫,可以高效地進(jìn)行矩陣操作、數(shù)值計(jì)算和統(tǒng)計(jì)分析[6]。此外,Python還有許多用于繪圖和可視化的庫,可以方便地顯示和分析光譜數(shù)據(jù)。PyCharm 是一款專門針對Python開發(fā)的強(qiáng)大工具,提供了豐富的功能和工具,還支持各種插件和擴(kuò)展,可以根據(jù)項(xiàng)目需求進(jìn)行個性化配置,并且具有直觀友好的用戶界面,適合進(jìn)行光譜曲線分析和匹配的代碼編寫和調(diào)試工作。綜上所述,使用Python 作為編程語言,并搭配PyCharm 作為開發(fā)環(huán)境,是一種高效、靈活且方便的選擇。
使用光譜儀對選定的16 顆LED 光源在額定驅(qū)動電流條件下進(jìn)行光譜采集,然后根據(jù)目標(biāo)光譜范圍截取所需波段。為了方便后續(xù)的數(shù)據(jù)處理,需要對波長進(jìn)行等間隔插值,以獲得均勻分布的波長數(shù)值以及所對應(yīng)的光強(qiáng)值。由此構(gòu)建一個由該16 顆LED 共同組成的光譜數(shù)據(jù)庫。
在導(dǎo)入目標(biāo)光譜曲線圖像時,首先需要計(jì)算原圖像的寬度和高度,然后根據(jù)波段范圍調(diào)整圖像的橫軸尺寸。對于圖像的縱軸尺寸,將光譜數(shù)據(jù)庫中光強(qiáng)最大值作為參考,并在后續(xù)光譜匹配過程中進(jìn)行循環(huán)調(diào)整。通過這樣的調(diào)整,能夠確保光譜數(shù)據(jù)與設(shè)定的波段范圍一致,以及所有LED的驅(qū)動電流系數(shù)在1以內(nèi)。
為更好地提取數(shù)據(jù),需要對圖像進(jìn)行二值化處理。通過設(shè)定的閾值,將目標(biāo)曲線和背景的像素值分別轉(zhuǎn)換為1 和0。處理后得到的二值圖像突出了目標(biāo)曲線的特征,并且簡化了后續(xù)計(jì)算和分析的復(fù)雜度,從而提高了數(shù)據(jù)提取的效率。鑒于導(dǎo)入的曲線線條寬度受各繪圖軟件影響而不一致,可以在曲線的同一橫坐標(biāo)所對應(yīng)處取平均值作為該點(diǎn)的縱坐標(biāo)值。
對于目標(biāo)光譜曲線,將其按照光譜數(shù)據(jù)庫中各光強(qiáng)值對應(yīng)的波長在目標(biāo)光譜分布中離散化取值,得到目標(biāo)光譜數(shù)據(jù)組:
數(shù)據(jù)庫中LED數(shù)據(jù)表達(dá)為
各LED的驅(qū)動電流系數(shù)矩陣為
可得光譜匹配公式為
由于離散數(shù)據(jù)點(diǎn)數(shù)量遠(yuǎn)大于LED 數(shù)量,因此匹配公式為超定方程組。超定方程組是一種不存在解的矛盾方程,但可以使用最小二乘法得到其近似解[7]。最小二乘法是光譜合成領(lǐng)域一種常用的數(shù)據(jù)處理和分析技術(shù)。通過最小二乘法對方程組求解非負(fù)解,使合成光譜與目標(biāo)光譜盡可能接近,從而實(shí)現(xiàn)光譜合成的目標(biāo)。為比較擬合光譜與目標(biāo)光譜的匹配程度,通常使用擬合優(yōu)度R2作為評價(jià)參數(shù)。R2的取值范圍在0至1之間,且越接近1表明兩者的相似程度越高。
由于光譜數(shù)據(jù)庫中各LED 光源的最大光強(qiáng)值不盡相同,在求解各LED 光源驅(qū)動電流系數(shù)時,得到可能存在大于1的解,即超過額定電流的情況。因此,如上2.2 節(jié)描述,將通過建立一個檢測循環(huán),動態(tài)調(diào)整目標(biāo)光譜曲線圖像的縱軸尺寸來處理。
當(dāng)有驅(qū)動電流系數(shù)大于1的情況出現(xiàn),縱軸尺寸將減少系數(shù)y,重新求解方程,直至所有驅(qū)動電流系數(shù)都不超過1。盡管光譜曲線各處的縱坐標(biāo)值隨圖像的縱軸尺寸發(fā)生改變,但曲線各處的縱坐標(biāo)比值不變,因此方程求解得到的各驅(qū)動電流系數(shù)比值不變,保證了在得到擬合程度最高前提下按比例調(diào)整的驅(qū)動電流系數(shù),此時解為最優(yōu)解。
硬件電路主要由主控模塊、串口通信模塊、PWM 輸出模塊、驅(qū)動模塊及電源模塊組成。驅(qū)動電流系數(shù)由串口通信模塊接收,主控模塊根據(jù)接收的系數(shù)發(fā)送PWM 信號到驅(qū)動模塊,由驅(qū)動模塊調(diào)整輸出的平均電流值以調(diào)整光源的光強(qiáng)值。
圖2 下位機(jī)原理示意圖
3.1.1 主控模塊
STM32 是由意法半導(dǎo)體(STMicroelectronics)推出的一系列32 位ARM Cortex-M 微控制器。它提供了廣泛的性能和功能選項(xiàng),適用于各種應(yīng)用領(lǐng)域[8]。STM32 微控制器具備多個串口(如USART、UART 等)模塊,可用于與上位機(jī)進(jìn)行雙向數(shù)據(jù)傳輸;并且支持I2C 總線通信協(xié)議,可以作為I2C 主設(shè)備與外部從設(shè)備進(jìn)行通信。STM32 具備強(qiáng)大的中斷控制和管理功能,能夠?qū)崟r響應(yīng)和處理外部事件,因此能作為本應(yīng)用的主控芯片并進(jìn)行功能開發(fā)。
3.1.2 串口通信模塊
串口通信是一種被廣泛應(yīng)用于數(shù)據(jù)交換和控制連接的數(shù)據(jù)傳輸方式,在本應(yīng)用中用于上位機(jī)與下位機(jī)STM32 之間的數(shù)據(jù)傳輸,將在上位機(jī)求解得到的驅(qū)動電流系數(shù)以從串口形式傳遞至主控芯片。使用相關(guān)的串口庫函數(shù),設(shè)置串口的波特率、數(shù)據(jù)位、停止位和校驗(yàn)位等參數(shù)[9],并確保配置的參數(shù)與上位機(jī)一致,使數(shù)據(jù)傳輸有效、可靠。
3.1.3 PWM輸出模塊
主控芯片需要將接收到的驅(qū)動電流系數(shù)作為各路LED 的PWM 占空比信號傳遞至驅(qū)動模塊,由于LED 共有16 路,因此使用一款多通道控制芯片對節(jié)約主控芯片GPIO 資源是有必要的。PCA9685是一款常用的16通道PWM 控制器芯片,它采用I2C 總線接口,只需2個接口(SDA和SCL)就能實(shí)現(xiàn)與主控芯片通信,實(shí)現(xiàn)多通道的PWM 信號輸出。每個通道都可以單獨(dú)配置占空比,因此能夠方便對各LED 進(jìn)行獨(dú)立控制。此外,PCA9685 支持12 位分辨率的PWM 輸出,可以提供更平滑、更準(zhǔn)確的LED亮度控制效果。
3.1.4 驅(qū)動模塊
XL3001 是一款降壓型LED 恒流驅(qū)動芯片,內(nèi)部集成高壓、大功率MOSFET 開關(guān)管,內(nèi)部集成過溫保護(hù)、過流保護(hù)、短路保護(hù)等全套可靠性保護(hù)電路,兼容外置PWM 信號調(diào)光功能,可實(shí)現(xiàn)輸出電流隨占空比線性變化。根據(jù)各路LED額定電流的不同,由下式:
可計(jì)算各路采樣電阻RCS 的阻值。PWM 脈沖信號被電容C6 濾成直流后對CS 引腳進(jìn)行補(bǔ)償,可使輸出電流更加穩(wěn)定。
圖3 驅(qū)動模塊示意圖
3.1.5 電源模塊
硬件電路中,主控芯片STM32、PWM 輸出模塊PCA9685 和驅(qū)動模塊XL3001 的工作電壓分別是3.3 V、5 V 和12 V,因此需要將輸入電壓12 V分別調(diào)整適應(yīng)各模塊工作電壓要求。
圖4 電源模塊示意圖
下位機(jī)程序主要包括串口程序和I2C 通信程序。其中串口程序負(fù)責(zé)接收上位機(jī)計(jì)算得到的驅(qū)動電流系數(shù),I2C 通信程序負(fù)責(zé)與PCA9685 進(jìn)行通信。
3.2.1 串口程序
該部分將使用串行數(shù)據(jù)傳輸接口USART 實(shí)現(xiàn)與上位機(jī)的通信。首先,對USART 進(jìn)行初始化,包括使能時鐘,配置RX 接收引腳的輸入模式,以及設(shè)置USART 的波特率等參數(shù),并使能接收中斷。其次,定義一個全局?jǐn)?shù)組用于存儲接收的數(shù)據(jù),以及一個全局變量用于記錄已接收的字節(jié)數(shù)。最后,在中斷處理函數(shù)中及時處理接收到的數(shù)據(jù)。通過串口部分的程序設(shè)計(jì),實(shí)現(xiàn)串口的初始化和數(shù)據(jù)接收功能,為上位機(jī)和下位機(jī)的可靠通信提供基礎(chǔ)支持。
3.2.2 I2C通信程序
在使用I2C 協(xié)議前,需要對其進(jìn)行初始化,包括配置引腳工作模式,并使能相關(guān)時鐘,為后續(xù)I2C 通信做好準(zhǔn)備。其次,對I2C 所控制的PCA9685 芯片進(jìn)行PWM 頻率的設(shè)置。需要在芯片進(jìn)入休眠模式后,將預(yù)分頻系數(shù)寫入PCA9685 的寄存器,而后退出休眠模式。在芯片的正常工作模式下,將所期望的各通道的PWM 占空比數(shù)據(jù)分別寫入各通道所對應(yīng)的兩個10 位寄存器,確保每個通道的PWM 輸出符合預(yù)期。
將恒流驅(qū)動模塊與LED 連接,使用萬用表作為電流測量儀器,在黑暗環(huán)境下使用光譜儀采集LED光譜。
圖5 實(shí)驗(yàn)測試
4.1.1 PWM占空比與驅(qū)動電流
設(shè)置PWM 占空比從100%到0%遞減,記錄電流大小并計(jì)算各步長占空比與最大占空比的電流大小比值,以評估功率調(diào)節(jié)性能,即在不同電流輸出需求下,模塊是否能夠準(zhǔn)確地提供穩(wěn)定的輸出電流。得到各路恒流驅(qū)動模塊PWM占空比與驅(qū)動電流比值的關(guān)系曲線如圖6所示。
圖6 PWM占空比與驅(qū)動電流比值關(guān)系曲線
各路實(shí)際輸出的驅(qū)動電流與理想情況的驅(qū)動電流的R2均在0.99 以上,表明可以通過調(diào)節(jié)PWM占空比使模塊準(zhǔn)確輸出穩(wěn)定的電流。
4.1.2 驅(qū)動電流與光譜曲線峰值
同時,光譜儀同步采集各驅(qū)動電流下的光譜,以評估驅(qū)動電流對光譜強(qiáng)度的調(diào)控效果。繪制工作電流與光譜曲線峰值的歸一化關(guān)系曲線,如圖7所示。
圖7 驅(qū)動電流與光譜曲線峰值關(guān)系曲線
驅(qū)動電流與光譜曲線峰值之間存在正相關(guān)關(guān)系,但正相關(guān)關(guān)系較差,線性關(guān)系不明顯。使用多項(xiàng)式公式對各條曲線進(jìn)行擬合調(diào)整,由光譜曲線峰值求解所需的電流。根據(jù)期望光譜峰值計(jì)算得到的電流值驅(qū)動LED,使用光譜儀再次測量光譜曲線峰值,繪制調(diào)整后的期望光譜峰值與實(shí)際光譜峰值的歸一化關(guān)系曲線,如圖8所示。
圖8 期望光譜峰值與實(shí)際光譜峰值關(guān)系曲線
調(diào)整后的各路期望光譜峰值與實(shí)際光譜峰值的R2均在0.99 以上,存在著非常強(qiáng)的線性關(guān)系,可以實(shí)現(xiàn)精確的光譜調(diào)節(jié),能夠?yàn)檎{(diào)光提供支持。
將所有LED 分別調(diào)至額定電流工作狀態(tài),使用光譜儀采集LED 光譜,得到以下16 顆LED的光譜曲線,并通過插值獲取預(yù)設(shè)采集點(diǎn)處的光譜響應(yīng)值,組成光譜數(shù)據(jù)庫,如圖9所示。
圖9 光譜數(shù)據(jù)庫中各光源的光譜輻射強(qiáng)度分布
將程序燒錄進(jìn)下位機(jī)后,分別以AM1.5 光譜[10]截取目標(biāo)波段曲線,如圖10(a)所示,和手動繪制曲線,如圖10(b)所示,作為目標(biāo)光譜曲線示例導(dǎo)入上位機(jī),使用光譜儀采集實(shí)際輸出光譜曲線并評估擬合效果。
圖10 實(shí)際光譜與目標(biāo)光譜對比
由圖10 可以看出,由于目標(biāo)光譜與光譜數(shù)據(jù)庫中的白光光源在500~600 nm波段內(nèi)光譜變化都比較平緩,因此在該波段內(nèi)能較好逼近。在其余波段的實(shí)際光譜擬合出現(xiàn)驟升或驟降,是因?yàn)楣庾V數(shù)據(jù)庫中LED 的峰值間隔較大以及FWHM 較小,造成擬合效果欠佳的現(xiàn)象。從整體觀察,圖10(a)中的目標(biāo)光譜曲線與實(shí)際光譜曲線的擬合優(yōu)度為0.69,圖10(b)中的目標(biāo)光譜曲線與實(shí)際光譜曲線的擬合優(yōu)度為0.77,實(shí)際光譜曲線能較好地反映目標(biāo)光譜曲線的變化趨勢。
設(shè)計(jì)了一款基于PyCharm 開發(fā)環(huán)境和STM32 微控制器的光譜擬合系統(tǒng)。通過輸入目標(biāo)光譜曲線圖片,由上位機(jī)計(jì)算得到光譜數(shù)據(jù)庫中各組合LED 的驅(qū)動電流系數(shù)的匹配最優(yōu)解,并以該電流系數(shù)數(shù)組作為各路LED 的PWM 信號占空比,通過硬件電路驅(qū)動點(diǎn)亮LED,實(shí)現(xiàn)對目標(biāo)光譜的擬合。結(jié)果顯示,能夠達(dá)到較好的匹配度。