基于ARM的振动信号采集及文件存储系统

发布者:石头上种庄稼最新更新时间:2021-05-17 来源: eefocus关键字:ARM 手机看文章 扫描二维码
随时随地手机看文章

引言


在机械结构的振动过程中,许多微弱信号包含机械运动的丰富特征信息,如故障特征信息等,有必要提取出来加以分析。在微弱信号提取过程中,有时信号非常微弱,极易受到外界的干扰而淹没于强噪声之中,有时被测信号振幅变化范围又很大,会绐信号采集带来很大困难。放大电路本身的噪声性能和频率特性也将影响信号的提取精度。对振动信号的采集及处理,通常是用普通的数据采集系统去采集,然后用数字信号处理的方法来提取数据的特征信息。但是,一些由于采集系统的不足对信息造成的损失,是后期的数字信号处理无法补偿的。振动信号的检测是机械系统状态检测和早期故障诊断的关键,机械系统早期故障引起的异常振动信号有时很微弱,而且持续时间短、信噪比低,容易淹没于背景噪声中。


1 系统功能结构


针对信息化管理程度,该系统设计成既可作为一个独立系统单独运行,又可作为功能模块无缝整合接入基于ARM的信息管理系统。该系统功能结构如图1所示。



信号调理模块:通过加速度传感器采集微弱振动信号,进而经过信号调理电路(包括程控调节增益)送到LPC1768的A/D转换模块进行采集。


PC机通信模块:通过USB接口与PC机通信,可实现文件数据的增加、删除、新建等功能。


SD卡存储模块:基于FatFs文件系统的存储设计,通过SPI总线与主芯片通信,可完成数据的任何格式(如Wav)的写入,也可对SD卡内的数据进行读取。


语音播报模块:在测试过程中实时语音提醒用户当前的操作状态,语音命令预存储在SD卡内,可通过SPI总线通信进行。


2 硬件电路设计


2.1 信号调理电路设计


信号调理电路主要包括压电式加速度传感器、电荷放大电路、两级程控放大电路、带通滤波电路和电压抬升电路等。


加速度传感器:把振动信号转化为电荷信号,此处采用压电式加速度传感器,灵敏度高达1.294 pC/m·s-2,本实验主要测试频率段为1~10 kHz。


电荷放大电路:把微弱的电荷信号放大成电压信号。运算放大电路选择AD823,是双通道、精密、16 MHz带宽和高增益的放大器;反馈电容C决定了电荷转电压输出的大小以及电荷放大的频率响应特性,电容性能的好坏直接决定着电荷放大器是否稳定,此处反馈电容C设定为100 pF;反馈电阻主要作用是抑制反馈电容引起的零点漂移,由电荷放大器的下线截止频率



可知,在C一定的情况下,要保证下限截止频率,反馈电阻R必须尽可能大,此处设定为100MΩ。


带通滤波电路:设计由低通滤波电路和高通滤波电路组合的带通滤波电路,可根据通带频率计算出电阻电容值,本实验通带频率为1~10 kHz。


电压抬升电路:利用运放将电压抬升到1.5 V,同时增加了电位器的设计,可实现对抬升电位的灵活调节。


2.2 信号放大电路设计


该调理电路最突出的特点是运用数字电位器AD5245来实现对信号的自适应放大,如图2所示。



数字电位器AD5245可实现与机械电位器或可变电阻相同的电子调节功能,具有增强的分辨率、固态可靠性和出色的低温度系数性能,可通过IC兼容型数字接口控制,其调节范围可达256位。在数据采集中,主芯片LPC1768通过预采样值来判断AD5245的调节范围和调节方向,并通过I2C总线对放大倍数进行调节。


由表1可知,AD5245有多种连接方式。针对此实验,本文采用的连接方式如图3所示。



这种接法放大器的放大倍数为Rd/R,可对放大倍数进行256位分辨率的调节。


3 软件及算法设计


3.1 FatFs文件系统


