STM32之两种驱动 “旋转编码器“ 方式

一、 简介

             本章讲解旋转编码器驱动方式,一种为普通GPIO边沿检测方式,一种为定时器编码器方式,各有优缺点,当资源不足时可以选择第一种但是精度不如定时器编码器方式,资源充足时建议时间定时器方式较优且可靠。

二、旋转编码器原理

        2.1 介绍:

                 相信很多都知道旋转编码器这个东西,但是也不免新人见过但是没听过此名词故而不了解,因此请看下图!!! 这就是常见的旋转编码器,和电位器很像,但是原理和应用不一样,它一般用于音响系统、数控机床、机器人、自动化设备、伺服控制系统等。

        2.2  模块电路原理:

                    可见外围电路还是相当简单,SW1引出的TRIM_A/B是编码器的AB相脉冲,PUSH是按下的按键电平翻转,这三个通道空闲都是上拉。

        2.3 正反转检测原理:

                   编码器给出两相方波,可见下图的波形A/B相位差90°,我们就叫A/B通道,其中的一个通道给出与转速有关的信息,同时与另外一个通道对比,就能知道旋转的方向。

                可见下图编码器盘上有两个通道(A 和 B),每个通道在不同位置有通断的状态,可见图中间的S1标识,如果 S1向右转动那么A 通道的信号先于 B 通道发生变化,则表示顺时针旋转,如果S1向左转动 B 通道的信号先于 A 通道发生变化,则表示逆时针旋转。

三、驱动方式一

        3.1 简介:

                   此驱动方式以普通GPIO边沿检测方式,优点是不占用定时器资源,普通的GPIO配置成外部中断即可使用,缺点是响应慢、精度低、抗噪声能力差。

        3.2 原理:

                 当脉冲来临时,触发外部中断进入服务函数,通过检测旋转编码器A通道和B通道的电平变化来确定编码器的旋转方向,并相应地增加或减少计数。当中断触发时,它检查当前通道的状态与之前保存的状态是否不同,以判断是否有旋转发生。然后,通过比较A通道和B通道的相对状态(即是否相同),来决定是正转还是反转:如果两个通道状态不同则认为是正转,增加计数;如果相同则认为是反转,减少计数。最后,更新上次的状态并清除中断标志位,以便处理下一次中断。

        3.3 代码:

/**
  ************************************************************************** 
  ** -------------------------------------------------------------------- **
  ** @name          : Xz_scan
  ** @brief         : 用于初始化外部中断以及中断向量控制器
  ** @param         : None
  ** @retval        : None
  ** @author data   : 轩哥	2023-03-18
  ** @version       : v1.0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值