几种常见编码器优缺点

本文详细比较了光学编码器、磁性编码器和电容式编码器在运动控制领域的性能,强调了电容式编码器在恶劣环境适应性、可靠性、精度和可编程性方面的优势,推荐在考虑温度、振动和环境污染物时选择电容式编码器,特别适合现代IoT和IIoT应用。

目录

光电编码器

磁性编码器


        编码器在运动控制类产品中比较常见,旋转编码器都是组成运动控制反馈回路的关键元器件,包括工业自动化设备和过程控制、机器人技术、医疗设备、能源、航空航天等。

        作为将机械运动转换为电信号的器件,编码器可为工程师提供位置、速度、距离和方向等基本数据,用以优化整个系统的性能。

        光学式、磁式和电容式是可供工程师使用的三种主要编码器技术。不过,要确定哪种技术最适合最终应用,还需要考虑一些因素。

        本文将概述光学式、磁式和电容式三种编码器技术,并且略述各种技术的利弊权衡。

光电编码器

        多年来,光学编码器一直都是运动控制应用市场的热门选择。它由 LED 光源(通常是红外光源)和光电探测器组成,二者分别位于编码器码盘两侧。

        码盘由塑料或玻璃制成,上面间隔排列着一系列透光和不透光的线或槽。码盘旋转时,LED 光路被码盘上间隔排列的线或槽阻断,从而产生两路典型的方波 A 和 B 正交脉冲,可用于确定轴的旋转和速度。

图片

图 1:光学编码器的典型 A 和 B 正交脉冲,包括索引脉冲(图片来源:CUI Devices)

        尽管光学编码器应用广泛,但仍有几点缺陷,在工业应用等多尘且肮脏的环境中,污染物会堆积在码盘上,从而阻碍 LED 光透射到光学传感器。

        由于受污染的码盘可能会导致方波不连续或完全丢失,因而极大地影响了光学编码器的可靠性和精度。

        LED 的使用寿命有限,最终总会烧坏,从而导致编码器故障。此外,玻璃或塑料码盘容易因振动或极端温度而损坏,因而限制了光学编码器在恶劣环境应用中的适用范围;将其组装到电机上不仅耗时,而且受污染的风险更大。

        最后,如果光学编码器的分辨率较高,则会消耗 100 mA 以上的电流,进一步影响了它应用于移动设备或电池供电设备。

磁性编码器

        磁性编码器的结构与光学编码器类似,但它利用的是磁场,而非光束。磁性编码器使用磁性码盘替代带槽光电码盘,磁性码盘上带有间隔排列的磁极,并在一列霍尔效应传感器或磁阻传感器上旋转。

        码盘的任何转动都会使这些传感器产生响应,而产生的信号将传输至信号调理前端电路以确定轴的位置。

        相较于光学编码器,磁性编码器的优势在于更耐用、抗振和抗冲击。而且,在遇到灰尘、污垢和油渍等污染物的情况下,光学编码器的性能会大打折扣,磁性编码器却不受影响,因此非常适合恶劣环境应用。

        不过,电机(尤其是步进电机)产生的电磁干扰会对磁性编码器造成极大的影响,并且温度变化也会使其产生位置漂移。

        此外,磁性编码器的分辨率和精度相对较低,在这方面远不及光学和电容式编码器。

电容式编码器

        电容式编码器主要由三部分组成:转子、固定发射器和固定接收器。电容感应使用条状或线状纹路,一极位于固定元件上,另一极位于活动元件上,以构成可变电容器,并配置成一对接收器/发射器。

        转子上蚀刻了正弦波纹路,随着电机轴的转动,这种纹路可产生特殊但可预测的信号。随后,该信号经由编码器的板载 ASIC 转换,以计算轴的位置和旋转方向。

图片

图 2:编码器码盘的比较(图片来源:CUI Devices)

