光学传感器
光学传感器,当与 线性执行器,功能非常类似于 霍尔效应传感器,只不过它们检测的是光而不是磁场 [1]。光学传感器利用 LED 或其他光源发出的光穿过编码器盘进行操作。该编码器盘上开有槽,允许光线周期性地穿过它。磁盘的另一侧是光电探测器,当光线穿过磁盘插槽时,它会检测到光线并产生输出信号 [1]。当执行器移动时,编码器盘旋转,光电探测器检测到光,光电探测器产生电压脉冲方波。这些脉冲可以与霍尔效应传感器的脉冲类似地使用,以确定执行器移动了多远。
来自光学传感器的位置反馈
由于光学传感器的输出功能与霍尔效应传感器非常相似,因此本文将简要介绍如何读取其输出以获取位置反馈。如果您正在寻找更多详细信息,请查看我们关于如何从霍尔效应传感器读取位置反馈的文章,因为很多内容都是相似的。
与霍尔效应传感器一样,光学传感器也有 3 个引脚可供连接;一个是输入电压,另一个是地,最后一个是输出信号。要利用输出信号上的脉冲进行位置反馈,您需要使用 微控制器 计算产生的脉冲。您需要利用微控制器的外部中断引脚来准确计算这些脉冲。由于外部中断是由电压变化触发的,因此它们可用于检测每个脉冲的发生。在微控制器代码中设置中断后,您需要设置一个中断服务例程来对发生的脉冲进行计数。下面代码示例中的函数 countSteps() 用于计算光学传感器的脉冲数。
要利用这些脉冲来确定位置值,您需要知道线性执行器的先前位置以及线性执行器行进的方向。当您控制线性执行器移动的方式时,您可以简单地设置一个变量跟踪代码中执行器的方向。该变量可用于确定是否需要在之前的位置上添加或减去脉冲。更新位置后,您需要将计数的脉冲重置为零。下面的代码示例向您展示了一个根据计数的脉冲数更新位置的函数。一旦您获得了以脉冲表示的位置,您就可以使用线性执行器的每英寸脉冲规格将其转换为英寸。
归位您的线性执行器
为了准确利用光学传感器的位置反馈,您需要始终知道线性执行器的起始位置。尽管当您第一次打开系统时,您的微控制器将无法判断执行器是否伸出。这将要求您将线性执行器归位到已知位置。回家你的 线性执行器,您需要将其驱动到已知位置,例如完全缩回。使用下面的 Arduino 代码作为示例,我们设置了一个 WHILE 循环,它将驱动我们的线性执行器朝我们已知的位置移动。在这个例子中,我们通过检查steps变量是否改变来检查中断是否被触发,从而知道我们处于已知的位置。我们还需要确保已经过去了足够的时间来触发中断,为此我们使用 millis() 函数并将其与之前的时间戳进行比较。一旦我们确定线性执行器处于原始位置,我们就停止驱动执行器,重置步骤变量,并退出 WHILE 循环。
处理错误触发因素
虽然光学传感器对电噪声不如电位计那么敏感,但电噪声和开关弹跳仍然会影响输出信号,并可能触发要计数的错误脉冲。一些额外的脉冲不会对定位产生太大影响,但随着时间的推移,这可能会成为一个更大的问题。您可以通过使用内部计时器来过滤掉错误触发来解决这些问题。由于您可以确定期望检测到新脉冲的频率,因此您可以过滤掉噪声触发中断的时间。在下面的代码示例中,trigDelay 是每个脉冲之间的时间延迟。如果在此延迟之前触发中断,则不会对脉冲进行计数。该延迟的时间长度将根据您的应用而有所不同,但如果它太短,它将无法正确滤除噪声,如果它太长,它将错过来自光学传感器的实际脉冲。
对抗错误触发的另一种方法是每次执行器到达已知位置时校正位置值。就像归位线性执行器一样,如果您已将线性执行器驱动到完全缩回或伸出位置,或者使用外部限位开关,您将知道到达该位置需要多少个脉冲。然后,当您到达该已知位置时,您可以使用该值简单地纠正位置值。在下面的代码示例中,这是针对完全伸展和完全缩回位置完成的。此方法提供了一个实用的解决方案,以确保您的位置值保持准确。
概括
与霍尔效应传感器和电位计相比,用于位置反馈的光学传感器提供了更高的精度和分辨率,同时与霍尔效应传感器具有相似的优点和缺点。尽管它们不测量绝对位置并且需要已知的起始位置来提供位置值,但每英寸的大量脉冲可以实现定位的可靠性并确保多个线性执行器同时移动。利用我们的 FA-SYNC-X 执行器控制器或 通过附加代码,您甚至可以确保执行器一致移动,无论负载如何。
有关完整的代码示例,请查看我们的博客 如何读取霍尔效应传感器的位置反馈 尽可能多的相似。每英寸脉冲数和脉冲之间的时间延迟等值是您需要进行的一些更改,以便使用该代码来准确地利用光学传感器。
[1] 帕肖塔,R. 关于光学传感器的文章。 从...获得:https://www.rp-photonics.com/optical_sensors.html