0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于S3C44B0X微处理器实现运动系统电流信号采集电路的设计

电子设计 来源:微计算机信息 作者:程建辉;肖金壮 2021-03-24 16:23 次阅读

1 引言

运动控制系统在国民经济和国防等领域中所起的作用以及应用的范围越来越大,运动控制技术正在不断的深入到各个领域并迅速发展,其应用范围已经涵盖了几乎所有的工业领域。例如在生产过程中对机器人手的位置控制;造纸厂中纸张滚卷的恒张力控制;导弹制导系统控制导弹准确击中目标等。

为了保证及时发现运动控制系统中可能发生的各种故障,应在系统中加入故障检测子系统。电机驱动运动控制系统中的大部分机械故障和电气故障都会引起电机电流的异常变化,非线性能量算法能够从电流信号中提取出系统故障信息,从而及时检测出系统中可能产生的各种故障。

本文首先以三星公司的S3C44B0X微处理器为核心芯片,设计电流信号采集电路,然后介绍了非线性能量故障诊断算法。最后以X-Y运动平台为实验对象,验证该算法的有效性。

2 信号采集电路设计

S3C44B0X具有8通道的10位模数转换器ADC),它是一个逐次逼近型的ADC,内部结构中包括模拟输入多路复用器,自动调零比较器时钟产生器,10位逐次逼近寄存器和输出寄存器。该ADC还提供可编程选择的睡眠模式,以节省功耗。使用S3C44B0X的ADC时应当注意,在ADC退出休眠模式后,为使ADC参考电压稳定,在第一次A/D转换之前需等待10ms。通道切换时,应该保证至少15μs的时间间隔。

S3C44B0X的ADC输入电压范围为:0“2.5V,而被测电机电流信号的变化范围是:-5V”+5V。因此首先应将双极性的输入信号转化到0“2.5V范围内。如果采样频率高于100Hz,还应在信号输入通道加上采样保持器。

基于S3C44B0X微处理器实现运动系统电流信号采集电路的设计

图 1: 模拟信号调理电路

图1中利用μA741通用型运算放大器构成升压电路,选用LF398作为采样保持器。可知图中各节点电位的关系可用(1)式表达,从而将-5V”+5V变化范围的被测信号转化到0“2.5V。

3 故障检测算法

为了及时检测出系统中产生的故障,需要对电机电流信号进行实时处理,从中提取出故障信息。文献[3,4]给出了一种非线性能量算法NEO (Nonlinear Energy Operation),可以用来检测出信号的异常变化。对于给定的信号序列x(n),非线性能量算法定义如下:

文献在NEO中引入时域窗口的概念,在此基础上提出了光滑非线性能量算法SNEO(SmoothedNonlinear Energy Operation)。该算法可用下式描述:

其中 ⊗为卷积运算符,ω为时间窗口(time window)。式中的ω(k)可以按照下式选取:

为了达到理想的检测效果,也可以采用多步SNEO:

其中:

通过选择适当的时间延迟m,可以有效减少采样噪声的影响。

4 信号采集和分析

为了快速准确的检测出系统发生的故障,需要设置适当的滤波器参数(比如多步SNEO算法中的b和m),这就要首先对被检测信号进行分析处理。ARM芯片虽然能够实时处理大量的数据,但是缺乏上位机(如工控机)专用软件具有的强大数据分析处理功能。这里选用科学研究中经常用到的MATLAB软件对ARM系统采集到的数据进行离线分析处理,得到所需的滤波器参数。

为了方便将ARM采集到的数据导入到MATLAB中,首先编写了MATLAB和ARM系统的串行通信程序。要确定MATLAB环境已安装了仪器控制工具箱(Instrument Control Toolbox)。在MATLAB中,可以通过创建串口对象,来实现MATLAB与串口设备的通信。

创建串口对象可使用如下的语句:

bj = serial(‘port’, ‘PropertyName’, Property Value ,。..)

其中obj为创建的串口对象;port为串口对象所对应的串行口,如COM1;PropertyName和PropertyValue分别为串口属性名称和相应的取值,两者需成对出现。创建串口对象之后,在进行串口的读写操作之前,还需调fopen函数来建立串口对象同串口设备的实际连接。

