共计 1680 个字符,预计需要花费 5 分钟才能阅读完成。
背景痛点:为什么需要绝对值编码器?
在伺服系统和机器人关节控制中,增量式编码器长期以来存在两个致命缺陷:

- 断电后位置信息丢失,重新上电需要回零操作
- 高速运动时容易因干扰产生计数累积误差
去年我们做过的六轴机器人项目就遇到过这样的问题:生产线突然断电后,机械臂需要花费 15 分钟重新校准,严重影响了生产效率。而绝对值编码器通过独特的机械结构和编码方式,完美解决了这两个痛点。
技术对比:单圈 vs 多圈绝对值编码器
| 参数 | 单圈绝对值编码器 | 23 位多圈绝对值编码器 |
|---|---|---|
| 分辨率 | 16 位 (0.0055°) | 23 位 (0.0027°) |
| 记忆圈数 | 1 圈 | 4096 圈 |
| 典型应用 | 旋转平台 | 伺服电机 / 机械臂关节 |
特别说明 23 位分辨率的意义:对于需要 360°连续旋转的关节,其理论位置分辨精度达到 360°/2^23≈0.0027°,比传统 16 位编码器精度提升 4 倍。
核心实现方案
SSI 接口协议解析
标准的 SSI 接口采用同步串行通信,包含以下信号线:
- CLK:主机发出的时钟信号(建议 500kHz)
- DATA:编码器返回的数据(上升沿采样)
- GND:参考地
典型工作时序如下:
- 主机拉高 CLK 至少 20μs 作为起始信号
- 编码器在 CLK 下降沿后准备数据
- 主机在 CLK 上升沿采样 DATA 线
- 循环 23 个时钟周期获取完整位置数据
// STM32 HAL 库实现示例
void SSI_ReadPosition(uint32_t *position) {HAL_GPIO_WritePin(SSI_CLK_GPIO_Port, SSI_CLK_Pin, GPIO_PIN_SET);
delay_us(25); // 起始信号保持
*position = 0;
for(uint8_t i=0; i<23; i++) {HAL_GPIO_WritePin(SSI_CLK_GPIO_Port, SSI_CLK_Pin, GPIO_PIN_RESET);
delay_us(1);
if(HAL_GPIO_ReadPin(SSI_DATA_GPIO_Port, SSI_DATA_Pin)) {*position |= (1UL << (22-i));
}
HAL_GPIO_WritePin(SSI_CLK_GPIO_Port, SSI_CLK_Pin, GPIO_PIN_SET);
delay_us(1);
}
}
多圈数据合成算法
23 位编码器实际由两部分组成:
- 12 位单圈数据(0~4095)
- 11 位圈数计数器(-1024~+1023)
需要通过以下算法合成绝对位置:
int32_t GetAbsolutePosition(void) {uint32_t raw = SSI_ReadRawData();
int16_t turns = (raw >> 12) & 0x7FF;
if(turns & 0x400) turns |= 0xF800; // 符号扩展
return (turns * 4096) + (raw & 0xFFF);
}
抗干扰设计要点
硬件层面
- 使用双绞线并确保屏蔽层单点接地
- 在 CLK/DATA 线添加 100Ω 终端电阻
- 采用迟滞比较器(推荐 LM393)处理输入信号
软件层面
// CRC- 8 校验实现(多项式 x^8 + x^5 + x^4 + 1)uint8_t CalcCRC8(const uint8_t *data, uint8_t len) {
uint8_t crc = 0xFF;
while(len--) {
crc ^= *data++;
for(uint8_t i=0; i<8; i++)
crc = (crc & 0x80) ? (crc << 1) ^ 0x31 : (crc << 1);
}
return crc;
}
生产验证数据
根据 EN 60068- 2 标准测试结果:
| 测试项目 | 条件 | 结果 |
|---|---|---|
| 温漂测试 | -40℃~85℃循环 | ±2LSB |
| 振动测试 | 10Hz~2000Hz 扫频 | 无数据丢失 |
| 寿命测试 | 2000 小时连续运行 | 误差 <0.01° |
避坑指南
- 时钟频率选择 :SSI 时钟超过 1MHz 时,必须使用阻抗匹配电缆
- 机械安装 :偏心误差应 <0.1mm,建议使用激光对中仪校准
- 溢出处理 :当圈数达到±1024 时,需要特殊标记处理
开放性问题
在实际振动环境中,编码器读数会出现±3LSB 的抖动。是否有同行尝试过用卡尔曼滤波来平滑数据?特别关注如何建立合适的运动模型来处理不同转速下的噪声特性。
正文完
发表至: 未分类
近两天内
