摘要:設計了一種基于ARM處理器和μC/OS II的嵌入式電機" title="電機">電機電物理量采集" title="物理量采集">物理量采集系統:該系統選用低噪聲低功耗芯片,對模擬電路進行信號調理和高速采集;采用高性能工業級ARM" title="ARM">ARM微處理器(S3C2410一S),結合軟件算法進行實時數字信號處理.實驗結果表明該系統具有體積小、重量輕、功耗低、精度較高、實時性好等優點,能有效的采集電機電流、電壓信號,進而使上位機能更方便的進行電機電物理量分析.
引言
自19世紀發明發電機和電動機以來,由于電能應用方便,電動機的性能優良,便于控制,使用與操作簡單,從而得到了迅速普及,應用范圍越來越廣.然而,由于電機運行機制復雜,長期處于高速運轉和高電壓、強磁場環境之下,運行環境惡劣,要求電機設備不出故障是不現實的,絕對安全可靠的電機設備也是根本不存在的l1J.因此,我們只能從預防故障和減少損失的角度出發,及時發現電機的異常,掌握設備的運行狀態.對已經形成的或正在形成的故障進行分析診斷,判斷故障的部位和產生的原因,并及早采取有效的措施,防患于未然.這就需要我們能實時的精確的采集電機在運行中的各種物理量,進而進行有效的分析、判斷故障.傳統的數據采集系統多以8/16位單片機構成控制系統,其硬件電路較復雜,集成度較低,設計和調試難度較大,不太方便系統升級.傳統的前后臺式的軟件設計方法限制了硬件系統功能的充分發揮,影響了系統的實時性與穩定性.筆者從ARM9來人手,借鑒了一些新的測試方法,并應用ADS1.2設計出一套電機電物理量采集系統.
1 系統簡介
本系統設計采集電機的電壓、電流2個物理量.其中電流3相都要采集.電物理量采集系統的設計關鍵在于A/D轉換的環節.A/D轉換器是模擬信號源和CPU之間聯系的接口,它的任務是將連續變化的模擬信號轉換為數字信號,以便計算機和數字系統進行處理、存儲、控制和顯示.在工業控制和數據采集及許多其他領域中,A/D轉換是不可缺少的.A/D轉換器有以下類型:逐位比較型、積分型、計數型、并行比較型、電壓一頻率型.主要應根據使用場合的具體要求,按照轉換速度、精度、價格、功能以及接口條件等因素決定選擇何種類型.本系統的ARM采用三星公司的S3C2410一S,其擁有8路10位A/D轉換器,最大轉換率為500 KPSO1.S3C2A-10一S的A/D轉換器能接受電壓范圍為0—3.3 V,但電機電信號是成正弦波的圖像分布的,超出了A/D轉換器能接受的電壓范圍.所以設計前端調理電路將電信號的正弦波整體向上抬高。使之范圍控制在0—3.3 V.然后將電信號輸出到A/D轉換器.最后經CPU的處理將采集到的數據從串口傳送給計算機.進計算機可以對電機物理量進行相應的分析.
2 系統設計
2.1 硬件設計
該系統主要由前端調理電路、CPU集成電路和計算機組成.基本結構如圖1所示
其中由于S3C2410一S的A/D轉換器能接受電壓范圍為O~3.3 V,但電機電信號是成正弦波的圖像分布的.所以前端調理電路設計將電信號的正弦波負半軸對稱折到x軸上方,使之范圍控制在0-3.3 V.產生波形如圖2所示.
同時電路里產生一個方波信號.當波形屬于被翻上去的部分時方波處于低電平,其他時候處于高電平.以此方波信號在上位機來還原波形.CPU集成電路包括直流穩壓電源電路、A/D電路、主CPU電路和串口電路.A/D電路接受從轉換電路送過來的模擬信號,然后轉換成ARMCPU能接受的數字信號.經過處理后從串口電路傳送給上位計算機.
2.2 軟件設計
2.2.1 μC/OS II操作系統的移植
μC/OS II提供的僅僅是一個任務調度的內核,要想實現一個相對完整,實用的嵌入式實時多任務操作系統,還需要相當多的擴展性的工作,主要包括:建立文件系統(本系統以Flash為存儲介質,建立文件和目錄)、為外部設備建立驅動程序并規范相應的API函數創建圖形用戶接口(GUI)函數、建立其他實用的應用程序接口(API)函數等.本系統中基于μC/OS II內核的RTOS軟件系統總體框圖如圖3所示.
2.2.2 應用程序的設計
該程序采用ADS1.2結合c語言來設計.首先是系統初始化,根據ARM芯片固有的功能和特征,進行主程序的入口設置,所用寄存器清零,程序ROM區和數據RAM區的初始化,中斷矢量設置等主程序運行前的準備工作.以及檢查系統電源,監視芯片上電后的ARM芯片內的硬件運行情況.當ARM芯片運行正常后,進人數據采集軟件的主程序運行.流程圖如圖4所示.
1)AD數據采集.A/D轉換的數據可以通過中斷或查詢的方式來訪問,如果是用中斷方式,全部的轉換時間(從A/D轉換的開始到數據讀出)要更長,因為中斷服務程序返回和數據的訪問的原因,所以采用查詢方式不斷檢測ADCCONt3j(轉換結束標志位)來確定從ADCDAT寄存器讀取的數據是否是最新的轉換數據.
主要代碼有:
#define PRSCVL(20<<6)
#define ADCCON
_
ENABLE_ START(Ox1)
#define STDBM (0x0<<2)
#define PRSCEN(0xl<
void init
_ ADdevice0 //AD設備初始化
{
rADCCON=(PRSCVLlADCCON_ENABLE_STARTISTDBMIPRSCEN);
)
int GetADresuh(int channe1)
{
rADCCON=ADCCON
— ENABLE— START—BYREADI(channel<<3)IPRSCENIPRSCVL;
while(!frADCCON&ADCCON—FLAG)); //AD轉換結束
return f0x3ff&rADCDATO); //返回采樣值
}
2)數據發送.異步串行方式是將傳輸數據的每個字符一位接一位(例如先低位、后高位)地傳送.數據的各不同位可以分時使用同一傳輸通道,因此串行I/O 可以減少信號連線,最少用一對線即可進行.接收方對于同一根線上一連串的數字信號,首先要分割成位,再按位組成字符.為了恢復發送的信息,雙方必須協調工作.在微型計算機中大量使用異步串行I/O 方式,雙方使用各自的時鐘信號,而且允許時鐘頻率有一定誤差。因此實現較容易.主要代碼有:
int Uart_
Init(int whichUart,int baud)
{
if(whichUaxt>=NumberOfUartDrv)
return FALSE;
return serial_
drv[whichUart]->init(baud);
}
int Uart_ SendByte(int whichUart,int data)
{
if(whichUart>=NumberOfUartDrv)
return FALS E;
return serial— .drv[whichUart]->write(data);
}
void Uart_
SendString(int whichUart,char pt)
{
while( pt){
if( pt== \n )
Uart_
SendByte(whichUart, kr );
Uart
_ SendByte(whichUart,*pt++);
)
)
void Uart_Prinf(int whichUart,char fmt,...)
{
va
_ list ap;
static char string[256];
va
_ start(ap,fmt);
vsprinf(string,fmt,ap);
Uart_
SendString(whichUart,string);
va
_ end(ap);
)
3 結論
采集數據分4路,1路電壓和3路的電流.采集時上位機接收到的數據每路每個周期有52個點.既其采樣頻率達到了2 600 Hz.根據奈奎斯特定理,為了完整的保留原始信號中的信息,在進行模擬/數字信號的轉換過程中,要使采樣頻率大于信號中最高頻率2倍. 所以本系統能分析的諧波最高頻率為1.3 kHz,即1-3 kHz/50 Hz:26次諧波.足夠滿足上位機做諧波分析的要求.以S3C2410一S為核心的嵌入式硬件系統,并采用ADS開發相應的應用程序,串口方式實現通信,實現了電機物理量的采集,給上位機分析電機提供了可靠的保障.并且該系統采用的ARM核的微控制器也使之較傳統的系統在可靠性、體積、功耗、性價比等方面都具有明顯的優勢,使之有廣泛的應用前景和價值.