(1.浙江正泰中自控制工程有限公司,浙江 杭州 310027; 2.南昌大學(xué) 信息工程學(xué)院,江西 南昌 330031;3.南昌大學(xué) 機(jī)電工程學(xué)院,江西 南昌 330031)
氨氣敏電極法測(cè)氨氮不需要將水樣進(jìn)行復(fù)雜的處理,并且不受色度、濁度及懸浮物的影響,測(cè)量還具有線性范圍寬、操作簡(jiǎn)單等優(yōu)點(diǎn)。氨氣敏電極法測(cè)氨氮首先將水樣 pH值升高,讓水中的大多數(shù)的氨氮轉(zhuǎn)換為氨氣的形式存在,當(dāng)氨氣穿過電極的滲透膜進(jìn)入氨氣敏電極時(shí),就可根據(jù)產(chǎn)生的電壓與氨氣濃度的關(guān)系得出水中的氨氮含量。
這種方法利用電化學(xué)原理將被測(cè)參數(shù)轉(zhuǎn)換為電壓值,通過建立標(biāo)準(zhǔn)擬合曲線來間接測(cè)量所需要的參數(shù),符合嵌入式系統(tǒng)在污水處理方面的應(yīng)用發(fā)展趨勢(shì)[2-4]。
本設(shè)計(jì)將根據(jù)Altera公司Nios II軟核概念,在FPGA上建立基于SOPC技術(shù)的Nios II雙核系統(tǒng),兩個(gè)CPU分別作為電極電壓信號(hào)的數(shù)據(jù)采集處理器與氨氮含量的數(shù)據(jù)計(jì)算、顯示處理器。對(duì)電壓信號(hào)的采集主要是利用具有A/D轉(zhuǎn)換功能的芯片來控制,然后將采集到的數(shù)據(jù)存入到共享存儲(chǔ)器;對(duì)氨氮含量的計(jì)算、顯示主要是利用最小二乘法計(jì)算標(biāo)準(zhǔn)曲線擬合參數(shù),并利用擬合方程,由采集到的數(shù)據(jù)就能計(jì)算出氨氮濃度,并可通過LCD對(duì)結(jié)果進(jìn)行顯示。通過Nios II里的硬件互斥核(Mutex Core)組件去控制兩處理器與共享存儲(chǔ)器的交互,避免彼此之間產(chǎn)生干涉,從而給兩處理器間的信息交互創(chuàng)造了操作安全、行為可靠的環(huán)境。如此就達(dá)到了在一片F(xiàn)PGA內(nèi)完成迅速、精準(zhǔn)且不產(chǎn)生二次污染的氨氣敏電極法測(cè)氨氮的目的。
系統(tǒng)模塊的設(shè)計(jì)可從采集模塊與計(jì)算和顯示模塊這兩方面進(jìn)行構(gòu)建。其中,對(duì)于數(shù)據(jù)采集模塊,氨氣敏電極測(cè)量時(shí)所產(chǎn)生的電壓模擬信號(hào)由A/D轉(zhuǎn)換芯片實(shí)施放大濾波操作后,轉(zhuǎn)變成數(shù)字信號(hào)直接輸入到FPGA中。對(duì)于數(shù)據(jù)計(jì)算、顯示模塊,需先確定標(biāo)準(zhǔn)氨氮曲線,通過最小二乘法對(duì)標(biāo)準(zhǔn)曲線進(jìn)行擬合,再將數(shù)據(jù)帶入到擬合方程中,就可得到待測(cè)液中氨氮的含量, 最后利用液晶顯示屏實(shí)現(xiàn)數(shù)值的顯示。 系統(tǒng)總體框圖如圖1所示。
圖1 系統(tǒng)總體框圖
如圖1所示,Nios II系統(tǒng)的兩個(gè)模塊利用共享單元對(duì)數(shù)據(jù)進(jìn)行交互,而對(duì)共享單元訪問的協(xié)調(diào)將通過Qsys工具組件里的硬件互斥核組件去控制。方案設(shè)計(jì)中,F(xiàn)PGA選擇 Altera公司的Cyclone IV系列中的EP4CE115芯片,其內(nèi)部擁有114480個(gè)邏輯單元、266個(gè)乘法器、4個(gè)PLL,且片上存儲(chǔ)器資源高達(dá)3.9 MB。
(1)
(2)
水樣經(jīng)過處理后在 pH大于11時(shí)開始按式(2)進(jìn)行反應(yīng),水中氨氮以氨氣形式存在, 氨氣進(jìn)入氨氣敏電極后按式(1)進(jìn)行反應(yīng),由于電極內(nèi)部氫離子發(fā)生變化而產(chǎn)生電極電壓,該電壓值大小與水中氨氮含量存在一定關(guān)系,從而可以計(jì)算出氨氮的值[5-6]。
在氨氮含量的測(cè)量中,電極產(chǎn)生的電信號(hào)通常較小,故需使用高精度的A/D轉(zhuǎn)換器,對(duì)信號(hào)進(jìn)行放大濾波并數(shù)字化處理。實(shí)際設(shè)計(jì)中選擇美國(guó)的ANALOG DEVICE公司所制造的具有較高精度的24位串行A/D轉(zhuǎn)換器 AD7710。其運(yùn)用的是Sigma-Delta轉(zhuǎn)換技術(shù)來使轉(zhuǎn)換器在滿足24位精度的條件下仍然不丟失碼。對(duì)于輸入到調(diào)節(jié)器的前端的信號(hào),增益大小可以通過程序編譯的方式進(jìn)行設(shè)定。調(diào)節(jié)器的輸出需經(jīng)由芯片自帶的數(shù)字濾波功能進(jìn)行信號(hào)處理。 AD7710與FPGA的硬件電路連接圖如圖2所示。
圖2 AD7710硬件電路連接圖
電極產(chǎn)生的模擬信號(hào)由AIN1輸入到AD7710,經(jīng)過AD7710處理后得到的數(shù)字信號(hào)通過SDATA口傳入FPGA中。圖2中,TFS是幀同步傳輸端,RFS是幀同步接收端,DRDY是邏輯輸出端。而SDATA在RFS端接入低電平信號(hào)時(shí)才打開,對(duì)數(shù)據(jù)進(jìn)行寫操作時(shí)則要求TFS端接入低電平信號(hào),DRDY處于下降沿就意味著輸出端有新的數(shù)據(jù)可供傳輸,待輸出端的數(shù)據(jù)傳輸完畢后,該端口就變成高電平。
因?yàn)閿?shù)據(jù)顯示模塊中所需顯示的部分比較簡(jiǎn)單,故選擇LCD1602與HD44780進(jìn)行模塊設(shè)計(jì),F(xiàn)PGA與系統(tǒng)數(shù)據(jù)顯示模塊的連接示意圖如圖3所示。
圖3 FPGA與LCD顯示模塊連接示意圖
HD44780可由Qsys工具里的 Character LCD IP核進(jìn)行控制,通過切換LCD_RW、LCD_RS、LCD_EN等端口處電平的高低,就能完成對(duì)氨氮值的數(shù)據(jù)顯示。
系統(tǒng)的硬件部分的構(gòu)建需通過Quartus II開發(fā)軟件里的 Qsys系統(tǒng)集成工具,在開發(fā)套件給出的外設(shè)中,根據(jù)實(shí)際系統(tǒng)要求使用合適的CPU、存儲(chǔ)器與相應(yīng)的外設(shè)。運(yùn)用Quartus II可自動(dòng)生成對(duì)應(yīng)器件的配置文件,將這些文件下載進(jìn) FPGA,就可為軟件部分的設(shè)計(jì)提供無(wú)縫銜接的硬件架構(gòu)。Qsys作為SOPC Builder的下一代產(chǎn)品,是Altera公司在Quartus II 11.0版中新發(fā)布的系統(tǒng)集成工具。與SOPC Builder工具相比,它在性能和工作效率方面有了很大提高,而且在設(shè)計(jì)的重用性方面也有所增強(qiáng),加快了開發(fā)的進(jìn)程。
在系統(tǒng)配置的過程中,需先對(duì)在系統(tǒng)中作為工作時(shí)鐘的 Avalon總線時(shí)鐘進(jìn)行選擇,配置本系統(tǒng)的時(shí)鐘為100 MHz。系統(tǒng)的時(shí)鐘頻率還可用于外圍設(shè)備生成時(shí)鐘分頻器或波特率發(fā)生器等,加入鎖相環(huán)(PLL),就能夠得到其他器件所需的時(shí)鐘,另外也可對(duì)時(shí)鐘相位進(jìn)行適當(dāng)?shù)恼{(diào)整。選用兩個(gè)Nios II軟核處理器,分別當(dāng)作采集模塊的CPU與計(jì)算、顯示模塊的CPU。 兩模塊CPU的共享存儲(chǔ)器通過選擇片上RAM進(jìn)行構(gòu)建,同時(shí)通過Mutex core控制CPU與共享存儲(chǔ)器數(shù)據(jù)的存取。因?yàn)殚_發(fā)套件里未給出能與AD7710相合的IP核,因此需通過Verilog HDL語(yǔ)言去編譯、描述用戶自定義的IP核。通過配置Character LCD對(duì)HD44780進(jìn)行配置。系統(tǒng)的定時(shí)功能的設(shè)置需通過定時(shí)器組件(Timer)實(shí)現(xiàn)。在FPGA上,下載程序與測(cè)試功能操作都由串口JTAG/UART組件實(shí)現(xiàn)。另外,還應(yīng)增添SDRAM控制器與三態(tài)橋,作為接入SDRAM與片外Flash、SRAM的端口。 同時(shí)給其他外設(shè)增添合適的I/O口。
實(shí)現(xiàn)上述設(shè)置操作后,接著就可對(duì)系統(tǒng)的外部設(shè)備配置相對(duì)應(yīng)的地址信息以及中斷、重置信號(hào),單擊“Generate”就能生成Qsys系統(tǒng),于頂層Verilog文件內(nèi)對(duì)頂層系統(tǒng)實(shí)施例化處理, 同時(shí)進(jìn)行編程與測(cè)試,就可實(shí)現(xiàn)系統(tǒng)的硬件配置。 Qsys系統(tǒng)配置示意圖如圖4所示。
圖4 Qsys系統(tǒng)配置示意圖
系統(tǒng)的軟件部分的設(shè)計(jì)與開發(fā)主要包括數(shù)據(jù)采集模塊與數(shù)據(jù)計(jì)算、顯示模塊兩個(gè)部分,另外還包括利用硬件互斥核來控制雙處理器與共享外設(shè)交互的軟件程序的設(shè)計(jì)。各模塊的軟件部分設(shè)計(jì)均在新版本的Nios II嵌入式處理器系統(tǒng)軟件開發(fā)工具Nios II SBT上完成。
對(duì)數(shù)據(jù)采集模塊部分的程序編譯是為了實(shí)現(xiàn)將氨氣敏電極傳感器采集到的模擬電信號(hào),在完成A/D轉(zhuǎn)換操作后,再將轉(zhuǎn)換得到的數(shù)字信號(hào)進(jìn)行存儲(chǔ)的目的。 通過使用自定義的IP核去實(shí)現(xiàn)對(duì)AD7710的操控。而需設(shè)計(jì)的關(guān)于軟件方面的內(nèi)容為系統(tǒng)對(duì)所需的數(shù)據(jù)實(shí)施測(cè)量與儲(chǔ)存的程序。在系統(tǒng)內(nèi),片上存儲(chǔ)器被當(dāng)成采集處理器與計(jì)算、顯示處理器的共享存儲(chǔ)單元,是兩處理器相互進(jìn)行數(shù)據(jù)交互的通道。不過在兩處理器一同對(duì)片上共享 RAM進(jìn)行數(shù)據(jù)存取時(shí),系統(tǒng)就會(huì)有崩潰的可能,需利用 Mutex core去控制數(shù)據(jù)的存取,故應(yīng)對(duì)利用 Mutex core控制兩處理器對(duì)共享RAM進(jìn)行訪問的軟件程序進(jìn)行編寫[7-9]。 軟件流程圖如圖5所示。
圖5 數(shù)據(jù)采集模塊軟件流程圖
通過Mutex core來控制兩處理器與共享存儲(chǔ)器進(jìn)行數(shù)據(jù)的交互,需先聲明代表硬件Mutex設(shè)備結(jié)構(gòu)體alt_mutex_dev,接著用altera_avalon_mutex_trylock( )函數(shù)嘗試對(duì) Mutex進(jìn)行加鎖,操作完成后就開始進(jìn)行與存儲(chǔ)器間的數(shù)據(jù)交互,交互結(jié)束后再用altera_avalon_mutex_unlock( )函數(shù)對(duì)Mutex進(jìn)行解鎖[10-11]。部分程序如下。
#include
……
alt_mutex_dev*mutex=altera_avalon_mutex_open(“/dev/mutex”);//獲取一個(gè)指向Mutex設(shè)備結(jié)構(gòu)體的指針
INT8U flag;
flag=altera_avalon_mutex_trylock(mutex,1);
//試圖對(duì)Mutex加鎖
if(!flag)
{……//對(duì)共享資源訪問altera_avalon_mutex_unlock(mutex);//對(duì)Mutex解鎖}
else {delay(5000);flag=altera_avalon_mutex_trylock(mutex,1);}
在對(duì)數(shù)據(jù)計(jì)算、顯示模塊的構(gòu)建之前,應(yīng)當(dāng)先確立需通過標(biāo)準(zhǔn)試劑滴定來建立的標(biāo)準(zhǔn)氨氮擬合曲線,再利用擬合曲線將測(cè)得的數(shù)據(jù)帶入計(jì)算,最后把計(jì)算得到的氨氮值顯示在液晶顯示屏上。
在裝有氨氣敏電極傳感器的容器中加入氨氮標(biāo)準(zhǔn)液,把標(biāo)準(zhǔn)液 pH調(diào)至11以上,使用氨氣敏電極進(jìn)行測(cè)量,記錄電壓值和對(duì)應(yīng)的氨氮值并輸入系統(tǒng)。 使用最小二乘法擬合方程:
y=ax+b
(3)
式中,y為氨氮含量;x為電壓值;a與b分別為擬合參數(shù),由下列方程組求出:
(4)
利用最小二乘法對(duì)曲線進(jìn)行的擬合與帶入計(jì)算方面的內(nèi)容應(yīng)在Nios II IDE(集成開發(fā)環(huán)境)內(nèi)來完成, Altera公司已于 Qsys內(nèi)給出了 Character LCD作為 Nios II與液晶屏的 Avalon接口, 并在 Nios II IDE內(nèi)給出了完整的開發(fā)平臺(tái)。
軟件設(shè)計(jì)的流程圖如圖6所示。
圖6 數(shù)據(jù)計(jì)算、顯示模塊軟件流程圖
對(duì)系統(tǒng)可靠性進(jìn)行的相關(guān)測(cè)試,可選擇在實(shí)驗(yàn)室中利用DE2-115開發(fā)板展開相關(guān)性能測(cè)試。在DE2-115中,包含了一片Cyclone IV系列的EP4CE115芯片,且集成了HD44780和LCD1602,為系統(tǒng)測(cè)試提供了充分條件。 DE2-115開發(fā)板如圖7所示。
將程序下載到開發(fā)板之后,利用江西省新余市仙女湖入湖河流平水期的水樣進(jìn)行試驗(yàn)[12],采用納氏比色法測(cè)得的氨氮值和系統(tǒng)測(cè)得的氨氮值數(shù)據(jù)對(duì)比結(jié)果如表1所示。
圖7 DE2-115開發(fā)板
入湖河流標(biāo)準(zhǔn)氨氮/mg·L-1試驗(yàn)氨氮/mg·L-1相對(duì)誤差/%楊橋河0.320.31-3.22袁河上游0.310.323.12松山河0.440.41-7.31苑坑河0.490.525.77九龍山河0.320.345.88
經(jīng)過計(jì)算分析可知,此方案還存在一定程度的測(cè)量誤差,但總體上能呈現(xiàn)出較好的測(cè)量效果,基本上能實(shí)現(xiàn)設(shè)計(jì)所預(yù)期測(cè)量標(biāo)準(zhǔn)。
本文通過FPGA實(shí)現(xiàn)了利用氨氣敏電極法對(duì)水體氨氮進(jìn)行測(cè)量的雙處理器系統(tǒng)設(shè)計(jì)。選擇當(dāng)前較流行的FPGA可編程邏輯器件作為處理器,可以使系統(tǒng)運(yùn)行速度較快的同時(shí)保證可靠性,同時(shí)擁有良好的擴(kuò)展性。 電化學(xué)法測(cè)氨氮過程簡(jiǎn)單且無(wú)二次污染,適應(yīng)水質(zhì)監(jiān)測(cè)儀器發(fā)展潮流,符合嵌入式系統(tǒng)在污水處理中的發(fā)展要求。在FPGA上建立的Nios II雙核系統(tǒng),僅用一片芯片完成了數(shù)據(jù)采集、存儲(chǔ)、計(jì)算和顯示的工作,充分利用了 FPGA片上資源,降低了開發(fā)成本與功耗,縮減了設(shè)計(jì)周期與風(fēng)險(xiǎn),提升了系統(tǒng)性能。