司兆龍+張亞君
摘 要:數(shù)據(jù)采集系統(tǒng)是現(xiàn)代檢測(cè)控制技術(shù)的關(guān)鍵,是模擬域與數(shù)字域之間的紐帶,廣泛應(yīng)用于諸如軍事、工業(yè)控制、深海測(cè)量等各領(lǐng)域,目前常用的是專用數(shù)據(jù)采集卡。相比較專用采集卡,基于FPGA設(shè)計(jì)的數(shù)據(jù)采集系統(tǒng)具有多功能、高效率、易升級(jí)、低功耗等優(yōu)點(diǎn)。實(shí)驗(yàn)結(jié)果顯示,本系統(tǒng)可以采集的電壓值變化范圍為0~5 V,精確度能達(dá)到0.02 V。系統(tǒng)顯示可以實(shí)現(xiàn)單通道顯示與多通道巡檢顯示切換。
關(guān)鍵詞:可編程邏輯;數(shù)據(jù)采集;硬件語言;模數(shù)轉(zhuǎn)換
中圖分類號(hào):TP391.4 ? ? ? ? ? ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A ? ? ? ? ? ?文章編號(hào):2095-1302(2015)01-00-03
0 ?引 ?言
隨著電子工業(yè)技術(shù)迅速發(fā)展,對(duì)數(shù)據(jù)采集系統(tǒng)的許多技術(shù)指標(biāo),如采樣率、通道數(shù)、數(shù)據(jù)處理速度等提出了很高的要求[1,2]??焖俑呔韧瓿啥嗦沸盘?hào)的采集以滿足工業(yè)現(xiàn)場(chǎng)的控制和檢測(cè)要求,一直是數(shù)據(jù)采集技術(shù)重要的研究方向[3-5]。本次設(shè)計(jì)研究多路電壓數(shù)據(jù)采集的實(shí)現(xiàn)方法,設(shè)計(jì)一個(gè)多路電壓數(shù)據(jù)采集系統(tǒng),并分析提高數(shù)據(jù)采集速度和精度的因素。
1 ?系統(tǒng)實(shí)現(xiàn)
1.1 ?系統(tǒng)功能
本系統(tǒng)主控器能對(duì)10米內(nèi)的8路電壓數(shù)據(jù)進(jìn)行采集并顯示。主要包括:測(cè)試用電壓源設(shè)計(jì)。數(shù)據(jù)采集器第1,2路輸入1~5 V可調(diào)直流電壓,第2~7路分別輸入5 V,4 V,3 V,2 V,1 V,0 V直流電壓(用于參照實(shí)驗(yàn))。主控器:主控器通過串行傳輸線路對(duì)各路數(shù)據(jù)進(jìn)行采集和顯示。采集方式包括循環(huán)采集(即1路、2路、……、8路、1路……)和選擇采集(任選一路)兩種方式;循環(huán)采集間隔1 s;系統(tǒng)原理框圖如圖1所示。
圖1 ?系統(tǒng)原理框圖
1.2 ?直流穩(wěn)壓電源
根據(jù)系統(tǒng)要求,需提供+12 V、-12 V、+5 V的電壓。因此采用了濾波電容、防自激電容及固定式三端穩(wěn)壓器LM7912、LM7905、LM7812等器件設(shè)計(jì)了精度較高、穩(wěn)定度較好的直流電壓穩(wěn)壓電源。
1.3 ?A/D轉(zhuǎn)換器
本設(shè)計(jì)選用的是逐次逼近式A/D轉(zhuǎn)換器ADC0809。其最大輸入電壓5 V,對(duì)0~5 V的采集精度為5/255=0.02 V;所以整個(gè)系統(tǒng)的精度也為0.02 V。A/D決定了本設(shè)計(jì)所測(cè)電壓范圍為0~5 V,如果擴(kuò)展量程范圍,可在其輸入電路中添加乘法器使大電壓降低至可控范圍。
1.4 ?通信電路
本系統(tǒng)所用雙絞線采取了雙向傳輸、多路復(fù)用的方法。即地址同步脈沖與數(shù)據(jù)同步脈沖共用一根同步脈沖線,地址與數(shù)據(jù)共用一根數(shù)據(jù)線。接口電路采用RS 485標(biāo)準(zhǔn)接口。
1.5 ?數(shù)據(jù)采集塊設(shè)計(jì)
數(shù)據(jù)采集塊(從機(jī))FPGA控制ADC0809芯片工作,將采集到的八路模擬電壓信號(hào)串行碼送入傳輸線路。頂層Block原理圖構(gòu)建如下(圖2)。具體每個(gè)模塊用VHDL代碼在Quartus II 9.1實(shí)現(xiàn)。
圖2 ?數(shù)據(jù)采集塊頂層Block原理圖
aaa模塊用于ADC0809的控制,其輸入輸出I/O口分別對(duì)應(yīng)接ADC0809的CLK, START,EOC,IN[7..0]接din[7..0]。其中時(shí)鐘clk輸入為65 kHz。ADC0809控制模塊如圖3所示。
cb模塊用于實(shí)現(xiàn)二進(jìn)制數(shù)字信號(hào)變串行碼輸出。其中輸出端口d輸出串行數(shù)據(jù);sign為數(shù)據(jù)并串輸出標(biāo)志;din[2..0]為選擇通道的地址輸入;cin[7..0]為輸入的二進(jìn)制數(shù)字信號(hào);clk輸入2 Hz 。cb模塊如圖4所示。
圖3 ?ADC0809控制模塊
圖4 ?二進(jìn)制數(shù)字信號(hào)變串行碼輸出模塊
aaa和cb模塊的工作時(shí)鐘65 kHz和2 Hz;分別用分頻模塊clk_a和clk_b對(duì)主時(shí)鐘50 MHz分頻獲得。
1.6 ?主控器設(shè)計(jì)
主控器(主機(jī))對(duì)采集到的各路數(shù)據(jù)進(jìn)行采集和顯示。采集包括循環(huán)采集(即1路、2路、……、8路、1路……)和選擇采集(任意一路)。主控器頂層Block原理圖如圖5。具體每個(gè)模塊用VHDL代碼在Quartus II 9.1實(shí)現(xiàn)。
keyboard模塊為鍵盤掃描模塊。其功能是:按9號(hào)鍵循環(huán)顯示各路數(shù)據(jù)和通道號(hào);按1-8號(hào)任意一個(gè)鍵顯示任意一路通道號(hào)和電壓數(shù)據(jù)。key_hang[3..0]接矩陣鍵盤行線;FPGA控制循環(huán)輸出行信號(hào)“1110”、“1101”、“1011”、“0111”。當(dāng)沒有鍵按下時(shí),key_lie[3..0]列信號(hào)輸入端檢測(cè)到的是“1111”。當(dāng)有鍵按下時(shí),例如按下1鍵,此時(shí)key_hang[3..0]行信號(hào)輸出為“0111”。行列信號(hào)相并“key_hang&key_lie”為“01110111”時(shí),可以譯鍵值為1。同理可以得到其它按鍵的編碼。不同編碼,譯成不同鍵值。為了防止按鍵抖動(dòng),加一個(gè)計(jì)數(shù)環(huán)節(jié)防止了鍵的抖動(dòng)。鍵盤掃描模塊如圖6所示。
control模塊為顯示控制模塊,其程序主導(dǎo)思想是:當(dāng)鍵盤值為9的時(shí)候,循環(huán)輸出選擇通道號(hào)和各通道對(duì)應(yīng)電壓數(shù)據(jù)。當(dāng)鍵盤值是1~8任意值時(shí),單通道數(shù)據(jù)采集顯示。d_in[15..0]接鍵盤數(shù)據(jù)輸入;d_out[2..0]為選擇通道數(shù)據(jù)輸出;key[3..0]為鍵盤值數(shù)據(jù)輸出。時(shí)鐘輸入clk為1 Hz。如圖7所示。
mchuan_to_bing模塊程序的主導(dǎo)思想是將串行數(shù)據(jù)變成并行數(shù)據(jù)輸出。par_out[10..0]輸出通道地址+通道數(shù)據(jù);ser_in通道數(shù)據(jù)串行輸入; a為信號(hào)標(biāo)志;時(shí)鐘clk為2 Hz。如圖8所示。
數(shù)據(jù)轉(zhuǎn)換模塊bin_to_dec的程序主導(dǎo)思想是:將采集的各通道數(shù)據(jù)存儲(chǔ)下來,根據(jù)鍵盤所選擇的通道選擇對(duì)應(yīng)通道的數(shù)據(jù),將其轉(zhuǎn)換成與模擬電壓對(duì)應(yīng)的二進(jìn)制數(shù)據(jù)。c_in為通道+數(shù)據(jù)輸入;d_in為鍵盤選擇的通道數(shù)據(jù)輸入;key_in為鍵盤值的數(shù)據(jù)輸入;key_out,c_out4,c_out3,c_out2,c_out1為鍵值和數(shù)據(jù)顯示輸出。如圖9所示。
disp模塊為顯示控制塊:key_in[3..0]接鍵盤數(shù)據(jù);disp[4..0]為數(shù)碼管掃描輸出,接4位數(shù)碼管位選線;disp_out為數(shù)碼管數(shù)據(jù),接數(shù)碼管段選線。如圖10所示。
圖6 ?鍵盤掃描模塊
圖7 ?顯示控制模塊
圖8 ?串并數(shù)據(jù)轉(zhuǎn)換模塊
圖9 ?數(shù)據(jù)轉(zhuǎn)換模塊
圖10 ?顯示控制塊
2 ?實(shí)驗(yàn)結(jié)果
實(shí)際測(cè)試數(shù)據(jù)列表如表1~表4所示。
表1 ?一通道1.00 V電壓采集結(jié)果被測(cè)電壓/V 測(cè)得電壓/V 被測(cè)電壓/V 測(cè)得電壓/V
1.00 1.03 1.00 1.01
1.00 1.02 1.00 1.04
1.00 1.01 1.00 1.01
1.00 1.02 1.00 1.02
1.00 1.02 1.00 1.04
表1為通道一測(cè)試1.00 V電壓數(shù)據(jù),20次實(shí)測(cè)電壓平均值為1.022 V,約等于1.02 V。
表2 ?一通道3.00 V電壓采集結(jié)果
被測(cè)電壓/V 測(cè)得電壓/V 被測(cè)電壓/V 測(cè)得電壓/V
3.00 3.03 3.00 3.01
3.00 3.02 3.00 3.04
3.00 3.01 3.00 3.03
3.00 3.03 3.00 3.03
3.00 3.02 3.00 3.04
表2為通道一測(cè)試3.00 V電壓數(shù)據(jù),20次實(shí)測(cè)電壓平均值為3.026 V,約等于3.03 V。
表3 ?四通道任意電壓數(shù)據(jù)采集結(jié)果
被測(cè)電壓/V 測(cè)得電壓/V 被測(cè)電壓/V 測(cè)得電壓/V
1.01 1.01 3.53 3.54
1.50 1.51 4.01 4.03
2.12 2.13 4.23 4.24
2.54 2.55 4.54 4.55
3.01 3.03 5.00 5.00
表3為通道四測(cè)0~5 V任意電壓數(shù)據(jù)的測(cè)試結(jié)果。
表4 ?一到八通道數(shù)據(jù)采集結(jié)果表
通道號(hào) 被測(cè)電壓/V 測(cè)得電壓/V
1 0.00 0.01
2 0.53 0.54
3 1.00 1.01
4 2.32 2.34
5 3.13 3.14
6 4.02 4.03
7 4.50 4.51
8 5.00 5.00
由測(cè)試結(jié)果知本系統(tǒng)能達(dá)到設(shè)計(jì)要求,精度較高能精確到0.02 V。
3 ?結(jié) ?語
由于本系統(tǒng)A/D使用ADC0809,其最大輸入電壓5 V,故系統(tǒng)采集電壓0~5 V;A/D采集精度為5/255=0.02 V,實(shí)測(cè)系統(tǒng)精度也為0.02 V。如果想擴(kuò)展量程范圍。可在采集器輸入電路中添加降壓電路使大電壓降低至可控的范圍;系統(tǒng)實(shí)際工作時(shí)穩(wěn)定性較好,能夠通過按鍵隨意選擇單路采集和循環(huán)采集。
參考文獻(xiàn)
[1]林長(zhǎng)青,孫勝利.基于FPGA 的多路高速數(shù)據(jù)采集系統(tǒng)[J].電測(cè)與儀表學(xué)報(bào),2005,42(5):52-54.
[2]吳繼華,王誠(chéng).Altera FPGA/CPLD設(shè)計(jì)(高級(jí)篇)[M].北京:人民郵電出版社,200.
[3]肖金球,馮翼,仲嘉纛.高速多路實(shí)時(shí)數(shù)據(jù)采集處理系統(tǒng)設(shè)[J].計(jì)算機(jī)工程,2004,30(24):180-181.
[4]王彥,單長(zhǎng)虹,韓景瑜.基于FPGA的通用型自動(dòng)配料控制系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2005,13(9):941-943.