工控网首页
>

应用设计

>

基于ARM 处理器的电机物理量采集系统的设计

基于ARM 处理器的电机物理量采集系统的设计

2010/7/1 9:59:00

O 引言

    自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<<l41

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 U

投诉建议

提交

查看更多评论
其他资讯

查看更多

基于ARM嵌入式系统的设计及其应用

14位A/D转换器MAX194在ARM单片机系统中的应用

嵌入式技术ARM在变电站监控系统前端控制器中的应用

纺织行业中ARM嵌入式控制系统的应用

基于ARM 的等精度测频技术在机组转速测控中的应用