0 引 言
压电式振动传感器由于其灵敏度高、 抗电磁干扰能力强和可靠性高等特点, 广泛应用于振动测量中。基于压电振动传感器信号的采集, 传统的数据采集系统一般采用单片机作为主控单元, 结构简单, 实现方便
[1], 但单片机内置的AD分辨率低。而FPGA具有时钟频率高, 可以进行数据采样控制、 数据缓存和数据传输
[2]。对振动信号的采集, 肖李欢等
[3]设计的外部AD采样电路, 误差在0.1 %左右, 实现了高精度的信号采集; 高立慧等
[4]设计了基于压电加速度传感器的信号采集系统, 采用AD7707转换芯片, 通过CAN通信传输给上位机, 实时采集振动信号; 邢晨茹等
[5]基于Altera公司的EP4CE10F17C8芯片, 结合16位8通道的采样芯片AD7606进行了超声换能器信号采集与传输, 实现了信号采集传输与显示。
本文选用实验室自制的一种基于十字梁结构的压电MEMS振动传感器, 通过将铌酸锂与带有二氧化硅层的硅基底低温键合, 在铌酸锂薄膜上采用溅射、 刻蚀和剥离等办法制备对准标记与表面电极, 采用IBE刻蚀铌酸锂单晶薄膜使其图形化, 利用RIE完成氧化硅层的图形化, 并采用深硅刻蚀法刻蚀硅基正面制备质量块与悬臂梁以及从硅基背面对其进行刻蚀释放制得器件。
针对硅基铌酸锂单晶薄膜压电MEMS振动传感器输出信号的采集系统研究较少, 本文基于FPGA使用16位8通道的采样芯片AD7606设计了信号采集系统。以振动台为试验对象, 利用此系统对振动台输出的振动信号进行采集。
1 系统总体设计
本系统用于压电MEMS振动传感器信号的采集, 主要由A/D转换电路、 FPGA(主控部分)、 电源电路、 FIFO存储电路和USB 2.0传输电路组成。采集系统结构图如
图 1 所示。
由于压电MEMS振动传感器输出的微弱电荷信号不能直接采集, 所以先将电荷信号转换为电压信号。使用电源管理电路为整个电路供能并为各个芯片提供合适的电压及电流
[6]。FPGA通过对AD7606采样芯片的控制, 完成了AD采样软件设计的时序图, 将模拟信号转换为数字信号。主控模块FPGA获取到信息后进行处理, 将数据存储在FIFO缓存器中, 通过USB 2.0传输模块将数据传输给电脑。
本系统的控制器选用XILINX(赛灵思)公司的Artix-7系列FPGA, 芯片型号为XC7A35TFGG484-2。该芯片有33 K LC(逻辑单元), 1.8 Mbit BRAM(专用存储单元), 5个时钟管理单元, 集成DDR3(内部存储器)硬核, 该FPGA增加了多样的接口和功能模块, 共有112个扩展IO口, 每组都备有1个3.3 V和5 V电源接口。
2 采集系统硬件设计
2.1 AD转换电路
AD转换器使用Analog Device公司生产的AD7606
[7]。该16位采样芯片拥有8个采集通道, 并且每个都可达到200 ksps的采样速率。该芯片采用5 V单一电源提供能量, 输入缓冲器的阻抗为1 MΩ, 能够实现对输入的片内滤波, 提高输入的阻抗, 并且不依赖于运算放大器和外部的双极性电源。AD7606使用2.5 V基准电压源, 能够直接与FPGA相连, 从而实现电压和电流数据采集功能。A/D转换电路的原理图如
图 2 所示。
AD7606与FPGA实现连接, 通过FPGA控制AD7606实现AD转换。OS2-OS0被设置为低电平
[8]。当RANGE接口处于低电平状态时, 各个通道的模拟输入值为±5 V。CONVST A和CONVST B是转换控制的信号
[9], CS代表了低电平的片选输入端, RD代表了并行数据读取的输入控制端, WR代表了并行数据写入的输入控制端, DB[15∶0]是用于转换输出的16位并行数据, BUSY信号为高电平, 当所有的转换完成之后, 变为低电平。
根据数据手册, AD7606的并行模式转换时序图如
图 3 所示。
当CONVST A和CONVST B通道都变为上升沿时, BUSY信号转变为高电平, 系统内部开始进行模数转换。直到BUSY的下降沿到来, 代表数据已经转换完成, 锁存至输出寄存器中。当CS变为下降沿时, 数据会被输送到总线上。并行模式下, 当CS和RD都为低电平时, 将转换结果输出至并行总线上。当第一个通道的数据开始输出之后, FRSTDATA会变为高电平。
2.2 数据传输接口
USB电路部分连接采集系统和上位机。Cypress公司提供的EZ-USB FX2
[10]系列芯片CY7C68013A, 内部包含收发器、 串行接口引擎处理USB事务、 增强型8051单片机, 能够满足数据传输的需求
[11]。
图 4 为本设计的USB2.0电路原理图。
XTALIN与XTALOUT管脚间连接24 MHz晶体。WAKE UP引脚被拉高防止USB挂起, RESET引脚被拉高防止USB复位。SCL作为I2C接口的时钟引脚, SDA作为I2C接口的数据接口, 分别串联4.7 K电阻接VCC, 确保接口的稳定性。本设计采用I2C启动方式。由FX2读取EEPROM内的固件程序并自动加载到其内部RAM中。匹配的I2C串行EEPROM芯片为24LC64, 其高性能和稳定性为整个数据采集系统提供了有力的支持。DPLUS与DMlNUS分别连接到USB的D+与D-信号引脚, 通过10 K电阻连接至USB接口J5, 通过USB数据线与上位机通信。
FX2_FLAGB和FX2_FLAGC是FIFO的两个标志信号, 其中, FLAGB被配置为端点2输出的空标志, FLAGC被配置为端点6输入的满标志; FX2_IFCLK作为48 MHz的接口时钟信号
[12]; FX2_PKTEND表示发送的数据包结束的标志, FX2收到该信号后就会将端点的数据发送到电脑端, FX2_FD[0:15]表示16位的数据总线
[13]。
3 采集系统软件设计
FPGA控制程序整体框图如
图 5 所示。在FPGA控制部分的软件设计中, 采用了Xilinx开发套件和Verilog语言。系统上电后, 通过USB FX2固件对CY7C68013A芯片进行初始化、 参数设置和用户配置。随后, 在PC机上安装USB2.0设备驱动程序, 以便识别并与采集系统建立通信。在电脑上通过FX2_USB调试工具Control Center进行指令帧的下发, CY7C68013A芯片接收数据。FPGA通过对接收的数据进行分析, 提取出命令帧并转换为相应的控制数据控制AD7606, AD7606开始采集数据, 并将数据缓存至FIFO中。通过USB 2.0传输模块将数据传输给电脑, 完成PC机与采集系统之间的数据传输和控制功能。
3.1 AD转换模块
软件模式下, FPGA控制AD7606进行模拟数据转换及采集。AD采集状态转移图如
图 6 所示, 共12个状态。
IDLE为空闲状态
[14]。AD_CONVST为转换开始状态, BUSY为输出忙状态, RD_CH1-RD_CH8为读取的8个通道的数据, 每个通道为16 bit。初始状态为IDLE空闲状态, ad_convst、 ad_cs和ad_rd为高电平。AD_CONVST状态下, ad_convst拉低, 当FPGA检测到ad_convst出现上升沿时, 进入BUSY状态, BUSY状态为高电平时, 信号开始转换。当BUSY信号为低电平时, 开始读取数据。当ad_cs信号和ad_rd信号为低电平时, 依次读出8个通道的数据。当数据读取完成后, 进入READ_DONE状态, 所有的信号都为高电平, 回到IDLE空闲状态。
利用Vivado软件对采集模块进行仿真测试。AD7606控制时序结果与数据输出结果如
图 7、
图 8 所示。
图 7 和
图 8 分别为AD7606时序逻辑结果与8通道数据输出结果。结果表明, 各个时序的周期变化以及各通道读取到的输入数据结果与代码中设定的一致。
3.2 USB 2.0传输模块
USB2.0连接FPGA和上位机。FPGA作为控制核心会控制USB2.0的接口, 将FIFO中的数据发送给上位机, 上位机对FPGA发送不同的指令, 驱动FIFO进行相应的操作。
将USB芯片CY7C68013A从设备FIFO配置寄存器
[15]。
图 9 为Slave FIFO数据传输框图。首先配置IFCONFIG, 使FX2进入到从设备的FIFO模式。在Slave FIFO传输模式下, USB芯片初始化相关的Slave FIFO寄存器, 然后FPGA根据从设备FIFO的相关时序完成数据传输过程
[16]。
本设计的数据流向主要有两种, 一种是从FPGA流向USB2.0总线的Stream IN传输, 另一种是从USB2.0总线流向FPGA的Stream OUT传输。
图 10 为Stream IN传输状态框图,
图 11 为Stream OUT传输状态框图。
Stream IN传输状态框图中, 当满标志flagc为0时, 低电平激活, 保持在stream in idle状态。当满标志flagc为1时, 转变为stream in write状态, FPGA会不断地向端点6的FIFO写入数据。直到flagc变为低电平, 此时状态变为stream in idle。并且slwr为高电平, 被取消激活。Stream OUT传输状态框图中, 当端点2的flagb空标志信号为0时, 状态机处于stream out idle状态。当flagb空标志状态为1时, 状态机会从stream out idle状态转变为stream out read状态。在stream out read状态中, FPGA不断地从端点2FIFO中读取数据。直到flagb变为低电平, 此时状态变为stream in idle。并且slrd为高电平, sloe为低电平, 都被取消激活。
采用cypress公司的Control Center软件, 先选择端点EP2, 设置指令启动采集发送数据, 再从端点EP6接收数据, 设置传输字节数为512, 将数据保存, 使用MATLAB软件进行处理。
4 系统测试及验证
4.1 电荷源测试
使用电荷源模拟压电MEMS振动传感器的电荷输入。输入频率为1 000 Hz, 峰峰值为20 pC的电荷量信号。采用Control Center软件进行数据传输并保存。
图 12 所示为USB 2.0数据传输完成界面。
使用MATLAB软件对采样得到的数据进行分析处理, 显示信号时域波形如
图 13 所示。从
图 13 可以看出, 信号采集系统能准确采集到电荷源输出的电荷信号。
4.2 数据传输准确性测试
在测试过程中, 通过ILA中抓取到的传输数据与上位机传输的数据进行比对, 确认传输的数据是否正确, 如
图 14 为传输数据时ILA抓取到的波形。
fx2_faddr值变为0时, flagb由低电平变为高电平, sloe和slrd信号拉低, fx2_fdata上依次出现每次读取到的数据内容, 与上位机发送的数据内容一致。fx2_faddr值变为2时, slwr变为低电平, 写入的数据内容与读出的数据内容一致。结果表明USB模块传输数据准确度高。
4.3 采集系统整体测试
搭建的实物系统平台如
图 15 所示。将整个测试系统进行连接, 通过信号发生器产生正弦激励, 利用功率放大器驱动振动台
[17]振动产生信号。
将压电MEMS振动传感器固定在振动台上, 振动台产生不同的振动信号作用在压电MEMS振动传感器上, 一部分电荷信号经过电荷放大器送到示波器中, 通过调节示波器显示波形; 一部分电荷信号经过AD采集将转换后的电压信号经USB 2.0接口输送至上位机。将示波器上的电压作为标准电压信号, 然后转化为电荷信号。将采集系统所采集到的数据与标准信号对比。
在振动台产生3~20 g范围的激振, 分别用示波器和上位机采集不同频率下的电压峰峰值
[18], 通过计算换算为相应的电荷值。将采集到的电荷值与输出的电荷值进行对比, 计算出不同频率下的电荷差值大小。加速度为3 g和20 g的采样数据记录表分别如
表 1、
表 2 所示。
选取加速度为3 g与加速度值为20 g下的数据, 可以看出: 采集电荷值与输出电荷值的差值为±2.00 pC以内, 控制在很小范围内。
输入频率分别为600、 1 200和1 800 Hz下, 电荷随加速度变化的关系如
图 16 所示。当输入频率为600 Hz时, 输出电荷灵敏度为1.101 pC/g, 采集电荷灵敏度为1.078 pC/g, 计算得出电荷灵敏度差值为-0.023 pC/g。当输入频率为1 200 Hz时, 输出电荷灵敏度为1.1 pC/g, 采集电荷灵敏度为1.067 pC/g, 计算得出电荷灵敏度差值为-0.033 pC/g。当输入频率为1 800 Hz时, 输出电荷灵敏度为0.894 pC/g, 采集电荷灵敏度为0.916 pC/g, 计算得出电荷灵敏度差值为-0.022 pC/g。从上面分析可以看到, 该信号采集系统与电荷放大器放大输出的信号是一致的, 采集到的电荷与加载加速度之间有较好的线性关系。
5 结 论
本文对压电MEMS振动传感器输出的电荷信号进行采集。采用状态机理念, 设计了一种以FPGA为主控芯片的AD7606采样系统, 可以对加载加速度为3~20 g, 输入频率为50~2 000 Hz的信号进行采集。通过搭建实验平台进行实验, 结果表明, 当加载加速度大小为3~20 g时, 采集电荷值与输出电荷值的差值为±2 pC以内, 可以控制在较小范围内。在600, 1 200, 1800 Hz频率下, 信号采集系统得到的电荷值与加载加速度具有良好的线性关系。本文设计的信号采集系统可以实现16 bit的采样精度, 在压电MEMS振动传感器信号采集领域有广阔的应用前景。