摘 要: 针对海洋环境恶劣、测量仪器投放和回收困难等问题,描述了一个大容量、高精度和低功耗的测量温度和深度的设计方案及其工作原理。该系统以AVR单片机ATmega64为控制芯片,运用比值法计算得到温度及其压力的AD值,再经过一系列计算得到所需的温度和深度。
关键词: 温度; 深度; 大容量; 高精度; 低功耗
在开发利用海洋的过程中,温度和深度扮演着非常重要的角色,这使它成为海洋观测中的重点观测对象。因长期地球变化或其他地理因素变化引起海洋温度和深度的变化,这关系到近海资源的开发和利用[1]。因此,本文设计了一种大容量、高精度和低功耗的测量温度和深度的系统以满足对其测量的需求。该系统可以采集不同区域、不同深度水域环境要素的温度、压力,然后通过对压力进行分析和一系列计算得到海洋深度。
1 系统总体设计
本系统采用Atmel公司的ATmega64单片机作为控制芯片,主要分为A/D数据采集部分、时钟定时控制部分以及数据存储部分。系统总体结构图如图1所示。ATmega64是基于增强的AVR RISC结构的低功耗8位CMOS微控制器。由于其先进的指令集以及单时钟周期指令执行时间,ATmega64的数据吞吐率高达1 MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。
本系统由CR123A 3 V锂电池供电,晶振为3.686 4 MHz,使系统功耗非常低;采用24位精度高、功耗低的AD7791模/数转换器,将采集到的温度和压力模拟量转化为数字量;采用带有I2C总线接口的、具有极低功耗的PCF8583作为时钟控制芯片,将采样时间、采样间隔、采样频率等写入PCF8583来控制单片机工作或休眠,大大降低了功耗;由于测量采集时间长久且采集数据量大,所以采用具有非易失性和读写速度快的大容量NAND存储器[2]。
2 系统电路分析
AD7791是美国ADI公司推出的一种高分辨率24位模/数转换器件,精度高、功耗低,其灵活的串行接口使AD7791可以很方便地与微处理器或移位寄存器相连接。由于AD7791采用了和-差(∑-Δ)转换技术,使它不受噪声环境的影响,适用于宽动态范围、低频信号的测量。所以温度采集电路和压力采集电路的A/D都选用AD7791。温度采集电路和压力采集电路都采用比值法的思想,避免了因电源电压不稳引起的漂移,大大提高了温度和压力的测量精度。
2.1 温度采集电路
温度采集电路如图2所示。U1在温度采集电路中起到了电压跟随器的作用,Rt采用NTC热敏电阻,电阻R1和Rt及U1和AD7791由相等电压供电。由图2可知,Vo=VCC×Rt/(R1+Rt),AD7791输入电压AIN=Vo,参考电压VREF=VCC。
输出码值为:Code=2N×Rt(AIN/VREF),采用电阻比值法计算出的温度AD值Code=2N×Rt/(R1/Rt),与电路供电电压无关,从而消除了由于电源电压不稳引起的漂移,提高了测温电路的精确度。如果把模拟地和数字地大面积直接相连,会导致互相干扰。R2为0 ?赘电阻,相当于很窄的电流通路,能够有效地限制环路电流,使噪声得到抑制,提高电路的稳定性[3]。
测温电路通过固定电阻R1和热敏电阻Rt分压,得到热敏电阻的电压值;再经过电压跟随器,将AD采集到的热敏电阻的电压送给单片机进行数据分析。
2.2 压力采集电路
压力传感器选用keller压力传感器,它是一种压阻式OEM压力传感器。当压力传感器上有压力产生时,电阻会发生形变,相对的两个电阻阻值变大,另外相对的两个电阻阻值变小,压力传感器两端电压不变。
只有电桥中间产生压差,即引起电桥输出电压的变化,产生的电压变化作为输出来反映压力的大小。由于电桥输出的变化电压非常小,所以将压力变化值经过运算放大器U6进行放大,送入AD7791,再将得到的AD值送入单片机,压力采集电路如图3所示。
R8和U5构成恒流源,流过R8的电流I=VCC/R8。由于流过电桥两支路的电流相等,则V32=V3-V2=0.5I×(R9-R10)。U6起差分放大的作用,其输出电压Vout=V32×G,G为放大增益。信号放大后送入AD7791进行模/数转换。输出码值为:Code=2N×(AIN/VREF),参考电压VREF=VCC,AD7791输入电压AIN=Vout。
由计算得到Code=2N-1×(R9-R10)×G/R8,即通过比值法最后得到的AD值与电压的大小无关,从而消除了电压变化引起的温漂,提高了系统的稳定性和压力采集数据的精度。
2.3 时钟控制电路
PCF8583是一个时钟控制芯片,带有256 B的静态RAM,使用I2C总线接口传输地址和数据。PCF8583带有内部32.768 kHz晶振,并且前8 B用于时钟、日历和计数功能;其后的8 B可作为闹钟寄存器;剩余的240 B是自由RAM区,可用来存放数据及其他标志位或采样间隔等常数。
Y1为PCF8583提供稳定的32.768 kHz晶振,电路如图4所示。单片机通过I2C总线给PCF8583设定采样时间、采样间隔等采样参数。当 PCF8583 定时器计数溢出时,产生定时器溢出中断来控制单片机在采样、待机和休眠3种状态间转换,降低了功耗。
2.4 数据存储
由于该系统用于测量海洋等恶劣环境,受客观因素影响,其投放和回收都很困难,并且要想观测的温度和深度信息准确必须采集长期大量的数据,因而必须要有大的数据存储容量来满足测量需要。鉴于此,本系统采用三星公司的 K9F1G08,它是128 M×8 bit NAND Flash。K9F1G08由1 046个块组成, 每一个块包含64个页, 而一页是2 KB+64 B=2 048 B+64 B=2 112 B。K9F1G08以页为基本单元进行存储 ,以块为基本单元进行擦除,具有很快的写入和擦除速度,是一种比硬盘驱动器更好的存储设备。
单片机先将采集的数据放到自身RAM中,等数据达到一页时再存入K9F1G08,从而提高了时间利用率,降低了系统功耗。
3 系统软件设计
系统软件主要完成了数据采样、数据存储、外部中断和定时中断控制等功能,主程序由中断控制工作在采样、休眠和待机3种状态,大大降低了系统功耗。程序流程图如图5所示。
2012年10月将此测量系统投放到青岛中苑码头进行标定,该测量系统被投放到码头水平面下8 m左右的地方进行采样。投放24 h后将测量系统取出与计算机连接,通过相应的后台软件将采集到的A/D数据从大容量存储器NAND读出,通过上述计算方法将温度、压力、深度算出并绘制成图。温度如图6所示,压力如图7所示,深度如图8所示。
通过对采集数据进行分析,可得温度精度达到±0.002℃(ITS-90标准),深度传感器精度为满量程的0.05%,满足了高精度、低功耗的测量要求。
本文介绍了温度和深度的测量方法和工作原理,整个测量系统性能可靠,存储量大,功耗低,精确度高,因此在海洋温深测量方面具有非常广阔的应用前景。
参考文献
[1] 毕永良,孙毅,黄漠涛,等.海洋测量技术研究进展与展望[J].海洋测绘,2004,24(3):65-7.
[2] 王盛安,龙小敏,陈俊昌,等.大容量快闪存储器在压力式波潮仪中的应用[J].仪表技术与传感器, 2000(10):31-
32.
[3] 康华光.电子技术基础模拟部分[M].北京:高等教育出版社,1999.
[4] FOFONOFF N, MILLARD R. Algorithms for computation of fundamental properties of seawater[J].UNESCO Technical Papers in Marine Science,1983(44):1-53.