如何读取光学传感器的反馈

光学传感器

光学传感器,当与 线性执行器功能非常类似于 霍尔效应传感器,除了它们检测光而不是磁场[1]。光学传感器通过使用来自LED或其他通过编码器盘的光源来工作。该编码器盘上开有插槽,以允许光线定期通过。磁盘的另一侧是一个光电探测器,当它穿过磁盘上的插槽时,它会检测光并产生输出信号[1]。当致动器移动时,编码器盘旋转,光电探测器检测到光线,从而产生电压脉冲的方波。可以类似于霍尔效应传感器的脉冲来使用这些脉冲,以确定执行器已移动了多远。

光学传感器

来自光学传感器的位置反馈

由于光学传感器在输出方面的功能与霍尔效应传感器非常相似,因此本博文将简要介绍如何读取其输出以获取位置反馈。如果您正在寻找更多详细信息,请查阅我们的文章,该文章与如何从霍尔效应传感器读取位置反馈非常相似。

像霍尔效应传感器一样,光学传感器将有3个引脚可连接;一个是输入电压,另一个是地,最后一个是输出信号。要将输出信号上的脉冲用于位置反馈,您需要使用 微控制器 计数产生的脉冲。您需要利用微控制器的外部中断引脚来准确地计数这些脉冲。由于外部中断是由电压变化触发的,因此可以使用它们来检测每个脉冲。在微控制器的代码中设置中断后,您需要设置一个中断服务程序,该程序在发生脉冲时对其进行计数。以下代码示例中的功能countSteps()用于计算来自光学传感器的脉冲数。

要利用这些脉冲来确定位置值,您需要知道线性致动器的先前位置以及线性致动器行进的方向。在控制线性致动器的移动方式时,您只需设置一个变量即可在代码中跟踪执行器的方向。此变量可用于确定是否需要从上一个位置增加或减少脉冲。更新位置后,您需要将计数的脉冲重置为零。下面的代码示例向您展示了一个根据所计数的脉冲数更新位置的函数。一旦有了脉冲位置,就可以使用线性执行器的每英寸脉冲规格将其转换成英寸。

归位您的线性执行器

为了准确地利用来自光学传感器的位置反馈,您需要始终知道线性执行器的起始位置。尽管当您第一次打开系统时,您的微控制器将无法判断执行器是否已伸出。这将需要您将线性执行器调至已知位置。回家 线性执行器,则需要将其驱动到已知位置,例如完全缩回。以下面的Arduino代码为例,我们建立了一个WHILE循环,它将线性执行器驱动到我们已知的位置。在此示例中,通过检查steps变量是否已更改来检查中断是否已触发,我们将知道自己处于已知位置。我们还需要确保已经过了足够的时间来期望触发中断,为此,我们使用了millis()函数并将其与前一个时间戳进行比较。一旦确定线性执行器在原位,我们将停止驱动执行器,重置步长变量,然后退出WHILE循环。

处理错误触发器

尽管光学传感器对电子噪声的敏感度不如电位计,但电子噪声和开关跳动仍会影响输出信号,并可能触发错误脉冲进行计数。一些额外的脉冲不会对定位产生很大的影响,但是随着时间的流逝,这可能是一个更大的问题。您可以通过使用内部计时器过滤掉错误的触发器来解决这些问题。当您可以确定检测新脉冲的频率时,您可以过滤掉由噪声触发的中断。在下面的代码示例中,trigDelay是每个脉冲之间的时间延迟。如果在此延迟之前触发了中断,则不会计数脉冲。延迟时间的长短会根据您的应用程序而有所不同,但是如果时间太短,则无法正确滤除噪声;如果时间太长,则会错过光学传感器的实际脉冲。

应对错误触发的另一种方法是,每次执行器到达已知位置时都要校正位置值。就像将线性执行器归位一样,如果将线性执行器驱动到完全缩回或伸出的位置,或者使用外部限位开关,您将知道到达该位置需要多少个脉冲。然后,您可以在到达已知位置时使用该值简单地校正位置值。在下面的代码示例中,这是针对完全伸出和完全缩回位置进行的操作。此方法提供了一种实用的解决方案,以确保您的位置值保持准确。

概要

与霍尔效应传感器和电位计相比,用于位置反馈的光学传感器提供更高的精度和分辨率,同时具有与霍尔效应传感器类似的优点和缺点。尽管它们不能测量绝对位置,并且需要已知的起始位置来提供位置值,但是每英寸的大量脉冲仍可确保定位的可靠性并确保多个线性致动器同时移动。利用我们的 FA-SYNC-X 执行器控制器或通过附加代码,您甚至可以确保执行器无论负载如何一致地运动。

有关完整的代码示例,请查看我们的博客,网址为 如何从霍尔效应传感器读取位置反馈 尽可能相似。每英寸脉冲数和脉冲之间的时间延迟之类的值都是您需要进行一些更改才能使用该代码来准确利用光学传感器的功能。

 

[1] Paschotta,R. 关于光学传感器的文章。 从...获得:https://www.rp-photonics.com/optical_sensors.html

Tags:

Share this article

精选系列

需要帮助查找正确的执行器?

我们精密地设计和制造我们的产品,以便您获得直接制造商定价。我们提供当天发货和知识渊博的客户支持。尝试使用我们的执行器计算器,以获得适合您应用的执行器帮助。