AB相霍尔编码器原理图解析与电机测速应用实战

1次阅读
没有评论

共计 1686 个字符,预计需要花费 5 分钟才能阅读完成。

image.webp

背景痛点

在电机测速领域,AB 相霍尔编码器因其结构简单、抗污染能力强等优点被广泛应用。但在实际项目落地时,开发者常遇到以下问题:

  • 信号抖动导致转速计算误差大(±10% 以上)
  • 高速旋转时丢失脉冲(尤其 500RPM 以上工况)
  • 工业环境电磁干扰引发误触发

传统光耦编码器方案存在明显局限:

  • 光电元件易受灰尘 / 油污影响
  • 需要精密机械安装(间隙 <0.5mm)
  • 无法直接输出正交信号

霍尔编码器工作原理

典型的 AB 相霍尔编码器原理图包含三个核心部分:

  1. 磁场感应单元 :采用双极锁存型霍尔元件(如 AH49E),当 S 极靠近时输出低电平,N 极靠近输出高电平

  2. 相位设计 :两个霍尔元件空间排布相差 1 / 4 磁极间距(机械角度 90°),产生相位差 90°的方波

  3. 输出波形 :理想状态下 AB 相输出如下特征:

  4. 正交方波(占空比 50%±5%)
  5. 上升 / 下降沿时间 <1μs
  6. 相位关系决定转向(A 领先 B 为正转)

AB 相霍尔编码器原理图解析与电机测速应用实战
图:AB 相典型输出波形(标注关键相位参数)

硬件设计实战

STM32 接口方案

使用 TIM2 定时器的编码器模式,硬件连接如下:

  • A 相接 PA0(TIM2_CH1)
  • B 相接 PA1(TIM2_CH2)

关键电路设计

  1. 施密特触发器整形(采用 SN74LVC2G17):
  2. 正向阈值电压:1.6V
  3. 滞后电压:0.8V
  4. 计算公式:V_H = (R1/(R1+R2)) * VCC

  5. 电源滤波:

  6. 0.1μF 陶瓷电容靠近编码器供电引脚
  7. 共模扼流圈抑制长线干扰

CubeMX 配置

  1. 定时器设置:
  2. Encoder Mode: “Encoder Mode TI1 and TI2”
  3. Counter Period: 65535(16 位最大值)
  4. IC1/IC2 Filter: 0xF(最大滤波)

  5. GPIO 配置:

  6. 输入模式:Pull-up
  7. Speed: High

软件实现

寄存器级初始化

// 摘自 STM32F1 参考手册 RM0008 13.4.3 节
TIM_EncoderInterfaceConfig(TIM2, TIM_EncoderMode_TI12, 
                          TIM_ICPolarity_Rising, 
                          TIM_ICPolarity_Rising);
// 启用计数器
TIM_Cmd(TIM2, ENABLE);

转速计算算法

  1. 捕获模式实现

    uint32_t Get_Speed(void) {
      static uint32_t last_count = 0;
      uint32_t current = TIM_GetCounter(TIM2);
      uint32_t delta = (current > last_count) ? 
                      (current - last_count) : 
                      (0xFFFF - last_count + current);
      last_count = current;
      return delta * 60 / ENCODER_PPR; // 转换为 RPM
    }

  2. 数字滤波优化

    #define FILTER_WINDOW 5
    uint32_t filter_buf[FILTER_WINDOW];
    
    uint32_t Moving_Average(uint32_t new_val) {
      static uint8_t idx = 0;
      uint32_t sum = 0;
    
      filter_buf[idx++] = new_val;
      if(idx >= FILTER_WINDOW) idx = 0;
    
      for(uint8_t i=0; i<FILTER_WINDOW; i++) {sum += filter_buf[i];
      }
      return sum / FILTER_WINDOW;
    }

实测数据对比

转速 (RPM) 原始误差 优化后误差
200 ±8.2% ±0.5%
1000 ±15.7% ±1.2%
3000 信号丢失 ±3.8%

图:滤波前后信号对比(标注抖动消除效果)

避坑指南

  1. GPIO 冲突检查
  2. 确认 TIMx_CHy 引脚未重映射到其他功能
  3. 避免与 JTAG/SWD 引脚复用(PB3/PB4 等)

  4. 中断优先级设置

  5. 编码器中断应低于运动控制中断
  6. 建议配置为 NVIC_PriorityGroup_2

  7. 机械安装要点

  8. 磁铁与霍尔元件间隙 1.5-3mm
  9. 径向偏差 <0.5mm

通过本方案的实施,我们在 400W 伺服电机上实现了±1% 的测速精度,RS485 通信距离延长至 50 米。关键点在于信号调理电路的设计和数字滤波算法的配合使用,这些经验可直接迁移到其他工业测速场景。

正文完
 0
评论(没有评论)