说明
本应用说明介绍了如何将电解式倾斜传感器的原始输出转换成度数。
倾斜传感器的线性范围和工作范围
电解倾斜传感器的测量范围可以用两种方式描述:线性范围和工作范围。工作范围是指传感器将给出单调输出,但在其他方面没有确定的特性(它是非线性的)的范围。线性范围是指在工作范围内,输出在一定百分比内是线性的那部分。图1显示了这两个范围的区别。
图1线性范围(左)和工作范围(右)。
线性近似
为了找到线性范围内的倾斜角,需要找到一个与传感器输出相匹配的线性函数。这将是图1中左图中线的函数。这个函数在下面给出。
本公式中的原始传感器输出是传感器的输出。这通常是以计数为单位,但根据传感器输出的读取方式,也可以使用其他单位。
其他两个值需要以一定的角度对传感器进行取样。这些角度可以使用另一个传感器、数字量角器或任何其他确定角度的方法来确定。0°时的原始传感器输出只是传感器处于水平状态时的输出。
每度的计数(即线的斜率)用以下公式计算。
线性范围可从传感器的数据表中获得。原始输出将是线性范围边缘的传感器输出。例如,对于线性范围为±25°的传感器,原始输出将在+25°和-25°处进行采样。请注意,创建函数时只需采集一次这些样本;然后可使用采样值进行倾斜度转换。
假设我们有一个0717-4319-99传感器,其输出为16位(0至65535),我们想将其转换为度数。这是一个线性范围为±20°的双轴传感器。由于它是一个双轴传感器,我们将需要两个公式:一个用于X轴,一个用于Y轴。首先,我们将找到X轴的公式。我们开始在0°和±20°处取样,并找到以下测量值。
X轴在-20°时的倾斜度=26055。
X轴在0°时的倾斜度=33234。
X轴倾斜度为±20°=40379。
现在我们可以用这些样本来计算每度的计数。
然后可以将每度的计数和零样插入公式中,得到下面的换算。
如果需要进行Y轴测量,请按照这些步骤从Y轴的样品再次进行测量。
现在,每当我们从这个传感器得到一个测量值,我们想把它转换成度数,我们就可以使用这个新的公式。例如,如果我们的X输出为29655,我们可以使用该公式来确定倾斜角。
每个学位的大约数量
由于制造工艺造成的细微差异,应计算每个特定传感器的转换函数。然而,这并不总是可行的。下表给出了可用于计算的每度平均计数和0°值。请注意,与为特定传感器创建函数相比,使用这些值将导致较低的测量精度。所有数值均为16位(0-65535)输出。表中未列出的传感器将要求用户按照上述程序查找转换。
传感器 | 每度数 | 零度 |
0703-1602-99, 0729-1765-99 | 976 | 32768 |
0703-0711-99 | 17582 | 32768 |
0717-4303-99 | 736 | 32768 |
0717-4304-99 | 268 | 32768 |
0717-4305-99 | 188 | 32768 |
0717-4306-99 | 188 | 32768 |
0717-4311-99 | 268 | 32768 |
0717-4313-99 | 342 | 32768 |
0717-4314-99 | 335 | 32768 |
0717-4316-99 | 756 | 32768 |
0717-4317-99 | 569 | 32768 |
0717-4318-99, 0729-1751-99, 0729-1752-99, 0729-1753-99, 0729-1754-99, 0729-1755-99, 0729-1759-99, 0729-1760-99 |
284 | 32768 |
0717-4319-99 | 363 | 32768 |
0717-4321-99 | 758 | 32768 |
0717-4322-99 | 594 | 32768 |
0737-0101-99 | 2887 | 32768 |
0737-1203-99 | 12765 | 32768 |
多点插值
多点插值法使用提前采集的样本来得出度数的测量结果。这种方法的精度将取决于样本的数量和分布;然而,即使是取3个样本,一般也能提供比线性近似更好的结果。
样本分布是达到准确转换的最重要因素之一。靠近样品的转换会更准确。正因为如此,取样距离较近的样品将导致更精确的转换。这些样品应在传感器的整个范围内采集。根据不同的应用,它们可以均匀地分散在整个范围内,或者集中在一个需要精确的区域。
要将一个原始值转换为度数,请确定两个参考样本。这是两个在每个方向上最接近测量值的样本。然后,在两个样本之间找到一个线性近似值,并将原始输出映射到这个近似值上。这条线上的点将给出传感器的倾斜度。图2中的图形显示了这一概念的可视化。
图2显示样品、参考样品和测量的图表。
这个换算公式如下所示。
假设我们有一个工作范围为±60°的倾斜传感器的56412的原始测量值。另外,假设我们已经以5°的间隔采集了样本用于转换。通过比较56412和样本,我们确定我们的两个参考点将在50°(54213)和55°(57878)。然后,我们可以使用公式来计算角度。
因此,我们最终的测量结果是53°。
此方法可用于将传感器工作范围内任何地方的测量值转换为度数。它也将实现比线性近似更好的精度。然而,它需要大量准确的样本才能达到最佳效果。
多项式插值
多项式插值可用于实现精确的测量,而无需采集许多样本。这种方法将使用样本找到一个多项式方程,该方程将在传感器的工作范围内提供准确的转换。
采集的样本将用于开发一个描述传感器输出的多项式方程。至少,您将需要 N-1 个样本来导出 N 度多项式。例如,7 个样本将创建一个 6 度多项式。您也可以使用更多的样本来创建一个低度多项式,但这通常会比用相同的点创建一个高度多项式的精度低。
可以使用任何数量的样本,但我们建议至少取3个样本。使用2个样本也可以,但会导致线性近似。需要注意的是,7级或更高的多项式对精度的提高不大。
虽然多项式可以手动确定,但使用软件计算要容易得多。一个简单的方法是使用Microsoft Excel的最佳拟合线;然而,这对于一个可用的转换来说可能不够精确。Wolfram Alpha是一个更精确的选择,但方程仍然需要手动解决。最好的选择是使用编程库。例如,可以使用 NumPy Python 库中的 Polynomial.fit() 方法。下面的代码显示了如何从7点生成一个6阶多项式。
导入numpy.polynomial.polynomial。 coefficients = numpy.polynomial.polynomial.Polynomial.fit( [56668, 46553, 36140, 32845, 31207, 21913, 9586], # 原始值 [60,42,12,0,-6,-36,-60],#对应的角度值为原始值。 6)#多项式的阶数 print(coefficients) # 产出。 # [-7.88427627e+01 2.57631617e-03 # [-7.88427627e+01 2.57631617e-03 -7.71958174e-08 -1.75354175e-13 # 2.17551410e-16 -5.89635260e-21 4.45379575e-26]
请注意,当使用这样的函数时,正确指定顺序是很重要的。例如,4个样本将生成一个3阶多项式。然而,如果给定4作为顺序,库将随机猜测来创建一个方程。这将导致不那么精确的转换。
Polynomial.fit()返回的数组是多项式的系数。根据上面的输出,方程为
角度= (4.45e-26)x6- (5.89e-21)x5+ (2.17e-16)x4- (1.75e-13)x3- (7.72e-8)x2+ (2.57e-3)x1- 78.84。
这个函数就可以通过插入x的原始值来解决未知角度,比如说我们有上面的函数,有一个41643的原始测量值。我们可以用下面的计算方法来求角。
角度= (4.45e-26)(41643)6- (5.89e-21)(41643)5+ (2.17e-16)(41643)4- (1.75e-13)(41643)3- (7.72e-8)(41643)2+ (2.57e-3)(41643)1- 78.84
角度= 232.264 - 738.402 + 654.227 - 12.663 - 133.868 + 107.285 - 78.842 = 30.002°。
如果使用上图所示的NumPy库,可以使用polyval()方法完成。
print(numpy.polynomial.polyval(41643, coefficients.convert(.coef)) # 输出:30.001695321007
请注意,这个计算的结果对输入的任何变化都非常敏感。例如,如果上面的系数被四舍五入到3个有意义的数字(像写的那样),公式的结果是31°。正因为如此,在用这种方法计算角度时,重要的是不要将任何值四舍五入。