共计 1686 个字符,预计需要花费 5 分钟才能阅读完成。
背景痛点
在电机测速领域,AB 相霍尔编码器因其结构简单、抗污染能力强等优点被广泛应用。但在实际项目落地时,开发者常遇到以下问题:
- 信号抖动导致转速计算误差大(±10% 以上)
- 高速旋转时丢失脉冲(尤其 500RPM 以上工况)
- 工业环境电磁干扰引发误触发
传统光耦编码器方案存在明显局限:
- 光电元件易受灰尘 / 油污影响
- 需要精密机械安装(间隙 <0.5mm)
- 无法直接输出正交信号
霍尔编码器工作原理
典型的 AB 相霍尔编码器原理图包含三个核心部分:
-
磁场感应单元 :采用双极锁存型霍尔元件(如 AH49E),当 S 极靠近时输出低电平,N 极靠近输出高电平
-
相位设计 :两个霍尔元件空间排布相差 1 / 4 磁极间距(机械角度 90°),产生相位差 90°的方波
-
输出波形 :理想状态下 AB 相输出如下特征:
- 正交方波(占空比 50%±5%)
- 上升 / 下降沿时间 <1μs
- 相位关系决定转向(A 领先 B 为正转)

图:AB 相典型输出波形(标注关键相位参数)
硬件设计实战
STM32 接口方案
使用 TIM2 定时器的编码器模式,硬件连接如下:
- A 相接 PA0(TIM2_CH1)
- B 相接 PA1(TIM2_CH2)
关键电路设计 :
- 施密特触发器整形(采用 SN74LVC2G17):
- 正向阈值电压:1.6V
- 滞后电压:0.8V
-
计算公式:V_H = (R1/(R1+R2)) * VCC
-
电源滤波:
- 0.1μF 陶瓷电容靠近编码器供电引脚
- 共模扼流圈抑制长线干扰
CubeMX 配置
- 定时器设置:
- Encoder Mode: “Encoder Mode TI1 and TI2”
- Counter Period: 65535(16 位最大值)
-
IC1/IC2 Filter: 0xF(最大滤波)
-
GPIO 配置:
- 输入模式:Pull-up
- Speed: High
软件实现
寄存器级初始化
// 摘自 STM32F1 参考手册 RM0008 13.4.3 节
TIM_EncoderInterfaceConfig(TIM2, TIM_EncoderMode_TI12,
TIM_ICPolarity_Rising,
TIM_ICPolarity_Rising);
// 启用计数器
TIM_Cmd(TIM2, ENABLE);
转速计算算法
-
捕获模式实现 :
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 } -
数字滤波优化 :
#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% |
图:滤波前后信号对比(标注抖动消除效果)
避坑指南
- GPIO 冲突检查 :
- 确认 TIMx_CHy 引脚未重映射到其他功能
-
避免与 JTAG/SWD 引脚复用(PB3/PB4 等)
-
中断优先级设置 :
- 编码器中断应低于运动控制中断
-
建议配置为 NVIC_PriorityGroup_2
-
机械安装要点 :
- 磁铁与霍尔元件间隙 1.5-3mm
- 径向偏差 <0.5mm
通过本方案的实施,我们在 400W 伺服电机上实现了±1% 的测速精度,RS485 通信距离延长至 50 米。关键点在于信号调理电路的设计和数字滤波算法的配合使用,这些经验可直接迁移到其他工业测速场景。
正文完
