摘 要:本文通過(guò)分析光敏電阻生產(chǎn)環(huán)節(jié)中測(cè)試分檔工序的現(xiàn)狀,針對(duì)該環(huán)節(jié)目前主要靠手工分檔而帶來(lái)的分檔精度不高、一致性不好及生產(chǎn)效率低下的實(shí)際問(wèn)題,研制了一種基于USB總線接口技術(shù)的新型智能光敏電阻檢測(cè)裝置。硬件設(shè)計(jì)方面,用單片機(jī)AT89C52控制12位高速A/D轉(zhuǎn)換器AD574完成八路被檢光敏電阻亮電阻、暗電阻等參數(shù)的數(shù)據(jù)采集。通過(guò)由PDIUSBD12芯片構(gòu)成的USB數(shù)據(jù)傳輸模塊將采樣數(shù)據(jù)送到上位計(jì)算機(jī)。軟件設(shè)計(jì)方面,USB接口單片機(jī)程序中采用了Philips的USB51S函數(shù)庫(kù)來(lái)解釋USB數(shù)據(jù)傳輸協(xié)議。使用Windows DDK開(kāi)發(fā)了驅(qū)動(dòng)程序。上位機(jī)應(yīng)用程序利用PHILIPS公司提供的EasyD12庫(kù)和Visual Basic 2005來(lái)設(shè)計(jì)。
關(guān)鍵詞:光敏電阻、測(cè)試分檔、光照強(qiáng)度、USB、動(dòng)態(tài)連接庫(kù)
1引言
測(cè)試分檔是光敏電阻生產(chǎn)環(huán)節(jié)中后期的一個(gè)重要工序。因?yàn)椴煌瑧?yīng)用領(lǐng)域?qū)饷綦娮栌嘘P(guān)參數(shù)如亮電阻、暗電阻和γ值等的要求也不一樣,生產(chǎn)廠家必須能夠十分準(zhǔn)確地給出自己產(chǎn)品的上述參數(shù)值,以滿足用戶使用的具體要求。生產(chǎn)廠家根據(jù)用戶對(duì)亮電阻、暗電阻和γ值等參數(shù)的要求范圍,來(lái)為生產(chǎn)的光敏電阻分類(lèi),這就是光敏電阻的測(cè)試分檔。
目前國(guó)內(nèi)廠家的測(cè)試分檔基本以手工操作為主,這樣的弊端是顯而易見(jiàn)的:光源的光照強(qiáng)度不能準(zhǔn)確控制,手工分檔速度很慢,人工讀數(shù)引入了較大誤差,測(cè)試數(shù)據(jù)只能人工記錄保存,這就大大地影響了分檔的精度和產(chǎn)品的一致性。本文借助計(jì)算機(jī)強(qiáng)大的數(shù)據(jù)處理與存儲(chǔ)功能,采用數(shù)據(jù)傳輸率很高且使用方便的USB總線研究和設(shè)計(jì)了一種用于光敏電阻測(cè)試分檔的智能化檢測(cè)裝置。從根本上解決了手工分檔的一系列問(wèn)題:如光源光照強(qiáng)度的控制,人工讀數(shù)帶來(lái)的誤差,測(cè)試結(jié)果的保存等。
2智能光敏電阻檢測(cè)裝置的硬件設(shè)計(jì)
智能光敏電阻檢測(cè)裝置的研制涉及光源設(shè)計(jì)、超大范圍的電阻的自動(dòng)測(cè)量、數(shù)據(jù)的采集與處理、單片機(jī)和計(jì)算機(jī)的USB串行數(shù)據(jù)傳輸、分檔信號(hào)的顯示及控制等幾大部分。
設(shè)計(jì)總體框圖如圖1所示。其中AD574采集模塊在來(lái)自PC機(jī)命令的控制下完成8路光敏電阻亮電阻、暗電阻等參數(shù)的采集,采集數(shù)據(jù)由USB數(shù)據(jù)傳輸接口模塊傳送至PC計(jì)算機(jī),由計(jì)算機(jī)完成參數(shù)的后續(xù)處理,算出對(duì)應(yīng)光敏電阻的γ值,隨后分檢顯示程序根據(jù)亮、暗電阻和γ值確定對(duì)應(yīng)光敏電阻應(yīng)屬哪一檔。最后由分檢顯示電路顯示分檔信息。
[align=center]

