16 嵌入式 · AS5600 编码器与 XIAO ESP32C6
为什么学这个(项目关联)
夹爪开合宽度的读取链路 = 齿轮齿条(机械)→ AS5600(磁编码器测角)→ XIAO ESP32C6(I2C 读取)→ USB 串口流(主机)。这是 UMI 数据三路流之一(另两路:相机、Quest 位姿)。原文对照实验的结论:编码器完胜 ArUco 视觉方案。
你已有 STM32 HAL 基础,这一节对你来说是”新芯片 + 新传感器 + 旧知识”,重点在 AS5600 的特性与踩坑。
知识点清单
1. AS5600 磁旋转编码器
- 原理:霍尔传感器阵列测磁铁(径向充磁)角度 → 12 位 ADC → 0
4095 对应 0360° - 接口:I2C(默认地址 0x36);模拟输出 / PWM 输出可选
- 关键寄存器:RAW ANGLE (0x0C/0x0D)、ANGLE (0x0E/0x0F,含烧入的零偏)、AGC (0x1A)、STATUS (0x0B,磁铁检测位)
- 分辨率换算:360°/4096 ≈ 0.088°/LSB;经齿轮齿条换算到钳口直线位移
- AGC(自动增益控制)寄存器:0-128(3.3V 供电),表征信号放大倍数
- 原文实测 3-11 之间、随朝向略变 → 说明磁信号偏弱
- 用途:诊断磁铁安装质量(太远=增益拉满,太近=饱和)
- 回绕 (wrap-around):角度跨 4095→0 时软件必须展开(连续化),原文建议机械上限制旋转 <360° 根治
- 回隙 (backlash):齿轮啮合空程 → 编码器读数的主要误差源(非芯片本身)
2. 原文踩坑总结(直接吸收,复刻时照做)
| 现象 | 原因 | 解法 |
|---|---|---|
| 周期性信号跳变、噪声 | 磁铁离芯片太远、磁力弱 | 磁铁尽量贴近芯片(实际 <1mm,低于 datasheet 标称范围) |
| 外部磁铁干扰 | 其他磁体(如电机)靠近 | 距离隔离 / 磁屏蔽 |
| 读数轻微不对称 | 磁铁中心与芯片中心偏移 | 装配对中;影响可忽略 |
| 4095→0 跳变 | 机构转超一圈 | 机械限位 < 360°,或软件展开 |
- 选型经验:磁铁磁力偏弱 → 只能贴近;选更强磁铁可以放宽安装间距
3. XIAO ESP32C6
- Seeed XIAO 系列最小系统板;ESP32-C6:RISC-V 单核、Wi-Fi 6 + BLE 5.3、支持 Thread/Zigbee
- Arduino 框架开发(也可 ESP-IDF);板卡管理器加 Seeed URL
- 引脚:I2C(SDA/SCL 固定引脚)、USB-C(板载串口)
- 对比你的 STM32:FreeRTOS 生态 + 无线是加分项,裸机 I2C 读法完全同构(HAL_I2C_Mem_Read ↔ Wire.requestFrom)
4. 数据流固件设计
loop @ 100~200Hz:
读 RAW ANGLE (I2C)
展开回绕 → 连续计数
滤波(可选:EMA)
组包:{timestamp, raw_angle, width_mm}
USB-CDC 串口输出(115200+)
- 时间戳:
micros()毫秒/微秒级;与主机时钟对齐策略见 18 网络传输 - TCP UDP ADB 与时间同步 - 标定映射(钳口宽度 = f(角度)):线性(两点半标定)/ 高级标定用卡尺多点拟合——原文结论:编码器线性模型就够
5. 与视觉方案的对照实验(原文方法论,值得复刻)
- 测试场景设计:已知宽度标定 / 1min 自然抓取 / 快速往复开合 / 低光照
- 评估量:RMSE、bias、识别率、帧间抖动
- 结论:编码器抖动≈0、无丢失;ArUco 低光照识别率仅 29%
- 详见 23 实验方法论 - 误差分析与对照实验
学习资源
| 资源 | 用途 |
|---|---|
| AS5600 数据手册(AMS) | 寄存器、AGC、磁铁安装规范 |
| Seeed XIAO ESP32C6 Wiki | 环境搭建、引脚图、示例 |
| Arduino Wire 库文档 | I2C 读取 |
| 你自己的 STM32 HAL 库笔记 | I2C/串口概念迁移 |
实践任务
- 🔌 接线:AS5600 ↔ XIAO(VCC/GND/SDA/SCL)+ 磁铁粘在齿轮上
- 💻 固件:读 RAW ANGLE + AGC + STATUS,串口 100Hz 打印
- 📊 上位机:Python 串口读入 → 实时画角度曲线;手转磁铁观察回绕,实现软件展开
- 📏 标定:卡尺夹已知宽度(0/10/20/40/60mm),拟合 角度→宽度 直线,报告 RMSE
- 📉 抖动测试:静止 1 分钟,统计帧间差分分布(对拍原文”帧间抖动≈0”)
掌握标准(自测)
- 能不看手册写出读 RAW ANGLE 的 I2C 序列
- 能解释 AGC 读数含义并据此诊断磁铁安装
- 固件输出 100Hz 连续化角度流,无回绕毛刺
- 完成”角度→宽度”标定,RMSE 记录在案
关联笔记
- 机械:15 机械设计 - CAD 3D打印与结构迭代(齿轮齿条与磁铁安装)
- 同步:18 网络传输 - TCP UDP ADB 与时间同步
- 替代方案对比:20 视觉基础 - ArUco 与 ChAruco
- 原文对应章节:01 - 原文存档 - Dream-UMI 开发手记 “使用AS5600编码器踩坑总结”
实践记录
(学习时在这里追加:日期 / 做了什么 / 踩坑 / 疑问)