关键词: 海水深度测量 FM20L08 C8051F020
引言
海洋的深度是海洋水体的一个重要参数。知道海洋的深度,就可防止海面航行的船只搁浅、触礁。潜艇在海底活动时,测量海洋深度可利用海底地形作屏障以避免被搜索,可使对方的讯号接收仪器收不到潜艇发出的噪音。在笔者所做的一个课题中,直升飞机从空中投掷测量仪器到海表面,仪器从海表面下沉至海底后,自动上浮至海水表面。该项目要求研制一个海水深度记录仪,记录上述过程中测量仪器在海水中的深度变化。测量仪器自动上浮至海面后,打捞并回放测量数据。深度数据要求每秒采样100次,具有非易失性。测量数据通过串口向PC机回放。
测量的基本原理如下式所示:
其中P是指仪器所受到的绝对压力,r是指海水密度(常数),g是指当地的重力加速度(常数),h是指仪器下降的深度,P0是指当时的大气压力(短时间认为恒定)。所以,只要测出仪器受到的压力,根据式(1)就很容易计算出仪器下降的深度。仪器在海水中的位置越深,受到的压力越大。
系统硬件设计
根据系统设计要求,海水的深度数据采集频率要求至少100Hz,连续采集时间为5分钟以上。以分辨率为12位的ADC计算,一次采集的数据量至少为2× 100×5×60=60000B。针对系统数据采集量大、速度快、爆发性强的特点,采用如下总体设计方案:主控制器采用了美国 Silicon Laboratories公司的高性能微控制器C8051F020。它具有与8051完全兼容的CIP-51微控制器内核,采用高速流水线结构(25 MIPS),大多数指令执行时间为1~2 时钟周期;具有64 KB可在系统编程FLASH 和大容量内部SRAM,具有外部存储器接口。非易失性存储器采用美国Ramtron公司的FM20L08铁电存储器。与其它类型的非易失性存储器相比,FRAM铁电存储器具有读写次数多、读写速度快、功耗低、无延时和不用擦除写操作的特点,在功能上可以完全替代SRAM。系统硬件框图如图1所示。
电源
电源部分使用三节普通AAA电池供电。经升压管理芯片MAX756升压至5V后,给基准源、放大器和压力传感器供电。5V电源通过低电压LDO管理芯片TPS79333变换成3.3V后,给CPU、串口收发芯片及FM20L08供电。
信号调理电路
信号调试电路如图2所示。
虽然C8051F020内部有2.43V的基准电压源。但是测试结果表明其输出电压随温度波动较大,影响测量结果的准确性。为了提高测量精度,系统采用了 Maxim公司的低温漂电压基准芯片MAX6325,MAX6325是低温度系数(<1ppm/°C)、低噪声(1.5mVp-p)的电压基准,它具有±0.02% 初始精度,是高精度数据采集系统的理想选择。由于压力传感器的输出电压范围是DC1~5V,而MAX6325输出的电压基准是 2.50V。因而必须对压力传感器输出电压进行衰减,以达到和基准电压的匹配。实现这个功能最简单的方法是直接用两个电阻进行分压,但是由于传感器具有一定的输出阻抗,直接匹配分压电阻相当于将传感器输出阻抗与这两个电阻并联,会造成输入A/D的采样电压不准确。正确的方法是在压力传感器的输出之后加一级运算放大器增加输入阻抗,再在运放的输出级并联分压电阻。考虑到系统只有5V电压并且传感器的输出电压在1~5V之间,同时也为了减少器件的数目,缩小占板面积,运算放大器选用了OPA340。OPA340是单电源轨至轨输入和输出运算放大器。OPA340的工作电压可低至2.5V,它允许的最低输入为- 500mV,最高输入为可高于电源500mV。它具有良好的动态效应,静态电流仅为750mA。压力传感器的输出电压经OPA340和分压网络进行1/2 分压后,送C8051F020的片内12位A/D进行信号采集。
数据存储
对于针对突发数据的记录仪、高速存储测试设备等,其数据的高速存储和掉电不丢失成为系统设计的关键,Ramtron公司推出的FM20L08铁电存储器弥补了现有铁电存储器存储量小的缺点,其数据存储量达1Mb(128KB),可完全代替标准异步静态随机存储器(SRAM),具有可随机读写芯片内任何一字节的特性。FM20L08非易失性铁电存储器可无限次读写,掉电后数据可保存10年,工作电压为3.3V,最大功耗电流为22mA,采用32引脚TSOP型封装。FM20L08增加了软件控制写保护功能,存储序列按地址排成8个区域,每个区域都能通过软件单独设置写保护。 在对海水深度进行实时采集和记录时,为了更好地了解仪器在水中深度变化的过程,必须有高速的数据采集和大量的数据存储作保证。铁电存储器的高速写入和掉电数据不丢失特性完全适合此类情况,可以对物体在海水中的下降过程进行完整地记录。图3示出C8051F020与FM20L08的接口电路。
C8051F020使用高位端口(P4~P7)与FM20L08进行接口。FM20L08新增内部电压监控器驱动LVL (Low Voltage Lockout)信号,它接至MCU的INT0,用于监控电源的供电情况,当电源电压下降到临界值以下时,LVL引脚输出低电压信号,显示电路处于写保护状态,在MCU的INT0中断服务程序中复位MCU,这样存储器可以自动阻止误读写和防止存储页面数据的破坏。FM20L08 的片选信号是由C8051F020的读写信号相与来控制的,只要读写信号任何一个变低,则片选信号有效。C8051F020的最大寻址空间为64K,而要求它能够访问128KB的地址空间,最简单有效的方法就是使用一个I/O位控制FM20L08的地址线A16。当A16 为0是选择FRAM的前半部分, 当A16为1时,选择FRAM的后半部分。
在存储程序设计中,程序应首先判断仪器在下降时A/D的输入信号值是否大于门限值,只有输入信号值大于门限值才将数据存储在存储单元内,在测量仪器由海底上浮至将要接近海面时关闭铁电存储器,停止数据存储。
利用软件实现16位精度的A/D转换
系统使用C8051F020内部的12位ADC采集压力数据。但压力传感器需要测量较大的动态范围(0~700m),还要求对小于2cm深度变化作出响应。这样片内12位ADC的分辨率将无法满足要求,需要使用16位ADC提高测量分辨率。在系统的采集方案中,使用了C8051F020片内自带的12位 ADC并采用过采样和求平均值技术达到了16位分辨率进行深度测量的目的,并未使用昂贵的片外16位ADC,这样既节省了成本,也减少了软硬件设计的复杂度,同时也提高了系统的可靠性。
为了增加有效位数,压力必须被过采样(即ADC以高于系统所需采样频率fs的速率对信号进行采样)。所需要的采样频率由系统对压力测量所要求的频率决定。每增加一位分辨率,信号必须以4倍的速率过采样,即
其中W为希望增加的分辨率位数;fs为初始采样频率要求;fos为过采样频率。
具体到本例基本原理简述如下,假设系统每秒输出100个压力值,即每10ms内必须采集一个压力值。为了将测量分辨率增加到16位,则必须以100× 256Hz的采样频率对压力传感器进行采样。为此,在10ms内先集中采集256个样本,然后将这256个样本累加,然后将总和除以16。这样得到的结果便是一次采样的16位有效数据,然后MCU便对数据进行处理存储,并开始下10ms的样本采集。实验结果证明,使用这种方法可明显地提升压力采集的精度。可以有效地消除系统测量的白噪声,改善信噪比。
结语
经过验证,海水深度记录仪的设计是可行的,经过海上实验与实际水深测量值相比,误差在2cm 以内。图4示出了某次出海实验海水深度记录仪取得的实验结果。实践证明该记录仪工作稳定可靠,达到了预期的要求,目前已经在海洋调查中使用。