梁佩瑩 張邦鋒 郭澤成 王宇華
摘 要: 描述了一種基于主從式架構(gòu),從機(jī)基于STM32F107的32位微處理器實(shí)現(xiàn)光強(qiáng)度數(shù)據(jù)采集,主機(jī)應(yīng)用C#編程語(yǔ)言實(shí)現(xiàn)數(shù)據(jù)處理的光強(qiáng)度檢測(cè)系統(tǒng)。該系統(tǒng)在主機(jī)端采用串口通信類(lèi)庫(kù),實(shí)現(xiàn)程序?qū)鈴?qiáng)板、程控電源、PLC的控制和數(shù)據(jù)接收。主機(jī)程序的核心功能還包括光強(qiáng)標(biāo)定和二次校準(zhǔn),修正硬件因素和外界條件存在的誤差。系統(tǒng)對(duì)接收到的數(shù)據(jù)做優(yōu)化處理并轉(zhuǎn)換為需要的格式,樣品測(cè)試的曲線分別在極坐標(biāo)、直角坐標(biāo)和數(shù)據(jù)列表中顯示,便于數(shù)據(jù)分析。該系統(tǒng)可廣泛應(yīng)用于光源與照明領(lǐng)域。
關(guān)鍵詞: C#; 光強(qiáng)檢測(cè); STM32F107微處理器; 主從式架構(gòu)
中圖分類(lèi)號(hào): TN15?34; TP274+.2 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2016)07?0134?04
Abstract: A light?intensity detection system with host?slave architecture is described in this paper. The slave computer is based on 32?bit microprocessor STM32F107 to acquire the light?intensity data, and then the data is processed with C# programming language by means of the host computer. The serial communication class library is adopted by the host?side in the system, so the program can control the light?intensity board, programmable power supply and PLC, and realize data reception. The core functions of the host computer program include light?intensity calibration, secondary calibration, and errors correction caused by hardware and external environments. After that, the received data is optimized and converted to the needed format. The tested curves of the sample are displayed in polar coordinates, rectangular coordinates and data list for further analysis. The system can be widely used in light source and illumination field.
Keywords: C#; light?intensity measurement; STM32F107; host?slave architecture
0 引 言
LED作為21世紀(jì)綠色照明新光源,具有亮度高、壽命長(zhǎng)、節(jié)能環(huán)保等優(yōu)點(diǎn)。目前國(guó)內(nèi)已形成7個(gè)國(guó)家半導(dǎo)體照明工程產(chǎn)業(yè)化基地[1?2],成為世界照明電器的生產(chǎn)大國(guó)和出口大國(guó),如何對(duì)半導(dǎo)體照明產(chǎn)品進(jìn)行檢測(cè)成為檢測(cè)實(shí)驗(yàn)室建設(shè)中的一個(gè)重要方面。光強(qiáng)是光源的一個(gè)基本屬性,它考慮了人的視覺(jué)因素和光學(xué)特點(diǎn),同時(shí)也是光源的屬性。光源光強(qiáng)探測(cè)是光電企業(yè)重點(diǎn)研究的項(xiàng)目之一。在我國(guó)能源壓力日趨嚴(yán)峻的形勢(shì)下,加快新光源產(chǎn)業(yè)的發(fā)展,促進(jìn)節(jié)能減排,保障新光源產(chǎn)品的質(zhì)量,是可持續(xù)發(fā)展的必然選擇。
1 系統(tǒng)總體設(shè)計(jì)方案
光強(qiáng)檢測(cè)系統(tǒng)從機(jī)采用單片機(jī)STM32F107作為電路系統(tǒng)的核心控制器,并且利用光度探頭作為數(shù)據(jù)采集元器件,A/D轉(zhuǎn)換電路中采用了AD7356芯片進(jìn)行模數(shù)轉(zhuǎn)換和數(shù)據(jù)傳輸。系統(tǒng)主機(jī)應(yīng)用C#編程語(yǔ)言實(shí)現(xiàn)程序?qū)Τ炭仉娫?、PLC、光強(qiáng)板的控制和數(shù)據(jù)接收、處理,并進(jìn)行光強(qiáng)標(biāo)定和二次校準(zhǔn),實(shí)現(xiàn)數(shù)據(jù)在極坐標(biāo)、直角坐標(biāo)和數(shù)據(jù)列表中顯示。
2 采集電路設(shè)計(jì)
光度探頭由余弦矯正器、濾光片和光敏元件組成。光敏元件有固有的相對(duì)光譜靈敏度,隨外界光強(qiáng)的變化,對(duì)應(yīng)的電參數(shù)發(fā)生變化。當(dāng)相對(duì)光譜靈敏度曲線和明視覺(jué)函數(shù)曲線一致時(shí),可以實(shí)現(xiàn)精確測(cè)量光強(qiáng)參數(shù),為了確保相對(duì)光譜靈敏度曲線與明視覺(jué)函數(shù)曲線一致,需要調(diào)節(jié)濾光片進(jìn)行校正。放大電路采用OP07運(yùn)算放大器,OP07具有低失調(diào)、高開(kāi)環(huán)增益的特點(diǎn),適用于光源的光強(qiáng)小而采集信號(hào)微弱的情況。如圖1所示,模數(shù)轉(zhuǎn)換電路采用AD7356芯片,由于模數(shù)轉(zhuǎn)換的工作特性,會(huì)出現(xiàn)混疊現(xiàn)象,而AD7356芯片本身自帶抗混疊濾波器,有利于電路的設(shè)計(jì)。此外,轉(zhuǎn)換器芯片內(nèi)置的輸入鉗位保護(hù)電路可以承受高達(dá)±16.5 V的電壓,是具有高輸入阻抗和片內(nèi)濾波功能的單電源,因此不需要外加雙極性電源以及驅(qū)動(dòng)運(yùn)算放大器。數(shù)字濾波器采用引腳驅(qū)動(dòng),降低噪音影響。
3 單片機(jī)處理系統(tǒng)設(shè)計(jì)
3.1 STM32F107芯片
單片機(jī)處理系統(tǒng)采用以ARM Cortex?M3為內(nèi)核的STM32F107芯片,其最高的工作頻率可達(dá)到72 MHz,數(shù)據(jù)總線寬度為32 b, 是新一代的嵌入式ARM處理器[3]。系統(tǒng)單片機(jī)與計(jì)算機(jī)的通信采用異步串口通信,電路中有兩組移位寄存器,將并行通信轉(zhuǎn)換成串行通信,即發(fā)送部分和接收部分,全雙工運(yùn)行,并制定通信協(xié)議。
3.2 軟件程序設(shè)計(jì)
軟件設(shè)計(jì)使用C#編程語(yǔ)言,C#是Microsoft開(kāi)發(fā)的一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,由C++衍生而來(lái),綜合VB簡(jiǎn)單的可視化操作和C++的高運(yùn)行效率,是.NET開(kāi)發(fā)的首選語(yǔ)言[4]。設(shè)計(jì)的主從式光強(qiáng)度檢測(cè)系統(tǒng)主機(jī)端使用異步委托動(dòng)態(tài)地對(duì)參數(shù)進(jìn)行賦值和控件狀態(tài)修改,調(diào)用線程類(lèi)庫(kù)處理密集型任務(wù),使得程序具有更好的擴(kuò)展性。軟件設(shè)計(jì)流程如圖2所示,用串口線將程控電源、PLC、光強(qiáng)板與計(jì)算機(jī)連接,通過(guò)計(jì)算機(jī)發(fā)送通信協(xié)議到達(dá)電源、PLC、光強(qiáng)板,控制連接各部件。同時(shí),電源和光強(qiáng)板檢測(cè)到的數(shù)據(jù)通過(guò)通信協(xié)議將數(shù)據(jù)反饋到計(jì)算機(jī),利用計(jì)算機(jī)對(duì)數(shù)據(jù)做不同的優(yōu)化處理,實(shí)現(xiàn)不同的功能。
設(shè)計(jì)的主從式光強(qiáng)度檢測(cè)系統(tǒng)采用串口技術(shù)與計(jì)算機(jī)連接[5],在計(jì)算機(jī)沒(méi)有安裝網(wǎng)卡的情況下,使用串口通信將設(shè)備上的數(shù)據(jù)傳送到計(jì)算機(jī)上。微軟公司在推出Visual Studio 2008版本以后的開(kāi)發(fā)工具,不需要采用第三方的控件就可以設(shè)計(jì)串口通信的程序。而且Famework類(lèi)庫(kù)中的SerialPort類(lèi),含有多種串口通信的功能[6?7],以SerialPort類(lèi)為核心設(shè)計(jì)程序快速方便。C#中的SerialPort控件通過(guò)串口線連接外部設(shè)備的控件。圖3為外部設(shè)備連接流程圖。
在設(shè)置電源發(fā)送通信協(xié)議時(shí),因?yàn)榻?jīng)常要改變變量的值,所以使用serialPort.Write()函數(shù)。由于通信協(xié)議中使用的是16進(jìn)制,而數(shù)據(jù)的格式由用戶隨意輸入,但是通信協(xié)議有特定的格式規(guī)定,所以需要將數(shù)據(jù)用ToString()函數(shù)轉(zhuǎn)換數(shù)據(jù)格式。轉(zhuǎn)換完成后在for循環(huán)中用Substring()函數(shù)索引數(shù)據(jù)中的每一個(gè)值并轉(zhuǎn)換為char類(lèi)型,放入byte類(lèi)型數(shù)組中。再用Convert.ToByte()將數(shù)組中的每一個(gè)值轉(zhuǎn)換成16進(jìn)制。系統(tǒng)進(jìn)行協(xié)議發(fā)送與數(shù)據(jù)接收,首先對(duì)接收的數(shù)據(jù)進(jìn)行位數(shù)判斷,如果數(shù)據(jù)還沒(méi)有到達(dá)則繼續(xù)等待直到接收完整,如果在設(shè)定的次數(shù)等待還不能完整接收數(shù)據(jù)則會(huì)跳出并返回,系統(tǒng)接收到數(shù)據(jù)后對(duì)數(shù)據(jù)進(jìn)行處理。
數(shù)據(jù)接收使用serialPort.DataReceved()函數(shù),當(dāng)數(shù)據(jù)到達(dá)串口時(shí),可以把數(shù)據(jù)接收的正確性判斷、數(shù)據(jù)進(jìn)制轉(zhuǎn)換、數(shù)據(jù)修正放在serialPort.DataReceved()函數(shù)中。對(duì)光強(qiáng)值的判斷使用函數(shù)rev[1]>0xC0,rev[1]是光強(qiáng)數(shù)據(jù)的高8位,光強(qiáng)檢測(cè)系統(tǒng)有不同的衰減檔,如果接收到的數(shù)據(jù)不在選擇的衰減范圍內(nèi),則會(huì)重新發(fā)送命令,將接收到的數(shù)據(jù)在另外的衰減范圍內(nèi)計(jì)算,乘以相應(yīng)的衰減比。
3.3 數(shù)據(jù)處理
數(shù)據(jù)處理流程如圖4所示。光強(qiáng)板采集到的信號(hào)并不是純凈的光強(qiáng)信號(hào)。光強(qiáng)板通電時(shí),電路中有暗電流和噪聲等干擾信號(hào),如果測(cè)試的環(huán)境并不是全黑暗的條件,外界也會(huì)出現(xiàn)干擾信號(hào),把干擾信號(hào)過(guò)濾,需要進(jìn)行包括暗電流與噪聲的背景檢測(cè)。背景檢測(cè)的條件與常規(guī)檢測(cè)的條件應(yīng)保持一致,但光源應(yīng)處于關(guān)閉狀態(tài),將讀取的背景信號(hào)保存至配置文件中。常規(guī)測(cè)試讀取到的信號(hào)減去背景信號(hào)得到光源的光強(qiáng)信號(hào),這時(shí)得到的光強(qiáng)信號(hào)只是相對(duì)值,與實(shí)際光強(qiáng)值存在一定函數(shù)關(guān)系,因此需要通過(guò)光強(qiáng)板測(cè)量標(biāo)準(zhǔn)燈的數(shù)據(jù),再與標(biāo)準(zhǔn)燈的真實(shí)數(shù)據(jù)進(jìn)行匹配,計(jì)算出光強(qiáng)標(biāo)定系數(shù),利用光強(qiáng)標(biāo)定系數(shù)標(biāo)定待測(cè)光源的光強(qiáng)值。光強(qiáng)標(biāo)定后得到的標(biāo)定系數(shù)保存在配置文件中,此后每次進(jìn)行光強(qiáng)檢測(cè),都需要使用標(biāo)定系數(shù)去修正,修正后的光強(qiáng)值接近真實(shí)值。由于硬件和外界條件的影響,測(cè)量得到的數(shù)據(jù)還會(huì)存在一定的誤差,需要進(jìn)行二次校準(zhǔn)。光強(qiáng)二次校準(zhǔn)是數(shù)學(xué)補(bǔ)償?shù)姆椒?,可以提高?shù)據(jù)的準(zhǔn)確性。
數(shù)據(jù)顯示使用極坐標(biāo)、直角坐標(biāo)和列表數(shù)據(jù)三種方式。極坐標(biāo)的極軸表示測(cè)量角度,極徑的長(zhǎng)度代表光強(qiáng)幅度,而系統(tǒng)讀取的數(shù)據(jù)使用直角坐標(biāo),所以需要將直角坐標(biāo)數(shù)據(jù)轉(zhuǎn)換成極坐標(biāo)數(shù)據(jù)。極坐標(biāo)圖的選擇控件是ZedGraph控件。ZedGraph控件可以利用任意點(diǎn)組合創(chuàng)建2D的圖標(biāo)[8?9],ZedGraph是一個(gè)很靈活的類(lèi)庫(kù),圖表中各個(gè)位置都可以被修改。直角坐標(biāo)圖使用的是C1Chart控件,C1Chart控件包含折線圖、柱形圖、扇形圖等多種數(shù)據(jù)圖形,為了更好的分析數(shù)據(jù),這里使用的是折線圖。系統(tǒng)將一個(gè)或多個(gè)數(shù)據(jù)使用者以同步的方式和一個(gè)數(shù)據(jù)提供者綁定,如果修改、添加或刪除綁定數(shù)據(jù)集合中的一部分值,C1Chart控件將反映新的數(shù)據(jù)集合。
3.4 程序界面與功能交互
程序的主界面由MenuStrip控件組成菜單欄,MenuStrip控件可以添加各類(lèi)ToolStripMenuItem,這些ToolStripMenuItem能夠觸發(fā)各種事件,完成所需操作,例如,開(kāi)燈、關(guān)燈、復(fù)位等。數(shù)據(jù)圖表顯示的空間放入TabControl控件中,TabControl是選項(xiàng)卡容器,存放各種控件,系統(tǒng)使用了三個(gè)選項(xiàng)卡,分別存放極坐標(biāo)圖、直角坐標(biāo)圖和數(shù)據(jù)列表圖。通過(guò)切換控件上方的選項(xiàng)卡來(lái)切換顯示內(nèi)容。狀態(tài)欄顯示控件為StatusStrip控件,StatusStrip控件包含Label子控件,使用Label子控件顯示需要顯示的狀態(tài)。例如,在連接外部設(shè)備時(shí),當(dāng)連接成功或連接失敗時(shí),需要告訴用戶知道當(dāng)前的設(shè)備連接狀態(tài),可以用標(biāo)志位判斷連接結(jié)果,相應(yīng)在StatusStrip控件上顯示出來(lái)。程序設(shè)置功能可以完成對(duì)PLC、電源的設(shè)置,由于系統(tǒng)設(shè)置是子WinForm,所以需要傳遞參數(shù)。測(cè)試、停止、復(fù)位、開(kāi)燈、關(guān)燈的功能都是發(fā)送對(duì)應(yīng)的協(xié)議到PLC或者電源,完成對(duì)應(yīng)的操作。
4 測(cè)試結(jié)果
4.1 樣品測(cè)試
以鹵素?zé)魹闃悠穼?duì)設(shè)計(jì)的主從式光強(qiáng)度檢測(cè)系統(tǒng)的性能進(jìn)行測(cè)試。系統(tǒng)測(cè)試平臺(tái)自動(dòng)轉(zhuǎn)到初始角度,并按照設(shè)置的角度間隔轉(zhuǎn)動(dòng),直到轉(zhuǎn)到設(shè)置的角度。圖5為測(cè)試結(jié)果,測(cè)出光源在不同角度的光強(qiáng)度值。由圖5可知:當(dāng)轉(zhuǎn)動(dòng)角度為0°時(shí)光強(qiáng)值最大,即光源正對(duì)光強(qiáng)探頭;當(dāng)轉(zhuǎn)動(dòng)角度為-90°和90°時(shí),光源與光強(qiáng)探頭垂直,光強(qiáng)值最小,接近于0,極坐標(biāo)圖中的光強(qiáng)線接近左右對(duì)稱。圖6所示為直角坐標(biāo)測(cè)試結(jié)果圖,圖中的曲線符合光強(qiáng)角度分布,對(duì)稱角度的光強(qiáng)幅值幾乎相等。測(cè)試表明,光源的光強(qiáng)分布良好,設(shè)計(jì)的主從式光強(qiáng)檢測(cè)系統(tǒng)性能穩(wěn)定。
4.2 光譜儀與主從式光強(qiáng)度檢測(cè)系統(tǒng)的測(cè)試數(shù)值對(duì)比
使用同一個(gè)鹵素?zé)魳悠?,把主從式光?qiáng)度檢測(cè)系統(tǒng)的測(cè)量數(shù)據(jù)與光譜儀測(cè)量數(shù)據(jù)進(jìn)行比較,由圖7可知,當(dāng)鹵素?zé)艄β蔬_(dá)到23.295 W時(shí),光譜儀測(cè)量的光通量和主從式光強(qiáng)度檢測(cè)系統(tǒng)測(cè)量的光通量約為90 lm和80 lm,在這個(gè)功率值附近主從式光強(qiáng)度檢測(cè)系統(tǒng)所測(cè)試的光通量誤差較大,而在其他測(cè)試點(diǎn),特別是功率在7.5~20.0測(cè)量范圍內(nèi),兩條曲線值相一致,計(jì)算出曲線平均誤差值為0.004 15,設(shè)計(jì)的光強(qiáng)度檢測(cè)系統(tǒng)能滿足允許誤差范圍內(nèi)的應(yīng)用。
5 結(jié) 語(yǔ)
本文設(shè)計(jì)的基于主從式架構(gòu)的光強(qiáng)度檢測(cè)系統(tǒng),從機(jī)基于STM32F107的32位微處理器實(shí)現(xiàn)光強(qiáng)度數(shù)據(jù)采集,主機(jī)應(yīng)用C#編程語(yǔ)言實(shí)現(xiàn)數(shù)據(jù)處理。系統(tǒng)主機(jī)端使用異步委托動(dòng)態(tài)地對(duì)參數(shù)進(jìn)行賦值和控件狀態(tài)修改,調(diào)用線程類(lèi)庫(kù)處理密集型任務(wù),使得程序具有更好的擴(kuò)展性。以鹵素?zé)魹闃悠罚謩e使用光譜儀和主從式光強(qiáng)度檢測(cè)系統(tǒng)對(duì)同一樣品進(jìn)行測(cè)試,測(cè)量的曲線分別在極坐標(biāo)、直角坐標(biāo)中顯示。測(cè)試結(jié)果表明,設(shè)計(jì)的主從式光強(qiáng)度檢測(cè)系統(tǒng)測(cè)試結(jié)果精確,可廣泛應(yīng)用于光源與照明的檢測(cè)領(lǐng)域。
參考文獻(xiàn)
[1] 胡愛(ài)華.半導(dǎo)體照明產(chǎn)業(yè)的發(fā)展與前景[J].現(xiàn)代顯示,2010(2):63?70.
[2] 周強(qiáng),李錦華.半導(dǎo)體照明產(chǎn)品檢測(cè)實(shí)驗(yàn)室建設(shè)及展望[J].價(jià)值工程,2013(31):39?40.
[3] 孟強(qiáng),徐慧,萬(wàn)青苗.基于STM32的數(shù)據(jù)采集及顯示系統(tǒng)的設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2013(5):3183?3186.
[4] 李響,滿慶豐,夏繼強(qiáng).基于TwinCAT 和C#的扭矩傳感器校準(zhǔn)系統(tǒng)[J].儀表技術(shù)與傳感器,2014(4):41?45.
[5] 楊艷華.PC與單片機(jī)串行通信的協(xié)議策略研究及應(yīng)用[J].云南大學(xué)學(xué)報(bào)(自然科學(xué)版),2007,29(z2):122?126.
[6] 翟希述,王寶興,范淼.基于Visual C#的串口通信設(shè)計(jì)[J].電子科技,2011,24(2):24?26.
[7] 彭四偉,蔣尚秀.一種用C++動(dòng)態(tài)擴(kuò)展C#程序的方法[J].微計(jì)算機(jī)信息,2010,26(4):15?18.
[8] 成鑫.LED光強(qiáng)分布的解析形式及其應(yīng)用[C]//2008全國(guó)LED顯示應(yīng)用技術(shù)交流暨產(chǎn)業(yè)發(fā)展研討會(huì)文集.杭州:中國(guó)光學(xué)光電子行業(yè)協(xié)會(huì),2008:94?95.
[9] 劉輝,常婉綸.基于C#的Winform程序參數(shù)傳遞和同步顯示的實(shí)現(xiàn)[J].軟件技術(shù),2010(14):64?66.