圖1智能光敏電阻檢測(cè)裝置設(shè)計(jì)總體框圖[/align]
2.1數(shù)據(jù)采集模塊
數(shù)據(jù)采集模塊由數(shù)據(jù)采集模塊單片機(jī)AT89C52、鎖存器74LS373、A/D芯片AD574、8路模擬開(kāi)關(guān)CD4051、光敏電阻測(cè)試電路、與USB數(shù)據(jù)傳輸接口模塊通信的IDC26接口(CN6)等部分組成。
AD574是美國(guó)AD 公司生產(chǎn)的12位高速逐次逼近型模數(shù)變換器。片內(nèi)自備時(shí)鐘基準(zhǔn)源,無(wú)需外接元器件就可獨(dú)立完成A/D轉(zhuǎn)換功能,它的轉(zhuǎn)換時(shí)間為15~35μs,轉(zhuǎn)換精度為0.05%,可以并行輸出12位,也可以分成8位和4位兩次輸出。數(shù)字量可直接采用雙極性模擬信號(hào)輸入,供電電源為±15V,邏輯電源為+5V。廣泛應(yīng)用在數(shù)據(jù)采集系統(tǒng)中。
系統(tǒng)的硬件設(shè)計(jì)在連接上主要考慮了三總線(控制總線、地址總線、數(shù)據(jù)總線)的連接。由于AD574輸出具有三態(tài)緩沖器,可直接與微機(jī)的總線接口,而無(wú)須附加邏輯接口電路。AD574片內(nèi)有時(shí)鐘,故無(wú)需外加時(shí)鐘信號(hào)。該電路采用單極性輸入方式,可對(duì)0~10V或0~20V 模擬信號(hào)進(jìn)行轉(zhuǎn)換,本裝置采用0~10V輸入。轉(zhuǎn)換結(jié)果的高8位從DB11~DB4輸出,低4位從DB3~DB0 輸出,并且直接和單片機(jī)的數(shù)據(jù)總線相連。
在光敏電阻測(cè)試電路中,模擬開(kāi)關(guān)4051對(duì)應(yīng)8路輸入,一次可測(cè)試8個(gè)光敏電阻,根據(jù)電路硬件連接,8路輸入地址分別為0xff18、0xff19、0xff1a、0xff1b、0xff1c、0xff1d、0xff1e、0xff1f。調(diào)用一次采樣函數(shù)ad574(),8路光敏電阻即被測(cè)試一遍。
測(cè)試系統(tǒng)中光照強(qiáng)度的調(diào)節(jié)由單片機(jī)的P1.1、P1.2和P1.3控制,P1.1、P1.2和P1.3分別控制100lx、10lx和0lx 的光源。P1.4接看門(mén)狗電路的輸入端WDI,不斷輸出脈沖信號(hào)進(jìn)行喂狗。
2.2數(shù)據(jù)采集模塊單片機(jī)和計(jì)算機(jī)的USB通信
本系統(tǒng)采用基于PDIUSBD12接口芯片的USB數(shù)據(jù)傳輸接口模塊[1,2]。用于連接數(shù)據(jù)采集模塊和PC計(jì)算機(jī)的USB數(shù)據(jù)傳輸接口模塊在整個(gè)系統(tǒng)中地位極其重要,也是本系統(tǒng)設(shè)計(jì)的重點(diǎn)和難點(diǎn),這里開(kāi)發(fā)一個(gè)通用的USB數(shù)據(jù)傳輸接口模塊,該模塊主要由3個(gè)部分組成。
(1)USB總線接口部分,包括B類(lèi)USB連接線插座和PDIUSBD12接口芯片。
?。?)微處理器及邏輯控制部分,包括AT89C52單片機(jī)及邏輯控制電路。
?。?)雙端口數(shù)據(jù)存儲(chǔ)區(qū),包括雙端口RAM芯片CY7C136和一個(gè)IDC26封裝的8位并行數(shù)據(jù)接口插座CN3。
AT89C52單片機(jī)的外部中斷INT0用于USB接口芯片PDIUSBD12的中斷請(qǐng)求,外部中斷INT1用于雙端口RAM芯片CY7C136的左側(cè)信箱中斷請(qǐng)求,完成數(shù)據(jù)采集模塊單片機(jī)采集數(shù)據(jù)的上傳。
3智能光敏電阻檢測(cè)裝置的軟件設(shè)計(jì)
3.1下位機(jī)程序的開(kāi)發(fā)
數(shù)據(jù)采集模塊單片機(jī)和USB接口單片機(jī)程序均使用C語(yǔ)言編寫(xiě)[3],增加了程序的可移植性。數(shù)據(jù)采集模塊通過(guò)USB通信模塊接收到相應(yīng)命令后,通過(guò)調(diào)整光照強(qiáng)度,調(diào)用數(shù)據(jù)采集程序,隨后把采集結(jié)果通過(guò)USB通信模塊上傳到PC計(jì)算機(jī)進(jìn)一步處理。下位機(jī)還可通過(guò)鍵盤(pán)顯示電路顯示出被檢光敏電阻的分檔信息,從而實(shí)現(xiàn)了光敏電阻的智能化檢測(cè)。數(shù)據(jù)采集程序的部分代碼如下:
unint ad574(uchar idata *x) //采樣結(jié)果放指針中的A/D采樣函數(shù)
?。?uchar i;
uchar xdata *ad_adr;
ad_adr=&ADCOM0;
adhi=&ADHI0;
adlo=&ADLO0;
r=0; //產(chǎn)生CE=1
w=0;
for(i=0;i<8;i++)
{ *ad_adr=0; //啟動(dòng)轉(zhuǎn)換
while(adbusy==1);
x[2*i]=adhi>>4; //存轉(zhuǎn)換結(jié)果高位
x[2*i+1]=((adhi<<4)+(adlo&0x0f)); //存轉(zhuǎn)換結(jié)果低位
ad_adr++;
adhi++;
adlo++;
?。?
?。?
3.2驅(qū)動(dòng)程序的開(kāi)發(fā)
USB設(shè)備驅(qū)動(dòng)程序在結(jié)構(gòu)上與其他類(lèi)型的設(shè)備驅(qū)動(dòng)程序基本相同,包括初始化、創(chuàng)建設(shè)備、卸載和刪除設(shè)備、即插即用處理、分發(fā)例程處理、電源管理、WMI等部分。驅(qū)動(dòng)程序主要例程如下:
(1)驅(qū)動(dòng)程序入口例程DriverEntry,該例程完成兩件事:把注冊(cè)表項(xiàng)復(fù)制到一個(gè)全局變量中;告訴系統(tǒng)哪些IRP由哪個(gè)例程處理。
?。?)驅(qū)動(dòng)程序的初始化例程DataClt_AddDevice
?。?)即插即用例程DataClt_DispatchPnp
?。?)電源管理例程DataClt_DispatchPower
(5)數(shù)據(jù)讀寫(xiě)例程DataClt_DispatchReadWrite
?。?)提交URB 例程DataClt_CallUSBD
3.3 上位機(jī)應(yīng)用程序的開(kāi)發(fā)
在Microsoft Visual Basic 2005環(huán)境下編寫(xiě)上位機(jī)應(yīng)用程序,上位機(jī)應(yīng)用程序使用EasyD12.dll API函數(shù)。智能光敏電阻檢測(cè)應(yīng)用程序中的檢測(cè)界面如圖2所示。檢測(cè)界面包括測(cè)100lx光照下光敏電阻的阻值、測(cè)10lx光照下光敏電阻的阻值、測(cè)0lx光照下光敏電阻的阻值、計(jì)算光敏電阻的γ值以及測(cè)試分檔等命令。每檢測(cè)一組8個(gè)電阻后,可以點(diǎn)擊“保存本次結(jié)果”,將本次檢測(cè)結(jié)果保存入數(shù)據(jù)庫(kù);點(diǎn)擊“結(jié)果送分檢電路”,可通過(guò)分檢電路顯示出對(duì)應(yīng)光敏電阻應(yīng)屬分檔;待檢測(cè)現(xiàn)場(chǎng)準(zhǔn)備好下一組待檢光敏電阻后,點(diǎn)擊“檢測(cè)下一組”,即可繼續(xù)檢測(cè);在檢測(cè)界面中,可隨時(shí)通過(guò)點(diǎn)擊“查看檢測(cè)記錄”進(jìn)入數(shù)據(jù)庫(kù)查看已經(jīng)檢測(cè)的光敏電阻的檢測(cè)信息。程序中將光敏電阻分為26檔,其中含 “廢品”檔。實(shí)際應(yīng)用中可根據(jù)情況進(jìn)行調(diào)整。
程序中由PC機(jī)通過(guò)D12的端點(diǎn)1向下位機(jī)發(fā)送命令,通過(guò)計(jì)算校驗(yàn)和保證命令傳輸?shù)恼_性,然后通過(guò)讀端口2得到返回的檢測(cè)結(jié)果數(shù)據(jù),其中讀數(shù)據(jù)的長(zhǎng)度可通過(guò)對(duì)接收數(shù)據(jù)長(zhǎng)度變量nLen的賦值來(lái)改變, 本程序因每次僅檢測(cè)8個(gè)光敏電阻,每個(gè)電阻采樣值共12位,占2個(gè)字節(jié),故令nLen= 16即可滿足要求,程序的編寫(xiě)具有通用性,可實(shí)現(xiàn)對(duì)任意長(zhǎng)度的采樣數(shù)據(jù)進(jìn)行讀取,因D12的端點(diǎn)2緩存僅為64字節(jié),故需按每幀接收64個(gè)數(shù)據(jù)來(lái)多次讀?。╪FrameLen = 64),最后讀取一個(gè)小于64字節(jié)的剩余幀。
智能光敏電阻檢測(cè)數(shù)據(jù)庫(kù)界面如圖3所示,設(shè)計(jì)的字段有:100lx下電阻值、10lx下電阻值、0lx下電阻值、g值、應(yīng)屬分檔、測(cè)試時(shí)間。應(yīng)用程序中通過(guò)上述幾個(gè)控件實(shí)現(xiàn)與SQL Server數(shù)據(jù)庫(kù)的連接,在“檢測(cè)界面”中每按一次“保存本次結(jié)果”命令按鈕,即可將檢測(cè)結(jié)果追加到數(shù)據(jù)庫(kù)中,并在智能光敏電阻檢測(cè)數(shù)據(jù)庫(kù)界面中動(dòng)態(tài)顯示出來(lái)。在數(shù)據(jù)庫(kù)界面中,可通過(guò)相應(yīng)命令按鈕查看某段時(shí)間生產(chǎn)的一些指標(biāo),如合格率、廢品率及某個(gè)檔位產(chǎn)品的數(shù)量等。
[align=center]

