码盘参考设计
单道伪随机码码盘的版图参数:码元宽、读数窗与增量配对

单道伪随机码码元宽 w = 2πr/M。本文只讲版图:M 与增量线数 N = k·M 的闭合、截短序列的整圈循环检查、读数窗 (n + c + 1)·w 与直线阵列弦高、码元与增量周期对齐、曼彻斯特编码的代价,并给出 r = 15 mm 的参数算例。
单道伪随机码用一条码道代替 n 条格雷码道,读数头沿切向读出连续 n 个码元,就能确定是第几个码元。序列怎样生成、怎样解码和纠错,本文库已有专文;直线码带的长度规划也有专文。本文只讨论把它画到码盘上时要定的几组数:码元数与增量线数怎样闭合、读数窗多长、码元与增量周期怎样对齐、曼彻斯特编码要付出什么,最后以读数半径 r = 15 mm 给出一组参数。

一圈闭合:码元数与增量线数
码盘上 M 个码元正好铺满一圈,码元角为 360°/M,读数半径处的码元宽
w = 2πr / M
为了用增量道给码元定相位,码元宽通常取增量节距的整数倍 k,于是增量线数
N = k·M
M 有三种取法:
| 序列 | M | k = 1 时线数 | 特点 |
|---|---|---|---|
| M 序列 | 2ⁿ − 1,如 1023 | 1023 | 线数为奇数,不便二进制输出和极对数整除 |
| de Bruijn 扩展 | 2ⁿ,如 1024 | 1024 | 在 n − 1 个连续 0 处补一个 0,二进制友好 |
| 截短序列 | 任意,如 1000 | 1000 | 十进制分辨率,但要逐个起点搜索 |
截短序列在直线码带上没有问题,在码盘上却多了一个条件:序列首尾相接,接缝处会新产生 n − 1 个跨接缝的窗口,它们不能与段内已有的窗口重复。我们用 10 阶序列(递推 a[k] = a[k−3] ⊕ a[k−10],即 x¹⁰ + x⁷ + 1)逐个起点检查,截成 1000 个码元后循环窗口仍全部互不相同的起点,1023 个中只有 19 个。截短方案必须用程序做整圈循环检查,不能随便截一段。
读数窗:n 个码元加余量
读数头与码元的相对相位任意,要保证窗内总有 n 个完整码元,窗长至少 (n + 1)·w;若多读 c 位用于检错或纠错,窗长为 (n + c + 1)·w。按汉明界,纠 1 位的 c 在 n = 9–11 时至少为 4,n ≥ 12 时至少为 5,实际能否达到取决于多项式的选择(详见本文库纠错一文)。
码盘与直线码带的区别在于码道是圆弧,而探测器阵列通常是直的。阵列在窗口中心与码道相切时有两项几何偏差:
- 弦高:阵列两端偏离码道中线 s = L²/(8r),L 为窗长;
- 切向投影误差:两端码元在阵列上的位置偏差约 L³/(48r²)。
n = 10、c = 4、r = 15 mm 时 L ≈ 1.38 mm,弦高约 16 μm,切向误差约 0.24 μm,与 92 μm 的码元宽相比可以忽略。弦高只需计入码道径向宽度;只有 n 较小、窗口较长时才需要把阵列做成弧形。
读数半径的偏差会让码元在阵列上的节距变化 Δr/r。以窗口中心为相位参考、要求窗端累积错位不超过 w/4,可得 Δr ≤ r/(2(n + c)),n = 11、c = 4 时约 0.5 mm,比码道宽度要求宽松得多。
码元与增量周期对齐
k = 1 时码元宽等于增量节距,码元边界与增量刻线边沿在同一张掩模上对齐,读数头用增量相位把采样点放在码元中心,见图1。采样点离码元边沿的余量为 w/4,要吃掉它的有:读数头内码道探测器与增量探测器的切向错位、码道与增量道的半径差带来的偏心差分、码元边沿的线宽误差。码道在 15.0 mm、增量道在 15.6 mm、偏心 20 μm 时,偏心差分在码道处只有约 0.77 μm,主要余量留给读数头装配。
k > 1 时,绝对码只能给出码元号,还要判断当前处于码元内的第几个增量周期,码元边沿的定位误差须小于 w/(2k)。k 越大越难,版图上一般取 k = 1 或 2。
曼彻斯特编码的版图代价
普通编码中,n 位窗口里 1 的比例可以从 0 变到全部,窗内平均透过率随位置大幅起伏,各位只能各自和一个绝对阈值比较,照明不均和直流偏置直接变成判读错误。曼彻斯特编码把每一位拆成两个半码元,“亮暗”为 1,“暗亮”为 0:
- 每位的平均透过率恒为 50%,判读只比较两半的差,与照明梯度和偏置无关;
- 每位中间都有一次跳变,码道自带位时钟;
- 两半差值太小可判为“擦除”,提高纠错能力。
代价是最细图形从 w 变成 w/2,探测器数加倍。若保持最细图形不变,位宽要加倍,同一半径上少一位(M 减半)。另一种做法是在径向再加一条互补码道做差分,码元宽不变,但多占一条码道的径向空间。
r = 15 mm 参数算例
| 方案 | M | 码元角 | 码元宽 w | 增量线数(k = 1) | 增量道影像式最大间隙 | (n + 1)·w | (n + c + 1)·w | 曼彻斯特最细图形 |
|---|---|---|---|---|---|---|---|---|
| n = 10 | 1024 | 21.1′ | 92.0 μm | 1024 | 约 2.0 mm | 1.01 mm | 1.38 mm | 46.0 μm |
| 截短 1000 | 1000 | 21.6′ | 94.2 μm | 1000 | 约 2.1 mm | 1.04 mm | 1.41 mm | 47.1 μm |
| n = 11 | 2048 | 10.5′ | 46.0 μm | 2048 | 约 0.49 mm | 0.55 mm | 0.74 mm | 23.0 μm |
| n = 12 | 4096 | 5.3′ | 23.0 μm | 4096 | 约 0.12 mm | 0.30 mm | 0.41 mm | 11.5 μm |
增量道最大间隙按 0.205·p²/λ(λ = 0.88 μm)估算。以 n = 11 为例:2048 个码元,码元宽 46.0 μm,配 2048 线增量道,读数窗 0.55–0.74 mm;若用曼彻斯特编码,最细图形降到 23.0 μm,或改为 n = 10、位宽 92 μm。图2给出码元宽和窗长随 n 的变化。

