1.引言
本文主要通过倾角传感器的选型、A/D转换及其测量控制电路的设计、与上位机的通讯等几部分,详细介绍了一种倾角测量系统的设计方案。已成功地在国家“十五”863计划“水下流浪潮综合测量技术”课题中得到应用。
2.倾角测量系统的硬件设计
图1是系统硬件组成的框图。如图所示,整个系统由SCA100T倾角传感器、一阶低通滤波器、ADS1211AD转换器、单片机、上位机等几部分组成。下面简单对硬件的各个组成部分进行介绍:
图1 硬件设计框图
2.1单片机的选择
单片微型计算机简称单片机。它是把组成计算机的各种功能部件:中央处理器CPU、RAM、ROM、I/O接口电路、定时器/计数器以及串行通讯接口等部件制作在一块集成芯片中,构成一个完整的微型计算机 。单片机是整个系统的核心,在本文的应用中主要用于数据采集和传输,选用的是ATMEL公司的AT89S52。
2.2 AD转换器
ADS1211是高精度、宽动态特性的Δ-Σ型模拟/数字转换器。它的差动输入端可以直接与传感器或微小的电压信号相连。其内部的Δ-Σ结构可确保它的宽动态特性和24位的分辨率。由于采用了低噪声的输入放大器,可以在转换速度为10Hz时获得20位的有效精度;借助于其内部独特的调制器加速操作模式,在转换速度为1kHz时仍可达到16位的有效精度。
基金项目:国家高技术研究发展(863)计划—资源环境技术领域海洋监测技术主题:水下流浪潮综合测量技术(课题号:2002AA632060)
ADS1211有主动和从动两种工作方式,在本应用中ADS1211与单片机的连接采用四线
制从动方式(如图2),即ADS1211的SDOUT、SDIO、SCLK、DRDY分别与单片机的P1.4、P1.5、 P1.6、P1.7口连接。采样数据通过SDOUT传输到单片机,单片机通过查询DRDY接收数据。单片机通过SDIO向ADS1211发送命令。SCLK引脚上的串行通波特率由软件编程实现。
图2 倾角测量系统电路原理图
2.3 倾角传感器
倾角传感器采用VTI Technologies 公司的SCA100T系列。SCA100T是采用微电子机电技术(EMES)制造的一款双轴加速度传感器,SCA100T单轴的最大输出范围约为±40度,有效输出范围为±30度。在采样频率为8Hz及以下时,可获得0.002度的输出分辨率。
加速度传感器可以用来测定变化或恒定的加速度。恒定加速度的一个特例就是重力加速度,当传感器静止时(没有水平或垂直方向的加速度时),重力加速度方向和传感器灵敏轴的夹角就是倾角。双轴加速度传感器测量倾角有两种放置方法:水平放置和一轴垂直放置。
图3给出水平放置示意图:
图3水平放置方法
水平放置在±60度的范围内有很好的分辨率,当大于±60度时,传感器将变得不灵敏(此时arcsin函数逐渐接近水平位置),当倾角接近90度时则无法测量。水平放置时应用如下的公式计算倾角:
可求得 为38.7度。考虑到仪器的倾斜不应该大于±30度(如果大于±30度只能重新安装),所以传感器安装时采用此种水平放置方法。
同时,为了进行传感器自检和内部校正,分别将传感器的MISO、MOSI、SCK、CSB与单片机的P1.1、P1.2、P1.3、P1.4相连。MISO用于传输传感器内部模数转换器转换的数字数据, MOSI与单片机的P1.2 引脚相连,用于向传感器发送命令和进行传感器内部自校正,使用软件编程通过P1.3向SCK提供串口通讯脉冲。CSB为片选信号引脚。另外,SCA100T内部带有温度传感器,可对温度误差补偿,在商业温度范围内可不考虑温度的影响。
2.4一阶低通滤波器
由于SCA100T系列内置一个11位的A/D转换器,会产生周期为50-70微秒持续时间大约1微秒的毛刺,这个毛刺被叠加到模拟信号输出端。在低速转换时影响不大,但在进行高速转换时可能引起测量错误。因此需要在模拟信号的输出端加上一个一阶低通滤波器,可有效滤除毛刺的影响。
2.5 电源部分
为了减少模拟信号噪声,采用MAXIM公司的低噪声高稳定性MAX6325电源芯片给ADS1211提供参考电源,使用MAX6350芯片给ADS1211提供模拟电源,同时也给传感器提供电源。
3.软件设计
软件分为下位机软件和上位机软件两部分。
3.1单片机软件编程
对于51系列单片机,目前有汇编、PL/M、C和BASIC四种语言支持。本文下位机软件采用Keil C51程序编写。主要由主程序、读ADS1211子程序、读SCA100T子程序、串口发送子程序和命令接收子程序等部分组成。图1.4为程序流程图:
图4单片机程序流程图
如图所示,整个程序采用顺序结构。为了加快系统的响应速度和提高计算精度,运算由上位机程序完成,下位机只负责数据采集和数据传输。命令接收子程序通过接收上位机传输的命令进行系统自检、参数修正等等。上位机的命令发送采用间隔10ms反复发送的方式,直到单片机将接收到的命令返回为止。如在1s内单片机没有响应,则设置超时,系统复位单片机。
3.2 上位机软件编程
单片机与上位机的通讯采用Visual C++6.0编写,程序在Windows XP下编译通过。
3.2.1串行通讯的实现
目前串行通讯主要有两种实现方法:一种是利用Windows API函数或是利用Microsoft Visual Studio的ActiveX控件MSComm。利用Windows API函数进行串口编程实现了设备无关性,但此种不但调用了大量的API函数,还涉及到进程调用问题,编程十分复杂繁琐。
本文采用MSComm控件,它间接调用Windows API函数,使编程人员在程序设计的时候不必再考虑复杂的系统函数,使编程工作变得简便,同时又能满足实际情况的工控要求。
实现测量系统与PC机的通讯,首先在程序里嵌入MSComm控件,并设置通讯参数,这里设置波特率为2400bps,8位数据位,无奇偶校验位,接收数据时采用事件驱动方式,响应Oncomm事件,当接收缓冲区中接收到的字符数超过一定值产生缓冲区有字符事件。然后用GetInput()读取缓冲区,用SetInputMode(1)设置输入数据类型为以二进制方式取回数据。这样可以接收ASCII字符‘0’。
3.2.2 倾角的计算
由上位机取得数据后,按下面的修正公式计算:
4.结束语
本测量系统研制成功后,已经过了三个月的海试,工作稳定,达到了预期的设计要求,取得了较好的效果。采用加速度计式的倾斜传感器与传统触点电位器式的倾斜传感器相比,有着无可比拟的优点。如加速度计式的倾斜传感器工作寿命长、精度高、响应速度快等优点。