水下航行体深度测量电路设计与实现∗
2019-11-13侯萌强吕海涛
侯萌强 吕海涛 谭 鑫
(91439部队 大连 116000)
1 引言
水下航行体在运动过程中能够获取水下三维位置信息具有重要的意义。对水下航行体的定位与导航,可以通过水声定位系统进行水平坐标方向上的定位[1],由于复杂的水下环境,对于水下航行体的深度位置信息,通常使用压力传感器采集其所在位置的压力信息,然后深度测量电路将压力值转化成所对应的深度值[2]。这样综合水平坐标方向上的二维信息和深度测量值,可以得到水下航行体的三维位置坐标[3]。本文基于MSP430 单片机设计并实现了深度测量电路,采用模块化设计和软件程序上的优化设计来实现对水下航行体的深度测量功能。
2 总体设计及主要器件介绍
测深功能模块电路结构如图1 所示,主要分为压力传感器、电流转电压电路、A/D 转换电路、串口电路和MSP430 控制电路五个部分,压力传感器用于把水下航行体当前航行位置的压力值转化为电信号。由于选择的压力传感器为电流输出型,因此需要电流转电压电路将其转化为电压值,用于后续的深度解算。随后进行模数转换,将转换后的数字信号送入单片机,通过水压和电压的线性关系解算出水下航行体的深度值。
图1 测深模块电路结构图
压力传感器选择型号为UNIK5000,适应深度为0~500m,为电流型输出型(4mA~20mA),具有宽供电电压范围(7V~32V)、高精度(误差为±0.1%)的特性。为了将电流输出转变为电压输出,选取了一个高精度电阻(万分之一精度),阻值为250Ω,即将压力传感器输出的电流变为电压,范围为1V~5V。将输出通过由AD8226搭接的放大电路,传输给A/D转换芯片。AD8226 是一款低成本、宽电源电压范围仪表放大器,仅需要一个外部电阻来设置增益,增益范围为1 至1000。它被设计为可工作于各种信号电压的情况下。宽输入范围和轨到轨输出使信号可充分利用供电轨。由于输入范围能够降到负电源电压以下,因此无需双电源供电便可放大接近地电压的小信号。该器件采用±1.35 V 至±18 V的双电源供电或2.2 V~36 V 单电源供电。宽输入范围和轨到轨输出满足使用条件,简化供电电路[4]。
A/D 转换芯片为TI 公司的16bit 高速2.7V~5.5V 低功耗模数转换器ADS8326。它具有16bit 传输不丢码、3LSBPP 低噪声、良好的线性特征、微功率(100kHz 采样率,2.7V 供电情况下,功率2mW)、支持SPI串行通信的特点,参考电压可以在0.1V 到VDD 之间,其内部结构图和管脚分布图如图2 所示[5]。
主控芯片为MSP430 系列,是一款极低功耗的微型控制器。经常应用于模拟和数字传感器系统,数字电机控制,远程遥控、恒温调节器、手持测量仪等。430 单片机具有应用广泛,开发成本小,功耗低,串行通信总线接口丰富,易于扩展等特点,经综合考虑,选取了MSP430F5438A作为主控芯片。
图2 ADS8326内部结构图和管脚分布图
2 电路设计与软件配置
2.1 供电电路设计
总电源由稳压源提供,需要给压力传感器供电(18V)采用LM7818;单片机供电3.3V,先由DC/DC模块M78AR05 变为5V,再由TPS77633 变为3.3V;放 大 电 路AD8226 供 电6V,使 用LM7806,将LM7818 输出的18V 变为6V;模数转换芯片供电5V,参考电压也为5V,需要使用精密电源,选取了REF195芯片。所设计的供电电路如图3。
2.2 压力传感器输出电流转电压电路
根据所选的电阻阻值为250Ω,对应压力传感器电压输出为1V~5V,于是电压放大电路放大倍数就设定为1,使用AD8226 搭接电路,因为是差模输入的仪表放大器,有助于抑制共模干扰。输入电压范围1V~5V,为留有一定余量,供电电压设计为6V。通过在AD8226 的2、3 管脚处外接电阻,可调节增益倍数,在开路状态下,增益为1,如图4。
图3 供电电路
图4 电流转电压电路
2.3 模数转换电路
电压信号在1V~5V 上,所以参考电压值为5V,以发挥A/D 的全部量化范围,得到更小的量化误差。在采样前为了抗混叠滤波,以及为将压力传感器输出信号中的高频干扰滤除,于是在A/D 芯片即ADS8326 前加一个RC 滤波电路。在输出管脚上,因ads8326 是5V 供电,而430 单片机为3.3V 供电,所以需要电压转换电路。模数转换以及电压转换电路如图5。
图5 模数转换以及电压转换电路
A/D 转换芯片通过SPI串行数据端口与单片机通信,配置如下:
UCB2CTL1|=UCSWRST;
UCB2CTL0=UCMSB+UCMST+UCSYNC;
UCB2BR0=0x50;
UCB2BR1=0x00;
UCB2CTL1=UCSSEL_2+UCSWRST;
P9SEL|=BIT2+BIT3;
UCB2CTL1&=~UCSWRST;
分频因子为80,时钟源为SMCLK,为16MHz,则SPI接口的fBITCLK为200KHz。
2.4 单片机及RS232串口通信电路
MSP430 单片机正常工作情况下,采用TTL 电平信号进行通信,输入高电平最小2V,输出高电平最小2.4V,典型值为3.4V,输入低电平最大0.8V,输出低电平最大0.4V,典型值0.2V。而PC 机传输的是RS232 信号,-3V~-15V 电压范围内的信号为逻辑“1”,+3V~+15V 电压范围内的信号为逻辑“0”。为了实现两种不同电平信号间的传输,我们选择TI 公司的SN65C3221E 芯片作为串口通信的电平转换芯片。
SN65C3221E 是 一 款 单 通 道3V~5.5V 供 电、1Mbit/s 传输的RS232 线路驱动器。它具有以下特征[7]:对RS232 管脚有防静电保护,低至1μA 的待机电流,仅需外部搭载四个0.1μF 电容,3.3V 供电模式下支持5V逻辑输入。电路设计如图6。
图6 RS232串口通信电路
其中管脚9、11与430端连接,分别为数据接收和数据输出。管脚8、13 与PC 机连接,分别为数据接收和数据输出。
MSP430 单片机的串行异步通信模式通过UCAxRXD 和UCAxTXD 两个管脚实现。它具有以下特征[8~9]:奇偶校验方式可选;发送移位寄存器和接收寄存器独立;发送缓冲寄存器与接收缓冲寄存器分离;低位优先和高位优先可选;波特率可控,小数部分可编程。本设计中,串口时钟源为16MHz,波特率为9600bps,具体配置程序如下[10]:
P5SEL | = BIT6 + BIT7; //P3.4,5 = USCI_A0 TXD/RXD
UCA1CTL1 | = UCSWRST; //Put state machine in reset
UCA1CTL1|=UCSSEL_2; //SMCLK
UCA1CTL0|=UCPEN; //odd parity
UCA1BR0=0x82;
UCA1BR1=0x06; //16MHz 9600
UCA1MCTL=UCBRS_6+UCBRF_0;
UCA1CTL1 &= ~UCSWRST;//Initialize USCI state machine
UCA1IE |= UCRXIE;//Enable USCI_A0 RX interrupt
3 实验室功能验证
3.1 深度值未做多次采样平均前
为了测试采集电路的可行性,通过压力泵对压力传感器加压的方式,采集在不同压力下输出,并由单片机通过串口发送回计算机。每次对A/D 前端的电压值进行采样,在单片机中将电压值按照换算关系(1V~5V 对应深度为0~500m,线性关系)换算为相应的深度值,并直接传回计算机,实验数据如表1。
表1 深度值未做多次采样平均前
由表1 可知,在0,0.5,1,2,3,5 六种压力状态下,测得的深度均值及跳动范围为(0.06,0.5)、(50.11,0.5)、(100.29,0.7)、(200.1,0.9)、(300.1,0.8)、(500.04,0.6)。分析平均值误差来源主要来自三个方面:一是压力传感器输出的误差即压力传感器本身一定会存在误差;二是A/D 采集的量化误差;三是单片机换算时的误差:A/D 采回的电压值换算为深度值的过程中包含有乘除法计算,而单片机只能进行定点运算,所以就会有精度上的误差。
从表1 数据中可以看出测量值的跳动范围很大,不够平稳,因此对测深数据进行一次滤波,即每次传回的深度值是把采集到的32 次电压值做均值换算。
3.2 深度值进行多次采样平均
进行了深度多次平均后,测得的实验数据如表2。
表2 深度值进行多次采样平均
由表2 可知,在0,0.5,1,2,3,5 六种压力状态下,测得的深度均值及跳动范围为(0.04,0.2)、(50.04,0.2)、(100.19,0.3)、(200.07,0.3)、(300.1,0.3)、(500.01,0.3)。对比前后两次数据,发现通过进行多次采样平均计算得到的深度值误差更小,尤其是几次测量的深度值的变化范围显著降低,数据更加平稳,单次测量的深度值更加准确。
4 结语
本文以MSP430F5438A 为主控芯片,设计了一个可用在水下航行体上的深度测量电路,电路包括了供电电路、压力传感器输出电流转电压电路、模数转换电路、单片机控制电路与串口通信电路等部分,实现了将压力信息采集到单片机中并与计算机通信的功能,通过采用多次测量求均值的方式,修正了单次采样测量的误差,达到了对水下航行体航行深度测量的目的,证明了方案的可行性。