《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > ATmega128單片機(jī)在信號處理中的應(yīng)用
ATmega128單片機(jī)在信號處理中的應(yīng)用
來源:微型機(jī)與應(yīng)用2011年第22期
邵平凡
(武漢科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,湖北 武漢430065)
摘要: 以ATmega128單片機(jī)在鋼水液位監(jiān)控系統(tǒng)的信號處理子系統(tǒng)為例,詳細(xì)介紹了系統(tǒng)對模擬量、數(shù)字量以及開關(guān)量的采集與處理過程,用LCD顯示模塊顯示數(shù)據(jù)和狀態(tài)的方法說明了一些為節(jié)省單片機(jī)引腳資源而采取的設(shè)計(jì)技巧,通過軟件與硬件的結(jié)合,使信號的處理效果達(dá)到設(shè)計(jì)要求。
Abstract:
Key words :

摘  要: 以ATmega128單片機(jī)在鋼水液位監(jiān)控系統(tǒng)的信號處理子系統(tǒng)為例,詳細(xì)介紹了系統(tǒng)對模擬量、數(shù)字量以及開關(guān)量的采集與處理過程,用LCD顯示模塊顯示數(shù)據(jù)和狀態(tài)的方法說明了一些為節(jié)省單片機(jī)引腳資源而采取的設(shè)計(jì)技巧,通過軟件與硬件的結(jié)合,使信號的處理效果達(dá)到設(shè)計(jì)要求。
關(guān)鍵詞: ATmega128;單片機(jī);信號處理

    在鋼鐵冶金的連鑄生產(chǎn)過程中,維持結(jié)晶器中鋼水液位的基本穩(wěn)定對產(chǎn)品質(zhì)量有著舉足輕重的作用。鋼水液位高度的波動太大會使結(jié)晶器中的保護(hù)渣等夾雜物帶入鋼水中,不僅影響鑄坯的質(zhì)量,嚴(yán)重時(shí)甚至?xí)?dǎo)致鋼水溢出等重大生產(chǎn)事故的發(fā)生。為了提高鋼坯的產(chǎn)品質(zhì)量,避免生產(chǎn)事故,降低操作工人的勞動強(qiáng)度,提高生產(chǎn)自動化水平,就必須有一套高精度的鋼水液位控制系統(tǒng),使結(jié)晶器中鋼水液位高度波動范圍控制在5 mm以內(nèi)。
    結(jié)晶器的鋼水液位控制系統(tǒng)由三個(gè)子系統(tǒng)構(gòu)成:(1)信號檢測與放大子系統(tǒng);(2)信號處理子系統(tǒng);(3)PLC及執(zhí)行機(jī)構(gòu)控制子系統(tǒng)。其中(1)、(3)兩個(gè)子系統(tǒng)的功能相對單一。信號檢測與放大子系統(tǒng)的主要功能是通過電渦流傳感器及其高精度放大器把鋼水液位高度轉(zhuǎn)換成相應(yīng)的電壓信號,通過溫度傳感器將溫度轉(zhuǎn)換成相應(yīng)的電流信號;PLC及執(zhí)行機(jī)構(gòu)控制子系統(tǒng)的主要功能是與信號處理子系統(tǒng)通信,發(fā)出開澆命令,接收其應(yīng)答信號,在開澆過程中根據(jù)信號處理子系統(tǒng)的輸出電流大小,通過PLC和執(zhí)行機(jī)構(gòu)控制中間包的塞棒開啟度,從而控制注入結(jié)晶器的鋼水流量,使結(jié)晶器的液位高度波動范圍小于5 mm。
    系統(tǒng)的核心部分是信號處理子系統(tǒng),其結(jié)構(gòu)框圖如圖1所示。

