摘 要: 以ATmega128單片機(jī)在鋼水液位監(jiān)控系統(tǒng)的信號(hào)處理子系統(tǒng)為例,詳細(xì)介紹了系統(tǒng)對(duì)模擬量、數(shù)字量以及開(kāi)關(guān)量的采集與處理過(guò)程,用LCD顯示模塊顯示數(shù)據(jù)和狀態(tài)的方法說(shuō)明了一些為節(jié)省單片機(jī)引腳資源而采取的設(shè)計(jì)技巧,通過(guò)軟件與硬件的結(jié)合,使信號(hào)的處理效果達(dá)到設(shè)計(jì)要求。
關(guān)鍵詞: ATmega128;單片機(jī);信號(hào)處理
在鋼鐵冶金的連鑄生產(chǎn)過(guò)程中,維持結(jié)晶器中鋼水液位的基本穩(wěn)定對(duì)產(chǎn)品質(zhì)量有著舉足輕重的作用。鋼水液位高度的波動(dòng)太大會(huì)使結(jié)晶器中的保護(hù)渣等夾雜物帶入鋼水中,不僅影響鑄坯的質(zhì)量,嚴(yán)重時(shí)甚至?xí)?dǎo)致鋼水溢出等重大生產(chǎn)事故的發(fā)生。為了提高鋼坯的產(chǎn)品質(zhì)量,避免生產(chǎn)事故,降低操作工人的勞動(dòng)強(qiáng)度,提高生產(chǎn)自動(dòng)化水平,就必須有一套高精度的鋼水液位控制系統(tǒng),使結(jié)晶器中鋼水液位高度波動(dòng)范圍控制在5 mm以內(nèi)。
結(jié)晶器的鋼水液位控制系統(tǒng)由三個(gè)子系統(tǒng)構(gòu)成:(1)信號(hào)檢測(cè)與放大子系統(tǒng);(2)信號(hào)處理子系統(tǒng);(3)PLC及執(zhí)行機(jī)構(gòu)控制子系統(tǒng)。其中(1)、(3)兩個(gè)子系統(tǒng)的功能相對(duì)單一。信號(hào)檢測(cè)與放大子系統(tǒng)的主要功能是通過(guò)電渦流傳感器及其高精度放大器把鋼水液位高度轉(zhuǎn)換成相應(yīng)的電壓信號(hào),通過(guò)溫度傳感器將溫度轉(zhuǎn)換成相應(yīng)的電流信號(hào);PLC及執(zhí)行機(jī)構(gòu)控制子系統(tǒng)的主要功能是與信號(hào)處理子系統(tǒng)通信,發(fā)出開(kāi)澆命令,接收其應(yīng)答信號(hào),在開(kāi)澆過(guò)程中根據(jù)信號(hào)處理子系統(tǒng)的輸出電流大小,通過(guò)PLC和執(zhí)行機(jī)構(gòu)控制中間包的塞棒開(kāi)啟度,從而控制注入結(jié)晶器的鋼水流量,使結(jié)晶器的液位高度波動(dòng)范圍小于5 mm。
系統(tǒng)的核心部分是信號(hào)處理子系統(tǒng),其結(jié)構(gòu)框圖如圖1所示。
1 信號(hào)處理子系統(tǒng)的硬件設(shè)計(jì)
信號(hào)處理子系統(tǒng)是以ATmega128單片機(jī)為核心的嵌入式系統(tǒng)。系統(tǒng)中的輸入/輸出信號(hào)包括:用來(lái)實(shí)現(xiàn)開(kāi)澆聯(lián)絡(luò)的1對(duì)開(kāi)關(guān)量——開(kāi)澆與應(yīng)答;2路通過(guò)A/D轉(zhuǎn)換實(shí)現(xiàn)的模擬量輸入——液位電壓和溫度電流;3路通過(guò)D/A轉(zhuǎn)換實(shí)現(xiàn)的模擬量(圖1中只畫(huà)出2路)輸出——液位電流、溫度電流及mV補(bǔ)償。輸入/輸出設(shè)備包括:1個(gè)帶觸摸屏、分辨率為320×240的LCD顯示模塊;4個(gè)按鍵的鍵盤(pán);4個(gè)用來(lái)指示狀態(tài)的發(fā)光二級(jí)管;還有1個(gè)用來(lái)發(fā)音報(bào)警的蜂鳴器。其主要模塊設(shè)計(jì)方案介紹如下。
1.1 單片機(jī)
單片機(jī)采用Atmel公司生產(chǎn)的8 bit、增強(qiáng)型AVR單片機(jī)ATmega128L,其引腳數(shù)為64個(gè),I/O端口有53個(gè),片內(nèi)有128 KB的Flash、4 KB的SRAM和4 KB的E2PROM,還有兩個(gè)8 bit的定時(shí)器和兩個(gè)16 bit的計(jì)時(shí)器;具有8路10 bit A/D轉(zhuǎn)換器。片內(nèi)資源比較豐富,性能可滿足本子系統(tǒng)使用要求。
1.2 鍵盤(pán)
為了節(jié)省引腳資源,本系統(tǒng)沒(méi)有采用獨(dú)立按鍵方式,而是利用一路片內(nèi)A/D轉(zhuǎn)換來(lái)實(shí)現(xiàn)4個(gè)按鍵的識(shí)別。通過(guò)不同按鍵按下后串聯(lián)接到+5 V的使分壓電阻輸出電壓的不同來(lái)識(shí)別不同的按鍵。4個(gè)按鍵的操作分別對(duì)應(yīng)為運(yùn)行(Run)、調(diào)整(Adj)、線性化(Line)、設(shè)置(Set)4個(gè)功能。其中,“運(yùn)行”是指系統(tǒng)的正常運(yùn)行;“調(diào)整”是指在開(kāi)澆之前,把系統(tǒng)調(diào)整到一個(gè)初始狀態(tài),具體操作是在液位高度為150 mm時(shí),通過(guò)對(duì)前級(jí)放大子系統(tǒng)及信號(hào)處理子系統(tǒng)的mV補(bǔ)償,使液位電壓值為4.96 V;“線性化”是在0~150 mm的范圍內(nèi),通過(guò)傳感器配合設(shè)定16組不同液位與電壓的數(shù)據(jù);“設(shè)置”是對(duì)線性化數(shù)據(jù)輸入的確認(rèn)。
1.3 模數(shù)轉(zhuǎn)換(A/D)
雖然單片機(jī)片內(nèi)有10 bit的A/D轉(zhuǎn)換器,但由于現(xiàn)場(chǎng)對(duì)模塊量的采集精度要求較高,所以本系統(tǒng)采用了12 bit A/D轉(zhuǎn)換器LTC1291來(lái)實(shí)現(xiàn)液位模擬量的采集[1]。這是一種具有兩個(gè)通道的12 bit串位ADC芯片,由于輸入的液位電壓范圍是0~6 V,所以供電電壓設(shè)為6 V。轉(zhuǎn)換后的數(shù)值量以串行方式提供給單片機(jī),作為毫伏補(bǔ)償輸入和相應(yīng)液位電流輸出的依據(jù)。
1.4 數(shù)模轉(zhuǎn)換(D/A)
本系統(tǒng)的D/A有3路,一路是為了調(diào)整初值而對(duì)前級(jí)放大輸出的毫伏補(bǔ)償,另兩路是為了輸出與液位高度(0~150 mm)、傳感器溫度(0~100 ℃)對(duì)應(yīng)的電流4 mA~20 mA。
(1)毫伏補(bǔ)償
輸出毫伏補(bǔ)償電路如圖2所示,其目的是在開(kāi)澆前,通過(guò)補(bǔ)償將液位高度與對(duì)應(yīng)的輸出電壓調(diào)整到一個(gè)確定的對(duì)應(yīng)值,比如在液位高度為150 mm時(shí),使前級(jí)放大板的輸出電壓為4.96 V,若高于此值,則進(jìn)行負(fù)補(bǔ)償,低于此值,則進(jìn)行正補(bǔ)償,所以補(bǔ)償?shù)暮练凳强烧韶?fù)的,D/A轉(zhuǎn)換器采用雙12 bit分辨率的LTC1446[2],輸出運(yùn)算放大器LT1077的供電電壓為±5 V。補(bǔ)償是有限制的,其輸入數(shù)值范圍為0~±150,每個(gè)數(shù)值對(duì)應(yīng)的輸出模擬量大小可通過(guò)電位器RS1調(diào)整。
(2)液位電流輸出
實(shí)現(xiàn)將液位高度轉(zhuǎn)換成4 mA~20 mA電流輸出的電路先由12 bit D/A轉(zhuǎn)換器LTC1451[3]將液位高度的數(shù)值量轉(zhuǎn)換成模擬量電壓,然后由AD694輸出相應(yīng)的電流。LTC1451是一種12 bit分辨率串行D/A轉(zhuǎn)換器,從Din輸入的數(shù)字量是A/D轉(zhuǎn)換器采集的液位電壓,從Vout端輸出的是相應(yīng)的模擬電壓,通過(guò)電流輸出模塊AD694轉(zhuǎn)換成模擬量電流4 mA~20 mA,從其Iout端輸出。
1.5 LCD顯示屏
LCD顯示屏采用的是分辨率為320×240、帶觸摸屏的LCD模塊,顯示的主要內(nèi)容為系統(tǒng)運(yùn)行界面、工作調(diào)整界面、補(bǔ)償界面和線性化界面及相關(guān)參數(shù)。
(1)系統(tǒng)運(yùn)行界面
系統(tǒng)起動(dòng)或按“Run”按鍵進(jìn)入系統(tǒng)運(yùn)行界面,如圖3所示。顯示內(nèi)容包括3個(gè)部分:其一是輸入量、輸出量和狀態(tài)量的顯示;其中輸入量有:液位、電壓和溫度;輸出量有:液位電流、溫度電流和補(bǔ)償值;狀態(tài)值有:超溫(沒(méi)有超溫不顯示)、開(kāi)澆/停澆、正常/異常。其二是以20像素/s的速度動(dòng)態(tài)繪制反映液位波動(dòng)情況的實(shí)時(shí)曲線。其三是通過(guò)觸摸屏實(shí)現(xiàn)6個(gè)按鍵,其功能如下:
①縮放:分別用放大倍數(shù)為1、2、4的比例,對(duì)液位高度的坐標(biāo)進(jìn)行縮放。放大倍數(shù)為1時(shí),液位高度全程范圍是0~125 mm;放大倍數(shù)為2時(shí),液位高度全程范圍是0~150 mm;放大倍數(shù)為4時(shí),液位高度全程范圍是0~200 mm。
②下移:下移液位曲線窗口至適當(dāng)?shù)淖鴺?biāo)范圍。
③上移:上移液位曲線窗口至適當(dāng)?shù)淖鴺?biāo)范圍。
④翻頁(yè):在顯示歷史曲線狀態(tài)時(shí),可翻看滾動(dòng)儲(chǔ)存的五個(gè)頁(yè)面之一的液位曲線。
⑤實(shí)時(shí):從顯示歷史曲線切換到顯示實(shí)時(shí)曲線的狀態(tài)。
⑥歷史:從顯示實(shí)時(shí)曲線切換到顯示歷史曲線的狀態(tài)。
(2)工作調(diào)整界面
工作調(diào)整界面通過(guò)面板上的“Adj”按鍵進(jìn)入,其主要作用是在開(kāi)澆前對(duì)前級(jí)放大板進(jìn)行調(diào)整,調(diào)整過(guò)程中顯示液位高度和對(duì)應(yīng)的電壓值。
(3)自動(dòng)補(bǔ)償界面
自動(dòng)補(bǔ)償界面可以在工作調(diào)整結(jié)束返回系統(tǒng)運(yùn)行界面時(shí),由系統(tǒng)執(zhí)行自動(dòng)補(bǔ)償時(shí)顯示,也可以在開(kāi)澆指令下達(dá)后執(zhí)行自動(dòng)補(bǔ)償時(shí)顯示,目的是為了避免工作調(diào)整時(shí),因人工調(diào)整的精度不夠準(zhǔn)確而造成的誤差。
若補(bǔ)償成功,則返回系統(tǒng)運(yùn)行界面,并在其中顯示相應(yīng)的補(bǔ)償值;補(bǔ)償失敗,則顯示異常,并用蜂鳴器報(bào)警。
(4)線性化界面
線性化界面示意圖如圖4所示,目的是為了設(shè)置不同液位高度所對(duì)應(yīng)的液位電壓。由于傳感器參數(shù)不一定完全相同,所以一旦更換了前級(jí)信號(hào)檢測(cè)子系統(tǒng)中的傳感器,就必須做一次線性化處理。具體操作是在0~150 mm范圍內(nèi)設(shè)置16組數(shù)據(jù),通過(guò)人工調(diào)整檢測(cè)鋼板和傳感器之間的距離來(lái)模擬液位高度,設(shè)置每個(gè)點(diǎn)的液位高度和相應(yīng)的電壓。其中,序號(hào)值分別為0~15,高度為液位高度的毫米值,原值為本次修改前該液位高度對(duì)應(yīng)的電壓值,現(xiàn)值是對(duì)當(dāng)前液位高度設(shè)置的液位電壓值。設(shè)置好的數(shù)據(jù)保存在單片機(jī)片內(nèi)的E2PROM中。
線性化界面可通過(guò)面板上的“Line”按鍵進(jìn)入,顯示線性化界面后,再按“Line”按鍵可在16個(gè)柱形圖中循環(huán)切換具體位置(柱形圖由空芯變?yōu)閷?shí)芯顯示),再通過(guò)調(diào)整鋼板與傳感器的間距,在需要設(shè)定時(shí)按下面板上的“Set”按鍵即可確認(rèn)設(shè)置,設(shè)置確認(rèn)后即在線性化界面上顯示出參數(shù)及相應(yīng)的矩形圖。
2 信號(hào)處理子系統(tǒng)的軟件設(shè)計(jì)
軟件設(shè)計(jì)是用C語(yǔ)言編程實(shí)現(xiàn)的,通過(guò)ICCAVR編譯生成目標(biāo)代碼,再通過(guò)軟件AVR Studio 4和仿真器JTAG下載到ATmega128單片機(jī)中。
整個(gè)程序在主控模塊的大循環(huán)控制下運(yùn)行,在運(yùn)行過(guò)程中,根據(jù)系統(tǒng)的當(dāng)前運(yùn)行狀態(tài)以及面板按鍵和LCD觸摸屏按鍵的監(jiān)控結(jié)果調(diào)用相應(yīng)的子程序完成具體功能。
2.1 主控模塊結(jié)構(gòu)
主控模塊在完成對(duì)系統(tǒng)進(jìn)行的初始化工作后,即顯示系統(tǒng)運(yùn)行界面,然后進(jìn)入主循環(huán)。在主循環(huán)中根據(jù)運(yùn)行狀態(tài)和采集到的用戶對(duì)面板按鍵和系統(tǒng)運(yùn)行界面中的觸摸屏按鍵的操作,對(duì)當(dāng)前流程和狀態(tài)進(jìn)行相應(yīng)的顯示和處理,其結(jié)構(gòu)框圖如圖5所示。
2.2 模數(shù)轉(zhuǎn)換(A/D)子程序
A/D轉(zhuǎn)換采用的轉(zhuǎn)換器是LTC1291,這是一種串行接口的12 bit ADC,其操作步驟描述如下:
(1)發(fā)送低電平的片選信號(hào)到ADC的CS引腳;
(2)發(fā)送正脈沖到ADC的DIN引腳;
(3)發(fā)送4 bit的控制信號(hào),明確通道號(hào)和數(shù)據(jù)格式;
(4)采用串行方式逐位將轉(zhuǎn)換的結(jié)果從DOUT引腳讀出;
(5)轉(zhuǎn)換結(jié)束,片選信號(hào)上升為高電平。
需要注意的是:串行數(shù)據(jù)每個(gè)bit的I/O都是在CLK引腳的脈沖配合下完成的。
2.3 數(shù)摸轉(zhuǎn)換(D/A)子程序
D/A轉(zhuǎn)換用來(lái)實(shí)現(xiàn)根據(jù)當(dāng)前液位高度輸出相應(yīng)電流給PLC及執(zhí)行機(jī)構(gòu),D/A轉(zhuǎn)換芯片用的是LTC1451,這是一種串行接口12 bit的DAC,其DIN數(shù)據(jù)輸入將12 bit二進(jìn)制數(shù)據(jù)通過(guò)CLK時(shí)鐘脈沖逐位地輸入到LTC1451的寄存器中[3],供LTC1451進(jìn)行D/A轉(zhuǎn)換,并將轉(zhuǎn)換后的模擬信號(hào),由DOUT引腳輸出給AD694芯片,再經(jīng)AD694將此模擬信號(hào)轉(zhuǎn)換成4 mA~20 mA的直流電流信號(hào)給PLC控制子系統(tǒng)。
2.4 LCD顯示子程序
系統(tǒng)根據(jù)需要組織了24×24和16×16兩種漢字庫(kù),還組織了8×16和8×13兩種字符點(diǎn)庫(kù),所有點(diǎn)陣庫(kù)存放在ATmega128單片機(jī)的程序存儲(chǔ)器中,在顯示界面時(shí),通過(guò)相應(yīng)子程序來(lái)實(shí)現(xiàn)。實(shí)現(xiàn)顯示功能的子程序是通過(guò)分區(qū)方式直接寫(xiě)入顯示存儲(chǔ)器的不同區(qū)域來(lái)完成的,主要子程序按功能可分三類:
(1)基本操作子程序。主要包括寫(xiě)命令、寫(xiě)數(shù)據(jù)、在指定坐標(biāo)處讀/寫(xiě)入數(shù)據(jù)等。
(2)字符及圖形顯示子程序。主要包括漢字和圖形的繪制子程序。
(3)觸摸屏處理子程序。主要包括SPI讀/寫(xiě)數(shù)據(jù)及響應(yīng)觸摸、確定鍵位等子程序。
3 實(shí)際系統(tǒng)運(yùn)行情況
本系統(tǒng)已投入實(shí)際,穩(wěn)定運(yùn)行后,液位波動(dòng)范圍可控制在3 mm以內(nèi),完全達(dá)到了設(shè)計(jì)要求。
本系統(tǒng)成功地解決了冶金企業(yè)連鑄生產(chǎn)過(guò)程中對(duì)鋼水液位監(jiān)控的信號(hào)處理問(wèn)題,其設(shè)計(jì)思想與實(shí)現(xiàn)方法可推廣應(yīng)用到其他系統(tǒng)中。
參考文獻(xiàn)
[1] Linear Technology Inc.LTC1291 single chip 12-bit data acquisition system[EB/OL].[2011-03-02].http://cds.linear.com/docs/Datasheet/1291fa.pdf.
[2] Linear Technology Inc.LTC1446/LTC1446L dual 12-bit rail-to-rail micropower DACs in SO-8[EB/OL].[2011-03-02].http://cds.linear.com/docs/Datasheet/1446fa.pdf.
[3] Linear Technology Inc.LTC1451/LTC1452/LTC1453 12-bit rail-to-rail micropower DACs in SO-8[EB/OL].[2011-03-02].http://cds.linear.com/docs/Datasheet/145123fs.pdf.