编码器—绝对式与增量式的区别(图解)

在这里插入图片描述
1、如何输出脉冲信号:
在这里插入图片描述
1、绝对式编码器
绝对编码器是直接输出数字量的传感器,在它的圆形码盘上沿 径向 有若干同心码道(码道是指一圈一圈的同心环),每条道上由透光和不透光的扇形区相间组成,相邻码道的扇区数目是双倍关系(这句话没搞明白?),码盘上的码道数就是它的二进制数码的位数,在码盘的一侧是光源,另一侧对应每一码道有一光敏元件;当码盘处于不同位置时,各光敏元件根据受光照与否转换出相应的电平信号,形成二进制数。这种编码器的特点是不要计数器,在转轴的任意位置都可读出一个固定的与位置相对应的数字码。显然,码道越多,分辨率就越高,对于一个具有 N位二进制分辨率的编码器,其码盘必须有N条码道。目前国内已有16位的绝对编码器产品。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
2、增量式编码器
在这里插入图片描述
在这里插入图片描述
实际使用的增量式编码器输出三组方波脉冲A、B和Z(有的叫C相)相。A、B两组脉冲相位差90º,可以判断出旋转方向和旋转速度。而Z相脉冲又叫做零位脉冲(有时也叫索引脉冲),为每转一周输出一个脉冲,Z相脉冲代表零位参考位,通过零位脉冲,可获得编码器的零位参考位,专门用于基准点定位; 增量式编码器是直接利用光电转换原理输出三组方波脉冲A、B和Z相
码盘与电机同轴,检测光栅固定;
编码器以信号原理来分,有增量式编码器(SPC)和绝对式编码器(APC),顾名思义,绝对式编码器可以记录编码器在一个绝对坐标系上的位置,而增量式编码器可以输出编码器从预定义的起始位置发生的增量变化。增量式编码器需要使用额外的电子设备(通常是PLC、计数器或变频器)以进行脉冲计数,并将脉冲数据转换为速度或运动数据,而绝对式编码器可产生能够识别绝对位置的数字信号。综上所述,增量式编码器通常更适用于低性能的简单应用,而绝对式编码器则是更为复杂的关键应用的最佳选择–这些应用具有更高的速度和位置控制要求。输出类型取决于具体应用。

### 关于增量式编码器接口电路设计 #### 接口电路概述 增量式编码器的接口电路主要用于处理来自编码器的脉冲信号,并将其转换成适合控制系统使用的电信号。常见的输出电路形式包括集电极开路输出、推挽输出差分输出[^2]。 #### 设计考虑因素 在设计增量式编码器的接口电路时,需重点考虑以下几个方面: - **电源电压**:确保所选用的操作电压编码器兼容。 - **负载电阻**:根据具体的应用需求调整外部连接的负载电阻大小。 - **噪声抑制措施**:采取必要的抗干扰手段来提高系统的可靠性。 - **保护机制**:加入过流、短路等安全特性防止意外损坏设备。 #### 实际案例分析 下面给出一个基于NPN类型的增量式编码器的实际接线例子说明如何构建简单的接口电路。 假设有一个标准的A/B相双通道NPN型增量式编码器,其电气特性如下表所示: | 参数 | 描述 | |------------|--------------------| | 输出类型 | NPN | | 工作电压 | DC 5V ~ 24V | | 静态电流 | ≤10mA | ##### 硬件连接图解 ```plaintext +-------------------+ | | | Incremental | | Encoder | | | | A Phase (OUT-A) --+---> To PLC/Controller Input Channel A | B Phase (OUT-B) --+---> To PLC/Controller Input Channel B | Common (-) -------+---- GND | Vcc (+) ----------+---- Power Supply Positive Terminal +-------------------+ Note: Connect OUT-A and OUT-B to the corresponding input channels on your control system. Ensure that both signals share a common ground with the power supply. ``` 在此基础上可以进一步扩展到更复杂的配置比如增加光电隔离模块以增强稳定性;或者利用专用芯片实现更多功能如倍频处理等操作。 #### Python模拟代码片段展示逻辑判断过程 这里提供一段Python伪代码用来表示对接收到的AB相信号进行简单的位置计算方法: ```python class QuadratureDecoder: def __init__(self): self.position = 0 def update(self, channel_a_state, channel_b_state): if channel_a_state != channel_b_state: # Moving forward direction self.position += 1 elif channel_a_state == True and channel_b_state == False or \ channel_a_state == False and channel_b_state == True: # Moving backward direction self.position -= 1 # Example usage of quadrature decoder class decoder = QuadratureDecoder() channel_A_input = read_channel('Channel A') # Function reads state from hardware pin connected to encoder's A phase output channel_B_input = read_channel('Channel B') # Similar function but for B phase instead decoder.update(channel_A_input, channel_B_input) print(f"Current position is {decoder.position}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SUR0608

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值