带肉的综影视同人文:一种高精度数字倾角测量系统的设计

来源:百度文库 编辑:偶看新闻 时间:2024/04/20 04:25:34
 

一种高精度数字倾角测量系统的设计

2010-2-5 19:57:00 来源:中国自动化网   摘要:详细介绍了利用A/D转换器、温度传感器和单片机实现数字倾角测量系统的硬件和软件设计。该系统具有精度高、运行稳定、性能可靠、带温度补偿等优点,可广泛应用于宽工作温度范围的高精度倾斜角测量中。
关键词:AT89C52单片机 倾角测量 ADS1210

  在自动控制和工程设计中,常常需要对某一个平面或基准进行倾角测量,或进行自动水平调节,特别是在自动控制中,经常需要对某一物体进行动态水平控制,这就要求仪器能对水平倾角进行自动动态跟踪测量[1];在某些高精度的测量系统中,还要求对系统进行快速调平或对某些装置与水平面的倾斜角进行快速高精度的测量。这些都是传统倾角测量系统和水平仪很难做到的。以电子倾角器为传感器而设计的数字倾角测量系统或数字水平仪不仅能满足自动测量与控制的要求,而且能使测量的精度和速度大大提高。


  以往使用电子倾角器作为传感器而设计的数字水平仪和电子倾角测量系统,没有考虑环境温度对测量精度的影响,故无法满足某些高精度调平和倾斜角测量的需求。为了进行宽工作温度范围的高精度测量,必须对电子倾角器进行温度补偿。这里介绍一种高精度的数字倾角测量系统,它利用 Jewell Instruments公司的LCF-100型倾角器作为倾角传感器,其输出的模拟电压与倾斜角正弦成比例。将该模拟电压进行A/D转换后送入单片机,同时利用温度传感器实时采集倾角器周围环境的温度,也送入单片机,通过编制好的计算程序进行计算,将计算结果通过串口中断方式传送到上位计算机。本文将详细地阐述系统硬件电路设计以及软件设计。

1 系统硬件设计

1.1系统的硬件结构
  高精度数字倾角测量系统的硬件结构如图1所示。单片机选用ATMEL公司的AT89C52,利用其提供的软件硬件资源,完成系统的控制以及采集数据的计算。系统的主要部分包括:电子倾角器、二阶低通滤波器、A/D转换器ADS1210、AT89C52、温度传感器DS1624、电源以及向上位计算机传送数据的通讯接口电路等。

 


图2

  电子倾角器选用Jewell Instruments公司生产的LCF-100型电子倾角器,它属于力平衡式伺服系统电子倾角器,测量范围为 -1°~+1°,其输出为模拟电压,与倾斜角度的正弦成正比。该倾角器具有分辨率高、响应速度快、线性度好等特点。由于电子倾角器输出的模拟电压含有高次谐波,因此通过二价低通滤波器滤除输出信号的高频分量。

  A/D转换器将电子倾角器输出的模拟量转换为数字量,其分辨率的高低将直接影响系统的测量精度。根据设计要求,本系统采用Burr-Brown公司 ADS1210作为电子倾角器的A/D转换器,它是一个24位分辨率、宽动态范围、单5V电源供电、带自校正功能的∑-Δ高精度A/D转换器,其内部由可编程增益放大器、二阶∑-Δ调制器、调制器控制单元、三阶数字滤波器、微控制器、寄存器组、基准参考源和时钟电路等组成[2]。ADS1210将转换的数字量通过I2C总线传送到单片机。

 

  温度传感器选用Dallas Semiconductor公司的DS1624数字温度测量计,它具有测量精度高、测量温度范围宽,易与单片机接口等特点,其内部还带有256字节的E2PROM,用于存储测量系统的修正参数[3]。温度传感器实时采集系统的环境温度,将采集的温度值通过I2C总线送入单片机。

1.2 ADS1210和DS1624与AT89C52的接口电路
  ADS1210和DS1624与AT89C52的接口电路如图2所示。传感器的输出接到ADS1210的AINP和AINN输入端。在这里,ADS1210和AT89C52采用的是三线连接,DRDY、SDIO、SCLK分别与P12、P13、P14相连接,其中SDIO用于数据的输入和输出,CS直接接地,MODE接地表示从机方式。由于在本系统中只用了一块ADS1210,故可将DSYNC与DVDD直接相连。

  利用AT89C52的P1口的P10和P11分别与DS1624的引脚SCL和SDA相连构成I2C总线。I2C总线是一种串行数据总线,只用两根信号线,一根是双向数据线SDA,另一根是时钟线SCL。在I2C总线上传送的一个数据字节由八位组成,总线对每次传送的字节数没有限制,但是每个字节后必须跟一个应答位(ACK),数据传送首先传最高位(MSB)。

 

