从直线 PCB 改到编码器
看完 HallPos 原理图,我们再看一下器件实际放在哪里。这里用两份 PCB PDF 的第 4、5 页:第 4 页能看到元件焊盘和外形,第 5 页是另一面的走线、铜区、过孔与丝印。文中分别称元件面(top)和背面(bottom),保留 PDF 原来的观看方向。
这些是板层合成绘图,PDF 没有直接印出各铜层名称。黑色元件外形、灰色导体区域和白色间隙叠在一起,适合看布局;要确认网名仍应查原理图。不要只凭灰度判断某一片铜一定是地。
先看 HallPos 的两面

先沿右边看三组 SOT-23 焊盘。它们由下到上是 U1、U2、U4,排在同一直线上。各组旁边有小电容焊盘,信号走线向 MCU 区域汇集。再看上部中央的 QFN 焊盘,那是 U3。左上为 U6,板中部为 U7,底部为四针 U5,左侧窄接口为 CN1。可以打开 位号定位图 对照名称,但判断走线时仍看上面的第 4 页。
接下来把板上的器件与原理图一项项对上:
- 右侧三颗霍尔对应 Hall 电路,输出网依次是 ADC1、ADC2、ADC3,分别进入 PA0、PA1、PA4。
- 中部 U7 及周围电容对应 供电电路,U5 的 5 V 在这里转换为 3.3 V。
- 左上 U6 对应 RS485 电路,MCU 侧接 UART,外部 A/B 通过 U5 引出。
- 左侧 CN1 对应 SWD 接口,连接 PA13、PA14。

翻到背面,大面积铜区、过孔和原始品牌丝印占据主要区域,元件面上的焊盘外形不再是主体。注意轮廓的缺口换到了右边:这是原 PDF 的背面视图,不要把两张图叠在一起后按同一左右方向接线。定位可以参考两个安装孔和 U5 所在的宽端,再核对焊盘 1。
HallPos 的 BOM 标有 SCREW1/SCREW2 两个 M2 安装位,以及 TP1~TP4。图中能确认两个孔的位置关系,但没有尺寸标注;孔径、中心距、板厚和紧固要求还要从可编辑设计或实物取得。
给直线板建立一个固定坐标
安装时让磁铁沿三颗霍尔的排列方向移动。PCB 固定,滑块只沿一个方向运动,磁铁高度和姿态尽量保持不变。开始用手动滑台就够了,这样可以先把测量问题与电机干扰分开。

直线样机。PCB 固定在底座上,滑块沿旁边的导轨走,带着磁铁依次经过三颗霍尔。
源码在 hall_line.h 中约定:U1 为 -10 mm、U2 为 0、U4 为 +10 mm,正方向从 U1 指向 U4。10 mm 是代码里的设计间距,当前 PCB PDF 没有标注尺寸,复刻前应核对真实中心距。
先固定气隙,比较 -10、-5、0、5、10 mm 等已知位置;再改变一次气隙,重复少量测试点。这样能看清“改变位置”和“改变高度”如何分别影响三路电压。把磁铁尺寸、充磁方向、气隙、参考位置和原始 ADC 一起记下来,后面的模型拟合才有依据。
直线板通过后,留下接线照片、磁体安装、固件版本、基线、敏感宽度和往返测量记录,再开始下面的改造。
电路不大改,传感器改成围绕轴分布

Encoder 把三颗霍尔放到中心开口周围:U1 在上,U2 在左下,U4 在右下,三颗器件也随位置转过不同方向。U3 仍在下面的中央区域,U5 在板底部,U6 在右下,U7 与 CN1 在左侧。对照 Encoder 位号定位图 可以逐个确认。

看实物上半部分,三颗霍尔围着中心开口排开。往下看,主控、收发器和两个接口都还在。

