16 嵌入式 · AS5600 编码器与 XIAO ESP32C6

返回 00 - 项目总览与学习路线 | 前置 15 机械设计 - CAD 3D打印与结构迭代

为什么学这个(项目关联)

夹爪开合宽度的读取链路 = 齿轮齿条(机械)→ AS5600(磁编码器测角)→ XIAO ESP32C6(I2C 读取)→ USB 串口流(主机)。这是 UMI 数据三路流之一(另两路:相机、Quest 位姿)。原文对照实验的结论:编码器完胜 ArUco 视觉方案。

你已有 STM32 HAL 基础,这一节对你来说是”新芯片 + 新传感器 + 旧知识”,重点在 AS5600 的特性与踩坑。

知识点清单

1. AS5600 磁旋转编码器

  • 原理:霍尔传感器阵列测磁铁(径向充磁)角度 → 12 位 ADC → 04095 对应 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/串口概念迁移

实践任务

  1. 🔌 接线:AS5600 ↔ XIAO(VCC/GND/SDA/SCL)+ 磁铁粘在齿轮上
  2. 💻 固件:读 RAW ANGLE + AGC + STATUS,串口 100Hz 打印
  3. 📊 上位机:Python 串口读入 → 实时画角度曲线;手转磁铁观察回绕,实现软件展开
  4. 📏 标定:卡尺夹已知宽度(0/10/20/40/60mm),拟合 角度→宽度 直线,报告 RMSE
  5. 📉 抖动测试:静止 1 分钟,统计帧间差分分布(对拍原文”帧间抖动≈0”)

掌握标准(自测)

  • 能不看手册写出读 RAW ANGLE 的 I2C 序列
  • 能解释 AGC 读数含义并据此诊断磁铁安装
  • 固件输出 100Hz 连续化角度流,无回绕毛刺
  • 完成”角度→宽度”标定,RMSE 记录在案

关联笔记

实践记录

(学习时在这里追加:日期 / 做了什么 / 踩坑 / 疑问)