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