江門職業(yè)技術(shù)學院 周萬根湖北工業(yè)大學機械學院 許忠保
隨著FPGA開發(fā)時間和開發(fā)成本的下降,F(xiàn)PGA在數(shù)據(jù)采集型嵌入式系統(tǒng)中的應(yīng)用也日益廣泛[1-3]。一般,以FPGA為核心的數(shù)據(jù)采集系統(tǒng)中,它基本還是以普通形式接收AD轉(zhuǎn)換器的數(shù)據(jù),此時它與市面上自帶AD轉(zhuǎn)換功能的處理器在硬件成本方面毫無優(yōu)勢。
根據(jù)RC電路相位調(diào)制原理[4]和FPGA的邏輯特性,設(shè)計出一種以FPGA作為控制核心的無AD轉(zhuǎn)換器的溫度數(shù)據(jù)采集系統(tǒng),通過特定電路將溫度信息調(diào)制在兩個方波信號的相位上,由FPGA通過相位計數(shù)方式讀取相位值,并實時換算溫度值,再根據(jù)與目標溫度的差值來驅(qū)動半導(dǎo)體制冷器件TEC進行制冷或者制熱實現(xiàn)自動控溫。
如圖1所示,采用RC串聯(lián)電路對溫度信號進行調(diào)制,其工作原理為,以正弦激勵信號Ua作為輸入信號,在電阻Rx和C之間得到一個新的正選信號Ub,其中,C電容值不變,Rx為負溫度系數(shù)熱敏電阻(NTC),它被安裝在被測物上,它的阻值隨著被測物體的溫度的變化而變化。Ua與Ub頻率相等,但相位和幅值不同,那么可以根據(jù)Ua與Ub之間相位差,計算出NTC的阻值R1的大小,即可換算出NTC的實時溫度。其計算過程,假設(shè)令輸入信號,那么,此時我們只需要提取相位a便可得知NTC的阻值大小,而a絕對值的表達式為:
于是可以得知Rx的大小為:
圖1 RC相位調(diào)制原理圖
為了提取相位a,將兩個正弦模擬信號Ua和Ub分別接入過零比較器,得到兩個頻率相同、相位相異的方波信號a和b。由FPGA對a、b兩個信號按照一定的邏輯處理就可得到相位信息,通過FPGA的計數(shù)模塊得到。
見圖2所示,以FPGA為核心,主要包含RC相位調(diào)制電路、FPGA(包含相位計數(shù)模塊和Nios II軟核計算溫度模塊)、TEC溫控驅(qū)動電路。其整個系統(tǒng)的主要工作原理是RC相位調(diào)制電路作為輸入,將相位信號傳遞FGPA內(nèi)部Ver il og HDL相位計數(shù)模塊得到相位計數(shù)值,將計數(shù)結(jié)果交由Nios II軟核模塊進行相關(guān)處理,包括溫度換算、顯示、參數(shù)設(shè)置和溫控等功能的模塊,再根據(jù)所測溫度來控制半導(dǎo)體制冷器TEC制冷或加熱,通過串口與PC上位機進行通訊,上位機軟件可查看歷史數(shù)據(jù)和溫度參數(shù)設(shè)置,最終實現(xiàn)無AD轉(zhuǎn)換器的溫度測量與控制功能。
圖2 系統(tǒng)結(jié)構(gòu)圖
為了從圖1中的兩個方波信號提取相位信息,先對信號a和b進行異或邏輯得到信號c,見圖3所示,c信號中的每個高電平區(qū)域就是所求的相位差,再將c信號與FPGA的時鐘信號cl k進行相與運算得到s信號,它代表每一個相位差時間區(qū)域內(nèi)含有cl k信號的數(shù)量,而在每一個相位差區(qū)間的開始和結(jié)尾處都有可能存在一個不完整的cl k信號,倘若采用單次計數(shù)結(jié)果,這種不完整cl k信號將直接成為誤差帶入計數(shù)結(jié)果,為了提高相位計數(shù)精度引入一個新的方波信號ar,其中ar每一次高電平區(qū)間都含有10個相位差區(qū)間,以此進行10次計數(shù)后求平均值作為計數(shù)結(jié)果。為了進一步提高計數(shù)精度,cl k是由晶振時鐘和PLL共同得到200MHz的高速時鐘信號,令原始信號a、b的頻率為5.4KHz,可以推出a信號一個周期內(nèi)包含有370073個時鐘信號,即cl k對此相位計數(shù)的分辨率為0.00017r ads。按理說,信號a、b的異或處理可以再FPGA片外引入異或邏輯門進行處理,考慮到多引入其他芯片,方波的完整性和時序性將會受到一定的影響,即相位誤差將會加大,且硬件成本也會隨之上升。故直接在片內(nèi)進行異或邏輯處理,多占FPGA一個外部I/O口資源。
圖3 相位計數(shù)原理圖
采用Ver il og HDL語言完成上述計數(shù)功能模塊的設(shè)計,并在SOPC中添加一個PIO口,將計數(shù)模塊的計數(shù)結(jié)果通過IO口傳輸?shù)絅ios II當中[5-6],這樣Nios II就可讀取、處理相位計數(shù)結(jié)果,由于HDL語言不適合進行除法和浮點數(shù)操作,故計數(shù)模塊是直接將10次相位計數(shù)結(jié)果傳遞給Nios II,由Nios II來求相位平均值。
FPGA內(nèi)部運行程序是本系統(tǒng)的核心,主要是完成:1)溫度實時計算;2)與上位機軟件數(shù)據(jù)通信和完成參數(shù)設(shè)置;3)驅(qū)動TEC進行溫度控制。FPGA在Nios II環(huán)境下可直接用C語言編程,采用定時查詢方式讀取計數(shù)模塊上傳的計數(shù)值,按照乘以相位分辨率得到相位差的具體弧度值,按式(2)計算可得知NTC此刻的阻值,再把阻值按照溫度系數(shù)換算最終得到實時溫度值,保存在溫度緩沖區(qū)等待上位機召喚。由串口和上位機通信,接受上位機參數(shù)設(shè)置命令和上傳實時溫度信息,其中FPGA的串口直接利用SOPC Buil der添加到SOC中[7],在Nios II中定時調(diào)用自帶的底層驅(qū)動函數(shù)完成對串口的讀寫,一般情況下與上位機通信的任務(wù)都是處于休眠狀態(tài),一直等待上位機控制軟件下發(fā)指令,而后進行數(shù)據(jù)上傳。最后,驅(qū)動TEC進行溫度控制,只需將實時溫度與目標溫度進行比較,若超過目標溫度則往I/O口寫制冷命令數(shù)據(jù),TEC器件進行制冷;反之,通過I/O口控制TEC制熱。
圖4 TEC溫控驅(qū)動電路
實驗中,TEC半導(dǎo)體制冷器件同熱敏電阻一起被安裝在被測物體上,熱敏電阻獲得被測物體的溫度,而TEC器件則是控制被測物體的溫度。TEC制冷或制熱模式是由流經(jīng)其內(nèi)部的電流方向來決定的,TEC驅(qū)動電路見圖4所示,P1、P2為FPGA的I/O口,經(jīng)電平驅(qū)動器后控制四個三極管的導(dǎo)通、截止狀態(tài)。假設(shè)P1為高電平、P2為低電平,則Q2和Q3導(dǎo)通,Q1和Q4截止,則TEC內(nèi)部的電流為從右向左流過,從而促使TEC進行制熱;反之P1為低電平、P2為高電平,TEC則開始制冷。在P1、P2同為高或低電平時,TEC內(nèi)部沒有電流,不工作。
上位機控制程序,主要是完成目標溫度設(shè)置、溫度系數(shù)標定和讀取溫度數(shù)據(jù)和顯示歷史溫度曲線等功能。在Visual C++ 6.0環(huán)境下而開發(fā),按文件形式創(chuàng)建串口句柄和用DCB結(jié)構(gòu)體對串口進行設(shè)置,以此完成對串口的初始化操作[8]。定時向串口發(fā)送查詢溫度數(shù)據(jù)命令,終端設(shè)備接收到后上傳實時溫度數(shù)據(jù),上位機再顯示溫度信息和溫度曲線??刂瞥绦蚪缑嬉妶D5,在一般情況,溫度曲線幾乎為水平線,圖中曲線是用電烙鐵對被測物體加熱后,F(xiàn)PGA控制TEC制冷后溫度曲線。從圖中可以看出,以相位計數(shù)方式替代AD轉(zhuǎn)換器效果明顯,滿足一般的數(shù)據(jù)采集系統(tǒng)應(yīng)用要求。
圖5 上位機采集控制界面
本文采用RC相位調(diào)制電路和FPGA相位計數(shù)模塊,實現(xiàn)了無AD轉(zhuǎn)化器的溫度采集功能,并通過控制TEC實現(xiàn)自動控溫。通過本實驗,為FPGA在數(shù)據(jù)采集的領(lǐng)域中提供了一種新的無AD轉(zhuǎn)化器的應(yīng)用方式。并得到以下結(jié)論:
(1)本實驗中,通過2個I/O口就可完成一路數(shù)據(jù)采集,并且由Ver il og HDL硬件語言開發(fā),即通過多I/O口和FPGA硬件語言并行運行的特性可以輕松完成多路數(shù)據(jù)的采集;
(2)無論是溫度采集,還是其他模擬量的采集,無論是電阻傳感器、電容傳感器和電容傳感器,只要按照RC或RL相位調(diào)制方式,F(xiàn)PGA都可以通過相位計數(shù)完成數(shù)據(jù)的采集和計算;
(3)圖1中的激勵信號的頻率決定了整個系統(tǒng)的反應(yīng)速率,圖2中的時鐘信號與激勵信號的頻率倍數(shù)關(guān)系決定了采集分辨率,要獲得較高精度就需要犧牲采集速率,要提升采集速率就要舍去采集精度,根據(jù)自身需求取平衡點。
[1]李露,段新文.基于FPGA的高速數(shù)據(jù)采集卡的設(shè)計[J].現(xiàn)代電子技術(shù),2012,35(18):146-148.
[2]楊衛(wèi),李飛,張皎等.基于NIOSⅡ的高速多路數(shù)據(jù)采集系統(tǒng)[J].計算機測量與控制,2011(02):465-568.
[3]王水魚,何文華.便攜式數(shù)據(jù)采集系統(tǒng)[J].儀表技術(shù)與傳感器,2012(10):76-78.
[4]王選擇,曾志祥,鐘毓寧等.基于相差識別的半導(dǎo)體激光器溫度精密測量與控制[J].光電子?激光,2013,24(2):239-245.
[5]向樂樂,盧艷娥.基于NIOSⅡ的多串口數(shù)據(jù)通信的實現(xiàn)[J].電子設(shè)計工程,2011(02):24-27.
[6]歐海平,周硯江,張華葉等.基于SOPC的步進電機加減速PWM控制器IP核設(shè)計[J].機電工程,2011,28(6):708-711.
[7]馮志華,高社生,張云安.Nios II軟核處理器的PWM控制器設(shè)計[J].微處理機,2008(1):134-137.
[8]汪瀅,孫華軍.基于VC++串口通信的設(shè)計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2011(14):19-21.