2007-09-15
水平放置在±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.结束语 本测量系统研制成功后,已经过了三个月的海试,工作稳定,达到了预期的设计要求,取得了较好的效果。采用加速度计式的倾斜传感器与传统触点电位器式的倾斜传感器相比,有着无可比拟的优点。如加速度计式的倾斜传感器工作寿命长、精度高、响应速度快等优点。 |
评论1
楼主 2007/9/15 13:38:49