1

我有一个系统,我使用 RS232 来控制一个灯,该灯接受一个表示电压的浮点输入(在 2.5 - 7.5 范围内)。然后,控制器会给出 0 到 6000 范围内的输出,这是传感器拾取的亮度。

我想要的是能够平衡系统,以便我可以指定亮度值,并且系统应该平衡实现这一点的电压值。

是否有一些标准算法或技术来找到电压输入应该是什么以获得特定的输出?我正在考虑一种算法,它迭代地尝试值,并从每次尝试中确定一些新值,该值应该更好,以实现确定的输出值。(在我的情况下是 3000)。

所需的电压值往往会在不同系统之间以及在灯的使用寿命期间发生变化,因此最好完全自动完成。

我只是在寻找一种技术或算法的名称,但伪代码也同样有效。:)

4

3 回答 3

1

我根本不喜欢物理学,但如果你可以假设电压和亮度之间的关系有点接近线性,你可以使用标准的二分搜索。

除此之外,这让我想起了倒立摆,这是使用模糊逻辑的标准示例之一。

于 2011-06-23T06:39:19.417 回答
1

在浏览了更多维基百科后,我发现了这个:

控制回路反馈机制:

previous_error = setpoint - actual_position
integral = 0
start:
  error = setpoint - actual_position
  integral = integral + (error*dt)
  derivative = (error - previous_error)/dt
  output = (Kp*error) + (Ki*integral) + (Kd*derivative)
  previous_error = error
  wait(dt)
goto start

[编辑]

通过删除“积分”组件并调整权重(Ki 和 Kd),循环可以完美运行。

于 2011-06-23T06:30:38.310 回答
1

通过尝试 2.5 和 7.5 之间的所有电压(例如 0.1V 增量)在初始运行时校准系统,并记录传感器输出。

给定例如 3000 作为所需亮度级别,选择提供最接近亮度的电压,然后根据传感器输出以小增量向上/向下调整,直到达到所需亮度。不时(根据您的校准值变得不那么准确)重新校准。

于 2011-06-15T06:58:51.337 回答