可以使用fprintf和fwrite函数向串口设备发送数据,其中fprintf用于向串口设备发送文本信息,fwrite用于向设备发送二进制数据。MATLAB提供了很多函数,利用这些函数可以方便灵活的读取串口设备发送的信息;其中最常用的两个读串口函数为fread和fscanf,fread用于从串口设备读取二进制信息,fscanf用于读取设备发送的文本信息。

如果不再使用串口,应将串口对象同设备断开,然后将其从内存和MATLAB工作空间中删除。可以使用fclose,delete,chear来完成这一系列操作。

下面给出的MATLAB脚本文件用于接收ARM系统采集到的5000个双字节数据,并将这些数据存储到100×50的矩阵data中。这样就可以方便的利用MATLAB强大的数据分析处理功能,从得到的数据中总结出有用的信息。

s = serial(‘COM1’,‘BaudRate’,115200,‘Terminator’, {‘’,‘’});

data = zeros(100,50);

fopen(s);

for i = 1:50

fwrite(s,0x1,‘char’);

tmp = fread(s,100,‘int16’);

data(:,i) = tmp;

for j = 1:1000

j=j;

end

end

fclose(s);delete(s);clear s;

ARM系统的串口发送程序如下。在ARM的串口接收中断服务程序中将URXD0Flag赋值为1,这样每当ARM接受到MATLAB发送过来的SOH (Start of Header)字符,即0x1,便会向MATLAB发送100个双字节数据。sl和sh分别存放数据的底八位和高八位。

while(1) {

if(URXD0Flag) {

for(j = 1; j <= 100;j++) {

sl = signal[ i] & 0xff;

sh = (signal[i++] & 0xff00)>>8;

Uart_SendByte(sl);

Uart_SendByte(sh);

}

URXD0Flag = 0;

}

if(i >= 5000)

break;

}

5 算法验证

这里以X-Y运动平台为实验对象,设计了系统故障实时检测实验,验证故障检测算法的有效性。首先通过实验得到X-Y平台正常工作时电机的电流信号TN,然后在平台运动过程中给平台施加一个额外的阻力(模拟故障发生的情况),得到电机输出电流信号为TF。通过对这两种情况下的电流偏差信号TE(TE=TN-TF)进行分析,可以从中提取出故障信号。

S3C44B0X通过ADC采集到的TN,TF信号,以及TE随时间的变化曲线分别如图2和图3所示。

图 2: TN,TF 变化曲线图 3: TE 随时间变化曲线

从图3可以看出,TE信号中存在较多的干扰信息,为了准确无误的检测出其中的故障信号,就应采用某种滤波算法对TE进行处理,从而将故障信号提取出来。图4和图5分别是采用NEO和多步SNEO(m=50,b=50)两种方法对TE进行处理,得到的信号曲线。

图 4: 利用NEO 对TE 进行处理的结果曲线图 5: 利用多步SNEO 对TE 进行处理的结果曲线

比较图4和图5可以看出,多步SNEO能够更好的消除干扰噪声的影响,将故障信息成功地提取出来。但是利用SNEO会引入一定的延时,从而造成故障被检测出时间的滞后。从式(5)和式(6)可知,当m=50,b=50,采样频率为500Hz时,滞后时间为:

6 结论

本文利用非线性能量算法对电机电流偏差信号进行分析,能够及时发现运动控制系统中发生的各种扭矩相关故障,从而提高系统故障检测环节的准确性和及时性。可以在此基础上设计系统容错环节,使系统的安全性和可靠性得到更好的保证。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    447

    文章

    47788

    浏览量

    409098
  • 微处理器
    +关注

    关注

    11

    文章

    2131

    浏览量

    81407
  • 模数转换器
    +关注

    关注

    25

    文章

    2299

    浏览量

    125988
