|
摘要:設計了一種基於北京ARM開發板處理器和μC/OS II的嵌入式電機電物理量采集係統:該係統選用低噪聲低功耗芯片,對模擬電路進行信號調理和高速采集;采用高性能工業級ARM微處理器(S3C2410一S),結合軟件算法進行實時數字信號處理.實驗結果表明該係統具有體積小、重量輕、功耗低、精度較高、實時性好等優點,能有效的采集電機電流、電壓信號,進而使上位機能更方便的進行電機電物理量分析.
O 引言
自19世shi紀ji發fa明ming發fa電dian機ji和he電dian動dong機ji以yi來lai,由you於yu電dian能neng應ying用yong方fang便bian,電dian動dong機ji的de性xing能neng優you良liang,便bian於yu控kong製zhi,使shi用yong與yu操cao作zuo簡jian單dan,從cong而er得de到dao了le迅xun速su普pu及ji,應ying用yong範fan圍wei越yue來lai越yue廣guang.然而,由於電機運行機製複雜,長期處於高速運轉和高電壓、強磁場環境之下,運行環境惡劣,要求電機設備不出故障是不現實的,絕對安全可靠的電機設備也是根本不存在的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 IItigongdejinjinshiyigerenwutiaodudeneihe,yaoxiangshixianyigexiangduiwanzheng,shiyongdeqianrushishishiduorenwucaozuoxitong,haixuyaoxiangdangduodekuozhanxingdegongzuo,zhuyaobaokuo:建立文件係統(本係統以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核的微控製器也使之較傳統的係統在可靠性、體積、功耗、性價比等方麵都具有明顯的優勢,使之有廣泛的應用前景和作用。
|