旋转编码器的使用方法
出处:维库电子市场网 发布于:2024-03-01 16:12:06
旋转编码器是一种安装在旋转轴上并检测其运动的传感器。常用的设备包括鼠标(球型)和滚轮。对于工业用途,它们内置于伺服电机中并用于检测电机的角度位置。通用旋转编码器的输出格式主要有两种,如下所示。
如图所示,输出正交二相脉冲,仅检测旋转方向和计数的类型。它结构简单,因此价格低廉。有些具有原点输出(每转一个脉冲)以获得参考位置。有机械接触式和非接触式(光传感器、磁传感器)。请注意,一些廉价产品没有波形整形功能。
将角度以超过 10 位的格雷码输出。输出代码直接指示角度,因此您永远不会忘记自己的位置。其结构复杂且相当昂贵。格雷码用于消除对齐错误对每一位的影响。
增量式旋转编码器
改变方向
0→0寂静
0→1+1
0→2-1
0→3无效的
1→0-1
1→1寂静
1→2无效的
1→3+1
2→0+1
2→1无效的
2→2寂静
2→3-1
3→0无效的
3→1-1
3→2+1
3→3寂静
这次我将介绍如何使用增量类型,增量类型结构简单,应用广泛。对于电机控制,通常使用带有缓冲计数器或两相脉冲输入的机械控制微控制器,但本示例显示了将其直接连接到通用 PIO 的使用技巧。
首先,如果将 A 相和 B 相视为二进制代码(如右图所示),您会发现它们的值重复 0 → 1 → 3 → 2 → 0(在正向旋转的情况下)为发生旋转。因此,通过定期对输出进行采样并将其与之前的值进行比较,您可以找出它旋转的方向。变化模式共有16种,其对应关系如右表所示。
可使用以下方法根据编码器输出的变化模式确定旋转方向。
使用比较/分支指令查找每个。
这是个想到的方法,但由于必须判断至少8种模式,因此过程变得复杂。
通过表格转换查找
使用“(先前值 << 2) + 当前值”将表转换为 4 位索引值,该值显示所有更改的组合。对于大多数微控制器来说,这种方法可能是简单的。
计算得出 (1)
如果索引值的奇偶性为偶数,则没有变化或没有变化,如果为奇数,则有变化。如果没有变化,与0b0101进行与,奇偶校验为偶数则静态,奇数校验无效。如果有变化,与0b0110进行与,如果奇偶校验为偶数,则为+方向,如果为奇数,则为-方向。这种方法只需要两次测试,但需要带有奇偶校验标志的处理器。
计算得出 (2)
编码器输出从0→1→3→2变化(以二进制形式),因此很难按原样使用。这可以说是2位格雷码,但如果转换成二进制码的话,顺序就是0→1→2→3,通过与之前的差值就可以检测出旋转方向一。为了转换为二进制,通过对采样值的位 0 和位 1 进行异或操作来交换 2 和 3,从而产生连续的二进制代码。由于它是一个 2 位值,因此可以获得 -2 到 +1 范围内的结果,其中 -2 表示错误。
旋转编码器编码示例(表格转换)
这是一个使用表转换来确定操作的示例。Sample_encoder() 在后台进程中定期调用,例如定时器中断(计数率 < 调用率)。旋转编码器的旋转量实时反映在Encoder结构的位置上,并在每次检测到移动时进行移动设置。
易失性结构{
多头位置; /* 轴位置 */
int moving; /* 移动标志 */
} 编码器;
无效样本编码器(无效)
{
static const int dir[] = { 0,1,-1,0,-1,0,0,1,1,0,0,-1,0,-1,1,0 }; /* 旋转方向表*/
静态 int i; /* 索引 */
整数 n;
i = (i << 2) + (PA.PIN.BYTE & 3); /* 使用先前值和当前值作为索引 */
n = dir[i & 15]; /* 从变化模式中获取运动 */
if (n) { /* 如果有移动则更新位置 */
编码器.position += n;
编码器.moved = 1;
}
}
旋转编码器编码实例(二)
这是用户界面中经常使用的慢速拨号计数处理的示例。每次单击移动时都会生成命令代码。
某些制动型缓动盘具有 2 或 4 计数增量的制动位置。这意味着每步计数 2 或 4 次,这可能很难处理。在这种情况下,可以从转换表中删除不必要的转换。由于计数条件减少,因此使用比较/分支指令跳过比使用表转换更好。如果您使用慢速拨盘,则几百到 1kHz 的采样率是合适的。
u_char CMD; /* 按键命令 */
无效样本编码器()
{
静态 u_char i; /* 索引 */
i = (i << 2) + (PA.PIN.BYTE & 3); /* 使用先前值和当前值作为索引 */
我 &= 15;
switch (i) { /* 假设制动位置为“0” */
情况 0x7: /* 1→3 */
CMD = 前进;中断;
情况 0xd: /* 3→1 */
CMD = 向后;中断;
}
}
上一篇:VNA 校准技术简介
下一篇:使用交流功率计测量功率
版权与免责声明
凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。
本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。
如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
- 查找控制回路设计中的不规则效应2024/7/26 16:06:04
- 圣邦微电子推出具有模拟电流检测功能的双通道车规级高压侧驱动器2024/7/26 11:15:19
- 波形发生器及其在 IC 测试中的作用2024/7/24 15:58:52
- Keysight - 波特率和比特率有什么不同?仪器测试带宽又该如何选?2024/7/19 11:37:09
- 控制和防止电感器中的磁芯饱和2024/7/18 16:38:37