# 原理讲解动画：信号链、基线与零点

这两段可以接在实物测试镜头后面。先让观众看到板子和读数，再解释信号怎么进程序，以及校准和设零分别处理什么。

两段均为 **18 秒、1920 × 1080、24 fps、H.264 MP4，无音轨**。图形和文字直接绘制在 1080p 画布上，没有把低分辨率画布放大。旁白字幕另附 UTF-8 SRT；片内已有当步讲解文字，剪辑时可直接录旁白，按需要使用或调整 SRT。

## 03：信号怎样从霍尔到电脑

[播放 MP4](03-signal-chain.mp4) · [预览图](03-signal-chain-preview.png) · [旁白字幕](03-signal-chain.srt)

- 00:00–00:04.5：“先看这三颗霍尔，磁场变化会变成三路电压。”
- 00:04.5–00:09.5：“ADC顺序采集，每路六十四次平均后仍是十二位。”
- 00:09.5–00:13.5：“DMA把结果写进缓冲区，程序再读取和计算。”
- 00:13.5–00:18：“最后通过485，把位置和状态发给电脑。”

画面持续显示硬件采样、DMA 缓冲区和程序读取，按环节突出显示的是讲解重点。它不表示 CPU 每一轮依次启动 ADC、DMA 和通信，也不表示三路同步采样或一组原码已经原子锁存。扫描顺序对应 PA0 / PA1 / PA4，ADC 硬件按每路 64 次累加再右移 6 位，结果仍按 12 位使用。画面上的 ADC 数字、平均进度条和数据点移动速度都是示意，不能用于推断实物采样率、延迟或精度。

建议接在 PCB 三颗霍尔的近景、RS485 接线与上位机实际录屏之间。画面中的磁铁只说明轴向充磁方向，尺寸与气隙没有按实际比例绘制。

## 04：基线校准与机械零点

[播放 MP4](04-calibration-zero.mp4) · [预览图](04-calibration-zero-preview.png) · [旁白字幕](04-calibration-zero.srt)

- 00:00–00:05：“先把磁铁拿开，采下三颗霍尔各自的基线。”
- 00:05–00:10：“放回磁铁以后，原始信号要减去对应的基线。”
- 00:10–00:14.5：“再把机构放到选好的参考位置，设成机械零点。”
- 00:14.5–00:18：“设零改变坐标原点，不能修正全行程误差。”

实际操作仍按“固定装配 → 移开磁铁采基线 → 恢复相同安装关系 → 检查原码与状态 → 在参考位置设零 → 验证参考位置误差”进行。直线采基线时磁铁应移离感应区，不能在阵列上来回扫动。此片讲的是直线基线，旋转版的转圈校准不能用此动作代替。

画面用三组独立示例数值演示 `raw - baseline`。这些数值没有来自样机测量；下面的位置坐标轴另用于说明“坐标原点改变”，没有把上面的 ADC 数值代入某组磁场模型求位置。设零过程中磁铁和三路原码保持不变；显示为 0.00 mm 只表示已选择该参考位置为机械原点，不表示误差消失或精度达到 0.01 mm。

建议在实际录制一次“移开磁铁采基线”和一次“参考位置设零”以后，插入这段动画作对照。

## 依据与版本

本目录以教学仓库内 **2026-10-27 的源码快照** 为依据：

- [hall_encoder.c](../../../software/firmware/src/hall_encoder.c)：`hall_adc_dma_init()` 的单 ADC 规则组扫描、DMA 循环写入和 64 次累加右移。
- [hall_line.c](../../../software/firmware/src/hall_line.c)：三路原码分别减基线、基线采集与机械零点扣除。
- [main.c](../../../software/firmware/src/main.c)：初始化之后读取所选测量类型，并处理 RS485 协议。
- [rs485_proto.c](../../../software/firmware/src/rs485_proto.c)：读取、校准、设零与发送。

原始工程之后有修改，本目录没有把新版源码同步进教学仓库。旁白讲的是上述版本的通用流程，不展示新版新增状态位或参数。画面不是实物结构图、固件实际执行录像或性能测试。

## 重新生成

在仓库根目录运行，需 Python、Pillow、FFmpeg、FFprobe：

```powershell
python -m pip install Pillow
python media/animation/theory/render_theory.py
```

只生成一段可加 `--clip signal` 或 `--clip calibration`。脚本默认使用 Windows 微软雅黑；其它系统可设置 `HALL_FONT` 和 `HALL_BOLD_FONT` 指向支持中文的字体。成品先编码为 `.part.mp4`，成功后原子替换到正式文件名，随后执行完整解码和规格检查，避免编码途中出现零字节正式成品。