背面同样能看到中心开口、过孔、局部走线和原始丝印。与直线版相比,最明显的变化是上部测量区域:三个测点从沿线分布变成绕中心分布。图中没有给出半径、角度和公差尺寸,磁场相位仍要靠安装和波形验证。
再打开 Encoder 原理图,和直线这款对比一下,主要器件和网络没有换:
- 5 V 输入、U7 的 3.3 V 输出继续使用。
- 三颗霍尔仍为 SC4703SO-TR,U1→PA0、U2→PA1、U4→PA4。
- MCU 仍为 GD32E230G6U6TR,ADC/DMA 采样顺序保留。
- U6 仍为 SIT3088ETK,UART、PB5 方向脚、U5 和 CN1 的信号定义保留。
两版也有小的装配差异:HallPos 的 LED 为 0603,Encoder 的 PCB BOM 列为 0402;HallPos 的安装孔和 TP1~TP4 不能照搬到 Encoder 的装配清单里。做料单时应按具体版本核对。
布局变化以后,怎样得到角度
直线实验中,磁铁依次经过三个测点,算法比较磁场峰形。旋转实验中,磁铁绕轴转动,理想情况下三路交流分量相差 120°。hall_encoder.h 采用:
U1: cos(θ)
U2: cos(θ - 120°)
U4: cos(θ - 240°)
三路可以合成两个互相正交的分量,再求出角度。这里换掉的是“电压如何随运动变化”的模型;采样电路、原码顺序和 RS485 帧继续复用。
因此不能只把直线 PCB 的 profile 切到角度就结束改造。还要换成旋转布局,选择能形成上述信号的磁体安装,控制转轴、磁铁中心、阵列中心和气隙之间的关系。只看 PCB 三点等分,还不足以保证三路电压相差 120°。
先不接电机,用固定支架手动转动磁铁,检查三路是否充分变化、有没有贴住 ADC 上下限、相位顺序是否正确。通过后,才用 CAL_BEGIN 开始校准,完整转一圈,再 CAL_END,最后设机械零位。先检查原码,能避免把装配问题误当成校准问题。
机械装配重点放在哪里
直线机构主要保持导向和气隙;旋转机构还要控制偏心与摆动。磁铁中心偏离轴线、磁铁倾斜,或轴向间隙随转角变化,都会改变波形。每路偏置和增益校准能修正部分不一致,不能代替机械对中。

旋转样机装好后,PCB 固定在支架上,转动的是黑色圆形磁铁座。
测试机械结构可以直接使用 HALLPOS v1、ENCODER v2 两个 STEP 模型打印。直线模型配 Φ10 × 3 mm 轴向充磁磁铁,旋转模型配 Φ6 × 3 mm 径向充磁磁铁。切片器不支持 STEP 时,先转为 STL 或 3MF;完整备料见 复刻清单。
模型使用毫米单位。打印装配后核对孔位、元件高度、接口插拔空间和运动间隙,再记录实际气隙与配合情况;这些打印件用于测试,不替代带尺寸与公差的制造图。
手动夹具做好后,再比较电机断电、上电和运动时的数据。记录电机位置、支架材料和磁体安装,才能判断误差来自装配还是外部磁场。
把迁移做完
- 保存直线版的有效测量与校准记录,再装旋转版。
- 重新检查 5 V/3.3 V、SWD、三路原码和 RS485。
- 切到角度
profile=1,慢转一圈检查原码和相位,再做一圈校准与机械置零。 - 用已知角度检查方向、回绕、往返重复性;重新上电检查配置保存。
直线 profile=2 的输出单位为 0.01 mm,角度 profile=1 为 0.01°。读取前先识别类型,主机再换算成米或弧度。角度是单圈值,主机累计的圈数不等于掉电保持的多圈绝对位置。测量记录方法见 校准与测量,后续接入见 机器人集成。
图纸与生产资料
原档中的 HallPos PCB PDF 和 Encoder PCB PDF 各有 6 页:第 1 页查位号,第 3 页有 BOM,第 4、5 页是本页所用的双面合成绘图,第 6 页为孔位输出。第 1 页只作定位辅助。
PDF 和 STEP 足够用于读图、对照与继续设计,但当前归档没有可编辑原理图/PCB、Gerber、钻孔、贴片坐标、制造叠层和独立采购 BOM。BOM 导出的部分字符也有乱码,生产前要逐项核对料号、封装和装配选项。板层里的原始丝印保留在这些裁图中;修改制造版丝印应回到可编辑 PCB 处理。
本页的 PCB 裁图由 render_hardware_assets.py 从原 PDF 渲染。脚本按实际板框内容裁去页边留白,没有重画、镜像或替换图形;来源页码和裁框见 manifest.json。
