文献标识码: A
文章编号: 0258-7998(2014)11-0078-03
0 引言
次声波是由机器振动产生的,通过介质向周围传播频率低于20 Hz的声波[1]。它具有频率低、波长长的特点,在传播中不易损失,传播距离长。人耳能够识别的声波频率范围是20 Hz~20 kHz,因此人耳无法感知次声波的存在及其强度大小。然而次声波的强大穿透力对人体健康有着很大的威胁,高强度次声波甚至会危及生命。除此之外,次声波的研究对于预测自然灾害和监测工程环境也有着重要价值[2]。目前国内尚缺乏对于次声波检测的研究,具体完善的次声检测系统的实现更是参考甚少。
为有效检测次声波的存在,本文设计了基于C/OS-II[3-4]的便携式次声检测仪,准确稳定地实现了对次声波的检测与分析。系统选用嵌入式处理器STM32作为控制核心;采用多任务机制,充分地利用硬件资源实现实时处理与动态呈现;TFT触摸屏作为人机界面接收用户参数设置与功能选择,实现对检测结果的时域及频域分析。它可广泛应用于地震、台风等自然次声环境及发电站、飞行器发射基地等人工次声环境中。
1 整体方案设计
系统的整体框图如图1所示,总体设计可分为信号采集与预处理、A/D变换、电源与核心处理器和输出显示四部分。系统初始化后,声波传感器开始采集环境中次声波信号。由于信号微弱并且混杂噪声,必须进行放大和滤波等预处理。经过预处理后的次声波信号进入STM32的ADC进行A/D转换。然后,由处理器STM32对采集的数据进行快速傅里叶变换(FFT),求出信号的频率及幅度信息,其中幅度信号代表着次声波信号的功率强度。最后,检测结果的显示采用触摸TFT彩屏,对信号的时域波形、频率谱及功率信息等进行实时动态呈现。
2 硬件电路设计
2.1 次声波信号预处理
次声波信号的预处理是影响整个系统检测性能的重要因素,因此电路设计必须充分考虑提高次声信号的质量,并将信号调整为适合ADC处理的幅度范围。由于次声波传感器采集的次声信号微弱,这里首先选用高精度、低功耗的精密仪表放大器INA118P对预处理信号进行放大。之后对信号进行低通滤波。低通滤波器的选择采用TI公司的UAF42Au芯片,该滤波器的3 dB截止频率滚降陡峭,可以很好地滤掉环境中高频噪声,提高信噪比。
滤波后的信号依次通过信号衰减电路和程控增益放大器PGA203进行幅度调整,程控放大器部分电路如图2所示。对于不同强度的次声波信号,可以通过软件程序灵活调节该放大器的放大倍数,从而扩大对次声波信号检测的量程。经过上述处理后的信号仍为正负输出信号,而系统的信号处理部分为单电源供电。因此需要对正负信号加直流偏置,将信号抬高到0 V以上。最后,信号通过直流偏置电路调整幅度进入ADC。该直流偏置电路利用运算放大器OP27CJ8实现。
2.2 核心处理器及电源设计
本次声波检测系统采用STM32F103处理器,其中STM32F103xx增强型系列使用高性能的ARM Cortex-M3,具有32位的RISC内核,工作频率为72 MHz,内置高速存储器(高达128 KB闪存和20 KB SRAM),还有丰富的增强I/O端口和联接到两条APB总线的外设。所有型号的器件都包含2个12位的ADC、3个通用16位定时器和一个PWM定时器,还包含标准和先进的通信接口:多达2个I2C和SPI、3个USART、1个USB和1个CAN。STM32F103xx增强型系列工作于-40 ℃~+105 ℃的温度范围,供电电压为2.0 V~3.6 V,一系列的省电模式保证低功耗应用的要求[4]。通过复杂的实验验证在恶劣的外界环境下该处理器依然表现出了很好地稳定性,因此可以很好地满足系统稳定性的要求。
系统选择3.3 V供电,外输入电压为9 V。经过电压转换芯片LT1745-3.3V可以把电压稳定在3.3 V,该电压用于给处理器及板上其他模拟数字芯片供电。
2.3 液晶TFT显示及触摸屏的驱动
本系统采用4.3英寸液晶显示屏,该显示屏基于显示驱动芯片SSD1963而开发。显示屏与STM32处理器通过一个40芯的2.54间距的双排母座连接。 显示屏板上贴有一块4.3英寸触摸屏。触摸芯片控制为SPI方式,触摸芯片采用XPT2046N。该液晶显示分辨率为480×272像素,色彩为64K色。
通过STM32的接口以及FSMC总线可以直接驱动该液晶屏及显示。关于液晶屏及触摸屏的驱动各种资料很多,本文在此不做赘述。
3 软件设计及实现
3.1 软件整体设计
软件整体流程图如图3所示,软件整体可分三部分:STM32的ADC采集次声波信号;对采集数据作FFT求出次声波信号的频率和幅度,该部分通过调用ST公司基于STM32的FFT库函数完成;触摸屏的驱动和用户界面控制部分,共分为5个用户交互界面,如图4所示,包括1个主界面和4个从界面。
主界面主要是用于设置STM32的A/D采样率Fs和FFT点数Fn,本系统现可支持128、256、512、1 024、2 048、4 096的采样率Fs和128、256、512、1 024的FFT点数Fn。Fs和Fn的自由设置大大提高了系统检测和分析次声波的灵活性。从主界面通过4个按钮控件可分别进入到从界面查看次声波检测与分析信息。
从界面1实时显示出当前环境中次声波的时域波形;从界面2给出次声波实时频谱图,可通过返回主界面重新设置合适的Fs与Fn来调整波形,方便用户更准确地通过频域图中坐标系读出次声波中频率成分及功率分布;从界面3则对环境次声波中所含的各个频率信号的功率比例以柱形图的形式列出,用户由此界面可直观地观察到环境中各个频率成分的次声波在环境中含量高低,使用户对次声波的成分组成一目了然;从界面4则是对各频率成分的平均功率由高到低以列表形式给出,用户可由此得到各频率次声波功率的具体数值。
3.2 系统任务创建
作为环境中次声波采集系统,必须确保其良好的实时性,因此系统软件的设计便充分利用了?滋C/OS-II实时操作系统的多任务机制[5]。本系统软件程序中用OSTaskCreate函数创建了4个系统任务,优先级由高到低分别是:
(1)主任务
用于建立其他任务。主任务的建立便于系统任务的扩展与裁剪,同时使得代码可移植性大大提高。
(2)触摸屏坐标获取任务
每隔10 ms获取一次触摸坐标,即用于捕获用户在触摸屏上的动作,以实时响应用户的输入。
(3)FFT任务
用于执行FFT算法,因为本系统支持高达2 048点FFT,算法执行占用较多系统资源,此处将FFT单独作为一个任务可以大大提高系统实时响应。
(4)用户界面任务
用于创建用户界面,包括触摸屏各个显示界面上对话框、按钮、列表框、文本等资源的创建,同时执行各界面的画图操作和屏幕刷新。
3.3 多任务调度[6]
本系统不同任务间的通信与同步是通过信号量来实现的,?滋C/OS-II中的信号量由信号量的计数值和等待该信号量的任务列表组成。在App_TaskCreate函数里创建系统任务的同时,也通过OSSemCreate函数创建了一个信号量,该信号量主要用于用户界面任务与FFT任务之间的通信与同步。
C/OS-II中的多任务切换机制是:在每一个时钟节拍开始,执行目前处于就绪状态的最高优先级的任务。这样系统中4个任务优先级的设置将导致:一方面,FFT任务的优先级高于用户界面任务,导致每个时钟周期内CPU都在执行优先级较高的FFT任务,而用户界面任务得不到执行;另一方面,FFT任务只有在用户选择查看频域信息时才会用到,但它涉及大量迭代运算,耗费系统资源。因此,在软件程序设计中,可充分利用信号量的设置来调度各任务的有序执行:用户界面任务在用户选择查看频域信息操作时才会发送一次信号量(通过OSSemPost函数),这使得等待信号量的较高优先级FFT任务被执行,执行一次循环后FFT任务挂起,继续等待信号量(通过OSSemPend函数),用户界面任务再次得到CPU控制权,周而复始。
任务调度时钟示意图如图5所示。在第2个时钟节拍内,由于用户进入从界面2、3或4查看频域信息,用户界面任务发出信号量,使等待信号量的FFT任务被执行。接下来的时钟节拍内,FFT任务依然会被调用,直到用户返回主界面或从界面1时,FFT任务再次被挂起。多任务调度节省了系统资源,使得整个系统能够实时地采集与处理数据、响应用户的触摸屏输入,并呈现连续动态变化的时域与频域波形、柱形分析图和次声波功率等数据。
3.4 调试结果
将编写的程序下载到STM32F103中,连接好硬件电路,通过触摸屏设置采样率和FFT点数。设定完毕后ADC开始按所设采样率Fs采集数据。当采集缓存区数据准备好后开始对采样数据作快速傅里叶变换,并把频域信息显示在TFT彩屏上。经过测试,数据采集的误差在允许范围内,系统各部分能够协调稳定地运行。
系统输入10 Hz测试方波后的柱形图及各频率信号的功率信息分别如图6所示
4 结论
本文设计的基于嵌入式处理器STM32的便携式次声检测仪通过软硬件的协同处理,实现了对环境次声波的检测与分析。通过TFT触摸屏作为人机交互界面,接收用户的输入完成相关参数的设置及不同功能界面的显示。本系统具有体积小、操作简单、准确性以及稳定度高等优点,可以作为便携式次声检测装置相关研究的参考,现已能够稳定运行于次声检测环境中。
参考文献
[1] 肖俊,杨良信,沈文彬.简易次声检测装置的研制[J].传感器世界,2010(8):34-36.
[2] 阚玲玲,梁洪卫,高丙坤,等.基于次声波的天然气管道泄漏检测系统设计[J].化工自动化及仪表,2011,38(6):653-655.
[3] 刘淼,王田苗,魏洪兴,等.基于?滋COS-II的嵌入式数控系统实时性分析[J].计算机工程,2006,22(11):222-224.
[4] 李宁.基于MDK的STM32处理器应用开发[M].北京:北京航空航天大学出版社,2008.
[5] 任顺航,吕鹏鹏,王立鹏,等.基于STM32的电能手抄系统设计与实现[J].电子技术应用,2014,40(1):75-78.
[6] 任哲,潘树林,房红征.嵌入式操作系统基础C/OS-II和Linux[M].北京:北京航天航空大学出版社,2006.