对比优缺点

        电容式编码器的工作原理与数字游标卡尺相同,因此它所提供的解决方案克服了光学和磁性编码器的许多缺点。

        事实证明,CUI Devices 的 AMT 编码器系列所采用的这种基于电容的技术具有高可靠性、高精度的特性。

        由于无需 LED 或视距,即使遇到会对光学编码器产生不利影响的环境污染物(如灰尘、污垢和油渍),电容式编码器也能达到预期的效果。

        此外,相比光学编码器使用的玻璃码盘,它更不容易受到振动和极高/极低温度的影响。

        如前所述,因为电容式编码器不存在 LED 烧坏的情况,所以使用寿命往往比光学编码器长。

        因此,电容式编码器的封装尺寸更小,在整个分辨率范围内电流消耗更小,只有 6 至 18 mA,这就使它更适合电池供电应用。

        鉴于电容式技术的稳健性、精度和分辨率均比磁性编码器高,因而后者所面临的电磁干扰和电气噪声对它的影响并不大。
        此外,在灵活性和可编程性方面,电容式编码器的数字特性也能带来关键优势。因为光学或磁性编码器的分辨率是由编码器码盘决定,所以需要其他分辨率时,每次都要使用新的编码器,以致于设计和制造过程的时间和成本均会有所增加。

        然而,电容式编码器具有一系列可编程的分辨率,为设计人员免去了每次需要新的分辨率时就要更换编码器的麻烦,这不仅减少了库存,而且简化了 PID 控制回路的微调和系统优化。

        涉及 BLDC 电机换向时,电容式编码器允许数字对准和索引脉冲设置,而这项任务对于光学编码器而言可能既反复、又耗时。

        内置的诊断功能使设计人员可以进一步访问系统数据,用以优化系统或现场排除故障。

图片

图 3:电容式、光学式和磁式技术的关键性能指标比较(图片来源:CUI Devices)

如何选择?

        在许多运动控制应用中,温度、振动和环境污染物都是编码器必须应对的重要挑战因素。事实证明,电容式编码器可以克服这些挑战。

        与光学式或磁式技术相比,它可为设计人员提供可靠、精准且灵活的解决方案。

        此外,电容式编码器还增加了可编程性和诊断功能,这种数字特性使其更适合现代物联网 (IoT) 和工业物联网 (IIoT) 应用。

