摘 要: 為了提高直流電測量精度并簡化直流電相關數據采集和處理的流程,設計了一種基于4位半BCD輸出的A/D轉換直流電測量虛擬儀器。該儀器測量采用了具有雙積A/D轉化的ICL7135芯片完成直流電數據采集,采用ARM9嵌入式芯片和Linux+Qt/E系統進行數據處理和顯示。軟件部分采用模塊化設計,可以對數據進行多種計算機處理。該系統抗工頻干擾性能好,測量精度高,接口豐富,系統應用方便,軟件功能強大。相關的實驗取得了預期良好的效果。
關鍵詞: A/D轉換; 嵌入式系統; ICL7135; 虛擬儀器
中圖分類號: TN919?34; TP368 文獻標識碼: A 文章編號: 1004?373X(2013)08?0133?03
0 引 言
虛擬儀器是在計算機技術的基礎上發展起來的,結合數據采集技術,實現各種電量的測量[1]。在直流電測量時,采用速度高的AD,工頻電壓等干擾量使得測量結果不穩定。本文采用了轉換速度低雙斜積分式4位半單片A/D轉換器ICL7135實現了一種直流電測量儀器。ICL7135輸入阻抗達109 Ω以上,對被測電路幾乎沒有影響;有自動校零;精確的差分輸入電路;自動判別信號極性;可輸出超、欠壓輸出信號;采用位掃描與BCD碼輸出[2]。計算機系統采用嵌入式ARM開發板,有串口、網口、USB接口。可實現通道選擇、數據處理、存儲、共享、傳輸。
1 系統構成
系統由ICL7135外圍電路及與ARM開發板接口電路組成,ICL7135外圍電路如圖1所示。
ICL7135采用了雙電壓供電。SingnalInput為被測電壓輸入,2腳為基準電壓,22引腳為時鐘輸入[3],頻率100~200 kHz之間,不同的時鐘輸入決定了采樣速率,時鐘頻率為120 kHz是可以有效地抑制工頻干擾。23引腳輸入電壓極性,D1~D5分別為輸出電壓低位到高位,B1,B2,B4,B8對應的BCD碼。ICL7135時鐘輸入信號由ARM2440的12 MHz晶振通過74HC4040芯片64分頻得到187.5 kHz;每秒約4次A/D在轉換。與ARM接口電路參見圖2。
ICL7135的D1~D5分別接ARM2440的GPG0,GPG3,GPG5,GPG6,GPG7引腳;B1,B2,B4,B8接GPG8~GPG11腳;CLK和74HC4040的Q5端相連。ICL713轉換完畢后D5~D4時序如圖3所示。ICL7135AD轉換完畢后D5產生脈沖,B1~B8輸出最高位數值的BCD碼,接著D4~D1分別輸出下一位數值的BCD碼[4]。
2 驅動程序
嵌入式系統采用ARM2440開發板,操作系統為Linux,虛擬儀器驅動程序流程圖如圖4所示。
其中全局變量GPG(0,3,5,6,7)設置為外部中斷模式,GPG(8~11)設置成I/O模式;vaule[ ]存取A/D轉換后各位的數值。
3 應用程序設計
嵌入式系統對實時性的要求高,對的GUI提出了更高的要求,嵌入式GUI必須占用空間小、可裁減定制、運行速度快,而且要滿足高可靠性和高性能。當前嵌入式輕型GUI的工具庫有很多,如Microwindows,MiniGUI,Xfree86,Ot/E等[5]。Qt/E作為嵌入式GUI的實現工具,支持幀緩沖驅動,它可以在沒有X?Server或XLib的支持的條件下直接寫幀緩沖,節省了內存使用,提高了程序的運行效率[6]。
3.1 交叉編譯環境(基于ubuntu?10)
第1步 安裝交叉編譯工具鏈[7]:
解壓arm?linux?gcc?3.4.1.tar.bz2
解壓后的默認目錄/usr/local/arm/3.4.1,修改/etc/profile設置環境變量
PATH=/usr/local/arm/3.4.1/bin:$PATH
第2步 編譯tslib?1.4:觸摸屏庫
解壓到/home下
#./autogen.sh
#./configure ??prefix=/home/linux/mytslib ??host=arm?linux ac_cv_func_malloc_0_non1=yes
#make
#make install
第3步 交叉編譯QT:解壓 qt?embedded?linux?opensource?src?4.4.2.tar.gz
進入解壓目錄運行:
#./configure ?embedded arm ?xplatformqws/linux?arm?g++ ?qt?libpng ?qt?gfx?linuxfb ?qt?gfx?qvfb ?qt?gfx?vnc ?qt?gfx?transformed ?qt?gfx?multiscreen ?qt?kbd?usb –libdir /lib ?confirm?license ?qt?mouse?tslib ?I /home/linux/mytslib/include ?L /home/linux/mytslib/lib
通過configure配置可以增加或者裁減掉opengllibpnglibjpeg等庫支持。
#make
#make install
設置Qt環境變量:
QTEDIR=Qt目錄
PATH= Qt目錄/bin/:$PATH
LD_LIBRARY_PATH= Qt目錄/lib/:$LD_LIBRARY_PATH
配置完成后用QCreater編寫程序,交叉編譯成arm開發板可執行文件。
3.2 應用軟件編寫
Qt采用C++語言編寫。為了體現程序可讀性,為顯示、存儲、傳輸部分分別建立了類[8]。
程序框圖如圖5所示。
其中:
(1)數據采集部分參考代碼:
intfd=open(設備)
read(fd,buffer)
(2)曲線以圖片形式存儲到U盤參考代碼:
fn=\"/udisk/\"+QString::number(num)+\".png\";
pixmap=QPixmap::grabWidget(figure);
pixmap.save(fn,\"png\"))
遠程傳輸采用串口參考代碼:
fd=open(\"/dev/ttySAC1\",O_RDWR|O_NOCTTY|O_NDELAY);
write(fd,data)
圖6為虛擬儀表在arm2440開發板運行界面。
4 結 語
本為設計了一種基于嵌入式ARM系統的虛擬儀器,該儀器抗干擾性強,測量精度高,且接口豐富,可實現數據處理、存儲、共享,傳輸。本儀器設置了串口通信傳輸距離近,如需遠程傳輸數據可采用Socket編程[9],基于TCP/IP協議實現可靠數據傳輸。
參考文獻
[1] 徐波,童悅.基于虛擬儀器的高準確度電子式電流互感器模擬輸出校驗系統[J].電力自動化設備,2011,31(2):146?148.
[2] 王存堂,陳剛,徐國芳.基于ICL7135的電子水平儀[J].燈與照明,2006,30(3):49?51.
[3] 廖鉅鋒.7135在智能電壓/電流表中的應用[J].中國儀器儀表,2004(5):44?45.
[4] 井俊凱,章廣富,劉明蘭.PIC單片機與7135在溫度變送器中的應用[J].2006,30(3):49?51
[5] 陳重文,楊邦榮,李曉衛,等.基于Qtopia Core的嵌入式Linux GUI平臺移植與開發[J].四川理工學院學報,2008,21(1):50?53.
[6] 張娟,張雪蘭.基于嵌入式Linux的GUI應用程序的實現[J].計算機應用,2003,23(24):11?13.
[7] 譚大鵬,李培玉,潘曉弘.基于Qt/E的嵌入式工業監測輕型圖形用戶界面構件庫開發[J].計算機集成制造系統,2009,15(2):399?405.
[8] HEIMER M K.HANSEN S.Embedded developmentwith Qt/Embedded [J]. Dr. Dobb’s Journal, 2002, 27(3): 48?53.
[9] 梁小容,萬相奎.基于Linux的嵌入式心電監護儀[J].重慶大學學報,2004,27(10):14?17.
[10] 金鋒,武志輝.輕量級嵌入式Linux圖形驅動程序與圖形用戶接口[J].北京理工大學學報,2008(3):233?236.
[11] 李聰玲.液氧/煤油發動機試驗控制系統軟件架構與設計[J]. 火箭推進,2009,35(2):46?53.
[12] 劉麗寧,李志勛.雙曲梁傳感器推力測量技術應用[J].火箭推進,2009,35(6):57?61.