作者:陈金华 郑红
摘自:测控自动化
摘要:本文介绍了一种基于Msp430F148芯片的智能测振仪的设计,给出了硬件和软件的实现方法,电路简单、成本低、性能优异。
关键词:Msp430F148、振动测量、信号处理、数字滤波
前言
在航空航天、大型机械设备等复杂结构系统的设计和研究中,振动测量往往是不可缺少的一个重要环节。通过测量机械结构的冲击和振动,可以判断设备的动态性能,从而为优化设计、提高工艺提供有力的依据。在振动测量中,待测的基本的参数主要有加速度、速度和位移三个。由于加速度和速度、速度和位移之间是积分关系,只要测量得到加速度就可以通过积分得到另外两个参量,所以目前在测振行业中用的较多的是加速度传感器,而从加速度到速度、位移实质上仅仅是一个信号变换和处理的问题。本文所涉及到的系统除了要测量振动参量并作一系列信号处理之外还有其特殊的要求:如低功耗、低成本、空间小等。而传统地单片机(如51系列)在运算速度和RAM空间上存在着限制,而DSP虽然有足够的硬件资源,但不能满足成本和空间方面的要求。所以我们使用了TI公司生产的Msp430F148芯片。
Msp430F148是TI公司生产的超低功耗Flash型16位RISC指令集单片机。Msp430F148芯片主要的优点有:
1、 低功耗。 内置了功耗极低的快速闪存。在正常的工作状态下,如果工作电压是2.2V其典型电流消耗仅仅为250μA,在待机模式下工作电流可以降到1μA以下。可以通过设定CPU状态寄存器SR使芯片工作在不同的低功耗模式下。
2、Msp430F148片内内置了2KB的RAM和32KB可擦除Flash ROM,可在线写入擦除5万多次。
3、 内部有一个8通道的12位逐次逼近型A/D转换器,参考电压可选,可选择内置精确参考源,也可选择外接的参考源,A/D转换器可以在不需要CPU的干预下独立完成模数转换功能。
4、 精确的定时功能。Msp430F148内部有2个时钟源可选的定时器。每个定时器有2个中断向量,可以响应5个优先级排列的定时中断,有4种不同的定时模式。
5、在Msp430F148芯片中自带一个WATCHDOG(看门狗定时器)。当程序遇到未知错误发生“死机”情况时CPU响应WATCHDOG中断,系统自动复位。
6、内置16位硬件乘法器,可以方便快速地执行8位或者16位MPY和MAC操作,不需要额外的时钟周期。执行乘法操作只需将两个操作数分别存入乘法器地寄存器中,用户在输入第二个操作数之后就可以读取结果了,而执行乘法几乎不需要时间。
例如:
MOV R10,&&MPY ;将寄存器R10中数放入被乘数寄存数MPY
MOV R11,&&OP2 ;将寄存器R11中数放入乘数寄存数OP2
;乘积的低16位在结果寄存器RESLO中
;乘积的高16 位在结果寄存器RESHI中
MOV &&RESLO,R10
MOV &&RESHI, R11 ;将乘积存放在寄存器R10,R11中
整个乘法运算只需要4条指令,运算快速不需要介入中断,在高通数字滤波器程序中涉及到很多的MPY和MAC操作,有硬件乘法器就大大提高了运算速度。
1 测振笔电路设计
1、信号通路
信号通路主要包括一个压电晶体加速度传感器、一个高输入阻抗运放(TLC27M7,输入阻抗达到10Ω)构成的电荷放大器、一个电压放大器以及抗混淆滤波器(Max7408)等。由于传感器的输入电荷信号非常小、连接电缆线会产生干扰以及存在50Hz交流通过杂散电容耦合到输入端等原因,为了增强传感器的抗干扰能力,应该选取比较大的反馈电容。而为了减小外界的电磁干扰,电荷放大器的输入端必须要有很好的屏蔽措施。需要测量的信号的范围很宽(从10Hz到1KHz),根据国家标准的要求被测振动的最低振动烈度的示值应当是满量程的30%,当待测信号较小时,必须设计较大的放大倍数。但是对于大的待测信号,相同的放大倍数就会造成输出信号超过了A/D的参考电压的最大值,出现截止的现象,此时测量将出现错误。为了解决这个矛盾,在硬件中设计了放大倍数不同的两档放大电路。通过软件计算输入的信号大小,由Msp430的I/O口控制两档的选择。当信号较大时选择放大倍数较小的一档,反之选择放大倍数较大的一档。放大得到的信号经过抗混淆滤波的信号直接连接到Msp430芯片的A/D输入端,实现A/D转换。(图略)
2、电源管理
电路中存在着3种不同的工作电压:Msp430的工作电压是3.3V、模拟电路中的芯片(如运放、滤波器等)需要5V的工作电压、构成电荷放大器的运放TLC27M7工作在5V的电压下,而整个系统是用3V的电池供电,为了得到不同的输出电压,我们分别采用了Maxium公司的Max1796、Max660和Max604供给+5V、-5V和3.3V电压输出。Max1796和Max604都有SHDN引脚,当该引脚是高电平(Max604)或低电平(Max1796)时,工作正常。当引脚电平是低(Max604)或高(Max1796)时,输出的电流降低到0.2μA,输出呈高阻状态,将关闭绝大部分电路的电源,使系统采处于休眠状态。有了这样的特性,我们可以通过控制SHDN引脚的状态来控制电路的通断。在这里我们使用了两个或非门,其中一个或非门的两个输入端分别接CPU的I/O端口和按键的输出。下图所示。
系统开机后将按键按下,或非门其中一端获得高电平,此时电源转换芯片Max1796和Max604的SHDN引脚分别是低电平和高电平,系统工作在正常状态下,CPU上电复位,在初始化程序中通过I/O端口向或非门的另一个输入端写高电平,这样无论在运行过程中按键的状态怎样变化,或非门的输出都能够使电源转换芯片Max1796和Max604工作在正常状态下。如果系统检测到超过1分钟没有按键响应,CPU进入低功耗模式,此时I/O端口输出低电平,通过或非门的逻辑使得电源转换芯片工作在高阻状态。系统自动关机,这时整个系统电流消耗极小。需要重新启动时只需要重新将按键按下,或非门的另一个输入端为高电平,根据逻辑关系,可以将Max1796和Max604恢复到正常的状态,CPU复位开始执行初始化程序,系统又工作在正常状态下。
3、液晶显示电路
采样数据经过一系列的计算,最后通过液晶(LCD)显示。液晶的驱动模式有两种:静态驱动和动态驱动。这里我们用的是静态驱动。根据静态驱动的原理(某一字段两级电压相位相同,该字段不显示;两级电压相位相反,该字段显示),我们只要在LCD各个字段的公共极加上恒定的交变方波信号,通过控制各个字段前极电压的相位和公共极电压相位的异同就可以控制LCD各个字段的亮、灭。由于系统对空间、成本有严格的要求,以及基于对CPU端口驱动能力的了解,我们没有用到任何的驱动芯片,直接通过CPU的I/O端口输出方波信号驱动LCD的各个字段。CPU的每一个I/O端口对应一条LCD的字段,当某一字段对应的I/O端口与LCD的公共极对应的I/O端口输出的电压相位相反时,该字段就亮,反之就不亮。方波的实现是依靠在定时器中断程序中对各个端口寄存器做“取反”运算。
2 软件设计
1、数据处理
传感器作为一种敏感元件,特别容易受到无用干扰源的影响,运算中需要将这些干扰源去掉,同时由于在计算速度和位移的时候对得到的加速度信号进行积分累加运算,将产生趋势项,由于趋势项一般变化比较平缓,频率很低、我们设计了高通数字滤波器滤掉趋势项。为了使得系统的频率响应满足要求,要尽可能保证信号在通带内没有纹波,所以我们选择了四阶巴特沃思(Butterworth)滤波器,因为巴特沃思滤波器在通带最平坦,可以尽量减小由于频率变化导致的误差。
传感器电路的输出对频率的变化很敏感:由于传感器本身的特性,在振动的烈度相同时但频率的变化会影响到输出电荷量;电荷放大器的频率特性也会对电路产生影响;为了满足阻带衰减的要求使用的Max7408是模拟椭圆滤波器,在通频带纹波较大。这些因素导致了系统的频率特性不是很理想。需要对其进行补偿。在这里我们采用了线性补偿的方法。先在重复多次的实验中得到通频带内每间隔20Hz各点值,绘出随频率变化的曲线。将曲线分段插值,在每段曲线内用直线逼近。
2、软件处理流程
采样得到的数据必须在一个定时中断间隔内完成各种计算(如滤波、积分、存贮数据、求出相应的参量显示等)。在加速度、速度和位移三个量的计算过程中,计算位移需要三次高通滤波和两次积分,因此CPU的负担最重、需要的时间也最长,所以选择A/D的采样频率必须考虑计算位移所需的时间。下面以求位移为例,说明软件的流程。
采样频率由定时器控制。在定时器中断中通过设置AD的控制寄存器启动A/D转换,采样得到加速度信号,为了减小信号中的干扰,先对加速度信号高通滤波,然后作一次积分得到速度,速度信号再高通滤波去趋势项和干扰,再积分得到位移,然后再滤波去趋势项和干扰得到最终的位移值,而后将数据存贮在RAM中。每次定时器中断中存储一个数据,存储到一定数目后,主程序中对RAM中的数据进行相应的计算得到位移信号的峰_峰值,随后将16进制数据转换成BCD码由LCD显示。在主程序计算位移参量的时候,定时中断不关闭,A/D采样、滤波、积分仍在进行,只是此时得到的位移值不作存储,这样就达到了实时检测和实时控制的目的。在每一个定时器中断周期(也就是一个采样周期)中必须完成信号的A/D采样、对采样得到的数据然后作两次积分、三次滤波。只要流程不被关断(如切换到测量加速度、速度或者断电、用户选择停止测量等),采样、计算将一直不断地进行。
参考文献:
[1]胡可大主编.《Msp430系列超低功耗16位单片机原理与应用》.北京航空航天出版社.
[2]徐科军,陈荣保等.《自动检测和仪表中的共性技术》.清华大学出版社.