您当前的位置:五五电子网电子知识单元电路接口电路基于USB总线的振动频率数据采集系统 正文
基于USB总线的振动频率数据采集系统

基于USB总线的振动频率数据采集系统

点击数:7496 次   录入时间:03-04 11:43:15   整理:http://www.55dianzi.com   接口电路

摘要:本文介绍了基于D12芯片的USB振动频率数据采集系统,并在pc机上进行频率分析。详细介绍了该系统的硬件软件设计思
路和技术难点。该系统在实际应用中表现出
很好的效果。
关键词:USB;D12;数据采集;振动频率

1 引言

      通过试样在交变应力或交变应变作用下做出的响应信号的采集和分析,可以计算出反应此试样的一系列参数,如固有振动频率分量、对数衰减率、阻尼,内耗等。计算机数据采集系统的通信方式可有多种方法实现, USB(通用串行总线)作为一种新兴的计算机外设串行通信接口标准,与常用的计算机接口(如串口、并口)相比,具有热插拔、即插即用、数据传输可靠、高速、便于扩展等优点,由于这些特点,USB正在被广泛的应用在各种嵌入式系统里面。
    本文研究并开发了一套基于USB的振动频率的数据采集系统,与传统的基于串口的采集系统比较传输速度大大提高、体积也有所减少,并且无需外接电源,方便了实际的测量工作,使其只需与笔记本配合即可用于实际测量。

2 振动频率数据采集系统

    本文所介绍的USB数据采集系统采用的是Philips的PDIUSBD12芯片,其完全支持USB1.1规范,传输模式采用的是批量传输。
    首先,振动传感器采集的数据通过A/D转换芯片传给微控制器(MCU),MCU负责将数据存入到RAM中,当RAM满后,MCU通过USB总线把数据传送到PC机中,随后PC机进行频谱分析。本系统开发的重点在于USB固件驱动的编写和数据采集系统(下位机)和PC(上位机)通信程序的编写。
2.1 硬件实现方案
    本系统采用的微控制器是ATMAL公司的AT89C52。该微控制器是80c51系列单片机。系统的硬件框图如图1所示。                                   
 

    振动传感器的数据经放大、A/D转换传送到MCU中,MCU经判断为采样开始点,将采集的数据暂存在RAM中,当RAM中的数据达到存储预定采集量时,MCU通过USB总线一次性传送到PC上进行频率分析。在图1中的缓冲RAM也可换成双口RAM,这样系统可以边采样边传送数据,达到实时分析频率的效果。
    图2为实际电路图中PDIUSBD12个引脚的连接,芯片引脚定义很明确,但要注意D+ ,D-两引脚,没有直接与地连接,而是通过10k与1M电阻和电源或地连接[3],这是因为当USB电缆与主机断开时,D+,D-分为悬浮状态。在噪声环境下,D+,D-的状态可能由于感应噪声而发生变化,SIE有时会误以为是复位信号,从而使PDIUSBD12错误的退出挂起状态。19引脚的连接也是同样的道理。
 
图2 PDIUSBD12连接原理图

2.2 固件驱动实现
    固件驱动主要由MAINLOOP.C,ISR.C CHAP_9.C,D12CI.C,EPPHAL.C几个源文件组成,它们的关系如图3[1] [3]所示。
    MAINLOOP.C主要完成发送USB请求、处理USB总线事务和用户功能处理。它的主要结构为一个无限循环体。CHAP_9.C应答标准请求 。D12CI.C是命令接口层,提供给上面的程序最基本的功能函数,根据不同的硬件机构,此文件要进行相应的更改。

图3 固件结构和数据流向

    ISR.C处理USB系统的中断事件。由于系统的传输控制和数据的传输都是通过中断产生的,是编程的关键之一。在KeilC环境下,ISR的C语言代码如下(主端点传输):

    PDIUSBD12芯片中的in中断的产生不同于它的out中断的产生。当有数据传送到USB设备端时,PDIUSBD12芯片产生out中断,这时在中断服务程序里读取相应的缓冲区,即可得到数据。而in中断在数据发送成功后产生。因此,要实现在in中断发送数据,必须首先引发一次in中断,数据传送成功后,随即再次产生in中断,此后数据即可连续发送了。如果处理不当,在与PC机通信的过程中很容易造成上位机(PC)等待超时,通信中断,产生错误。
     为引发第一次in中断,PC机程序中可先发送读请求,这样下位机将产生out中断,在out中断中通过选择端点和使能端点两条命令,产生in中断,in中断服务程序开始执行,发送数据。数据发送成功后,芯片会自动再次产生in中断 ,因此数据会自动传输下去。
2.3 PC机频率分析软件
    从固件驱动可以看出:下位机采用的是中断被动的方式进行通信,数据的采集须由PC机发送相应命令,其过程是:PC机程序在接受数据之前 ,先要给下位机发送命令,然后在进行数据读取。当PC机读取数据完成后,下位机会自动停止传送数据。要注意的是:当下位机使能输入端点缓冲区,PC机(上位机)必须在超时等待内读取出数据,否则出现端口响应无效错误。上位机编程要满足此原则。
    PC机正确读取数据后,把数据存放在数组中,等待调用Matlab进行FFT处理,然后再以此为基础完成震动频率的频谱分析,包括时域和频域绘图、自动搜索出一至三阶频率分量、计算各频率分量的能量密度并显示。
    本系统的PC程序采用VB语言编写,VB和Matlab的混合编程是通过ActiveX技术实现的。VB利用Excute(), PutFullMatrix()和GetFullMatrix()这三种方法调用Matlab执行其内部命令,与Matlab交换矩阵数据[4]。
PC处理完数据后,首先画出波谱图,点击“频率分析”,画出频谱图以及分析出三阶频率。其软件界面如图4


   图4中上部为波普图,记录了采集时间内的波形;下部为频谱图;右侧的3个数值是计算得到的3阶频率;同时此系统还具有打印、保存等功能。

3 结束语

    将USB总线引入到该系统中,使系统无需外接电源,即插即用,方便了实际的测量工作。在以后的工作中还可以改善该系统。比如可以把现在系统中的RAM改为FIFO,实现数据的即时显示,虚拟示波。对于高频的数据采集,可以更换速度更快地MCU,甚至是USB接口芯片,以满足实际的需要。随着
图4  软件主界面及频谱分析图
USB2.0规范的发布,使其更能胜任高速的数据采集系统,USB总线结构在数据采集系统中的具有广阔的应用前景。





本文关键字:数据采集  接口电路单元电路 - 接口电路