收藏 人收藏

    评论

    相关推荐

    S3C44B0x移植源代码

    S3C44B0x移植源代码UCOS_II.C,INCLUDES.H,OS_CFG.H,OS_CPU.H,OS_CPU_A.S,OS_CPU_C.C,OS_TASK.
    发表于 07-07 09:36

    S3C44B0X数据手册 datasheet

    S3C44B0X数据手册1产品预览介    绍三星的S3C44B0X 16/32位RISC处理器被设计来为手持设备等提供一个低成本高性能的方案
    发表于 11-13 10:50

    采用S3C44B0X作为主控芯片,在开发板上移植

    如图1所示。 ARM微处理器S3C44B0X随着嵌入式产品对高处理速度、网络通信、实时多任务、超低功耗等需求的增长,高端嵌入式处理器已经得到了普遍认可和广泛应用。目前比较流行的嵌入式
    发表于 06-01 09:37

    学习ARM一定会用到的芯片S3C44B0X

    支持,和一个32 位的硬件乘法器。S3C44B0X 通过提供全面的、通用的片上外设,大大减少了系统电路中除处理器以外的元器件配置,从而最小化系统
    发表于 03-12 17:06

    谁有闲置的s3c44b0x开发板可以转让?

    需要一块s3c44b0x开发板完成一些实验,哪位朋友有用不着的可否转让???
    发表于 04-11 10:11

    ARM7和ARM9 s3c44b0x资料

    ARM7和ARM9 s3c44b0x资料
    发表于 07-12 21:09

    ARM CPU S3C44B0XC54X DSP的接口设计

    1 ARM CPU S3C44B0X的特点 ARM是一款32位的精简指令集(RISC)处理器架构,以其高性能、低功耗、低成本占有市场。由于ARM公司采用IP授权的方式经营,全球几乎所有的大半导体公司
    发表于 04-28 09:57

    一种基于S3C44B0X的智能家居嵌入式系统设计

    、有效。近年来,嵌入式系统设备全面渗透到人们日常生活的各个领域,本文针对智能家居嵌入式系统的软硬件设计需求,以S3C44B0X处理器进行智能家居
    发表于 06-21 07:05

    S3C44B0X处理器进行智能家居系统的硬件设计介绍

    日常生活的各个领域,本文针对智能家居嵌入式系统的软硬件设计需求,以S3C44B0X处理器进行智能家居系统的硬件设计,以实现μ
    发表于 07-25 07:39

    uC/GUI在ARM内核S3C44B0X怎么实现移植?

    介绍了uC/GUI在ARM 内核S3C44B0X的移植。实践证明uC/GUI具有良好的实时性和稳定性以及广泛的应用前景。
    发表于 09-27 07:28

    怎么实现基于S3C44B0X和M12模块的GPS接收终端的设计?

    本文介绍一种以目前比较流行的基于ARM7架构的嵌入式处理器S3C44B0X和Motorola的M12模块的GPS数据接收终端的设计。
    发表于 05-12 06:14

    如何利用S3C44B0X和GPRS通讯模块开发基于手机的汽车防盗系统

    采用嵌入式开发技术,利用S3C44B0X和GPRS通讯模块开发了基于手机的汽车防盗系统,该系统能通过车主手机实现对汽车的远程无线监控。
    发表于 05-17 06:22

    怎么实现基于S3C44B0X的嵌入式Socket通信设计?

    本文给出一种适合于中/低端应用的通信平台设计方案,它可支持Ethernet网络之间的数据传输,并且具有RS232、 RS485、 USB等接口。文中围绕嵌入式uClinux环境设计了基于嵌入式通信微处理器S3C44B0X的硬件通信平台,从而
    发表于 05-27 06:59

    基于S3C44B0X微处理器的JFFS2件系统实现

    基于S3C44B0X微处理器的JFFS2件系统实现
    发表于 03-28 09:50 16次下载

    微处理器S3C44B0X音频文件播放

    微处理器S3C44B0X音频文件播放 S3C44B0X是三星公司针对嵌入式系统推出高性价比微处理器,它是基于ARM7TDMI内核的16/3
    发表于 03-16 11:46 715次阅读
    <b class='flag-5'>微处理器</b><b class='flag-5'>S3C44B0X</b>音频文件播放