FatFs是一个为小型嵌入式系统设计的通用FAT文件系统模块。FatFs的编写遵循ANSIC,并且完全与磁盘I/O层分开。独立于硬件架构,可以被嵌入到低成本的微控制器中。其结构图如图4所示。



FatFs具有非常清晰的层次结构,应用层为用户提供一系列API函数,如f_open、f_close、f_read、f_write等,用于对文件的读写等;中间层FatFsModule为Fat协议层;最底层是用户在移植过程中需要处理的接口,包括存储媒介读/写接口DiskIO和文件修改时间所需的实时时钟。根据层次式软件设计的思想,将软件工作分为3步:SD卡的通信实现、RTC时钟配置和FatFs的移植。


①SD卡的通信实现。通过SPI总线系统实现SD卡与LPC1768、PC机的通信,可实现采样数据的自动存储与通过PC机对SD卡内数据的新建、删除、修改和查找等功能。主要包括SPI模式的配置、SPI字节的读写实现、SD卡的读写实现和USB接口的配置。


②RTC时钟配置。利用LPC1768内含的RTC设备实现实时时钟功能,主要包括时钟频率的选择SysTick_Config、RTC实时时钟的初始化RTC_Init及设定RTC_SetFullTime,为文件系统提供准确的时间,可实现对每个存储文件的时间标记。


③FatFs的移植。对FatFs接口函数的编写,主要包括:存储介质初始化函数disk_initialize、存储介质状态检测函数disk_status、读扇区函数disk_read、写扇区函数disk _write、存储介质控制函数disk_ioctl等。


3.2 算法设计和软件流程实现


LPC1768微控制器内置一个8通道的12位A/D转换器,而该采集系统仅用到单路信号输入,可以实现较高频率的采样,提高了采集数据的精度。软件设计思想是在系统初始化后首先进行模式的判断,分为采集模式和USB通信模式。在采集模式下,正式数据采集存储前先进行数据预采集,对预采集的信号进行采样处理,计算采集到的信号的幅值差,并与满量程3.3 V进行判断是否需要调节和计算出调节值。通过I2C总线来调节AD5245,预调节完成后进行正式信号采集,把采集到的数据进行数字滤波并存储到数组中,数组中的数据通过SPI总线存储在SD卡中,存储完成后通过功放播放语音信号提示完成。USB模式主要为SD卡中数据与PC机的通信。主流程如图5所示。



3.2.1 信号幅值检测的算法


在程控放大器的设计中,对被测信号振幅的检测至关重要,它是实现程控放大的关键。以往的程控放大器,多数是根据被测信号的幅值来调节程控放大器的放大倍数,此方法比较适合直流信号的检测。交流信号的幅值是变化的,若根据被测信号的幅值调节程控放大器的增益,需要时刻改变程控放大器的增益,这将浪费CPU的很多资源,影响了A/D转换的速度,限制了被测信号的范围。因器件程序的计算和器件的延时也会给测量结果带来很大的误差,不适合做高频信号的采集。


故本设计采用预采集进行幅值判断,具体方法为开辟定长的数组Buffer用来存储预采集信号,同时注意在设定此Buffer长度的时候,一定要满足该长度至少为待采集信号的一个周期,然后对预采集信号进行处理判断,确定调节值及调节方向。


对预采集信号的处理:首先要计算出数组中的最大值和最小值,由于定义的数组可能较大,故给出一种新的算法代码,以大幅提高其效率(n很大时)。具体做法是:每次成对地处理数据,先将一对元素进行比较,然后把较大者与当前最大值比较,较小者与当前最小者比较,因此每两个元素需要比较3次。具体实现时需考虑n的奇偶,n为奇数,3×(n /2)次;n为偶数,3n/2—2次,因此总的比较次数至多为3×(n-2),大大提高了计算的速度。


根据以上算法可得△V=Vmax-Vmin,故需要调节的放大倍数β约为:



这样就计算出了需要调节的AD5245_W的调节值,通过I2C总线通信完成调节,进而进行数据的正式采集。


4 实验结果及分析


