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