2 系统软件设计

  本系统软件采用汇编语言编程,由主程序、计算子程序、ADS1210读写子程序、DS1624读写子程序和串口中断服务子程序等组成。倾角器温度补偿的相关参数存放在DS1624的E2ROM中,必要时上位计算机通过控制命令对其进行修正。中断服务程序随时接收上位计算机的控制命令,进行系统自检、参数修正、数据输出等。

2.1主程序
  主程序完成初始化后,实时采集环境温度和电子倾角器数据,并进行补偿运算。为了保证采集倾角器数据的稳定性,采集一次环境温度数据后,连续采集10次倾角器数据进行算术平均,然后再采集一次环境温度如此,如此循环往复。 请登陆:输配电设备网 浏览更多信息

 

  主程序的流程如图3所示。

2.2 计算子程序
  电子倾角器输出的模拟电压V与倾斜角度θ的正弦近似成线性关系,即:

  V=V0+K0×sinθ  (1)

  其中,K0是电子倾角器的转换比例因子。因倾角器的测量范围为±1。可以用弧度值替代角度的正弦值,其计算误差为:

 

该误差可以忽略不计,则公式(1)简化为:

  V=V0+K0×θ

  从公式(2)可以看出,倾斜角度θ是随环境温度线性变化的函数,而线性传感器的温度补偿是对零位和灵敏度的补偿,所以经过温度补偿的倾角器输出为:

  V=V0+K×ΔT+K0(1+K1×ΔT) ×θ

  式中,K为零位温度系数,K1为比例因子温度系数。

  用AD表示A/D转换器输出的数据;K_AD表示A/D转换器的输出斜率,单位:1/V;B0表示基准零偏电压,单位:V;B_temp表示零点偏差系数,单位:V/℃;ΔT表示温度变化量,单位:℃;S.F._Temp表示比例因子温度系数;Title表示修正后的倾角,单位:"。则(3)式变为:

  
  两边同时乘以K_AD,则(4)式变为:

  
  由(9)式可以计算出温度补偿后的修正倾角。
  计算子程序的流程如图4所示。

2.3 ADS1210的编程
  对ADS1210编程,首先对其进行初始化,根据系统设计的要求,确定相关的参数,如增益PGA、加速因子TMR、数据输出率DR(抽取率)等。在初始化子程序中,将这些相关的参数写入CMR。启动ADS1210的转换,然后调用读DOR寄存器子程序,将转换的结果读到单片机中。ADS1210的初始化流程和读DOR寄存器流程如图5所示。

2.4 DS1624的编程
  由于将DS1624的引脚SCL和SDA与AT89C52的P10和P11相连构成I2C总线,对DS1624的读写操作都要遵循I2C总线协议。利用单片机可以仿真I2C总线的读/写时序。I2C总线的控制主要包括以下五部分:开始、读数据、写数据、应答、停止。

 


图6

  DS1624的编程包括以下几个子程序:初始化子程序、启动温度转换子程序、读取温度值子程序。在初始化子程序中,向配置/状态寄存器写一个字节的数据用以将DS1624的工作方式设为连续转换方式。
  DS1624的初始化子程序、读取温度值和启动温度转换子程序流程图如图6所示。

2.5 串口中断服务程序
  如果更换电子倾角器,那么其相应的参数,如固定零偏差、零偏的温度系数、比例因子、比例因子温度系数等都会发生变化。为了提高系统的通用性,将这些参数通过串口中断的方式进行修改。单片机计算得到的结果即修正角度也是通过串口中断的方式输出的。本系统的串口中断服务程序包括以下几个命令:写零偏差、写零偏温度系数、写倾角器转换比例因子、写比例因子温偏差、写ADS1210的转换比例、写ADS1210的转换速率、写角度校准值、初始化E2ROM中的数据、读温度值、读计算后修正角度值、检查写进数据的正确性、检查芯片是否工作正常等。串口中断服务的流程图如图7所示。

 

  本文介绍的高精度数字倾角测量系统已经在工程中得到实现,并通过T3经纬仪验证了它的测量精度。实验结果表明:在-10℃~+50℃的温度范围内,其精度达到3”,能满足宽工作温度范围高精度测量系统的需要。更宽温度范围内的精度验证实验正在进行中。该系统已经在某项目的水平倾斜角测量中得到应用,运行稳定、性能可靠。