通过对系统进行设计和实现,并对系统进行了测试,在采样频率为50 kHz下,对振动信号进行采样分析,预采集信号时间长度为50 ms,正式采集长度为4 00ms,由频带为1~10 kHz的激励源来激振被测物体,同时实验存储数据格式为标准的WAV格式。通过USB接口上传到PC,用上位机频谱分析软件对实验数据原信号和频谱分析进行对比试验,试验现象如图6所示。



通过对普通采样系统和本系统采样的原信号对比,可见在相同振动激励下普通信号采集系统采集出信号的幅值最大值约为1000,并未填满A/D转换采集模块最大的量程4096而本系统通过对信号的自适应放大,可将采集信号幅值最大提高到4 000左右,在一定程度上提高了信号采集的精度。


对普通采样系统和本系统采样信号的频谱分析图进行对比,如图7所示。



可见普通采集系统的信号的频谱分析不仅能量值较小,而且易受到其他频率波的干扰,信噪比较低,影响了对信号特征的有效分析,而本采集系统则能较好地解决此类问题。

关键字:ARM 引用地址:基于ARM的振动信号采集及文件存储系统

上一篇:基于FPGA+ARM的数据采集系统设计
下一篇:ARM7 lpc2148之单路LED控制实验

推荐阅读最新更新时间:2024-11-10 12:57

