寻源宝典正交编码器如何测量电机的转速
廊坊市金有道科技,位于河北廊坊大厂县,2020年成立,主营光栅尺等,技术精湛,经验丰富,在仪器仪表领域具权威性。
本文详细讲解正交编码器测量电机转速的原理,包括信号生成、方向判断和速度计算的方法,并针对STM32平台给出具体实现步骤,涵盖硬件配置、软件算法(如定时器捕获和M法测速)及优化技巧。
一、正交编码器测量转速的原理
正交编码器通过两路相位差90°的脉冲信号(A相和B相)记录电机转子的位置和运动状态。其核心原理如下:
1. 信号生成:电机转动时,编码器每转过一个固定角度会输出一对方波信号。例如,1000线的编码器每转产生4000个脉冲(因四倍频技术,下文解释)。
2. 方向判断:B相信号相对A相的相位滞后或超前(如A相上升沿时B相为低电平则正向旋转,反之反向)。
3. 速度计算:通过统计单位时间内的脉冲数(M法)或测量脉冲间隔时间(T法)换算转速。例如,若1秒内捕获到2000个脉冲,编码器线数为1000,则转速为:(2000/4000)×60=30 RPM(转/分钟)。
二、STM32实现正交编码器测速的步骤
STM32的定时器硬件可直接支持正交编码器模式,具体实现分为以下阶段:
1. 硬件配置
- 选择支持编码器模式的定时器(如TIM2/TIM4),将A、B相信号分别接入TIMx_CH1和TIMx_CH2引脚。
- 配置定时器为“编码器模式”,STM32CubeMX中可选“Encoder Mode”并设置四倍频(对应TIM_EncoderMode_TI12)。
2. 软件逻辑
- 初始化:启动定时器并清零计数器。
- 方向处理:通过TIMx_CR1寄存器的DIR位或计数器增减趋势判断转向。
- 速度计算:
- *M法*:定时读取计数器值(如每50ms),差值即为脉冲数。例如,测得脉冲差ΔN=500,时间Δt=0.05s,则转速= (ΔN×60)/(线数×4×Δt) = (500×60)/(1000×4×0.05)=150 RPM。
- *T法*:捕获两个脉冲间隔时间(需输入捕获功能),适合低速场景。
3. 优化技巧
- 抗干扰:增加硬件滤波(如RC电路)或软件消抖(连续采样判定)。
- 提升精度:高线数编码器(如2500线)或结合M/T混合法。实测显示,STM32F407在100MHz时钟下,测速误差可低于0.1%(数据来源:ST官方应用笔记AN4013)。
三、扩展应用与注意事项
1. 低速与高速场景适配:
- 低速(<100 RPM)优先用T法,减少脉冲丢失;高速(>1000 RPM)选用M法。
- 示例:某无人机电机转速3000 RPM,使用1000线编码器,M法采样周期需≤10ms以避免漏脉冲。
2. 常见问题:
- 信号抖动:检查编码器供电电压(推荐5V±5%)与接地。
- 计数溢出:STM32的16位定时器最大计数值65535,超限需启用溢出中断。
通过上述方法,正交编码器结合STM32可高效实现电机转速测量,适用于机器人、CNC等实时性要求高的场景。

