摘要:设计了一种基于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核的微控制器也使之较传统的系统在可靠性、体积、功耗、性价比等方面都具有明显的优势,使之有广泛的应用前景和价值.