DIY编程器网
标题:
基于单片机的气压式高度计设计
[打印本页]
作者:
liyf
时间:
2012-1-16 16:40
标题:
基于单片机的气压式高度计设计
摘要:采用集成度高的压阻式硅气压传感器,运用模块化设计方法完成了基于C8051F353单片机的数字式气压高度计的设计。通过仿真软件采用分段插值方法优化提高测量精度,实现了数字式气压高度计的智能化。实验表明,本文设计的气压式高度计能够显著提高测量精度,非常适合对体积和功耗有要求的小型飞行器上使用,也可使用在地面仪表上,进行大气数据采集。
关键词:气压传感器;误差补偿;C8051F353;非线性校正
??? 高度是载体到某一基准水平面的垂直距离,是导航的一个重要依据。气压传感器是气压式高度计的重要器件。传统的气压传感器信号调理电路校准和补偿电路复杂,稳定性差,不能直接用于计算机数字化处理,也不便于在便携式设备中集成。本气压式高度测量系统使用微型压阻式传感器,通过对静压的测量,经过模/数变换后由单片机进行数字滤波,函数解算出载体当前的绝对高度,具有较高精度和抗干扰能力。
1 高度测量系统的设计
??? 大气压力在数值上等于所在海拔高度往上直到大气上界整个空气柱的重量,因此理想情况下,大气压力与海拔高度具有一一对应的关系。在海平面附近,海拔高度每升高100 m,气压下降大约0.7 kPa。由于空气具有可压缩性,大气压力与海拔高度具有非线性关系。
??? 高度和气压之间的函数关系较为复杂。如果照搬气压公式来制作电路,电路将变得十分复杂,现实起来非常困难。因此,设计该高度计时,可以将高度按区段划分,分别进行数据的解算。
1.1 气压高度计设计的理论基础
??? 气压与高程的关系模型:H=T0/L×(P/P0)∧(1/(N-1))(近似公式)。以标准海平面为基准:T0=288.15K;P0=101.325kPa;N=5.2558 8;L=-0.006 5℃/m,通过计算结果可见表1。从表中数据可以看出,传感器的漂移等引起的误差对高端和低端的影响是不同的。为提高测量精度,设计时要考虑这一点。根据气压公式可以得出0~6 000 m量程内的压力变化范围在47.18~101.325 kPa。据此可确定硅压阻式传感器量程。为充分利用传感器的精度,选择硅压阻式传感器量程要尽量接近测量范围。
1.2 高度计的硬件设计
??? 硬件结构由微型硅压阻式传感器、单片机、A/D转换、精密参考电压、显示驱动模块、串口通信模块、电源模块等几部分组成。元器件选取主要考虑设计精度和体积功耗,并留有一定的余量。
1.2.1 单片机
??? 数据处理要求体积小功耗低,内部带有16位ADC和温度传感器。此处选用C8051F353型单片机,是美国Silicon Labs公司最新推出的一款混合信号片上系统型单片机芯片,可以工作在-40~+85℃温度范围,28引脚LQFP封装,带有最大放大倍数128的可编程增益放大器(PGA)。非常适用于多路模拟数据采集系统。
1.2.2 压阻式传感器
??? 气压传感器在气压计中占据核心位置。设计时可根据测量精度、测量范围、温度补偿、测量绝对气压值等几个性能指标来选取气压传感器。选用传感器量程要尽量与测量的范围相符,以利于同样的精度条件下减小误差。传感器选用体积较小的飞思卡尔公司的MPX2100D型绝压传感器,量程为100~0 kPa。线性度为±0.25%FS。满量程输出为40 mV(10 V供电)。它用单个由离子注入工艺形成并经激光修整的X型电阻代替一般用4个电阻构成的惠斯登电桥,避免了由4个电阻的不匹配而引起的误差。
1.2.3 ADC芯片
??? 根据量程和分辨率选择A/D转换器位数和精度。ADC芯片的位数N根据公式N≥log2(1+Umax/Umin)计算(式中:Umax为ADC芯片的满度输入电压;Umin为ADC芯片最小能分辨出的电压),为达到1 m以上的气压高度分辨率,A/D转换器的位数要在15位以上。为简化电路,缩小体积,这里A/D转换器采用C8051F353自带的16位ADC0。参考电压使用单片机内部自带的2.5 V基准。通过将寄存器ADCOMD中的ADOEN位置“1”和将寄存器ADCOCF中的ADOVREF位清“0”来使能内部电压基准。使用时应在VREF和AGND之间接入0.1μF和4.7μF的旁路电容。
1.2.4 显示通信电路
??? 由于使用4个单个LED进行显示的连线比较复杂,同时单片机的端口驱动能力也难以保证,此处选用专门的驱动芯片。显示驱动选用可编程8位SPI串行LED接口的MAX7219。串口通信电路主要用来实现该系统与上位计算机的通信,利用C8051F353型单片机的UART串口总线通过SP3 232芯片的电平转换与上位计算机进行通信。工作于9 600 b/s,1个起始位,8个数据位,1个停止位,奇校验。
1.2.5 电源与抗干扰设计
??? 使用了低压差稳压器LM1117A分别为微处理器和为其余电路供电。采用了基准电压源MAX6350来稳定对压力传感器的供电,以保证传感器输出的稳定性。将基准电压分压后作为C8051F353型单片机的电压参考。PCB板设计时每个芯片有电源退耦电路。模拟数字分开布线。为了避免传感器产生的信号在进入A/D采样前发生失真并减少传感器的功耗,在ADC的输入端连接了滤波器,降低噪声并作为缓冲器隔离前后级,避免其他电路对ADC采样的影响。仪器采用干电池供电不存在电源或电网干扰问题。但现场使用不可避免地会受到自然放电干扰和其他电气设备的放电干扰。为不增加过多的硬件屏蔽措施,设计采用软件采用了采用了改进的平均值滤波算法。
1.3 高度计的软件件设计
??? 软件设计流程如图1所示,采用模块化结构,方便调试。包括初始化子程序、采样数据处理、A/D转换子程序、压力补偿子程序、数据处理子程序、高度计算子程序、通信子程序、显示子程序等部分组成。
??? 虽然测量范围内指示空速是大气动压的单值函数,但其函数关系式比较复杂,若由式(1)、(2)由单片机直接计算,要使用浮点运算,会占用较多的计算机资源。该设计选定线性插值方法来计算指示空速。用一个简单易实现的线性函数代替原复杂函数,即:y=yi+ki(x-xi)。式中:yi,xi,ki分别代表第i个插值点气压高度值、大气静压值和插值线段的斜率。插值点的个数可由线性插值法的误差公式确定:
???
??? 式中:M=max(f"(x));δ为计算精度。根据系统要求的计算精度δ,求出步长h=xi+1-xi,得出曲线插值的分段段数n=60。预先计算各插值点相应的气压高度值、大气静压值和插值线段的斜率,把校正点的数据求出,按照一定的规律构成表格存放在单片机的内部ROM中。采集到的数据,先与校正点的数据进行比较找到数据所在的分段,然后将该分段对应的yi,xi,ki代入分段插值公式中计算,即可解算出气压高度值。这样可在保证精度的前提下提高采样频率。
??? C8051F353单片机内部设有温度传感器,温度传感器系统由两个温度特性不同的二极管和两个恒流源组成。两个通道通过ADC的模拟多路选择器连接到ADC的输入端。温度传感器系统,工作在差分方式。本文利用C8051F353单片机内部的温度传感器对温度进行采样,对传感器的输出进行修正,以进一步提高输出精度。
??? 根据压阻式压力传感器原理,所测压力大小P与传感器输出电压U是线性关系。即两个参数关系为:P=aU+b。由于传感器的零位和灵敏度会随温度漂移,因此系数a,b也会随温度变化而变化,即系数a,b是温度的函数。首先,通过多次采样定标,由标准压力源提供分组标准压力,记录一定温度下传感器的输出电压值,即多组(Pi,Ui),i=0,1,2,…,n,然后利用最小二乘法进行曲线拟合。为使总误差
最小,可用Q对a,b求偏导数,令这两个偏导数为零,则求解方程得出一定温度对应的系数(at,bt)。其中t=-10℃,0℃,10℃,…,50℃。压力大小P与输出电压U关系为:
???
??? 然后再通过牛顿插值法,根据温度传感器提供的温度参数t,对压力P与电压U关系式进行插值修正。由插值多项式:
???
??? 根据一定温度修正后压力P与电压U的关系式,可以由所测电压U计算出实际压力值P。
2 实验结果和误差分析
??? 由于传感器的最大误差在测量值的最高端,如果此段的误差满足设计要求,其他分段即可满足要求。结果如表2所示。由于仿真阶段排除了可能出现的软硬件错误,在后继的PCB制版及总体调试中非常顺利。实际电路中由于存在电磁干扰和温度漂移,整体误差比仿真略大,对于误差最大来源的传感器,已对其进行了单独的校正和补偿,最终该测量系统在-300~+6 000 m的高度范围内误差小于1m。
??? 对于海拔高度,系统测量误差主要来自传感器、放大电路和转换器三项误差,用均方根法可表示为:
???
??? 要降低系统误差,就要分别降低这三项误差。其中放大器电路的误差,主要由放大电路中所用电阻的精度、集成运算放大器的性能和电路的结构决定。设计和调校好的放大电路可以使该项误差很小,基本可以忽略。ADC误差主要是其积分非线性误差、微分非线性误差、偏移误差、满量程误差和偏移温度系数误差。现代放大电路的误差和ADC误差远小于传感器的误差。所以系统的误差主要决定于传感器的误差。如要进一步提高测量精度,可以换用更高精度的传感器。
3 结语
??? 该高度计避免了机械部件带来的机械误差,充分利用了C8051F353单片机内部资源。具有体积小、精度高和智能化误差补偿等特点,特别适合在小型飞行器上使用。具有很好的实用性,适用于需要实时高度信息的场合,可以完成载体上多种高度参数的实时测量和显示,内有串口通信模块,不仅可显示本机测量值,也可通过串口发送给大气数据计算机,实现数据的记录和监测。有广泛的应用前景。
欢迎光临 DIY编程器网 (http://diybcq.com/)
Powered by Discuz! X3.2