基于單片機(jī)的短樣測(cè)試數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)
1.引言
中科院合肥分院等離子所超導(dǎo)電工中心基于 ITER(國際熱核聚變反應(yīng)堆)項(xiàng)目,需要對(duì)超導(dǎo)短樣股線進(jìn)行失超極限測(cè)試(強(qiáng)磁場(chǎng), 4.2K液氦溫度下),為此筆者設(shè)計(jì)了一套短樣測(cè)試數(shù)據(jù)采集系統(tǒng),對(duì)短樣測(cè)試中超導(dǎo)股線的電流、電壓、溫度進(jìn)行采集并實(shí)時(shí)分析和保存。
在短樣測(cè)試實(shí)驗(yàn)中,電流信號(hào)變化范圍 0至 1000安培,設(shè)計(jì)使用 100:1直流分流器轉(zhuǎn)換為 0至 10伏電壓信號(hào)接入采集系統(tǒng)。溫度信號(hào)通過電阻溫度計(jì)獲得,短樣股線在極低溫(4.2K)情況下進(jìn)入超導(dǎo)狀態(tài),普通電阻溫度計(jì)無法測(cè)量這個(gè)區(qū)間的溫度,所以選用了美國 LAKESHORE公司的 CERNOX電阻溫度計(jì)。 CERNOX電阻溫度計(jì)由 metal-oxy-nitride材料制成,具有負(fù)的電阻溫度系數(shù),在液氦溫區(qū)靈敏度很高( 103Ω/K),受磁場(chǎng)影響小 (在 4.2K溫度 6T磁場(chǎng)下,誤差 0.2%),穩(wěn)定性好。采集系統(tǒng)采用四線法測(cè)量溫度計(jì)電阻, CERNOX電阻溫度計(jì)工作電流 10微安,兩端輸出電壓為 10毫伏級(jí),必須使用儀表放大器放大 100倍才能符合采集系統(tǒng)精度要求,放大器選用 INA110KP芯片。在短樣測(cè)試中至關(guān)重要的信號(hào)為短樣股線電壓信號(hào),要求精確到 10納伏,市場(chǎng)上現(xiàn)有采集卡無法勝任,此外為了消除串?dāng)_,電壓信號(hào)需要獨(dú)立采集,所以系統(tǒng)選用了 Keithley-2182納伏表。下面是采集系統(tǒng)硬件結(jié)構(gòu)圖。
2.下位機(jī)系統(tǒng)設(shè)計(jì)
下位機(jī)1采用8位微處理器 AT89S52,AT89S52 是一種低功耗、高性能 CMOS 8位微控制器,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。AT89S52具有以下標(biāo)準(zhǔn)配置:8K字節(jié)Flash,256字節(jié) RAM,32位I/O口線, 2個(gè)數(shù)據(jù)指針,三個(gè) 16位定時(shí)器 /計(jì)數(shù)器,一個(gè) 6向量2級(jí)中斷結(jié)構(gòu)和全雙工串行口。A/D轉(zhuǎn)換芯片采用美信公司的 MAX197。MAX197是美信公司推出的 8通道、12位高速A/D轉(zhuǎn)換芯片。芯片采用單一電源+ 5V供電,單次轉(zhuǎn)換時(shí)間6?s,采樣速率可達(dá) 100ksps。量程±10V , ±5V ,0V~10V , 0V~5V,內(nèi)部自帶 4.096V參考電壓源。它有標(biāo)準(zhǔn)的微機(jī)接口,數(shù)據(jù)總線的時(shí)序與絕大多數(shù)通用的微處理器兼容,全部邏輯輸入和輸出與TTL / CMOS電平兼容。
采集系統(tǒng)中,MAX197采用外部時(shí)鐘源, CLK引腳接單片機(jī) ALE引腳,單片機(jī)時(shí)鐘晶振11.0592MHZ,ALE引腳輸出時(shí)鐘為晶振的六分之一約為 2MHZ,符合 MAX197要求。單片機(jī) P0.0至P0.7引腳與MAX197的D0至D7連接,MAX197的片選信號(hào) CS連接單片機(jī) P2.0引腳,HBEN引腳接單片機(jī)P1.1引腳,INT引腳接單片機(jī) P1.2引腳, MAX197芯片地址為 0X0FEFFH。選用內(nèi)部參考電壓,REF引腳通過 4.7UF電容旁路接地, REFADJ引腳通過 0.01UF電容旁路接地。模擬信號(hào)輸入量程選擇為0到10V,使用內(nèi)部采集方式, MAX197控制字為 0X10。測(cè)試系統(tǒng)使用2個(gè)通道CH0,CH1采集電流信號(hào),溫度信號(hào)。下面是下位機(jī) 1接口電路圖
單片機(jī)采集子程序:
void scan_ch(void) { P2^0=0; // CS片選信號(hào)有效 P1^2=1; uchar i,ch_low,ch_high,control; for(i=0;i2;i++)
{control=0X10+i; //給出控制字和通道選擇 XBYTE[0X0FEFF]=control; // 寫控制字產(chǎn)生一個(gè) WR脈沖,開始采集 while(P1^2==1) {;} //等待采集結(jié)束信號(hào), P1.2為0時(shí)結(jié)束 P1^1=0; //低電平獲取低8位數(shù)據(jù) ch_low=XBYTE[0X0FEFF]; P1^1=1; ch_high=XBYTE[0X0FEFF]0X0F; //獲取高4位數(shù)據(jù) chan_data[i]= ch_high *256+ ch_low; //將數(shù)據(jù)存入數(shù)組 }
start_ch=0; //一輪采集結(jié)束 }
設(shè)置單片機(jī)允許串口中斷,波特率 19200,數(shù)據(jù)位 8位,無奇偶校驗(yàn)。當(dāng)下位機(jī) 1通過串口接收到采集允許信號(hào)后,系統(tǒng)進(jìn)行一輪采集,并把數(shù)據(jù)通過串口發(fā)送給上位機(jī)。采集系統(tǒng)使用MAX232芯片進(jìn)行串口電平轉(zhuǎn)換。
單片機(jī)串口初始化:
void init_serial(void)
{//定時(shí)器1的工作方式 2 TMOD=0X20; TL1=0Xfd; //裝載計(jì)數(shù)初值 TH1=0Xfd; SCON=0X50; //采用串口工作方式 1,無奇偶校驗(yàn) PCON=0X80; //串口波特率加倍波特率 19200 IE=0X90; //開總中斷,開串口中斷 TR1=1; //啟動(dòng)定時(shí)器1
}
單片機(jī)串口發(fā)送數(shù)據(jù):
void data_send(void) { uchar i; EA=0; //關(guān)中斷 for(i=0;i { //send_txt字符串由每個(gè) chan_data[i]的兩個(gè)字節(jié)轉(zhuǎn)換而來 SBUF=send_txt[i]; //按字符順序發(fā)送 while(TI==0); TI=0; } EA=1; //開中斷 } 下位機(jī) 2采用 Keithley-2182納伏表,支持單路模擬輸入信號(hào),分辨率為 1納伏,采用IEE-488接口與計(jì)算機(jī)相連,支持 GPIB協(xié)議。GPIB是一種工程控制用協(xié)議,昀初由 HP公司提出,目前成為一種國際標(biāo)準(zhǔn),遵守的協(xié)議為 IEEE488??梢允褂萌魏尉幊陶Z言如 VB、VC和 LabVIEW實(shí)現(xiàn)電腦對(duì)儀器的控制。系統(tǒng)中通過 GPIB橋接卡與上位機(jī)連接。 Keithley-2182納伏表在保證精度下采集速度昀快可達(dá)每秒 18個(gè)。下面是采集系統(tǒng)總體流程圖。 3.上位機(jī)程序設(shè)計(jì) 上位機(jī)采用LabVIEW開發(fā)環(huán)境,LabVIEW是新一代G語言編程軟件,適宜于儀器控制和數(shù)據(jù)采集,程序使用狀態(tài)機(jī)結(jié)構(gòu),分為五個(gè)狀態(tài):設(shè)置,采集,保存,分析,顯示。采用多線程技術(shù),三個(gè)工作線程:數(shù)據(jù)采集顯示線程,實(shí)時(shí)分析線程,數(shù)據(jù)保存線程。在三個(gè)線程之間采用Queen隊(duì)列傳遞數(shù)據(jù)。Queue隊(duì)列,先進(jìn)先出結(jié)構(gòu),協(xié)調(diào)三個(gè)線程運(yùn)行,在采集中起到約束和補(bǔ)償?shù)淖饔?,避免了?shù)據(jù)丟失和死鎖現(xiàn)象。下面是上位機(jī)程序結(jié)構(gòu)圖。 Keithley公司提供了納伏表Keithley-2182 LabVIEW庫函數(shù),Keithley 2182 Display.vi用于設(shè)置啟用或關(guān)閉儀器面板顯示,關(guān)閉儀器面板顯示可以提高采集速度。Keithley 2182 Measurement Mode.vi用于設(shè)定采集類別,采集系統(tǒng)設(shè)置為電壓采集(DCV)。Keithley 2182 DCV.vi用于設(shè)定電壓范圍、精度、濾波和采集速度,采集系統(tǒng)設(shè)置為精度 7位半、中速、無濾波、通道 1。GPIB Write.vi用于向 Keithley-2182納伏表寫入 GPIB命令,命令“:data:fresh?”:請(qǐng)求獲取昀新采集數(shù)據(jù)。GPIB Read.vi用于接收昀新數(shù)據(jù)??梢匝h(huán)發(fā)出 GPIB讀寫命令,進(jìn)行數(shù)據(jù)采集。 LabVIEW串口通訊調(diào)用 VISA模塊中的庫函數(shù)。VISA Configure Serial Port:初始化指定串口通訊參數(shù),設(shè)定波特率為 19200,8數(shù)據(jù)位,無奇偶校驗(yàn),COM1; VISA Set I/O Buffer Size:設(shè)置指定的串口的輸入輸出緩沖區(qū)大小,設(shè)定為 2048字節(jié); 在數(shù)據(jù)保存線程中,為了方便以后數(shù)據(jù)察看和分析,采用 excel文件存儲(chǔ)。在 LabVIEW中,利用 ActiveX服務(wù)中的屬性節(jié)點(diǎn) Property Node,可以讀取或設(shè)置 ActiveX控件的屬性,調(diào)用節(jié)點(diǎn) Invoke Node可以用來調(diào)用 ActiveX控件的方法,通過使用屬性節(jié)點(diǎn)和調(diào)用節(jié)點(diǎn)來打開,讀取和寫入 excel文件。系統(tǒng)設(shè)定每隔 1秒線程從數(shù)據(jù)隊(duì)列 1請(qǐng)求一組數(shù)據(jù),這樣使得采集顯示線程可以獲得更多時(shí)間片用于采集,提高速度。 在實(shí)時(shí)分析線程中,線程每隔 1秒從數(shù)據(jù)隊(duì)列 2請(qǐng)求一組數(shù)據(jù),插入繪圖數(shù)組中,利用LabVIEW的繪圖函數(shù)繪制趨勢(shì)圖。設(shè)置 x軸為通電電流,y軸為短樣股線電壓。下面是采集系統(tǒng)運(yùn)行界面圖。 4. 測(cè)試與總結(jié) 經(jīng)過測(cè)試,采集系統(tǒng)速度可以穩(wěn)定達(dá)到每秒每通道采樣 17個(gè),采集精度和速度符合要求,可以完整捕捉到失超臨界點(diǎn)和失超曲線;采集系統(tǒng)硬件電路簡單,成本低廉;軟件界面直觀,智能化程度高,程序可讀性較 VC代碼強(qiáng),適合非計(jì)算機(jī)專業(yè)工程人員使用。采集系統(tǒng)擴(kuò)展性很好,如果有需要可以采集更多路信號(hào)。 創(chuàng)新點(diǎn):采用 AT89S52單片機(jī)和 MAX197 A/D轉(zhuǎn)換芯片,替代 PCI采集卡,降低了成本,簡化了系統(tǒng)設(shè)計(jì),提高了可維護(hù)性,同時(shí)也達(dá)到了短樣測(cè)試的數(shù)據(jù)要求;采用便攜式 Keithley-2182納伏表使實(shí)驗(yàn)室獲得了高精度采集的能力;軟件設(shè)計(jì)方面采用 LabVIEW和 Queen技術(shù)保證了易用性和穩(wěn)定性。
評(píng)論