# 学习路线

先看原理，再做直线板；读数和校准通过后，再换旋转版。下面按这个顺序操作，每一步的具体步骤在 [八个实验](Labs.md)。已有板子可从第 2 步开始，先确认接线、供电和固件版本。

## 0 · 不接硬件

先打开 [模型与讲解动画](Animation-Library.md)，在直线模式移动磁铁，对照三路曲线，再看旋转版。也可以运行 `python software/examples/read_sensor.py --demo`；两处都是教学示意，不是实物数据。

这里先对照一下单位：10 mm = 0.01 m。三颗传感器读到的电压不同，算法利用这些差别估计位置。

## 1 · 搭建直线实验台

没有成品板时，先按 [嘉立创裸 PCB 下单](PCB-Ordering.md) 准备文件并下单 HallPos 裸板，同时按 [复刻清单](Replication-Checklist.md) 核对并备齐电子元件。现有 PDF 用来查图，不能直接作为制板文件；Gerber、钻孔和可核对的 BOM 尚未齐备，需先补齐并确认设计版本。层数、板厚等参数按确认后的设计填写，不从图片猜测。

收到裸板后按 [手工焊接](Hand-Soldering.md) 装配、检查，再做首次上电。已有焊好成品板的读者可跳过下单和焊接，直接从断电检查开始。

直线实验用 Φ10 × 3 mm 轴向充磁磁铁，之后的旋转实验用 Φ6 × 3 mm 径向充磁磁铁；另购 USB 转 RS485 模块。机械目录中的两个 STEP 可以打印成测试结构，再准备参考尺或位移台和限流电源。按 [硬件接线](Hardware-Guide.md) 确认 HallPos 的电源、RS485、SWD 和 U1/U2/U4。

断电查线，限流上电，测量 3.3 V。记录板号、供电、磁铁方向与实际气隙。空白板或固件不明时，先 [编译与烧录](Build-and-Flash.md)。

## 2 · 观察三路原码

先把磁铁移远，记录静态 ADC；再沿导向移动，画出三路原码随参考位置变化的曲线。出现削顶或响应很弱，先查接线、极性和气隙。

看到三路原码变化后，再看 [采样说明](Firmware-Architecture.md)，了解为什么原码仍是 12 位，以及原码、位置值分别表示什么。

## 3 · 读出直线位置

读取 `GET_INFO`，确认类型。首次启动和恢复出厂时默认是角度，直线 PCB 需要选择 `profile=2`。切换会清除旧校准和零点。

按 [校准步骤](Calibration-and-Measurement.md) 拿开磁铁采基线，放回磁铁后比较几个已知位置，再设机械零点。看输出是否单调、方向是否正确；±15 mm 是内部限幅，实际好用的范围要靠参考位置比较。

## 4 · 通过 RS485 读取

先接一台设备，用 115200 / 8N1 和轮询模式。对照 [协议参考](Protocol-Reference.md) 看懂一组 `GET_INFO`、`GET_DATA` 请求和应答，再用 [读取示例](Host-Tools.md) 输出米单位。

分清 ID、测量 `profile` 和通信 `mode`。拔掉通信线时，程序应报告超时，不把上一帧继续当成新数据。

## 5 · 换成旋转编码器

按 [PCB 与机械](PCB-and-Mechanics.md) 换用旋转布局和磁铁安装。供电、MCU、ADC 和通信可以复用，传感器位置、磁铁运动、解算和校准需要改变。

选择角度 `profile=1`，先看三路原码，再转满至少一圈校准，最后设置机械零位。只切换 profile 不会让直线 PCB 自动成为角度编码器。

## 6 · 观察一圈的边界

在 359° 和 0° 附近慢转。用最短有符号角差计算，359° 到 1° 是正向 2°。再在已知角度停留，比较正转、反转和重复回零的结果。

接着看 [机器人接入](Robot-Integration.md)，分清单圈角度、主机累计圈数和掉电后恢复位置。高速旋转、丢帧或断电都会影响主机累计。

## 7 · 对应到机构

先记录手动滑台或夹爪的位置，再记录旋转关节。写清数字对应哪个运动件、正方向和零点在哪里，单位是 m 还是 rad，以及数据何时收到、何时停用。

这些都检查清楚后，再讨论电机闭环。把实验笔记交给同伴，让他按记录复现一次，通常比只看一条平滑曲线更容易发现遗漏。
