江門職業(yè)技術(shù)學(xué)院 周萬(wàn)根湖北工業(yè)大學(xué)機(jī)械學(xué)院 許忠保
隨著FPGA開發(fā)時(shí)間和開發(fā)成本的下降,F(xiàn)PGA在數(shù)據(jù)采集型嵌入式系統(tǒng)中的應(yīng)用也日益廣泛[1-3]。一般,以FPGA為核心的數(shù)據(jù)采集系統(tǒng)中,它基本還是以普通形式接收AD轉(zhuǎn)換器的數(shù)據(jù),此時(shí)它與市面上自帶AD轉(zhuǎn)換功能的處理器在硬件成本方面毫無(wú)優(yōu)勢(shì)。
根據(jù)RC電路相位調(diào)制原理[4]和FPGA的邏輯特性,設(shè)計(jì)出一種以FPGA作為控制核心的無(wú)AD轉(zhuǎn)換器的溫度數(shù)據(jù)采集系統(tǒng),通過特定電路將溫度信息調(diào)制在兩個(gè)方波信號(hào)的相位上,由FPGA通過相位計(jì)數(shù)方式讀取相位值,并實(shí)時(shí)換算溫度值,再根據(jù)與目標(biāo)溫度的差值來(lái)驅(qū)動(dòng)半導(dǎo)體制冷器件TEC進(jìn)行制冷或者制熱實(shí)現(xiàn)自動(dòng)控溫。
如圖1所示,采用RC串聯(lián)電路對(duì)溫度信號(hào)進(jìn)行調(diào)制,其工作原理為,以正弦激勵(lì)信號(hào)Ua作為輸入信號(hào),在電阻Rx和C之間得到一個(gè)新的正選信號(hào)Ub,其中,C電容值不變,Rx為負(fù)溫度系數(shù)熱敏電阻(NTC),它被安裝在被測(cè)物上,它的阻值隨著被測(cè)物體的溫度的變化而變化。Ua與Ub頻率相等,但相位和幅值不同,那么可以根據(jù)Ua與Ub之間相位差,計(jì)算出NTC的阻值R1的大小,即可換算出NTC的實(shí)時(shí)溫度。其計(jì)算過程,假設(shè)令輸入信號(hào),那么,此時(shí)我們只需要提取相位a便可得知NTC的阻值大小,而a絕對(duì)值的表達(dá)式為:

于是可以得知Rx的大小為:


圖1 RC相位調(diào)制原理圖
為了提取相位a,將兩個(gè)正弦模擬信號(hào)Ua和Ub分別接入過零比較器,得到兩個(gè)頻率相同、相位相異的方波信號(hào)a和b。由FPGA對(duì)a、b兩個(gè)信號(hào)按照一定的邏輯處理就可得到相位信息,通過FPGA的計(jì)數(shù)模塊得到。
見圖2所示,以FPGA為核心,主要包含RC相位調(diào)制電路、FPGA(包含相位計(jì)數(shù)模塊和Nios II軟核計(jì)算溫度模塊)、TEC溫控驅(qū)動(dòng)電路。其整個(gè)系統(tǒng)的主要工作原理是RC相位調(diào)制電路作為輸入,將相位信號(hào)傳遞FGPA內(nèi)部Ver il og HDL相位計(jì)數(shù)模塊得到相位計(jì)數(shù)值,將計(jì)數(shù)結(jié)果交由Nios II軟核模塊進(jìn)行相關(guān)處理,包括溫度換算、顯示、參數(shù)設(shè)置和溫控等功能的模塊,再根據(jù)所測(cè)溫度來(lái)控制半導(dǎo)體制冷器TEC制冷或加熱,通過串口與PC上位機(jī)進(jìn)行通訊,上位機(jī)軟件可查看歷史數(shù)據(jù)和溫度參數(shù)設(shè)置,最終實(shí)現(xiàn)無(wú)AD轉(zhuǎn)換器的溫度測(cè)量與控制功能。