ARM 的Thumb状态测试
作为一个使用ARM的学习者,有必要全面了解你的处理器内核。尽管有些内容可能在实际应用中用不到,但是 了解 还是很必要的。Thumb状态,是ARM的一个特色,但是你知道Thumb状态与ARM状态最大的区别是什么,ARM公司设计Thumb状态的初衷是什么? 带着这些问题,我就Thumb状态写了一个简单的程序以作测试。测试平台是ADS1.2,先贴上测试代码。 GET 2440addr.inc AREA Init,CODE,READONLY CODE32 ENTRY EXPORT __ENTRY __ENTRY b ResetHandler b HandlerUndef ;han
[单片机]
ARM发布史上最强显示控制器:2.5K/4K屏有福了
ARM今天宣布推出其史上最强性能、最高能效的显示控制器 Mali-DP650 ,重点强化了对设备屏幕分辨率的支持。 Mali-DP650搭配ARM CoreLink MMU-500系统总线,可以支持各种不同分辨率,尤其是优化了对2560 1600(平板机)、2560 1440(手机)这种2.5K屏的支持,同时也能轻松支持3840 2160 4K分辨率和60fps帧率,并且能将4K视频从移动设备流传输到 大屏显示器上进行播放。 相比于上代Mali-DP550,它还将AXI总线位宽翻番到了128-bit,支持MMU预取、更多的4K复合层,对内存延迟的处理也更好。
[嵌入式]
ARM9中断与PC
1, 假设当前是PC,PC-4,PC-8。当前 取指PC =当前PC,当前 译码PC =当前PC-4, 当前 执行PC =当前PC-8。例如,如下图所示,当前 取值PC =16,当前 解码PC =12,当前 执行PC =8。 2, 发生IRQ异常,执行保护操作,LR中保存由于FIQ或IRQ占先而没有被执行完的指令的地址的下一条地址(LR中保存的是当前PC的值,也就是取值的指令地址),即LR指向了指令地址=16的指令,但指令地址=12的指令还没有执行完,中断返回后还要继续执行 3, 进入中断服务程序 4, 中断返回前,对LR处理,LR=LR-4,指向之前已译码但没被执行的指令的地址(如果返回的时候直接返回PC,那么中
[单片机]
<font color='red'>ARM</font>9中断与PC
ARM发布SBSA标准,抢攻服务器市场
安谋国际(ARM)架构伺服器发展再添新动能。安谋国际日前针对ARMv8-A 64位元处理器,发布全新的伺服器基础系统架构(Server Base System Architecture, SBSA)规格,期解决目前ARM架构伺服器软硬体发展无标准可循的问题,从而壮大ARM架构伺服器的市占版图。 ARM技术长Mile Muller表示,ARM架构伺服器的生态系统正火速成形,在此时发布基础系统架构标准将是重要里程碑;该架构标准可简化开发商设计基础系统的繁琐过程,使开发商能更专注于后端的创新设计,加速产品开发及上市时程。 Muller进一步指出,除了处理器厂商外,ARM亦将持续与作业系统业者、韧体及软体开发商合作推动此标准架构
[单片机]
新思科技与Arm持续深化合作,加速先进节点定制芯片设计
全球领先的新思科技IP解决方案和AI驱动型EDA全面解决方案与“Arm全面设计”相结合,大幅加速复杂SoC设计的上市时间 摘要: 新思科技加入“Arm全面设计”(Arm Total Design)生态系统并提供IP和芯片设计服务,通过Synopsys.ai全栈式AI驱动型EDA全面解决方案和硬件辅助验证产品组合降低定制SoC的进入门槛并缩短上市时间。 基于全球IP使用协议,新思科技将为Arm提供用于流片前互操作性测试和性能分析的IP组合,搭载对接所有Arm处理器和子系统的片上演示系统,从而降低设计风险。 Arm支持中心提供用于高性能Arm内核的新思科技Fusion 快速入门设计实现套件,助力低至2纳米的芯片设计实
[半导体设计/制造]
ARM学习之---看门狗(WatchDog)
WatchDog,中文为 看门狗 ,老外起的名字有时很有趣也很贴切,这些从事技术的老外对生活总是充满了乐观的态度,把工作当成乐趣而不要认为他是痛苦的事情,这样才能把工作做好.否则就不要去做,天天做自己不喜欢的事情,其结果是很痛苦的. 一样,我总是喜欢用自己的理解而不是无聊的术语来讲解我所理解的东西. WatchDog是为了能够防止程序跑飞而使用的一种东西.如果你的程序没有跑飞,那么你的程序会定时的去喂看门狗,如果你的程序跑飞了,那么就不会再去喂狗了,如果超过了喂狗的时间,那么狗就会自己生成一个信号来重新reset你的CPU,重新开始.这是一种在很重要的情况下防止系统跑飞的一种方法.一般的程序也许不需要,但在特殊的情况下可能会需要这
[单片机]
<font color='red'>ARM</font>学习之---看门狗(WatchDog)
arm-linux-gcc 裸机程序开发(一)
以前开发arm裸机程序都是在ADS1.2开发环境下编译和调试的。刚开始时初学嵌入式好多东西不懂,选择这个开发环境的理由,一是资料多的,mini2440开发板上提供了很多例程可以参考,网上几乎所有arm裸机程序都是基于ADS1.2开发的。二是开发环境友善,虽然后来感觉ADS1.2有点难用,但毕竟是IDE的环境,对初学者来说总比命令行的方式更加直观与方便。随着学习的深入,感觉它就像傻瓜相机一样,虽然好用但屏蔽了很多内容,影响了我们深入理解代码编译以及链接的细节。而且ADS对于程序的开发没有GNU工具链灵活。这段时间因为需要,又要编写一些arm裸机程序。自己已经用Linux习惯了,不想再切回windows下工作了。所以,最近对linux
[单片机]
2.汇编代码的简单实现
使用汇编的原因很简单,就是汇编代码的高效。在机器启动的时候,利用汇编的高效,对硬件进行初始化,为加载内核,提供条件。 目前常用的ARM汇编指令有两种: *ARM标准汇编:适用于ARM公司的汇编器,适合在Windows平台下使用。 *GNU汇编:使用与GNU交叉编译工具链中的汇编器,适合于Linux平台开发。 3.汇编程序框架:注意下面的操作环境是Redhat 6.4 + eclipse C/C++ +CDT插件。 汇编代码的基本框架 汇编用到的地方,启动代码,效率要求高效的地方。 上面是启动代码的框架。 下面搭建框架: start.S: .text .global _start _start: mov r2,#2
[单片机]
2.汇编代码的简单实现
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved