基于MSP430的高精度微功耗可存取数字压力表设计
采用MSP430F149作为总控制器,设计了高精度微功耗数字压力表。座力传感器采用恒流源 供电,其输出采用AD7714进行A/D转換,以ADR291产生的恒压作为其参考电压a采用糢块化供电和 分时教据采集的策略降低系统功耗,采用自主设计的MOSFET电源开关切断不工作模块的电源。运用 基于变化速率的均值漶波方法对采集的压力教据进行漶波,最后采用多点枚准的方式对压力表进行校 准。采用简化的文件系统实现实时压力数据的存被与回放。丛力表精度达到0.25釦以上,在采用4节 5•千电池供电的情况下,正常连缕工作时间达3 000h以上。
随着压力测量的应用越来越广泛,对压力测 童仪器的要求也越来越高。目前,在工业现场和 科学实验中应用最多的是弹性式和电子式压力仪 表:弹性式压力表由于发展多年,应用广泛、技术 成熟,但发展空间较小;随着对测量自动化程度要 求的提高,电子式压力表成为压力测量的主流。 而如今信息化的高速发展又对电子式压力表提出 了高精度的要求,再加之现在测量仪表都向小型 化、便携式发展,干电池成为主要的供电方式,而干电池容量有限,这就对测童仪表的微功耗提出 了更高的要求。
1.系统总体设计
本系统旨在设计一款高精度微功耗的数字压 力表,因此髙精度和微功耗是本设计的重点和难 点,必须从总体设计时就加以考虑。系统总功耗 一般包括元件级功耗和系统级功耗⑴,需要从这 两方面人手才能达到系统微功耗的目的。
本系统的总体框图如图1所示,外围主要包括电源管理模块、参考电压模块、恒流源、压力数 据采集模块、液晶显示模块、串口通信模块、温度 采集模块及按键电路等。
MSP430系列单片机是_种超低功耗的混合 信号处理器,这个系列的微控制器可以采用电池 供电工作,且待机时间长。灵活的时钟源可以使 器件达到最低的功率消耗;数字控制的振荡器 (DCO)可使器件从低功耗模式迅速唤醒,在少于 6#的时间内激活到活跃工作方式121。考虑到本 系统微功耗的要求,最终采用MSP430F149作为 总控制器。压力传感器采用了 MEAS公司的 87N-5000,此传感器线性好,温度误差小且功耗 低,满足本系统设计中高精度、微功耗的要求。
2硬件设计
2.1电源管理模块
本系统采用模块化供电和时间规划机制,某 个模块在不工作时可以与电源断开,以降低功耗。 采用MAX883和MAX884分别作为系统的5V和 3.3V电源,此两款芯片是低压差线性稳压芯片, 在最低功耗工作模式下静态电流只有lpA,完全 可以满足系统微功耗的要求。
本系统采用一片MAX883和两片MAX884分 别为系统各模块供电。其中,一片MAX884产生 的CPU3.3V是常开状态,而其他两路电源在压力 表关机时,可以由单片机控制其关闭。还配合使 用N沟道和P沟道MOSFET设计了电源开关,因 温度采集模块和串口通信模块不常使用,因此为 这两个模块分别配置一个电源开关,通过单片机 的I/O 口控制电源开关的通断,以降低功耗。
另外,由于液晶背光功耗较大,因此采取电池 电压直接供电的策略,通过MOSFET电源开关接 人不同阻值的限流电阻,可以控制液晶背光的亮 度,实现背光亮度的多级调节,一定程度上降低了 系统功耗。
2.2压力数据采集模块
MSP430F149单片机内部集成了 12位A/D 转换模块和可供选择的1.25V和2.5V参考电压 模块,因此很多压力表直接采用了单片机内部A/ D模块和参考电压。这样虽然简化了系统结 构,但直接限制了压力表的精度。本系统压力数 据采集模块包括压力数据的采集与转换,压力传 感器采用恒流源供电,其输出由AD7714放大后进行A/D转换,AD7714的参考电压由外部参考 电压电路产生。
2.2.1参考电压电路
本系统采用的参考电压由ADR291产生, ADR291是低噪声、小功率参考电压芯片。参考电压 电路如图2所示,其产生的2.5V参考电压精度在0. 12%以上,满足本系统高精度的要求。输出2.5V经 过电阻分压后产生1. 25V作为A/D芯片的参考电 压,为提高A/D芯片参考电压的精度,图2中的R33 和R34均采用l%o的高精密电阻。
2.2.2恒流源电路
本系统采用的压力传感器内部的测量电路是 全桥差动电路,而电桥的供电电源可采用恒压潭, 也可采用恒流源。为了减少温度的影响,提髙 测量精度,本系统采用恒流源为压力传感器供电。
恒流源电路的核心芯片是OPA335,此芯片是 自动置零,单电源运算放大器。具有最大5(|^的 失调电压,285RA的静态电流,同时满足了系统高 精度和微功耗的要求。恒流源电路如图3所示, 利用运算放大器“虚短”和“虚断”的特性设计,其 中电阻R29、R31和R32均采用1%的高精密电 阻,产生806皡的恒流源,【+和I-分别是压力 传感器的正、负电源输人端。经测试,此恒流源在 负载阻抗低于5kO时,稳定可靠,满足本系统压 力传感器的供电要求。
由于MSP430F149单片机内部集成的12位A/D无法满足本系统高精度的要求,考虑到本系 统微功耗的要求,最终选用了 24位A/D芯片 AD7714YRU0此芯片使用和-差转换技术以实 现高达24位的无误码性能,具有0. 15%的非线 性度。另外,此芯片内部包含了可编程放大器 (PGA),可以实现最大128倍的小信号放大,节省 了电路中对高精度小信号放大电路的设计,简化 了系统结构。
在设计AD7714的外围电路时应特别注意, 数字电源和模拟电源分开供电,数字地线经过0£1 电阻后接地,避免了相互之间的干扰。
3.软件设计
3.1分时数据采集
MSP430有一种活动模式和5种低功耗模式,通 过设置可以从活动模式进人相应的低功耗模式,而 各种低功耗模式都可通过中断的方式进人活动模 式。不同工作模式下MSP430的耗电情况差别很 大,其中低功耗模式3 (LPM3)和低功耗模式4 (LMP4)系统功耗相当低,基本可以忽略。
本系统采用分时数据采集的策略,即根据设 置的菜单情况,采集不同的数据信息,如压力、温 度及电池电压等信息。以压力数据采集为例,并 不是程序每循环一次进行一次压力数据采集,而 是根据时间信息来采集。本系统程序设计为每 0.U进人一次时间中断,在时间中断中退出低功 耗模式3,进人活动模式,程序循环执行一次,然 后进人低功耗模式3(LPM3)。同时,程序循环执 行时对时间迸行判断,如果间隔时间达到0. 4s, 读取一次压力数据,并进行A/D转换。系统总的 程序流程如图4所示。
3.2变化速率均值滤波
实验发现,简单的均值滤波方法不能满足本 系统实时性和稳定性的要求。因此,本系统根据 压力数据的变化速率确定具体的滤波方法:在压 力数据变化较快时,为了保证压力表显示数据的 实时性,采用的是较少点均值法滤波;在压力数据 变化较慢时,为了保证压力表显示数据的稳定性, 采用的是较多点排序后取中间部分均值法滤波。
首先采集压力数据,然后判断连续两次压力 数据变化方向是否相同,若不相同,则直接返回; 若相同,则采用递推方式将压力数据写人数组,随 后判断下式:
2 I temp2 - temp{ I > SUM (I)
• •i
式中temp,、temp2 近两次采集到的压力数据;
SUM——设置的判断阈值。
若式(1)成立,则表明当前压力变化较快,则 求数组中M个新推人数据的平均值作为当前压 力值,计算式如下:
Af-l
press = X Cal\ £]/M (2)
式中Ca/[i]—存储压力数据的数组;
press 返回的压力值。
若式(1)不成立,则表明当前压力变化较慢, 必须满足稳定性的要求,则将存储当前压力的数 组中的数据赋值给排序数组,排序数组对数据进 行排序,然后去掉两个最大值、两个最小值,将剩 余数值求平均,计算式如下:
press = 5] Queue[i]/(/V-4) (3)
t=2
式中Queued]—排序数组在排序后的数值;
press 返回的压力值;
N——排序数组中数据的个数。
实验证明,采用本滤波方法后,压力表既能满 足当前压力实时变化的要求,又能满足稳定压力 显示稳定的要求。
3.3多点校准与线性插值
实验发现,一般的压力传感器即使采用恒流 源供电,其输出与输人并不是呈现简单的线性关系,这就给校准带来了困难[6]。对精度要求不高 的压力表一般采用满量程和零点校准的方式,经 过实验,这种校准方式不能满足本系统高精度的 要求。因此,本系统采用了多点校准的方式,用多 条线段模拟逼近压力传感器的输出曲线(图5)。
本系统最终采用11点校准的方式,即满量程 的0%, 10%, 20%,…,100%,校准完成后,将校 准数据存人Flash数据存储区。计算 当前压力值时,首先将得到的当前压力数据与校 准数据比较,得到当前压力数据所在 的区间,采用线性插值的方法计算当前压力值:
pre&s_unit = (press - Cctl_Dw[i\ )/{ CalJ)iv[ t + 1] ~
Cal^Div[ e]) + range • i/10 (4)
式中pressjinit 当前显不压力值;
range 压力表量程;
press—滤波后得到的压力数据。
插值造成的误差为:
= pres8_unit - Y, (5)
式中K——实际压力值,一般取精度高1级或 更多的压力表的测量值。
经实验得到满量程和零点校准方式与11点 校准方式的对比数据列于表1。
从表1中可以得出,两点校准方式在靠近o 点和满量程点时精度较高,在中间段时误差较大, 精度较低,因此两点校准方式只适合对精度要求 较低的场合。而本系统采用的多点校准方式,较 准确地拟合了压力传感器输出曲线,很大程度上 提髙了测量精度,满足了本系统对压力测量高精 度的要求。
3.4数据存储及回放
本系统设计了基于MSP430内部大容量 Flash的数据存储机制,允许实时存储压力表采集 到的压力数据和压力校准值,保证在关机或者掉 电情况下数据不丢失,并且提供数据回放功能,査 询历史存储数据。
由于本系统采用的单片机MSP430F149内部 有64KB的Flash,除去其内部资源占用的,还有 60KB的代码存储空间和256B的A、B段信息存 储器,完全满足系统数据存储要求。其中选用A 段信息存储器存储系统压力校准值,保证压力表 校准一次后,数据不丢失。另外从60KB代犸存 储空间保留10KB的空间存储实时压力数据,在 存储机制上,编写了简单的文件系统管理存储数 据,即采用了文件组方式存储数据,由于存储空间 的限制,本系统最多可以存储40个文件,每个文 件可以存储20个点的压力数据,同时增加了淸零 功能,在数据存满之后可以手动淸除整个文件存 储区,保证数据存储的持续性。经过实际运行,该 简化的文件系统满足了数据实时存储和查询回放 功能,同时也可以把存储的数据通过RS232通信 接口上传到上位机以供査看。
4.结束语
笔者系统地介绍了高精度、微功耗、可存取数 字压力表的设计思路,并分别从硬件和软件方面 阐述了实现高精度、微功耗要求的方法,同时给出 了数据存储与回放的方法,最后给出了实验对比 数据,分析了压力表的测量误差。经过实验,压力 表的测量精度可以达到0.25知,在4节5•干电池 供电的情况下,可正常连续工作时间3 OOOh以 上。本设计必将推动便携式、微功耗仪表的发展, 并为电子测量信息化、数字化奠定基础。