圖2 系統(tǒng)結(jié)構(gòu)圖
為了從圖1中的兩個(gè)方波信號(hào)提取相位信息,先對(duì)信號(hào)a和b進(jìn)行異或邏輯得到信號(hào)c,見圖3所示,c信號(hào)中的每個(gè)高電平區(qū)域就是所求的相位差,再將c信號(hào)與FPGA的時(shí)鐘信號(hào)cl k進(jìn)行相與運(yùn)算得到s信號(hào),它代表每一個(gè)相位差時(shí)間區(qū)域內(nèi)含有cl k信號(hào)的數(shù)量,而在每一個(gè)相位差區(qū)間的開始和結(jié)尾處都有可能存在一個(gè)不完整的cl k信號(hào),倘若采用單次計(jì)數(shù)結(jié)果,這種不完整cl k信號(hào)將直接成為誤差帶入計(jì)數(shù)結(jié)果,為了提高相位計(jì)數(shù)精度引入一個(gè)新的方波信號(hào)ar,其中ar每一次高電平區(qū)間都含有10個(gè)相位差區(qū)間,以此進(jìn)行10次計(jì)數(shù)后求平均值作為計(jì)數(shù)結(jié)果。為了進(jìn)一步提高計(jì)數(shù)精度,cl k是由晶振時(shí)鐘和PLL共同得到200MHz的高速時(shí)鐘信號(hào),令原始信號(hào)a、b的頻率為5.4KHz,可以推出a信號(hào)一個(gè)周期內(nèi)包含有370073個(gè)時(shí)鐘信號(hào),即cl k對(duì)此相位計(jì)數(shù)的分辨率為0.00017r ads。按理說(shuō),信號(hào)a、b的異或處理可以再FPGA片外引入異或邏輯門進(jìn)行處理,考慮到多引入其他芯片,方波的完整性和時(shí)序性將會(huì)受到一定的影響,即相位誤差將會(huì)加大,且硬件成本也會(huì)隨之上升。故直接在片內(nèi)進(jìn)行異或邏輯處理,多占FPGA一個(gè)外部I/O口資源。

圖3 相位計(jì)數(shù)原理圖
采用Ver il og HDL語(yǔ)言完成上述計(jì)數(shù)功能模塊的設(shè)計(jì),并在SOPC中添加一個(gè)PIO口,將計(jì)數(shù)模塊的計(jì)數(shù)結(jié)果通過IO口傳輸?shù)絅ios II當(dāng)中[5-6],這樣Nios II就可讀取、處理相位計(jì)數(shù)結(jié)果,由于HDL語(yǔ)言不適合進(jìn)行除法和浮點(diǎn)數(shù)操作,故計(jì)數(shù)模塊是直接將10次相位計(jì)數(shù)結(jié)果傳遞給Nios II,由Nios II來(lái)求相位平均值。
FPGA內(nèi)部運(yùn)行程序是本系統(tǒng)的核心,主要是完成:1)溫度實(shí)時(shí)計(jì)算;2)與上位機(jī)軟件數(shù)據(jù)通信和完成參數(shù)設(shè)置;3)驅(qū)動(dòng)TEC進(jìn)行溫度控制。FPGA在Nios II環(huán)境下可直接用C語(yǔ)言編程,采用定時(shí)查詢方式讀取計(jì)數(shù)模塊上傳的計(jì)數(shù)值,按照乘以相位分辨率得到相位差的具體弧度值,按式(2)計(jì)算可得知NTC此刻的阻值,再把阻值按照溫度系數(shù)換算最終得到實(shí)時(shí)溫度值,保存在溫度緩沖區(qū)等待上位機(jī)召喚。由串口和上位機(jī)通信,接受上位機(jī)參數(shù)設(shè)置命令和上傳實(shí)時(shí)溫度信息,其中FPGA的串口直接利用SOPC Buil der添加到SOC中[7],在Nios II中定時(shí)調(diào)用自帶的底層驅(qū)動(dòng)函數(shù)完成對(duì)串口的讀寫,一般情況下與上位機(jī)通信的任務(wù)都是處于休眠狀態(tài),一直等待上位機(jī)控制軟件下發(fā)指令,而后進(jìn)行數(shù)據(jù)上傳。最后,驅(qū)動(dòng)TEC進(jìn)行溫度控制,只需將實(shí)時(shí)溫度與目標(biāo)溫度進(jìn)行比較,若超過目標(biāo)溫度則往I/O口寫制冷命令數(shù)據(jù),TEC器件進(jìn)行制冷;反之,通過I/O口控制TEC制熱。