圖2 檢測(cè)界面[/align]
4結(jié)論
基于USB接口的智能光敏電阻檢測(cè)裝置硬件包括負(fù)責(zé)采集數(shù)據(jù)的數(shù)據(jù)采集模塊、負(fù)責(zé)傳輸采樣數(shù)據(jù)和傳輸上位機(jī)命令及最后分檔信息的USB接口通信模塊和負(fù)責(zé)處理采樣數(shù)據(jù)、存儲(chǔ)檢測(cè)結(jié)果的PC上位機(jī)等。軟件包括數(shù)據(jù)采集模塊中的上位機(jī)命令分析程序、采樣程序及與USB接口模塊的數(shù)據(jù)傳輸程序,USB接口模塊中的USB固件程序以及與數(shù)據(jù)采集模塊通信的數(shù)據(jù)傳輸程序,還有計(jì)算機(jī)端的應(yīng)用軟件設(shè)計(jì)等。整個(gè)裝置采用先進(jìn)的USB總線技術(shù),實(shí)現(xiàn)了較高的數(shù)據(jù)傳輸率,保證了較高的可靠性。
圖3智能光敏電阻檢測(cè)數(shù)據(jù)庫(kù)界面
參考文獻(xiàn):
[1]Philips Semiconductors Company. PDIUSBD12 Data Sheet Philips Semiconductors[DB/OL].http://www.semiconductors.philips.com/pip/PDIUSBD12D.html,2001-08
[2]萬(wàn)利峰,徐曉潔,胡慧鋪,張曄暉.基于PDIUSBD12的USB數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)[J]微計(jì)算機(jī)信息2006,22第5-1期:110- 112
[3]馬忠梅,籍順心,張凱.單片機(jī)C語(yǔ)言應(yīng)用程序設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2003