工程要点
- 先定 M 再定线数:N = k·M,需要二进制分辨率时用 de Bruijn 的 2ⁿ,需要十进制时用截短序列。
- 截短序列必须做整圈循环检查:示例中 1023 个起点只有 19 个截成 1000 后窗口仍互不重复。
- 读数窗按 (n + c + 1)·w 设计,r = 15 mm、n = 11、c = 4 时约 0.74 mm;直线阵列的弦高 L²/(8r) 计入码道径向宽度。
- 优先取 k = 1:码元边界与增量刻线同版对齐,采样点余量 w/4,n = 11 时约 11.5 μm。
- 照明不均或偏置大时用曼彻斯特编码或互补码道,前者把最细图形减半,后者多占一条码道。
- 码元宽同时就是增量节距(k = 1),要按增量道的间隙窗口复核,n = 12 时最大间隙只剩约 0.12 mm。
小结
单道伪随机码的版图由 w = 2πr/M 和 N = k·M 两个关系串起来:M 决定码元宽和线数,k 决定粗细拼接的难度,n 和冗余位决定读数窗。码盘相对直线码带多出整圈闭合和跨接缝窗口不重复的要求;曼彻斯特编码用一半的最细图形换来对照明和偏置的免疫。r = 15 mm 时 n = 11、k = 1 是一组兼顾节距和窗长的取值。
延伸阅读:ENC7 编码器码盘生产厂家(中文主页) · 码盘技术文库
关于我们:晶正光电专注编码器码盘研发制造,玻璃、金属、PC 码盘均可按图定制。
官网:https://enc7.com
© 廊坊晶正光电技术有限公司 版权所有,未经书面许可不得转载、摘编。本文借助 AI 辅助创作。