1 信號處理子系統(tǒng)的硬件設(shè)計(jì)
    信號處理子系統(tǒng)是以ATmega128單片機(jī)為核心的嵌入式系統(tǒng)。系統(tǒng)中的輸入/輸出信號包括:用來實(shí)現(xiàn)開澆聯(lián)絡(luò)的1對開關(guān)量——開澆與應(yīng)答;2路通過A/D轉(zhuǎn)換實(shí)現(xiàn)的模擬量輸入——液位電壓和溫度電流;3路通過D/A轉(zhuǎn)換實(shí)現(xiàn)的模擬量(圖1中只畫出2路)輸出——液位電流、溫度電流及mV補(bǔ)償。輸入/輸出設(shè)備包括:1個(gè)帶觸摸屏、分辨率為320×240的LCD顯示模塊;4個(gè)按鍵的鍵盤;4個(gè)用來指示狀態(tài)的發(fā)光二級管;還有1個(gè)用來發(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 鍵盤
    為了節(jié)省引腳資源,本系統(tǒng)沒有采用獨(dú)立按鍵方式,而是利用一路片內(nèi)A/D轉(zhuǎn)換來實(shí)現(xiàn)4個(gè)按鍵的識別。通過不同按鍵按下后串聯(lián)接到+5 V的使分壓電阻輸出電壓的不同來識別不同的按鍵。4個(gè)按鍵的操作分別對應(yīng)為運(yùn)行(Run)、調(diào)整(Adj)、線性化(Line)、設(shè)置(Set)4個(gè)功能。其中,“運(yùn)行”是指系統(tǒng)的正常運(yùn)行;“調(diào)整”是指在開澆之前,把系統(tǒng)調(diào)整到一個(gè)初始狀態(tài),具體操作是在液位高度為150 mm時(shí),通過對前級放大子系統(tǒng)及信號處理子系統(tǒng)的mV補(bǔ)償,使液位電壓值為4.96 V;“線性化”是在0~150 mm的范圍內(nèi),通過傳感器配合設(shè)定16組不同液位與電壓的數(shù)據(jù);“設(shè)置”是對線性化數(shù)據(jù)輸入的確認(rèn)。
1.3 模數(shù)轉(zhuǎn)換(A/D)
    雖然單片機(jī)片內(nèi)有10 bit的A/D轉(zhuǎn)換器,但由于現(xiàn)場對模塊量的采集精度要求較高,所以本系統(tǒng)采用了12 bit A/D轉(zhuǎn)換器LTC1291來實(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)整初值而對前級放大輸出的毫伏補(bǔ)償,另兩路是為了輸出與液位高度(0~150 mm)、傳感器溫度(0~100 ℃)對應(yīng)的電流4 mA~20 mA。
    (1)毫伏補(bǔ)償
    輸出毫伏補(bǔ)償電路如圖2所示,其目的是在開澆前,通過補(bǔ)償將液位高度與對應(yīng)的輸出電壓調(diào)整到一個(gè)確定的對應(yīng)值,比如在液位高度為150 mm時(shí),使前級放大板的輸出電壓為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ù)值對應(yīng)的輸出模擬量大小可通過電位器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)的模擬電壓,通過電流輸出模塊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)起動或按“Run”按鍵進(jìn)入系統(tǒng)運(yùn)行界面,如圖3所示。顯示內(nèi)容包括3個(gè)部分:其一是輸入量、輸出量和狀態(tài)量的顯示;其中輸入量有:液位、電壓和溫度;輸出量有:液位電流、溫度電流和補(bǔ)償值;狀態(tài)值有:超溫(沒有超溫不顯示)、開澆/停澆、正常/異常。其二是以20像素/s的速度動態(tài)繪制反映液位波動情況的實(shí)時(shí)曲線。其三是通過觸摸屏實(shí)現(xiàn)6個(gè)按鍵,其功能如下:

 

 

    ①縮放:分別用放大倍數(shù)為1、2、4的比例,對液位高度的坐標(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)范圍。
    ④翻頁:在顯示歷史曲線狀態(tài)時(shí),可翻看滾動儲存的五個(gè)頁面之一的液位曲線。
    ⑤實(shí)時(shí):從顯示歷史曲線切換到顯示實(shí)時(shí)曲線的狀態(tài)。
    ⑥歷史:從顯示實(shí)時(shí)曲線切換到顯示歷史曲線的狀態(tài)。
    (2)工作調(diào)整界面
    工作調(diào)整界面通過面板上的“Adj”按鍵進(jìn)入,其主要作用是在開澆前對前級放大板進(jìn)行調(diào)整,調(diào)整過程中顯示液位高度和對應(yīng)的電壓值。
    (3)自動補(bǔ)償界面
    自動補(bǔ)償界面可以在工作調(diào)整結(jié)束返回系統(tǒng)運(yùn)行界面時(shí),由系統(tǒng)執(zhí)行自動補(bǔ)償時(shí)顯示,也可以在開澆指令下達(dá)后執(zhí)行自動補(bǔ)償時(shí)顯示,目的是為了避免工作調(diào)整時(shí),因人工調(diào)整的精度不夠準(zhǔn)確而造成的誤差。
    若補(bǔ)償成功,則返回系統(tǒng)運(yùn)行界面,并在其中顯示相應(yīng)的補(bǔ)償值;補(bǔ)償失敗,則顯示異常,并用蜂鳴器報(bào)警。
    (4)線性化界面
    線性化界面示意圖如圖4所示,目的是為了設(shè)置不同液位高度所對應(yīng)的液位電壓。由于傳感器參數(shù)不一定完全相同,所以一旦更換了前級信號檢測子系統(tǒng)中的傳感器,就必須做一次線性化處理。具體操作是在0~150 mm范圍內(nèi)設(shè)置16組數(shù)據(jù),通過人工調(diào)整檢測鋼板和傳感器之間的距離來模擬液位高度,設(shè)置每個(gè)點(diǎn)的液位高度和相應(yīng)的電壓。其中,序號值分別為0~15,高度為液位高度的毫米值,原值為本次修改前該液位高度對應(yīng)的電壓值,現(xiàn)值是對當(dāng)前液位高度設(shè)置的液位電壓值。設(shè)置好的數(shù)據(jù)保存在單片機(jī)片內(nèi)的E2PROM中。

    線性化界面可通過面板上的“Line”按鍵進(jìn)入,顯示線性化界面后,再按“Line”按鍵可在16個(gè)柱形圖中循環(huán)切換具體位置(柱形圖由空芯變?yōu)閷?shí)芯顯示),再通過調(diào)整鋼板與傳感器的間距,在需要設(shè)定時(shí)按下面板上的“Set”按鍵即可確認(rèn)設(shè)置,設(shè)置確認(rèn)后即在線性化界面上顯示出參數(shù)及相應(yīng)的矩形圖。
