0

我有一个 IR 传感器,它将其当前信息写入一个令牌,然后我在 C# 应用程序中对其进行解释。这一切都很好 - 没有问题,这是我的代码:

SetLabelText(tokens [1],label_sensorValue);
sensorreading = Int32.Parse(tokens[0]);
sensordistance = (mathfunctionhere);

伟大的。因此,红外传感器离物体越远,传感器读数越低(因为反射回来并被传感器接收的光越少)。

我的问题在于解释那个长度。我可以继续说“110”作为一个对象距离 5 英寸时的值,然后“70”作为一个对象距离 6 英寸的值。现在我希望能够使用这些常数计算任何长度的对象的距离。

有任何想法吗?

4

5 回答 5

5

嗯,我要做的第一件事是在固定距离处获取数据,即 1 英寸、1 英尺、2 英尺、5 英尺等。然后我会在 Excel 等程序中绘制这些数据并从中找到最佳拟合曲线你可以推导出一个函数。在您的代码中使用该功能并开始在不同的距离进行测试。

现在,可能没那么简单。您尝试测量的物体的反射特性会改变您的读数,其他因素也会如此。由于我不知道您的要求是什么,因此我很难给出更具体的建议。

于 2009-10-30T01:00:33.173 回答
3

它更像是一个物理问题而不是数学问题!

Ed Swangren 建议用各种实验的记录创建表格是可行的方法,除非您还可以依赖传感器制造商提供的信息。

除了设备固有的精度保真度之外,还有很多因素可能会干扰有效能量(或任何返回和测量的能量);阅读此特定设备或什至类似项目和/或物理效果/尺寸的基本原理可能会为您提供校准的更多想法。

一旦你有一个将测量值与距离(可能还有其他标准温度、反射因子......)相关联的表格,它就变成了一个真正的数学问题,例如:

  • 确认目标精度的统计相关性
  • 用离散表推断实际读数(似乎是 OP 的原始问题)
  • 找到回归函数,并取消表格方法(我怀疑这会很容易,正如评论中所暗示的那样,这将远非线性......
于 2009-10-30T02:54:53.730 回答
2

反射红外通常用于物体检测。但是,如果目标的形状、角度、反射特性并不总是相同,那么测量反射 IR 的强度并不是估算距离的可靠方法。

有任何想法吗?

不同的传感方法。怎么样,像这样的视差传感器:http ://www.acroname.com/robotics/info/articles/sharp/sharp.html 。

于 2010-05-07T19:36:21.083 回答
0

The energy from the light source will fall off as 1/r2 (for a source that's relatively small). Beyond this, if everything else is held constant, the only problem could be non-linearity in the sensor.

To check this with your data, you would expect E x r2=const, and this roughly holds for your data:
110 x 52 = 2750, and
70 x 62 = 2520,
so these are within 10% which seems fairly close, so it looks like the basic rule will hold.

Non-linear sensors are common, so you should be sure to check this over the full range that you'll be using it. But if it's a linear sensor, the other issues that people are mentioning (e.g. reflective surfaces) won't be a problem because, for light transmission and reflection, everything (almost) is linear and will therefore be intrinsically compensated for by a single calibration constant. The angle of the light source, absorbing materials, etc, all won't matter as long as they don't change.

If you test a few points, including the extremes of the range you're interested in, and it follows the 1/r2 rule, you're good to go. Then, of course, calculate what the const is, and r = sqrt(const/E).

于 2009-10-30T06:22:54.630 回答
0

进一步详细说明 tom10 提出的平方函数...

我们假设您的设备功能是一条方形曲线,即

distance = A + B * reading + C * reading^2

现在我们需要找出A、B和C来将你的读数转换成距离,所以我们需要的是一种回归分析。一条方形曲线恰好由 3 个点定义,因此您测量 3 个点 (r1..r3) 并注意距离 (d1..d3)

现在您有 3 个具有三个未知数的方程,您可以通过任何方式求解,即

A + r1 * B + r1^2 * C = d1
A + r2 * B + r2^2 * C = d2
A + r3 * B + r3^2 * C = d3

您对 A、B 和 C 求解一次,这将是您的“校准曲线”,并且能够使用上面的第一个公式计算任何未知距离。当然,如果您更改硬件,您将需要在任何设备变化的限制范围内重新校准您的装备。

您可以通过进行第四次测量并将上述所有方程扩展为变量 D 来将此机制扩展到三次甚至更高阶的曲线,即

A + rx*B + rx^2*C + rx^3*D + ....

等等,但它不会增加太多的准确性。您会发现 rx^3 及以后的因子 D 将非常小。

希望这可以帮助

祝你好运

于 2009-10-30T17:51:06.610 回答