共计 1114 个字符,预计需要花费 3 分钟才能阅读完成。
背景痛点
在机器人开发中,编码器选型不当常引发以下问题:

- 位置累积误差 :使用增量式编码器时,电机断电后位置信息丢失,重新上电需归零操作,影响系统响应速度
- 成本浪费 :伺服控制场景选用低分辨率增量式编码器,导致定位精度不足需二次改造
- 抗干扰缺陷 :未考虑工业环境电磁干扰,导致位置式编码器的 SSI 信号传输不稳定
技术对比
增量式编码器工作原理
- 通过光电码盘输出两路相位差 90°的方波(AB 相)
- 每转脉冲数(PPR)决定分辨率,常见 3508 电机配套 1000 线编码器
- 方向判断依据:A 相上升沿时 B 相电平状态(高电平为正向)
位置式编码器核心特性
- 单圈绝对值编码器:上电即获当前角度,但无法区分多圈位置
- 多圈绝对值编码器:通过齿轮组或电子计数记录圈数,典型如 17 位(131072 点 / 圈)
选型对比表
| 指标 | 增量式 | 位置式 |
|---|---|---|
| 分辨率 | 依赖 4 倍频技术 | 固定(如 12/17 位) |
| 断电保持 | 需电池备份 | 无需额外措施 |
| 成本 | 低(约 50 元) | 高(300 元起) |
| 适用场景 | 速度控制、短程定位 | 伺服控制、多轴同步 |
硬件实现
3508 电机接口设计
- 增量式接口电路 :
- AB 相信号经 SN75176 差分芯片转换
- Z 相接 GPIO 用于零位中断
-
推荐电路:
AB 相 --[10K 上拉]--> SN75176 --[120Ω 终端电阻]--> STM32 -
STM32 编码器模式配置 (以 TIM3 为例):
// 定时器初始化 TIM_Encoder_InitTypeDef sConfig = {0}; sConfig.EncoderMode = TIM_ENCODERMODE_TI12; sConfig.IC1Polarity = TIM_ICPOLARITY_RISING; sConfig.IC1Selection = TIM_ICSELECTION_DIRECTTI; sConfig.IC1Prescaler = TIM_ICPSC_DIV1; sConfig.IC1Filter = 6; // 适合 1MHz 信号 HAL_TIM_Encoder_Init(&htim3, &sConfig);
避坑指南
增量式断电保存方案
- 使用 FRAM 存储最后位置(比 EEPROM 更快)
- 硬件设计加入超级电容供电(维持 RTC 电路 3 分钟)
位置式校准流程
- 机械安装时对齐电机轴与编码器零位标记
- 通过 UART 发送校准命令(如 0x01 0x55)
- 验证:转动电机 360°后返回值应归零
性能验证
示波器检测方法
- 探头接地夹接电机外壳
- 触发模式设为 AB 相交叉点
- 合格信号特征:
- 上升时间 <100ns
- 相位差 90°±10°
闭环测试数据
- 阶跃响应指标示例:
定位时间:120ms 超调量:<5% 稳态误差:±1 脉冲
思考题
- 多电机系统中如何避免编码器信号线间的串扰?
- 当增量式编码器达到计数溢出值时,软件该如何处理?
- 位置式编码器的多圈数据在 CAN 通信中如何高效压缩传输?
正文完
发表至: 未分类
近两天内
