旋转编码器原理与应用详解:从结构到实战 | 零基础入门STM32第四十七步

主题 内容 教学目的/扩展视频
旋转编码器 电路原理,跳线设置,结构分析。驱动程序与调用。 熟悉电路和驱动程序。

师从洋桃电子,杜洋老师


文章目录

    • 一、旋转编码器是什么?
    • 二、内部结构揭秘
      • 2.1 机械组件解剖
      • 2.2 核心部件说明
    • 三、电路工作原理
      • 3.1 信号生成机制
      • 3.2 硬件连接方案
    • 四、关键技术解析
      • 4.1 消抖处理
      • 4.2 方向识别算法
    • 五、典型应用场景
    • 六、开发板实战演示
    • 七、选型注意事项
    • 八、相关资源


(图1:开发板与旋转编码器连接示意图)
(图2:旋转编码器结构示意图)

一、旋转编码器是什么?

旋转编码器是一种通过机械旋转产生数字信号的传感器设备,核心功能包括:

  • 360°无限位旋转检测
  • 实时方向识别(左/右)
  • 按压触发功能
  • 高精度位置感知(20位格/圈)

▲ 旋转编码器介绍(中文)

二、内部结构揭秘

2.1 机械组件解剖

       ┌───────┐
       │ 轴体  │
       └───┬───┘
           │
┌──────────▼──────────┐
│  弹性接触片         │
│  ┌─◆─K1───────┐     │
│  │    ┌───◆─K2│     │
│  │    │ ┌─◆─K3│     │
└──┼────┼─┼─────┘
  公共端  A  B  (三个引脚)

2.2 核心部件说明

部件 功能说明
K1 按压开关(垂直方向触发)
K2/K3 旋转检测开关(相位差90°)
弹片 提供机械反馈和定位

三、电路工作原理

3.1 信号生成机制

旋转时K2/K3产生正交波形:

右旋时序:       左旋时序:
A相: _┌─┐_┌─┐     A相: ┌─┐_┌─┐_
B相: ┌─┐_┌─┐_     B相: _┌─┐_┌─┐

通过检测两个信号的相位差顺序判断旋转方向

3.2 硬件连接方案

        +3.3V
         ▲
         │10KΩ
ENCODER─┼─◆─→ PA6 (A相)
    │    │10KΩ
    ├───◆─→ PB2 (B相)
    │    │10KΩ
    └───◆─→ PA7 (按压)

四、关键技术解析

4.1 消抖处理

  • 机械抖动时间:≤2ms
  • 软件消抖方案:
    if(检测到电平变化){
        delay_ms(20);      // 超时等待抖动
        if(状态仍有效)确认动作
    }
    

4.2 方向识别算法

Created with Raphaël 2.3.0 检测A相变化 读取B相状态 B相==高电平? 标记为右旋 标记为左旋 yes no

五、典型应用场景

  1. 智能家居:空调温度调节旋钮
  2. 工业控制:数控机床参数设置
  3. 车载系统:多媒体音量控制
  4. 医疗设备:监护仪参数调整
  5. 物联网终端:智能中控面板

六、开发板实战演示

旋转编码器原理与应用详解:从结构到实战 | 零基础入门STM32第四十七步_第1张图片
(图3:TM1640显示效果)

核心功能实现逻辑:

while(1){
  读取编码器状态();
  if(左旋转){
    计数器--;
    更新数码管显示();
  }
  if(右旋转){
    计数器++;
    更新数码管显示();
  }
  if(按压动作){
    计数器归零;
  }
}

▲ 完整工程代码示例⏬旋转编码器数码管显示程序

七、选型注意事项

参数 推荐值
分辨率 20脉冲/转
工作电压 3.3V-5V DC
机械寿命 >10万次旋转
按压力度 200±50gf
工作温度 -25℃~+85℃

八、相关资源

[1] 洋桃电子B站课程-STM32入门100步
[2] STM32F103xx官方数据手册
[3] STM32F103X8-B数据手册(中文)
[4] STM32F103固件函数库用户手册(中文)
[5] 旋转编码器数码管显示程序
[6] 旋转编码器介绍(中文)


技术讨论(请在评论区留言~)

下期预告:下一期将探讨旋转编码器驱动程序分析,欢迎持续关注!

点击查阅往期【STM32专栏】文章

版权声明:本文采用[CC BY-NC-SA 4.0]协议,转载请注明来源
实测开发版:洋桃1号开发版(基于STM32F103C8T6)
更新日志

  • v1.0 初始版本(2025-03-05)

你可能感兴趣的:(STM32,stm32,嵌入式硬件,单片机)