碼盤參考設計
單道偽隨機碼碼盤的版圖引數:碼元寬、讀數窗與增量配對

單道偽隨機碼碼元寬 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 輔助創作。