司兆龍+張亞君



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