圖4 TEC溫控驅(qū)動(dòng)電路
實(shí)驗(yàn)中,TEC半導(dǎo)體制冷器件同熱敏電阻一起被安裝在被測(cè)物體上,熱敏電阻獲得被測(cè)物體的溫度,而TEC器件則是控制被測(cè)物體的溫度。TEC制冷或制熱模式是由流經(jīng)其內(nèi)部的電流方向來(lái)決定的,TEC驅(qū)動(dòng)電路見圖4所示,P1、P2為FPGA的I/O口,經(jīng)電平驅(qū)動(dòng)器后控制四個(gè)三極管的導(dǎo)通、截止?fàn)顟B(tài)。假設(shè)P1為高電平、P2為低電平,則Q2和Q3導(dǎo)通,Q1和Q4截止,則TEC內(nèi)部的電流為從右向左流過,從而促使TEC進(jìn)行制熱;反之P1為低電平、P2為高電平,TEC則開始制冷。在P1、P2同為高或低電平時(shí),TEC內(nèi)部沒有電流,不工作。
上位機(jī)控制程序,主要是完成目標(biāo)溫度設(shè)置、溫度系數(shù)標(biāo)定和讀取溫度數(shù)據(jù)和顯示歷史溫度曲線等功能。在Visual C++ 6.0環(huán)境下而開發(fā),按文件形式創(chuàng)建串口句柄和用DCB結(jié)構(gòu)體對(duì)串口進(jìn)行設(shè)置,以此完成對(duì)串口的初始化操作[8]。定時(shí)向串口發(fā)送查詢溫度數(shù)據(jù)命令,終端設(shè)備接收到后上傳實(shí)時(shí)溫度數(shù)據(jù),上位機(jī)再顯示溫度信息和溫度曲線??刂瞥绦蚪缑嬉妶D5,在一般情況,溫度曲線幾乎為水平線,圖中曲線是用電烙鐵對(duì)被測(cè)物體加熱后,F(xiàn)PGA控制TEC制冷后溫度曲線。從圖中可以看出,以相位計(jì)數(shù)方式替代AD轉(zhuǎn)換器效果明顯,滿足一般的數(shù)據(jù)采集系統(tǒng)應(yīng)用要求。

圖5 上位機(jī)采集控制界面
本文采用RC相位調(diào)制電路和FPGA相位計(jì)數(shù)模塊,實(shí)現(xiàn)了無(wú)AD轉(zhuǎn)化器的溫度采集功能,并通過控制TEC實(shí)現(xiàn)自動(dòng)控溫。通過本實(shí)驗(yàn),為FPGA在數(shù)據(jù)采集的領(lǐng)域中提供了一種新的無(wú)AD轉(zhuǎn)化器的應(yīng)用方式。并得到以下結(jié)論:
(1)本實(shí)驗(yàn)中,通過2個(gè)I/O口就可完成一路數(shù)據(jù)采集,并且由Ver il og HDL硬件語(yǔ)言開發(fā),即通過多I/O口和FPGA硬件語(yǔ)言并行運(yùn)行的特性可以輕松完成多路數(shù)據(jù)的采集;
(2)無(wú)論是溫度采集,還是其他模擬量的采集,無(wú)論是電阻傳感器、電容傳感器和電容傳感器,只要按照RC或RL相位調(diào)制方式,F(xiàn)PGA都可以通過相位計(jì)數(shù)完成數(shù)據(jù)的采集和計(jì)算;
(3)圖1中的激勵(lì)信號(hào)的頻率決定了整個(gè)系統(tǒng)的反應(yīng)速率,圖2中的時(shí)鐘信號(hào)與激勵(lì)信號(hào)的頻率倍數(shù)關(guān)系決定了采集分辨率,要獲得較高精度就需要犧牲采集速率,要提升采集速率就要舍去采集精度,根據(jù)自身需求取平衡點(diǎn)。
[1]李露,段新文.基于FPGA的高速數(shù)據(jù)采集卡的設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2012,35(18):146-148.
[2]楊衛(wèi),李飛,張皎等.基于NIOSⅡ的高速多路數(shù)據(jù)采集系統(tǒng)[J].計(jì)算機(jī)測(cè)量與控制,2011(02):465-568.
[3]王水魚,何文華.便攜式數(shù)據(jù)采集系統(tǒng)[J].儀表技術(shù)與傳感器,2012(10):76-78.
[4]王選擇,曾志祥,鐘毓寧等.基于相差識(shí)別的半導(dǎo)體激光器溫度精密測(cè)量與控制[J].光電子?激光,2013,24(2):239-245.
[5]向樂樂,盧艷娥.基于NIOSⅡ的多串口數(shù)據(jù)通信的實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2011(02):24-27.
[6]歐海平,周硯江,張華葉等.基于SOPC的步進(jìn)電機(jī)加減速PWM控制器IP核設(shè)計(jì)[J].機(jī)電工程,2011,28(6):708-711.
[7]馮志華,高社生,張?jiān)瓢?Nios II軟核處理器的PWM控制器設(shè)計(jì)[J].微處理機(jī),2008(1):134-137.
[8]汪瀅,孫華軍.基于VC++串口通信的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2011(14):19-21.