正交编码器系统集成

什么是正交编码器?

正交编码器是一种机电传感器,用于测量角位置、旋转速度和方向的变化。它也可以测量相对于已知起始位置的位置。它的特点是两个传感器在物理上相对于一个旋转的中断机构偏移。由此产生的组件产生正交波形。图1给出了一个例子。在这个例子中,一对Banner DS18VP6LP逆向反射式传感器被一个机械快门打断。

更多逆向反射式传感器

正交编码器这个术语包含了广泛的技术。图1给出了一个典型的例子,其中包括光学传感器和中断盘。磁盘每转一圈提供4个窗口。与商业上可用的传感器相比,这看起来很粗糙,每转一圈有几十个甚至几百个窗口。然而,即使是这种简单的机制也能将圆分成16个部分(22.5度增量)。

正交编码器是由输出信号定义的,而不是用于开发这些信号的技术。请注意,正交编码器也可以使用磁铁和霍尔传感器、机械开关,甚至是黑白象限交替的纸张来制造。在所有情况下,都使用一对传感器来检测变化。

1 :大型3D打印正交编码器演示器的图片

“正交”这个词是什么意思?

正交是描述两个信号之间相位关系的关系术语。具体来说,它描述了一个90度的关系。最主要的例子是如图2所示的正弦和余弦波形之间的关系。三角定义与此对话相关,因为sin和cos从根本上与物体的旋转有关。

有可能产生一个基于正弦和余弦信号的直接测量的编码器。一个罕见的,也许是老式的,模拟的例子是同步和伺服系统,其中测量正交或三相信号。

实际上,使用表示波形的数字方法要容易得多。如图2的下半部分所示,当相应的波形为正时,传感器Q1和Q2会做出响应。在这个系统中,我们将波形分成4个象限。我们看到每个传感器在两个象限内都是正的。有时两个传感器都是开启的,有时两个传感器都是关闭的。

通过观看视频1可以更好地理解图2中的模型。观察状态变化遵循一个可预测的模式,该模式使用2位灰色编码描述,序列为00、01、11和10。回想一下,灰色码描述了一个系统,其中一个比特在任何给定时间都发生变化。当你观看视频时,传感器的LED指示灯似乎在向下“行走”。后来随着方向从顺时针变为逆时针,它们似乎是在向上行走。

2 :正向(CW)方向的正交信号,蓝色信号引导绿色信号。当对应的信号为正时,Q1和Q2传感器激活。

小贴士 :术语正交在电子和通信中经常遇到。从历史的角度来看,一些最早的多相AC电动机是由90度偏移的信号驱动的。这包括著名的特斯拉AC电机,与现代单相AC电机的启动电路有很强的联系。在另一个例子中,正交描述了无线电接收机和发射机中的一个过程,我们使用“I”和“Q”信号对应于同相和正交相信号。

随着旋转方向的改变,正交信号是如何变化的?

到目前为止,我们假设正交信号之间的相位关系是恒定的。换一种说法,我们假设一个系统沿单一方向旋转。

图3显示了旋转方向反转时的变化。信号的正交(90度)性质仍然存在。然而,绿色波形现在处于领先地位。回想一下,原来的灰色编码是00、01、11、10。现在它被转换成一个00、10、11和01序列。

3 :反向(CCW)方向的正交信号,绿色信号引导蓝色信号。

在具有正交编码器的系统中如何保持位置?

我们谨慎地声明,正交编码器可以测量相对于已知起始位置的位置。换句话说,正交编码器不是绝对位置传感器,因为它无法确定轴的位置作为直接读取。相反,配备正交传感器的数字系统必须计算观察到的转换次数。这样的系统必须在已知的“家”或“零”位置初始化计数。因此,所有的位置测量都被解释为相对于主位置。错过计数或失去记忆将导致丢失位置。

再一次,我们认识到相应的数字系统必须跟踪正交编码器。它通过监控传感器灰色码的“方向”来实现这一点。数字系统会在每次灰码转换时更新计数(位置变量)。

正交编码器和相关系统会出现什么问题?

