如何实现旋转编码器的电路设计?
扫描二维码
随时随地手机看文章
旋转编码器它是一种将旋转位移转换成一串数字脉冲信号的旋转式传感器,这些脉冲能用来控制角位移,如果将编码器与齿轮条或螺旋丝杠结合在一起,也能够用于测量直线位移。
然而按照读出方式编码器可以分为接触式和非接触式两种;按照工作原理旋转编码器可分为式增量式和两类。式编码器的每一个位置对应一个确定的数字码,所以它的示值只能与测量的起始和终止位置有关,而与测量的中间过程没有关系。增量式编码器是将位移转换成周期性的电信号,再把这个电信号转变成计数脉冲,用脉冲的个数来表示位移的大小。
旋转编码器是一种用来测量转速并配合PWM技术可以实现快速调速的装置,而测量转速的对象是电机。旋转编码器是集光机电技术于一体的速度位移传感器。旋转编码器在进行电机转速的测量以后,旋转编码器就把相应的数值通过数字表进行反馈,我们就可以直接通过看屏幕上旋转编码器反馈的数字,知道电机的实时转速到底是有多少。
旋转编码器对于几乎所有运动-控制应用来说都很关键,由于无刷直流电动机(BLDC)使用增加,使得旋转编码器的需求进一步扩大,而且提供了控制、精度和效率等方面的诸多益处。编码器的任务很简单,原则上就是:向系统控制器指示电机轴的位置.控制器可以利用这信息准确高效地给电机绕组转向以及确定速度、方向和加速,这些是运动控制回路维持电机性能要求所需要的参数。
旋转编码器是一种机电换能器,意味着它将机械运动转换为电子脉冲。它由旋钮组成,当旋转时,旋钮将逐步移动并产生一系列脉冲序列,每个步骤具有预定义的宽度。有许多类型的编码器,每个编码器都有自己的工作机制,稍后我们将了解这些类型,但现在让我们只关注KY040增量编码器,因为我们将它用于我们的教程。
编码器的内部机械结构如下所示。它基本上由圆盘(灰色)和放置在该圆盘顶部的导电垫(铜色)组成。这些导电焊盘以相同的距离放置,如下所示。输出引脚固定在该圆盘的顶部,这样当旋钮旋转时,导电垫与输出引脚接触。这里有两个输出引脚,输出A和输出B。
输出引脚A和输出B产生的输出波形分别以蓝色和绿色显示。当导电焊盘直接位于引脚下方时,它会变高,导致导通时间,当导电焊盘移开时,引脚变低,导致上面所示波形的关闭时间。现在,如果我们计算脉冲数,我们将能够确定编码器移动了多少步。
现在可能会出现这样的问题:当一个脉冲信号足以计算旋转旋钮时所采取的步数时,为什么我们需要两个脉冲信号。这是因为我们需要确定旋钮旋转的方向。如果您看一下这两个脉冲,您会注意到它们都是90°异相。因此,当顺时针旋转旋钮时,输出A将首先变高,当旋钮逆时针旋转时,输出B将首先变高。
以KY-040增量式旋转编码器为例,介绍编码器的电路控制。
旋转编码器有5个引脚,前两个引脚是接地和Vcc,它连接到Arduino的地和+ 5V引脚。编码器的开关连接到数字引脚D8,并通过1k电阻拉高。两个输出引脚分别连接到D9和D8。
要显示通过旋转Rotary编码器增加或减少的变量值,我们需要一个显示模块。这里使用的是常用的字符型图形点阵液晶1602。我们已将连接的显示屏设置成4位工作模式,并使用Arduino的+ 5V引脚为其供电。电位计用于调整LCD显示屏的对比度。完整的电路可以在面包板上进行搭建,一旦完成所有的连接后。
采用单片机内部的上拉输入可能带来较大功耗,因为单片机内部电阻较大,arduino实现的基本原理为已知每圈脉冲数为2500,则当计数大道2500时,计数一圈,若为stm32则进行溢出中断。通过A、B相的高低电平关系,判断AB相的先后关系,进而判断转向。
为了区分正反转及检测零点,通常包括三个部分:A相,B相和Z相,A相与B相相差1/4周期(相位差90度),可以用来区分正转还是反转;Z相为单圈脉冲,码盘转一圈产生一次,可以用作编码器的参考零位。这样我们就可以通过旋转编码器控制我们的BLDC电机了。