紀(jì) 浩,谷玉海,徐小力
(北京信息科技大學(xué) 機(jī)電系統(tǒng)測(cè)控北京市重點(diǎn)實(shí)驗(yàn)室,北京 100192)
太陽能電池性能測(cè)試系統(tǒng)由硬件結(jié)構(gòu)與測(cè)控軟件兩部分構(gòu)成。硬件結(jié)構(gòu)主要包括光路系統(tǒng)、樣品室與測(cè)量電路三部分,如圖1所示。軟件主要分為上位機(jī)軟件與下位機(jī)程序兩部分。
太陽光模擬光源選用氙燈,因?yàn)槠渚哂休^寬且連續(xù)的光譜范圍,覆蓋紫外光至紅外光,是比較理想的模擬太陽光源。光源通過斬波器變?yōu)榻蛔兊膹?fù)色光信號(hào),再經(jīng)光柵單色儀,為測(cè)試系統(tǒng)提供交變單色光信號(hào)。偏置光源的存在使系統(tǒng)具備了測(cè)試多節(jié)太陽能電池的條件,可選用氙燈、鹵鎢燈作為光源。待測(cè)太陽能電池樣品與已標(biāo)定的標(biāo)準(zhǔn)探測(cè)器至于樣品室中的運(yùn)動(dòng)平臺(tái)上,通過數(shù)據(jù)采集卡與計(jì)算機(jī)相連。上位機(jī)軟件可對(duì)硬件系統(tǒng)進(jìn)行狀態(tài)配置并獲取采集卡數(shù)據(jù),經(jīng)數(shù)據(jù)處理后生成標(biāo)準(zhǔn)探測(cè)器絕對(duì)光譜響應(yīng)曲線、被測(cè)太陽能電池絕對(duì)光譜響應(yīng)曲線以及量子效率曲線。
上位機(jī)軟件作為人機(jī)交互的媒介,理應(yīng)具備界面簡(jiǎn)潔、便于用戶理解、操作簡(jiǎn)便快捷的特點(diǎn)。鑒于C++Builder這一高性能可視化集成開發(fā)環(huán)境具有大量可重用控件與強(qiáng)大的數(shù)據(jù)庫處理能力[1-2],本軟件選用其作為開發(fā)工具。軟件界面組成如圖2所示。
程序主界面由大量控件組成,包括標(biāo)簽、文本框、命令按鈕、復(fù)選框、單選按鈕、列表框等。主窗體調(diào)用TeeChart控件依據(jù)測(cè)量數(shù)據(jù)生成一條或多條測(cè)量曲線,方便用戶更直觀地了解測(cè)試結(jié)果。同時(shí),提供跟隨鼠標(biāo)的十字光標(biāo),便于用戶跟蹤曲線各點(diǎn)數(shù)值。用戶可以在此界面設(shè)置太陽光譜掃描范圍、掃描步長(zhǎng)與掃描速度等相關(guān)檢測(cè)參數(shù),并且允許用戶在設(shè)備監(jiān)測(cè)窗口中查看各下位機(jī)設(shè)備參數(shù)以及運(yùn)行狀態(tài)。程序在掃描進(jìn)行中提示用戶測(cè)試進(jìn)度。程序主界面與標(biāo)準(zhǔn)探測(cè)器絕對(duì)光譜響應(yīng)曲線及數(shù)據(jù)如圖3所示。
太陽能電池絕對(duì)光譜響應(yīng)SR(λ)是指在某一特定波長(zhǎng)處,太陽能電池輸出的短路電流ISC(λ)與入射光功率P(λ)的比值(單位:A/W):
將已標(biāo)定標(biāo)準(zhǔn)探測(cè)器的絕對(duì)光譜響應(yīng)SRs(λ)作為參照數(shù)據(jù)[2],上位機(jī)軟件解析USB-HID設(shè)備上傳的報(bào)文信息,獲得在相同入射光功率P(λ)條件下標(biāo)準(zhǔn)探測(cè)器在特定波長(zhǎng)λ處輸出的短路電流IS(λ)和待測(cè)太陽能電池在特定波長(zhǎng)λ處輸出的短路電流IC(λ)。則待測(cè)太陽能電池的絕對(duì)光譜響應(yīng) SRC(λ)可以表示為(單位:A/W):
量子效率η(λ)是指在某一特定波長(zhǎng)λ處,太陽能電池輸出的電子數(shù)目與入射光子數(shù)目的比值:
其中,e 為電子電荷(單位:C),e=1.602 2×10-19;E(λ)為波長(zhǎng) λ 的光子的能量,E(λ)=h×c/λ;h為普朗克常數(shù)(單位:J·s), h=6.6261×10-24,c 為光速(單位:m/s): c =2.997 9×109。 故可求得量子效率 η(λ)為:
依據(jù)上述公式計(jì)算出則待測(cè)太陽能電池的絕對(duì)光譜響應(yīng) SRC(λ)與量子效率 η(λ),調(diào)用 TeeChart控件繪制出相應(yīng)曲線。
USB通信協(xié)議具有靈活易用、應(yīng)用廣泛等特性[4]。其中HID設(shè)備類屬于人機(jī)交互操作設(shè)備,Windows操作系統(tǒng)為此類設(shè)備提供了通用的驅(qū)動(dòng)程序,用戶只需編寫符合HID設(shè)備類規(guī)范的固件程序即可讓W(xué)indows自動(dòng)識(shí)別[5],而且HID沒有限制設(shè)備類型,只要求交換數(shù)據(jù)存放在報(bào)文結(jié)構(gòu)內(nèi),設(shè)備只需支持報(bào)文格式即可。鑒于此類設(shè)備這一免驅(qū)的優(yōu)勢(shì),本系統(tǒng)將下位機(jī)STM32F103VET單片機(jī)的USB模塊枚舉成HID設(shè)備,上位機(jī)軟件調(diào)取Windows API函數(shù)與HID設(shè)備交換數(shù)據(jù)。USB通信系統(tǒng)層次結(jié)構(gòu)如圖4所示。
上位機(jī)檢測(cè)USB設(shè)備是通過對(duì)集線器接收端的電平信號(hào)的變化確定的,這就要求設(shè)備端D+或D-接上拉電阻至3.3 V電源,STM32F103單片機(jī)并沒有在此環(huán)節(jié)做內(nèi)部上拉,故搭建一個(gè)軟上拉電路,用I/O口PE0電平變化模擬上拉電阻接通與斷開。USB部分硬件實(shí)現(xiàn)如圖5所示。
HID設(shè)備與主機(jī)間的通信是通過USB的控制管道(默認(rèn)管道即端點(diǎn)0)和中斷管道1完成的。HID設(shè)備的描述符包括設(shè)備描述符、配置描述符、接口描述符、端點(diǎn)描述符、字符串描述符、HID描述符、報(bào)告描述符、實(shí)體描述符,其中前5個(gè)描述符屬于USB設(shè)備標(biāo)準(zhǔn)描述符,而后3個(gè)則為HID類設(shè)備特定描述符。通過對(duì)描述符的配置實(shí)現(xiàn)HID設(shè)備屬性的定義,如產(chǎn)品ID:idProduct(PID)、廠商 ID:idVendor(VID),包括對(duì)端口的定義以及對(duì)報(bào)文格式的定義。
主機(jī)與USB設(shè)備最初的數(shù)據(jù)交換過程通過枚舉完成。USB-HID類設(shè)備解析主機(jī)的請(qǐng)求,并在枚舉期間向主機(jī)發(fā)送描述符響應(yīng)主機(jī)的請(qǐng)求。系統(tǒng)將太陽能電池短路電流數(shù)據(jù)作為一個(gè)報(bào)文,當(dāng)短路電流測(cè)量完成后,USB設(shè)備將報(bào)文發(fā)向上位機(jī),完成信息發(fā)送。HID固件程序流程圖如圖6所示。
圖6 HID固件程序流程圖
3.1.1 USB設(shè)備標(biāo)準(zhǔn)描述符
設(shè)備標(biāo)準(zhǔn)描述符主要是在usb_desc.c文件中定義,具體操作如下:
(1)編輯CustomHID_DeviceDes-criptor設(shè)備描述符,在以小端模式定義設(shè)備的實(shí)驗(yàn)用PID與 VID 為 0×123 4與 0×567 8。
(2)編輯ConfigurationDescriptor配置描述符,定義接口編號(hào)為0、定義端點(diǎn),定義接口協(xié)議為HID自定義設(shè)備。
(3)編輯Endpoint Descriptor端點(diǎn)描述符,定義輸入、輸出端點(diǎn)最大包長(zhǎng)度為8 B。
(4)編輯CustomHID_ReportDescriptor報(bào)文描述符,設(shè)定8 B報(bào)文格式。
(5)編輯StringLangID、String Vendor、StringProduct、StringSerial 描述符,設(shè)置設(shè)備廠商ID、產(chǎn)品ID以及產(chǎn)品序列號(hào)。
3.1.2 USB端點(diǎn)設(shè)置
編輯usb_prop.c文件,配置端點(diǎn),具體操作如下:
(1)編輯 CustomHID_Reset(void)函數(shù),初始化端點(diǎn) 0和端點(diǎn)1,調(diào)用SetEPType()函數(shù)初始化端點(diǎn) 0為控制端點(diǎn)類型、端點(diǎn)1為中斷端點(diǎn)類型。
(2)調(diào)用 SetEPRxAddr()、SetEPTxAddr(),設(shè) 置收 發(fā) 數(shù)據(jù)的地址。
(3)調(diào) 用 SetEPTxCount()、SetEPRxCount(),設(shè) 置 收 發(fā) 數(shù)據(jù)長(zhǎng)度為8 B。
3.1.3 主函數(shù)框架
編寫main.c文件,完成下述內(nèi)容:
(1)包含關(guān)鍵頭文件 stm32f10x_lib.h、usb_lib.h、hw_config.h。
(2)調(diào)用 Set_System()、USB_Interrupts_ConFig()、Set_USBClock()、USB_Init()函 數(shù) 配 置 系 統(tǒng) 時(shí) 鐘 、USB 中 斷 、USB時(shí)鐘與初始化。
(3)編寫CustomHID_Send()數(shù)據(jù)發(fā)送函數(shù),調(diào)用User-ToPMABufferCopy(),將數(shù)據(jù)放入輸出 Buffer,調(diào)用 SetEPTxValid(ENDP1)使端點(diǎn)1有效以發(fā)送數(shù)據(jù)。
(4)編寫 CustomHID_Receive()數(shù)據(jù)接收函數(shù),調(diào)用PMAToUserBufferCopy()函數(shù)獲取數(shù)據(jù),調(diào)用 SetEPRxValid(ENDP1)函數(shù)使端點(diǎn)1有效以接收數(shù)據(jù)。
C++Builder集成開發(fā)環(huán)境調(diào)用Windows API函數(shù)開發(fā)出USB-HID程序模塊。通過調(diào)用Windows基礎(chǔ)庫函數(shù)獲取HID設(shè)備的全局唯一標(biāo)識(shí)(GUID)、設(shè)備 ID、設(shè)備接口、緩沖區(qū)指針等信息,最終獲取報(bào)文信息,解析數(shù)據(jù)交數(shù)據(jù)處理模塊進(jìn)一步處理。上位機(jī)HID程序流程圖如圖7所示。
上位機(jī)實(shí)現(xiàn)與USB-HID設(shè)備通信具體調(diào)用的函數(shù)有:
(1)使用HidD_GetGuid函數(shù)獲取128 bit GUID。
(2)使用SetupDiGetClassDevs函數(shù)獲取設(shè)備信息群。
圖7 上位機(jī)HID程序流程圖
(3)使用SetupDiEnumDeviceInterfaces函數(shù)識(shí)別HID接口。
(4)使用SetupDiGetDeviceInterfaceDetail函數(shù)獲取設(shè)備路徑。
(5)使用CreatFile函數(shù)開啟設(shè)備,使用CloseHandle函數(shù)釋放資源。
(6)使用HidD_GetAttributes函數(shù)獲取設(shè)備ID。
(7)使用HidD_GetPreparsedData函數(shù)與HidD_Free PreparsedData函數(shù)取得緩沖區(qū)指針與釋放資源。
(8)使用 WriteData函數(shù)、ReadFile函數(shù)發(fā)送、讀取報(bào)文。
軟件檢測(cè)相關(guān)設(shè)備處于連接狀態(tài),將標(biāo)準(zhǔn)太陽能電池與待測(cè)太陽能電池置于樣品室檢測(cè)臺(tái)上,軟件配置相關(guān)檢測(cè)參數(shù),在掃描范圍300 nm~1 200 nm、波長(zhǎng)間隔10nm、斬波器與鎖相放大器參考頻率為2 Hz、單點(diǎn)測(cè)試10次、緩沖時(shí)間10 s的狀態(tài)下,成功獲取 USB-HID設(shè)備上傳的數(shù)據(jù)。上位機(jī)軟件調(diào)用TeeChart控件繪制出待測(cè)電池光譜響應(yīng)曲線,測(cè)試結(jié)果如圖8所示。
USB已經(jīng)逐步取代了串口,成為現(xiàn)階段測(cè)試儀器常用的接口與通信方式,使儀器的通用性與易用性大大增強(qiáng)。系統(tǒng)采用USB通信方式,同時(shí)上位機(jī)軟件具備穩(wěn)定準(zhǔn)確的數(shù)據(jù)獲取能力,并以圖像方式準(zhǔn)確直觀地顯示測(cè)試結(jié)果,具有一定的實(shí)用價(jià)值。
[1]原雪,徐朝陽,朱春光,等.C++Builder 6入門提高[M].長(zhǎng)沙:國防科技大學(xué)出版社,2002.
[2]吳逸賢,吳目誠.精彩 C++Builder 6程序設(shè)計(jì)[M].北京:科學(xué)出版社,2003.
[3]GB 11009-1989太陽能電池光譜響應(yīng)測(cè)試方法[S].中華人民共和國機(jī)械電子工業(yè)部1989-03-02批準(zhǔn):1990實(shí)施.
[4]廖濟(jì)林.USB2.0應(yīng)用系統(tǒng)開發(fā)實(shí)例精講[M].北京:電子工業(yè)出版社,2006.