摘 要:本文通過分析光敏電阻生產(chǎn)環(huán)節(jié)中測試分檔工序的現(xiàn)狀,針對該環(huán)節(jié)目前主要靠手工分檔而帶來的分檔精度不高、一致性不好及生產(chǎn)效率低下的實際問題,研制了一種基于USB總線接口技術的新型智能光敏電阻檢測裝置。硬件設計方面,用單片機AT89C52控制12位高速A/D轉(zhuǎn)換器AD574完成八路被檢光敏電阻亮電阻、暗電阻等參數(shù)的數(shù)據(jù)采集。通過由PDIUSBD12芯片構(gòu)成的USB數(shù)據(jù)傳輸模塊將采樣數(shù)據(jù)送到上位計算機。軟件設計方面,USB接口單片機程序中采用了Philips的USB51S函數(shù)庫來解釋USB數(shù)據(jù)傳輸協(xié)議。使用Windows DDK開發(fā)了驅(qū)動程序。上位機應用程序利用PHILIPS公司提供的EasyD12庫和Visual Basic 2005來設計。
關鍵詞:光敏電阻、測試分檔、光照強度、USB、動態(tài)連接庫
1引言
測試分檔是光敏電阻生產(chǎn)環(huán)節(jié)中后期的一個重要工序。因為不同應用領域?qū)饷綦娮栌嘘P參數(shù)如亮電阻、暗電阻和γ值等的要求也不一樣,生產(chǎn)廠家必須能夠十分準確地給出自己產(chǎn)品的上述參數(shù)值,以滿足用戶使用的具體要求。生產(chǎn)廠家根據(jù)用戶對亮電阻、暗電阻和γ值等參數(shù)的要求范圍,來為生產(chǎn)的光敏電阻分類,這就是光敏電阻的測試分檔。
目前國內(nèi)廠家的測試分檔基本以手工操作為主,這樣的弊端是顯而易見的:光源的光照強度不能準確控制,手工分檔速度很慢,人工讀數(shù)引入了較大誤差,測試數(shù)據(jù)只能人工記錄保存,這就大大地影響了分檔的精度和產(chǎn)品的一致性。本文借助計算機強大的數(shù)據(jù)處理與存儲功能,采用數(shù)據(jù)傳輸率很高且使用方便的USB總線研究和設計了一種用于光敏電阻測試分檔的智能化檢測裝置。從根本上解決了手工分檔的一系列問題:如光源光照強度的控制,人工讀數(shù)帶來的誤差,測試結(jié)果的保存等。
2智能光敏電阻檢測裝置的硬件設計
智能光敏電阻檢測裝置的研制涉及光源設計、超大范圍的電阻的自動測量、數(shù)據(jù)的采集與處理、單片機和計算機的USB串行數(shù)據(jù)傳輸、分檔信號的顯示及控制等幾大部分。
設計總體框圖如圖1所示。其中AD574采集模塊在來自PC機命令的控制下完成8路光敏電阻亮電阻、暗電阻等參數(shù)的采集,采集數(shù)據(jù)由USB數(shù)據(jù)傳輸接口模塊傳送至PC計算機,由計算機完成參數(shù)的后續(xù)處理,算出對應光敏電阻的γ值,隨后分檢顯示程序根據(jù)亮、暗電阻和γ值確定對應光敏電阻應屬哪一檔。最后由分檢顯示電路顯示分檔信息。
[align=center]
圖1智能光敏電阻檢測裝置設計總體框圖[/align]
2.1數(shù)據(jù)采集模塊
數(shù)據(jù)采集模塊由數(shù)據(jù)采集模塊單片機AT89C52、鎖存器74LS373、A/D芯片AD574、8路模擬開關CD4051、光敏電阻測試電路、與USB數(shù)據(jù)傳輸接口模塊通信的IDC26接口(CN6)等部分組成。
AD574是美國AD 公司生產(chǎn)的12位高速逐次逼近型模數(shù)變換器。片內(nèi)自備時鐘基準源,無需外接元器件就可獨立完成A/D轉(zhuǎn)換功能,它的轉(zhuǎn)換時間為15~35μs,轉(zhuǎn)換精度為0.05%,可以并行輸出12位,也可以分成8位和4位兩次輸出。數(shù)字量可直接采用雙極性模擬信號輸入,供電電源為±15V,邏輯電源為+5V。廣泛應用在數(shù)據(jù)采集系統(tǒng)中。
系統(tǒng)的硬件設計在連接上主要考慮了三總線(控制總線、地址總線、數(shù)據(jù)總線)的連接。由于AD574輸出具有三態(tài)緩沖器,可直接與微機的總線接口,而無須附加邏輯接口電路。AD574片內(nèi)有時鐘,故無需外加時鐘信號。該電路采用單極性輸入方式,可對0~10V或0~20V 模擬信號進行轉(zhuǎn)換,本裝置采用0~10V輸入。轉(zhuǎn)換結(jié)果的高8位從DB11~DB4輸出,低4位從DB3~DB0 輸出,并且直接和單片機的數(shù)據(jù)總線相連。
在光敏電阻測試電路中,模擬開關4051對應8路輸入,一次可測試8個光敏電阻,根據(jù)電路硬件連接,8路輸入地址分別為0xff18、0xff19、0xff1a、0xff1b、0xff1c、0xff1d、0xff1e、0xff1f。調(diào)用一次采樣函數(shù)ad574(),8路光敏電阻即被測試一遍。
測試系統(tǒng)中光照強度的調(diào)節(jié)由單片機的P1.1、P1.2和P1.3控制,P1.1、P1.2和P1.3分別控制100lx、10lx和0lx 的光源。P1.4接看門狗電路的輸入端WDI,不斷輸出脈沖信號進行喂狗。
2.2數(shù)據(jù)采集模塊單片機和計算機的USB通信
本系統(tǒng)采用基于PDIUSBD12接口芯片的USB數(shù)據(jù)傳輸接口模塊[1,2]。用于連接數(shù)據(jù)采集模塊和PC計算機的USB數(shù)據(jù)傳輸接口模塊在整個系統(tǒng)中地位極其重要,也是本系統(tǒng)設計的重點和難點,這里開發(fā)一個通用的USB數(shù)據(jù)傳輸接口模塊,該模塊主要由3個部分組成。
?。?)USB總線接口部分,包括B類USB連接線插座和PDIUSBD12接口芯片。
(2)微處理器及邏輯控制部分,包括AT89C52單片機及邏輯控制電路。
?。?)雙端口數(shù)據(jù)存儲區(qū),包括雙端口RAM芯片CY7C136和一個IDC26封裝的8位并行數(shù)據(jù)接口插座CN3。
AT89C52單片機的外部中斷INT0用于USB接口芯片PDIUSBD12的中斷請求,外部中斷INT1用于雙端口RAM芯片CY7C136的左側(cè)信箱中斷請求,完成數(shù)據(jù)采集模塊單片機采集數(shù)據(jù)的上傳。
3智能光敏電阻檢測裝置的軟件設計
3.1下位機程序的開發(fā)
數(shù)據(jù)采集模塊單片機和USB接口單片機程序均使用C語言編寫[3],增加了程序的可移植性。數(shù)據(jù)采集模塊通過USB通信模塊接收到相應命令后,通過調(diào)整光照強度,調(diào)用數(shù)據(jù)采集程序,隨后把采集結(jié)果通過USB通信模塊上傳到PC計算機進一步處理。下位機還可通過鍵盤顯示電路顯示出被檢光敏電阻的分檔信息,從而實現(xiàn)了光敏電阻的智能化檢測。數(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; //啟動轉(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ū)動程序的開發(fā)
USB設備驅(qū)動程序在結(jié)構(gòu)上與其他類型的設備驅(qū)動程序基本相同,包括初始化、創(chuàng)建設備、卸載和刪除設備、即插即用處理、分發(fā)例程處理、電源管理、WMI等部分。驅(qū)動程序主要例程如下:
?。?)驅(qū)動程序入口例程DriverEntry,該例程完成兩件事:把注冊表項復制到一個全局變量中;告訴系統(tǒng)哪些IRP由哪個例程處理。
?。?)驅(qū)動程序的初始化例程DataClt_AddDevice
?。?)即插即用例程DataClt_DispatchPnp
?。?)電源管理例程DataClt_DispatchPower
?。?)數(shù)據(jù)讀寫例程DataClt_DispatchReadWrite
?。?)提交URB 例程DataClt_CallUSBD
3.3 上位機應用程序的開發(fā)
在Microsoft Visual Basic 2005環(huán)境下編寫上位機應用程序,上位機應用程序使用EasyD12.dll API函數(shù)。智能光敏電阻檢測應用程序中的檢測界面如圖2所示。檢測界面包括測100lx光照下光敏電阻的阻值、測10lx光照下光敏電阻的阻值、測0lx光照下光敏電阻的阻值、計算光敏電阻的γ值以及測試分檔等命令。每檢測一組8個電阻后,可以點擊“保存本次結(jié)果”,將本次檢測結(jié)果保存入數(shù)據(jù)庫;點擊“結(jié)果送分檢電路”,可通過分檢電路顯示出對應光敏電阻應屬分檔;待檢測現(xiàn)場準備好下一組待檢光敏電阻后,點擊“檢測下一組”,即可繼續(xù)檢測;在檢測界面中,可隨時通過點擊“查看檢測記錄”進入數(shù)據(jù)庫查看已經(jīng)檢測的光敏電阻的檢測信息。程序中將光敏電阻分為26檔,其中含 “廢品”檔。實際應用中可根據(jù)情況進行調(diào)整。
程序中由PC機通過D12的端點1向下位機發(fā)送命令,通過計算校驗和保證命令傳輸?shù)恼_性,然后通過讀端口2得到返回的檢測結(jié)果數(shù)據(jù),其中讀數(shù)據(jù)的長度可通過對接收數(shù)據(jù)長度變量nLen的賦值來改變, 本程序因每次僅檢測8個光敏電阻,每個電阻采樣值共12位,占2個字節(jié),故令nLen= 16即可滿足要求,程序的編寫具有通用性,可實現(xiàn)對任意長度的采樣數(shù)據(jù)進行讀取,因D12的端點2緩存僅為64字節(jié),故需按每幀接收64個數(shù)據(jù)來多次讀?。╪FrameLen = 64),最后讀取一個小于64字節(jié)的剩余幀。
智能光敏電阻檢測數(shù)據(jù)庫界面如圖3所示,設計的字段有:100lx下電阻值、10lx下電阻值、0lx下電阻值、g值、應屬分檔、測試時間。應用程序中通過上述幾個控件實現(xiàn)與SQL Server數(shù)據(jù)庫的連接,在“檢測界面”中每按一次“保存本次結(jié)果”命令按鈕,即可將檢測結(jié)果追加到數(shù)據(jù)庫中,并在智能光敏電阻檢測數(shù)據(jù)庫界面中動態(tài)顯示出來。在數(shù)據(jù)庫界面中,可通過相應命令按鈕查看某段時間生產(chǎn)的一些指標,如合格率、廢品率及某個檔位產(chǎn)品的數(shù)量等。
[align=center]
圖2 檢測界面[/align]
4結(jié)論
基于USB接口的智能光敏電阻檢測裝置硬件包括負責采集數(shù)據(jù)的數(shù)據(jù)采集模塊、負責傳輸采樣數(shù)據(jù)和傳輸上位機命令及最后分檔信息的USB接口通信模塊和負責處理采樣數(shù)據(jù)、存儲檢測結(jié)果的PC上位機等。軟件包括數(shù)據(jù)采集模塊中的上位機命令分析程序、采樣程序及與USB接口模塊的數(shù)據(jù)傳輸程序,USB接口模塊中的USB固件程序以及與數(shù)據(jù)采集模塊通信的數(shù)據(jù)傳輸程序,還有計算機端的應用軟件設計等。整個裝置采用先進的USB總線技術,實現(xiàn)了較高的數(shù)據(jù)傳輸率,保證了較高的可靠性。
圖3智能光敏電阻檢測數(shù)據(jù)庫界面
參考文獻:
[1]Philips Semiconductors Company. PDIUSBD12 Data Sheet Philips Semiconductors[DB/OL].http://www.semiconductors.philips.com/pip/PDIUSBD12D.html,2001-08
[2]萬利峰,徐曉潔,胡慧鋪,張曄暉.基于PDIUSBD12的USB數(shù)據(jù)采集系統(tǒng)的設計[J]微計算機信息2006,22第5-1期:110- 112
[3]馬忠梅,籍順心,張凱.單片機C語言應用程序設計[M].北京:北京航空航天大學出版社,2003