<think>好的,我现在需要回答用户关于使用定时器和编码器进行速度测量的方法的问题。首先,我得回顾用户提供的引用内容,看看里面有哪些关键点可以利用。 用户引用了三个资料,主要涉及STM32的编码器接口配置、测速公式以及编码器的工作原理。比如,引用[1]提到了通过编码器的A、B相信号来计数脉冲,以及一个计算转速的公式。引用[2]展示了HAL库中的中断回调函数,如何获取计数值并计算转速。引用[3]解释了霍尔编码器的结构和工作原理,提到了输出两组相位差信号来判断转向。 用户的问题是关于定时器和编码器结合测速的方法有哪些。我需要整理出不同的方法,并结合引用中的例子来说明。常见的测速方法可能有M法(频率法)、T法(周期法)、以及M/T法结合两者。此外,用户提供的代码中使用的是通过定时中断定期读取编码器的计数值,这应该属于M法,即计算单位时间内的脉冲数。 接下来,我需要详细解释每种方法,包括它们的原理、应用场景以及优缺点。例如,M法适合高速测量,而T法在低速时更准确。同时,结合用户提到的代码,可能需要解释如何通过定时器的编码器模式自动计数,然后通过中断定期获取计数值,并转换成转速。例如,引用[2]中的代码每10ms中断一次,获取计数值后计算转速,这里需要考虑脉冲数、编码器线数、减速比等因素。 另外,用户引用中提到的公式,如(float)zj / (4 * 96) * 100 * 60,这里需要解释各个参数的意义,比如4是因为四倍频,96可能是编码器的线数,乘以100是因为每10ms采样一次,换算成每秒,再乘以60得到每分钟的转速。这部分需要准确解释,避免错误。 还需要注意代码示例中的配置,比如定时器如何设置为编码器模式,如何配置中断,以及如何清除计数器。这些都是实现测速的关键步骤。同时,霍尔编码器的AB相输出如何连接到定时器的输入通道,如何实现四倍频计数,这些硬件配置也需要提及。 可能还需要提到方向判断的问题,即如何通过AB相的相位差来确定旋转方向,这在编码器模式中通常由定时器自动处理,计数值会递增或递减。例如,STM32的编码器接口模式可以自动根据AB相的边沿变化来增减计数器。 最后,要确保回答结构清晰,分点说明不同方法,结合用户提供的引用内容,并生成相关问题。同时,检查是否符合系统级指令,比如数学公式的正确格式,中文回答等。</think>### 定时器与编码器结合测速的方法 #### 1. **M法(频率法)** 通过测量**单位时间内编码器的脉冲数**计算转速。 - **原理**:利用定时器中断定期读取编码器计数器值,根据脉冲数和时间间隔计算速度。 - **公式**: $$ \text{转速} = \frac{\text{脉冲数}}{\text{单位时间} \times \text{编码器分辨率} \times \text{减速比}} \times 60 $$ 例如引用[2]中代码每10ms读取一次计数值,计算转速的公式为: ```c Speed = (float)zj / (4 * 96) * 100 * 60; // zj为计数值,4为四倍频,96为编码器线数 ``` 其中 `100` 对应每秒采样次数(10ms采样一次),`60` 将转速单位转为RPM[^2]。 - **适用场景**:**中高速**测量,低频时误差较大。 --- #### 2. **T法(周期法)** 通过测量**单个脉冲的时间间隔**计算转速。 - **原理**:使用定时器捕获脉冲边沿的时间差,结合编码器分辨率计算速度。 - **公式**: $$ \text{转速} = \frac{1}{\text{脉冲周期} \times \text{编码器分辨率}} \times 60 $$ - **实现方式**:配置定时器的输入捕获功能,记录相邻脉冲的间隔时间。 - **适用场景**:**低速**测量,高速时可能因脉冲间隔过短导致误差。 --- #### 3. **M/T法(混合法)** 结合M法和T法,**同时测量脉冲数和时间间隔**,提升全速域精度。 - **原理**:在固定时间窗口内统计脉冲数,同时用高精度定时器记录实际时间。 - **公式**: $$ \text{转速} = \frac{\text{脉冲数}}{\text{实际时间} \times \text{编码器分辨率}} \times 60 $$ - **优势**:兼顾高低速场景,但实现复杂度较高。 --- #### 4. **编码器接口模式(硬件计数)** STM32定时器可直接配置为**编码器模式**,自动处理A/B相信号并计数[^3]。 - **关键配置**: - 定时器设置为编码器接口模式(如STM32的`TIM_EncoderMode_TI12`)。 - 四倍频计数:每个A/B相跳变沿触发计数,单圈脉冲数提升4倍[^1]。 - 方向判断:根据A/B相相位差自动增减计数器值。 - **代码示例**: ```c // 初始化定时器为编码器模式 TIM_Encoder_InitTypeDef encoder_config; encoder_config.EncoderMode = TIM_ENCODERMODE_TI12; // 四倍频计数 encoder_config.IC1Polarity = TIM_ICPOLARITY_RISING; encoder_config.IC2Polarity = TIM_ICPOLARITY_RISING; HAL_TIM_Encoder_Init(&htim2, &encoder_config); HAL_TIM_Encoder_Start(&htim2, TIM_CHANNEL_ALL); // 启动编码器接口 ``` --- #### 5. **中断定时采样法** 通过定时器中断定期读取编码器计数值,适用于实时性要求高的场景[^2]。 - **实现步骤**: 1. 配置定时器中断(如10ms触发一次)。 2. 中断中读取编码器计数值并清零计数器。 3. 根据脉冲数和时间间隔计算转速。 - **代码逻辑**: ```c void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if (htim == &htim3) { // 10ms中断 int16_t count = __HAL_TIM_GetCounter(&htim2); // 获取计数值 __HAL_TIM_SetCounter(&htim2, 0); // 清零计数器 float rpm = (float)count / (4 * 96) * 100 * 60; // 计算转速 } } ``` --- ### 关键参数说明 | 参数 | 含义 | |--------------|----------------------------------------------------------------------| | **四倍频** | 对A/B相4个边沿均计数,提升分辨率(如100线编码器等效为400脉冲/圈)[^1] | | **编码器线数** | 码盘物理刻线数(如96线编码器每圈输出96个方波)[^3] | | **减速比** | 电机与编码器轴的实际转速比例(若存在减速箱) |
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值