2 信號處理子系統(tǒng)的軟件設(shè)計(jì)
    軟件設(shè)計(jì)是用C語言編程實(shí)現(xiàn)的,通過ICCAVR編譯生成目標(biāo)代碼,再通過軟件AVR Studio 4和仿真器JTAG下載到ATmega128單片機(jī)中。
    整個(gè)程序在主控模塊的大循環(huán)控制下運(yùn)行,在運(yùn)行過程中,根據(jù)系統(tǒng)的當(dāng)前運(yùn)行狀態(tài)以及面板按鍵和LCD觸摸屏按鍵的監(jiān)控結(jié)果調(diào)用相應(yīng)的子程序完成具體功能。
2.1 主控模塊結(jié)構(gòu)
    主控模塊在完成對系統(tǒng)進(jìn)行的初始化工作后,即顯示系統(tǒng)運(yùn)行界面,然后進(jìn)入主循環(huán)。在主循環(huán)中根據(jù)運(yùn)行狀態(tài)和采集到的用戶對面板按鍵和系統(tǒng)運(yùn)行界面中的觸摸屏按鍵的操作,對當(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ā)送低電平的片選信號到ADC的CS引腳;
    (2)發(fā)送正脈沖到ADC的DIN引腳;
    (3)發(fā)送4 bit的控制信號,明確通道號和數(shù)據(jù)格式;
    (4)采用串行方式逐位將轉(zhuǎn)換的結(jié)果從DOUT引腳讀出;
    (5)轉(zhuǎn)換結(jié)束,片選信號上升為高電平。
    需要注意的是:串行數(shù)據(jù)每個(gè)bit的I/O都是在CLK引腳的脈沖配合下完成的。
2.3 數(shù)摸轉(zhuǎn)換(D/A)子程序
    D/A轉(zhuǎn)換用來實(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ù)通過CLK時(shí)鐘脈沖逐位地輸入到LTC1451的寄存器中[3],供LTC1451進(jìn)行D/A轉(zhuǎn)換,并將轉(zhuǎn)換后的模擬信號,由DOUT引腳輸出給AD694芯片,再經(jīng)AD694將此模擬信號轉(zhuǎn)換成4 mA~20 mA的直流電流信號給PLC控制子系統(tǒng)。
2.4 LCD顯示子程序
    系統(tǒng)根據(jù)需要組織了24×24和16×16兩種漢字庫,還組織了8×16和8×13兩種字符點(diǎn)庫,所有點(diǎn)陣庫存放在ATmega128單片機(jī)的程序存儲器中,在顯示界面時(shí),通過相應(yīng)子程序來實(shí)現(xiàn)。實(shí)現(xiàn)顯示功能的子程序是通過分區(qū)方式直接寫入顯示存儲器的不同區(qū)域來完成的,主要子程序按功能可分三類:
    (1)基本操作子程序。主要包括寫命令、寫數(shù)據(jù)、在指定坐標(biāo)處讀/寫入數(shù)據(jù)等。
    (2)字符及圖形顯示子程序。主要包括漢字和圖形的繪制子程序。
    (3)觸摸屏處理子程序。主要包括SPI讀/寫數(shù)據(jù)及響應(yīng)觸摸、確定鍵位等子程序。
3 實(shí)際系統(tǒng)運(yùn)行情況
    本系統(tǒng)已投入實(shí)際,穩(wěn)定運(yùn)行后,液位波動范圍可控制在3 mm以內(nèi),完全達(dá)到了設(shè)計(jì)要求。
    本系統(tǒng)成功地解決了冶金企業(yè)連鑄生產(chǎn)過程中對鋼水液位監(jiā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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。