AVR單片機(jī)在多回路數(shù)據(jù)采集器中的應(yīng)用
1 引言
AVR系列單片機(jī)[1]是ATMEL公司于1997年推出的具備高速處理能力的單片機(jī),它采用Harvard總線結(jié)構(gòu),程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分離,可對(duì)具有相同地址的程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器進(jìn)行獨(dú)立尋址的功能。AVR單片機(jī)具有良好的集成性能,具備在線編程接口等功能,在自動(dòng)控制、智能儀表、數(shù)據(jù)采集系統(tǒng)、家用電器等中有廣泛的應(yīng)用。
ATmega系列單片機(jī)屬于AVR中的高檔產(chǎn)品,它承襲了AT90所具有的特點(diǎn),并在AT90的基礎(chǔ)上,增強(qiáng)了更多的接口功能,而且在省電性能、穩(wěn)定性、抗干擾性及靈活性方面都更加周全和完善。ATmega128單片機(jī)是目前ATmega系列單片機(jī)中功能最強(qiáng)的一個(gè)型號(hào),最高工作頻率可達(dá)16MHZ,具有高速運(yùn)行處理能力。它的芯片內(nèi)部集成了較大容量的存儲(chǔ)器和豐富強(qiáng)大的硬件接口電路,并且軟件上有效支持C高級(jí)語(yǔ)言及匯編語(yǔ)言。針對(duì)目前國(guó)內(nèi)工業(yè)電力監(jiān)控行業(yè)中多用戶數(shù)據(jù)采集的需求,研發(fā)了一種基于ATmega128單片機(jī)的多回路、高精度、快速數(shù)據(jù)采集器,主要是監(jiān)測(cè)電流、報(bào)警、狀態(tài)信息,再根據(jù)這些信息形成反饋控制信息,具備遠(yuǎn)程操作能力,不僅可以用于新的電力監(jiān)控系統(tǒng)中,而且可以方便的取代原有網(wǎng)絡(luò)系統(tǒng)中的設(shè)備,具有廣闊的市場(chǎng)前景。該數(shù)據(jù)采集器的關(guān)鍵技術(shù)在于ATmega128微處理器芯片內(nèi)A/D轉(zhuǎn)換器的硬件接口設(shè)計(jì)及AD采集處理軟件編程。
2 ATmega128單片機(jī)的主要特征及其片內(nèi)A/D轉(zhuǎn)換器
ATmega128是一款采用低功耗CMOS工藝生產(chǎn)的基于AVR RISC 結(jié)構(gòu)的8位單片機(jī),其主要性能有:高性能、低功率的8位AVR微控制器,先進(jìn)的RISC精簡(jiǎn)指令集結(jié)構(gòu)。ATmega128單片機(jī)芯片內(nèi)集成了較大容量的非易失性程序和數(shù)據(jù)存儲(chǔ)器以及工作存儲(chǔ)器;豐富強(qiáng)大的外部接口性能;特殊的微控制處理器性能。其主要優(yōu)點(diǎn)是芯片本身自帶看門狗電路,片內(nèi)程序Flash及8通道復(fù)用的10位A/D轉(zhuǎn)換器;通用I/O接口具有很強(qiáng)的驅(qū)動(dòng)能力,可省去一部分驅(qū)動(dòng)電路,節(jié)約了系統(tǒng)成本;附帶同步串行接口SPI,可以實(shí)現(xiàn)與PC機(jī)的聯(lián)網(wǎng)通訊功能;采用符合IEEEstd.1149.1標(biāo)準(zhǔn)的JTAG測(cè)試接口來實(shí)現(xiàn)程序的下載和系統(tǒng)的調(diào)試,因而系統(tǒng)的開發(fā)調(diào)試十分方便;即使已被應(yīng)用于現(xiàn)場(chǎng),也可以隨時(shí)進(jìn)行一定程序的修改。
ATmega128有一個(gè)10位的逐次比較的A/D轉(zhuǎn)換器,ADC與一個(gè)8通道的模擬多路復(fù)用器連接,能夠?qū)σ訮ORTC口作為ADC輸入引腳的8路單端電壓輸入進(jìn)行采樣。ADC包括采樣保持電路,以確保輸入電壓在ADC轉(zhuǎn)換過程中保持恒定。ADC還有一個(gè)噪聲抑制器,在休眠模式下進(jìn)行A/D轉(zhuǎn)換時(shí),應(yīng)用該特性可以降低由MCU內(nèi)核和I/O外圍設(shè)備引入的噪聲。ADC功能單元有獨(dú)立的專用模擬電源引腳AVCC供電。AVCC和VCC的電壓差別不能大于0.3V。ADC轉(zhuǎn)換的參考電源可采用芯片內(nèi)部的參考電源,或采用AVCC,也可采用外部的參考電源,外部參考電源由引腳AREF接入,同時(shí)AREF引腳外部并接一個(gè)電容來提高ADC的抗噪性能。ADC還包含一個(gè)預(yù)分頻器,可以對(duì)輸入的系統(tǒng)時(shí)鐘進(jìn)行分頻,以獲得適合的ADC時(shí)鐘。一次常規(guī)的A/D轉(zhuǎn)換需要13個(gè)ADC時(shí)鐘周期,ADC為用戶提供了內(nèi)部中斷方式的處理,可以滿足實(shí)時(shí)性的要求。
近年來ATmega128單片機(jī)以優(yōu)良而穩(wěn)定的性能廣泛應(yīng)用于各種電力系統(tǒng)智能自動(dòng)化儀表中。
3 多回路數(shù)據(jù)采集器的總體結(jié)構(gòu)
多回路數(shù)據(jù)采集器系統(tǒng)主要由微處理器、AD采集處理部分、參數(shù)設(shè)置、輸出單元、LED顯示和通訊接口等功能模塊組成。
考慮到模擬信號(hào)及開關(guān)量信號(hào)的數(shù)目、速度、精度的要求,系統(tǒng)結(jié)構(gòu)的精簡(jiǎn)、成本以及今后軟硬件的升級(jí)需要,該采集器系統(tǒng)的微處理器功能模塊由ATmega128單片機(jī)來實(shí)現(xiàn)。 AD采集處理部分是本系統(tǒng)設(shè)計(jì)的關(guān)鍵部分,它需要采集8路輸入信號(hào),每路輸入信號(hào)有:1個(gè)電流有效值(0~6A),兩個(gè)有源開關(guān)量輸入(報(bào)警信號(hào)和狀態(tài)信號(hào)輸入)。參數(shù)設(shè)置部分主要設(shè)置本設(shè)備地址和通訊波特率,可設(shè)置本設(shè)備地址范圍為1~63,通訊波特率范圍為4800~38400波特,以滿足用戶多種不同需求。這一功能由軟件編程來實(shí)現(xiàn)。輸出單元同樣有8路輸出,每路有2個(gè)開關(guān)量輸出,用繼電器提供兩個(gè)無(wú)源觸點(diǎn)來實(shí)現(xiàn)。為了避免外部干擾對(duì)信號(hào)影響,信號(hào)的輸入和輸出單元使用高速光電耦合電路。顯示部分用LED顯示報(bào)警信號(hào)與狀態(tài)檢測(cè)信號(hào)輸入、系統(tǒng)電源的通斷信號(hào)以及通訊信號(hào)的工作情況。通訊接口單元采用RS485接口電路,是一種RS232/RS485轉(zhuǎn)換器。該數(shù)據(jù)采集器系統(tǒng)與PC機(jī)通過采用ModBus/RTU協(xié)議實(shí)現(xiàn)通信聯(lián)網(wǎng)功能。
4 系統(tǒng)AD采集處理的實(shí)現(xiàn)
4.1 A/D轉(zhuǎn)換器的硬件接口連接
以ATmega128單片機(jī)為核心的多回路數(shù)據(jù)采集器的A/D轉(zhuǎn)換器的硬件接口電路框圖如圖1所示。ATmega128單片機(jī)的內(nèi)部資源非常豐富,有128KB的閃速存儲(chǔ)器可以編程,4K字節(jié)的SRAM和4K字節(jié)的EEPROM來存儲(chǔ)變量,一般情況下,不需要擴(kuò)展外部的ROM和RAM。
系統(tǒng)的硬件制板主要分為一塊CPU主控板和八塊I/O接口板。CPU主控板主要包括八路電流信號(hào)的采集模塊、參數(shù)設(shè)置模塊、電源模塊、通訊接口模塊及JTAG接口模塊等。將八路開關(guān)量的輸入和輸出單元分別制成八塊I/O接口板,每塊I/O接口板包括兩個(gè)有源開關(guān)量信號(hào)和兩個(gè)繼電器觸點(diǎn)輸出信號(hào)。I/O接口板采用與CPU主控板可脫卸方式連接,主要優(yōu)點(diǎn)在于實(shí)際使用時(shí)可靈活選配,方便實(shí)用,節(jié)省了硬件成本,且儀器出故障時(shí)便于維修更換。
由于電力系統(tǒng)中要測(cè)量的常常是大電流,被測(cè)的電流需經(jīng)過一級(jí)變壓器后才能接入CPU主板,成為主板中電流互感器的模擬輸入信號(hào)。模擬信號(hào)經(jīng)過CD4051多路開關(guān),并由LF124四運(yùn)算放大器將模擬電流小信號(hào)放大。每路的最大輸入電流允許為6A。放大后的模擬信號(hào)利用微處理器提供的內(nèi)部ADC進(jìn)行模數(shù)轉(zhuǎn)換處理,并將10位轉(zhuǎn)換結(jié)果放在ADC數(shù)據(jù)寄存器ADCH和ADCL中。在連續(xù)采樣模式下,ADC連續(xù)取樣,并不斷更新ADC數(shù)據(jù)寄存器。本系統(tǒng)的關(guān)鍵技術(shù)在于八路模擬信號(hào)共用同一個(gè)放大電路,既可解決一致性問題,又可節(jié)約硬件成本。同時(shí)八路模擬輸入信號(hào)全部用模擬多路開關(guān)進(jìn)行隔離,避免信號(hào)之間的相互干擾。為了確保采集的速度,需ATmega128微處理器對(duì)八路模擬信號(hào)進(jìn)行連續(xù)高速巡回檢測(cè),并在模擬多路開關(guān)切換時(shí)進(jìn)行軟件消抖。由于系統(tǒng)被測(cè)交流電流變化緩慢,在組成對(duì)模擬信號(hào)的自動(dòng)巡回檢測(cè)模塊時(shí),沒有加入采樣/保持器電路。對(duì)八路模擬信號(hào)還采用數(shù)字濾波和分段線性補(bǔ)償?shù)溶浖夹g(shù),增強(qiáng)抗干擾性,使信號(hào)采樣保持在最佳線性狀態(tài),以保證測(cè)量的精確度。
所有輸入、輸出開關(guān)量信號(hào)都采用光電隔離器實(shí)現(xiàn)系統(tǒng)與現(xiàn)場(chǎng)信號(hào)的隔離,提高系統(tǒng)的
抗干擾能力。I/O接口板中報(bào)警和狀態(tài)信號(hào)燈工作時(shí)電源供電都為DC24V,LED顯示對(duì)報(bào)警和狀態(tài)信號(hào)有無(wú)進(jìn)行實(shí)時(shí)的狀態(tài)報(bào)告。I/O接口板提供的2個(gè)繼電器觸點(diǎn)輸出信號(hào),有信號(hào)輸出時(shí),繼電器觸點(diǎn)將閉合。其中繼電器采用OMRON G6B-114AP,體積小,觸點(diǎn)允許接通的最大信號(hào)為:5A,250V(交流)或 5A ,30V(直流)。
一般微處理器本身不具備串行通信接口功能,因此,可以通過外接串行接口電路加以擴(kuò)展。在采集器的通訊接口電路設(shè)計(jì)中,系統(tǒng)的通訊接口電路部分需要配備有RS485接口,接口芯片采用Sipex的工業(yè)級(jí)帶高靜電保護(hù)的芯片SP485EEN,使通信更可靠。該系統(tǒng)具備遠(yuǎn)程操作能力,可以實(shí)現(xiàn)遠(yuǎn)程輸入/輸出。
4.2 數(shù)據(jù)采集和AD處理的軟件實(shí)現(xiàn)
數(shù)據(jù)采集是該多回路數(shù)據(jù)采集器軟件編程部分的主要模塊,在循環(huán)執(zhí)行數(shù)據(jù)采集程序的同時(shí),還間隔地調(diào)用了時(shí)鐘定時(shí)中斷子程序,數(shù)字濾波子程序和分段線性補(bǔ)償子程序等。系統(tǒng)上電執(zhí)行初始化程序,復(fù)位個(gè)端口。通過操作按鍵確定了采集系統(tǒng)時(shí)間段的初始時(shí)間之后,系統(tǒng)開始對(duì)0~7通道間隔1s時(shí)間采集一次電流值,調(diào)用數(shù)字濾波子程序進(jìn)行濾波得到精確的數(shù)值。再通過數(shù)據(jù)轉(zhuǎn)換和處理后送微處理器的數(shù)據(jù)存儲(chǔ)器,等待PC機(jī)的讀取。
數(shù)據(jù)采集處理的實(shí)現(xiàn)采用AVR單片機(jī)C編輯器——ICCAVR編程,以下是系統(tǒng)查詢讀AD子程序和AD處理的部分程序。
1.查詢讀AD子程序
#define ADC_VREF_TYPE 0x00 // Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{ ADMUX=adc_input|ADC_VREF_TYPE; // Start the AD conversion
ADCSRA|=0x40; // Wait for the AD conversion to complete
while ((ADCSRA 0x10)==0);
ADCSRA|=0x10;
return ADCW; }
2.AD處理程序
while (ad_end) // ad_end是位標(biāo)志,=1表明AD轉(zhuǎn)換完畢
{ if (temp>2) //采集3組AD值
{ PORTG |=0x08; // PORTG.3=1 ; 關(guān)閉多路開關(guān)
ad_ii=ad_i;
ad_ii++;
if(ad_ii>7)ad_ii=0;
PORTF =0xF1;
PORTF |=adtondao[ad_ii]; //切換AD通道
PORTG =0XF7; /*PORTG.3=0; 打開多路開關(guān)*/
data_cl(); //本組(第三組)AD計(jì)算子程序 ad_end=0;
data[2]=adresult.adzhi;
data_cl2(); //3組AD數(shù)字濾波程序
temp=0;
ad_i=ad_ii; }
else
{ data_cl(); //計(jì)算一組AD值
ad_end=0;
data[temp-1]=adresult.adzhi; //存AD值 } }
5 結(jié)束語(yǔ)
ATmega128微處理器本身帶有多路10位精度的逐次比較式A/D轉(zhuǎn)換器,在該多回路數(shù)據(jù)采集器系統(tǒng)中可以顯著地降低成本。由于ATmega128的A/D轉(zhuǎn)換器轉(zhuǎn)換速度比較高,可以采取一些數(shù)字濾波算法來得到較為精確和穩(wěn)定的轉(zhuǎn)換結(jié)果。利用C語(yǔ)言編程,使該多回路數(shù)據(jù)采集器系統(tǒng)的硬件設(shè)計(jì)變得簡(jiǎn)單,AD采集處理編程也容易,大大縮短了開發(fā)周期。采集器樣機(jī)經(jīng)廠家與標(biāo)準(zhǔn)0.2級(jí)電流表對(duì)照試驗(yàn),多路電流測(cè)量都已超過0.5級(jí)表的標(biāo)準(zhǔn);由于它直接對(duì)交流信號(hào)波形進(jìn)行采樣運(yùn)算,因此其精度、響應(yīng)速度比采用直流采樣方法的高,而且系統(tǒng)更新、維護(hù)方便,為今后開發(fā)系列化產(chǎn)品打下了良好的基礎(chǔ)。
參考文獻(xiàn):
[1]耿德根、宋建國(guó),AVR高速嵌入式單片機(jī)原理及應(yīng)用[M],北京:北京航空航天大學(xué)出版社,2001.
[2]常廣、王毅,電力系統(tǒng)在數(shù)據(jù)采集系統(tǒng)的研制[J],微計(jì)算機(jī)信息,2003,(2):31-32.
[3]馮健、張化光,高速實(shí)時(shí)數(shù)據(jù)采集裝置及其測(cè)量方法[J],儀器儀表學(xué)報(bào),2005,(8):256-257.
分頻器相關(guān)文章:分頻器原理 隔離器相關(guān)文章:隔離器原理
評(píng)論