这种系统级的集成需要仔细的编程。也许最大的挑战之一与相关微控制器或可编程逻辑控制器(PLC)所使用的速度和编程技术有关。如果设备很慢或程序很慢(阻塞),它将错过传感器转换。因此,我们必须防范这种类型的错误以及噪声、传感器故障和间歇性电线问题。

一个典型的错误是从程序的超级循环(如Arduino loop()函数)内部监视编码器传感器。系统看起来会正常工作,但随着旋转速度的增加,可能会失去计数。这个问题是复杂的,当电机和传感器被纳入一个反馈系统,如比例积分导数控制器(PID)。这是非常困难的调试,因为问题可能是在PID代码或在推算位置(计数)。

使用中断将大大有助于消除位置错误。然而,当我们考虑到维持这个临界数字的重要性时,这是不够的。当旋转编码器用于定位大型机器时,尤其如此。当一个错误的位置数字导致机构撞到末端停止时,这样的系统往往会发生灾难性的故障。我们必须包含一种检测错误的鲁棒方法。

使用状态机来监控旋转编码器的灰色码

仔细检查正向和反向的灰色码,可以发现它们是相关的。使用图4所示的状态图表示可以最好地看到这一点。如果我们顺时针方向“行走”图4,我们得到正向(图2)关系。如果我们顺时针方向“行走”,我们会看到图3的格局。

这个状态图为一种简单而稳健的确定方向的方法提供了一个框架。从我们的数字系统内部,我们维护一个内部的状态推算。然后,我们从Q1和Q2传感器中寻找适当的转换。例如,如果我们处于状态00,则有三个有效条件和一个故障条件。这个表格给出了基于传感器输入的结果。

  • 00:保持当前状态
  • 01:移动到状态01并将位置计数增加1
  • 10:移动到状态10,并将位置计数减1
  • 11:错

每个状态都需要类似的表格,所有这些表格都可以从图4中导出。请注意,故障条件没有返回值。相反,必须重置系统,并在必要时执行归航操作。

作为测试条件,假设该机构处于过渡的边缘,并且在传感器条件00和10之间切换。这对系统来说不是问题,因为它的内部推算将在两个状态之间反弹,增加或减少每个状态转换的计数。

在另一个测试条件下,考虑当传感器的灰色代码被违反时会发生什么。回想一下,灰色码允许改变单个比特。如果我们处于内部状态00,传感器过渡到11,就说明出了问题,计数被破坏了。正确的反应是进入故障状态,关闭系统。

4 :正交编码器信号的状态图表示。气泡代表状态,线条上的数字代表传感器值。为了清晰起见,已经消除了剩余状态回路。

基于正交编码器系统的归位

归位(零位置)方法取决于系统的复杂程度。对于一些旋转编码器应用,通电复位到零或复位到最后一个已知值就足够了。例如,旋转编码器可以用作音量控制。当设备通电时,可以从非易失性存储器位置检索计数。音频系统现在具有与关机时相同的音量。

一个更复杂的例子是一台带有独立的X、Y和Z电机加上编码器的机器。通电复位是不合适的,因为当设备关闭时,我们对机器的刀具位置没有移动的置信度为零。对于这种情况,我们使用经典的归位程序:

  1. 移动到主位置限制开关
  2. 检测到家时停止
  3. 稍微后退
  4. 非常缓慢地移动以激活开关

也许你已经见过这个算法的实际操作。同样的技术也被用于许多3D打印机的步进电机。这是另一个系统的例子,其中位置以数字计数的形式保存。

正交编码器代码的实现

请收藏此页。

这是指向未来装置的链接的占位符。期待一个基于梯形逻辑的正交编码器状态机的实现,以及一个用C编写的例子。

结论

本工程简介简要介绍了正交编码器。最重要的考虑因素之一是正交编码器与相关PLC或微控制器不可分割的性质。状态机实现提供了一种健壮的方法来防止各种错误,包括缓慢的硬件或软件PLC或微控制器实现以及传感器和间歇性接线故障。

贴主很生动形象地使用图像与文字结合说明讲解了正交编码器和相关系统可能会出现的问题!