位置決めが0.01mmで止まらない日、最初に疑うべきは機械じゃなくてエンコーダ
サーボを組んで、「よし動かすぞ」と原点復帰させた瞬間、モニタの指令値と実測位置が微妙にズレる。0.01mm、あるいは1μm単位で詰めようとすると、指令値を変えているのにモータが動かない瞬間がある。そういうとき、機械屋さんはまずバックラッシュを疑い、次にカップリングのねじれを疑い、最後にボールねじの精度を疑う。でも実際の原因は、もっと上流の「そもそも指令できる最小単位がそこで打ち止め」だったりする。
分解能 r[μm/パルス] — モータ1パルスで直動テーブルが何μm動くかという数値。これがたとえば0.3μmだったら、0.1μm刻みの指令を出しても実際には「1パルス動く or 動かない」の二択になる。どれだけ制御演算を細かく回しても、量子化の壁を超えられない。
このツールは、エンコーダPPR・逓倍・減速比・駆動方式(ボールねじ/タイミングベルト/ラックピニオン)の数値をポチポチ入れると、直動分解能と最小位置決め指令、1m移動に必要な総パルス数まで一気に出す。機械設計の初期検討で「このエンコーダと駆動構成で、要求精度届くのか?」を30秒で判定するのが狙いだ。
なぜ作ったのか — メーカーツールは自社製品専用だから
市販のサーボモータには、メーカー各社がWeb上で選定ツールを公開している。パナソニック、安川、三菱、オムロン。便利なんだけど、みんな「自社のエンコーダPPR」「自社のサーボアンプ」前提で組まれていて、他社製エンコーダに自社アンプを組み合わせたり、サードパーティの産業用PCで独自ドライバを書いたときには使えない。
実際、私が過去に担当したライン装置の案件でこんなことがあった。発注済みのサーボ(A社)にクライアント指定のエンコーダ(B社、PPR=20000)を後付けで組み合わせる構成になった。ラインのタクトタイム算出のために「このときの直動分解能はいくつになるか」を即答する必要があって、A社のWebツールはPPRが選択肢リストから選ぶ形式で、20000PPRが入れられなかった。Excelに手書きで式を書いて計算したら、桁を一つ間違えた。
分解能計算自体は四則演算だ。難しくない。難しいのは「駆動方式ごとに1回転移動量の式が違う」ことと「逓倍とノイズマージンを忘れる」ことと「32bitカウンタのオーバーフローを見落とす」ことだ。このツールはこの3つのミスを防ぐためだけに作った。PPRを直接入力できる、駆動方式をセグメントで切り替えるとUIが連動する、ノイズマージン3倍がデフォルト、さらに1m移動あたりの総パルス数も表示して32bit境界(約21億)に近づいていないか目視できる。
メーカー非依存で、電卓代わりに使ってほしい。選定の「とっかかり」を数十秒で固める道具だ。
エンコーダ分解能 とは何か — パルスから長さへの変換
PPRと逓倍 — 1回転で何パルスか
エンコーダはモータ軸の回転角を離散的なパルスに変換するセンサだ。仕様書に書かれる PPR (Pulses Per Revolution) は、モータが1回転するときに出力される基本パルス数を示す。たとえば PPR=8192 なら、1回転で8192パルス分のA相信号が出る。
ここに「逓倍」(multiplication) が入る。サーボアンプやカウンタICは、A相・B相の位相が90°ずれた2本の信号から、立ち上がり/立ち下がりエッジを全部拾って最大4倍までカウント数を増やせる。これが ×4逓倍 (quadrature decoding) で、見かけ上の分解能が4倍になる。つまり PPR=8192 で×4逓倍すると、1回転あたり32768カウントまで分解できる。
totalPPR = PPR × mult // 逓倍後の1回転カウント数
日常のたとえで言うと、時計の秒針みたいなもので、文字盤に60の目盛りしかない時計(PPR=60)でも、針の位置を0.25秒単位で見られるルーペを当てれば、実質240目盛り相当(×4逓倍)で読める。エンコーダの中身を変えなくてもカウンタの読み取り側で分解能を上げられる。これが逓倍の威力。
1回転移動量 sRev — モータ軸から直動への変換
モータは回転運動をするだけ。それをテーブルの直線移動に変換するのが駆動機構で、1回転で何mm動くか = sRev が駆動方式ごとに違う。
- ボールねじ:
sRev = L(リード[mm/rev])。ねじが1回転で進む距離がそのまま - タイミングベルト:
sRev = Z × p(歯数 × ピッチ[mm])。プーリ1回転でベルトの歯Z枚分動く - ラックピニオン:
sRev = π × m × Zp(モジュール × ピニオン歯数)。ピニオンの基準円周長
減速機がある場合は、さらに減速比 i で割る。モータ軸が1回転しても、減速機出力軸は1/i回転しか動かない。
直動分解能 r の公式
以上をまとめると、分解能 r (μm/pulse) は以下で求まる。
r = sRev × 1000 / (PPR × mult × i)
×1000 はmmをμmに変換する係数だ。
具体例: PPR=8192, mult=4, i=1, ボールねじ L=10mm の場合、r = 10 × 1000 / (8192 × 4 × 1) = 10000 / 32768 ≈ 0.305 μm/パルス。1パルスで0.305μm動く。目では見えない。
より詳しくは ロータリーエンコーダ(Wikipedia) の解説を参照してほしい。
実務での重要性 — 公差と歩留まりを決める
分解能は「見かけの数字」ではなく、製品品質を直接決めるパラメータだ。
量産品の公差割当に直結
機械加工の現場では、部品の寸法公差(たとえば ±0.01mm)に対して、製造装置の位置決め精度がその1/3〜1/5必要、というラフな設計ルールがある(工程能力指数Cpkの考え方)。公差±0.01mm = 20μm幅の部品を作るなら、装置の位置決め分解能は 4〜7μm 以下が欲しい。分解能が10μmしかないと、そもそも「指令する最小ステップ > 必要公差 / 2」で、量産不可になる。
JIS B 6191 (数値制御工作機械の試験及び検査方法) では、位置決め精度を「指令位置」と「到達位置」の差として規定している。ここに量子化誤差が効いてくる。
事故・品質問題に直結した実例
半導体露光装置で、分解能設計を甘く見積もったために歩留まりが激減した事例がある。設計時に「r=0.01μm取れていれば十分」と判断してPPR=100000で組んだが、減速比を入れ忘れて実際の分解能が0.05μmになり、ウェハ上の露光位置が1ショットごとに微妙にズレて、結果として歩留まりが80%→60%に落ちた。基板1枚数十万円の世界で、月産1000枚の60%損失は億単位の損害になる。
こういう事故を防ぐのは、製造前の「数字を出して、要求公差と照らし合わせる」という当たり前の作業だ。
粗い分解能と細かすぎる分解能の両極
逆に、分解能を過剰に細かくするのも問題だ。r < 0.01μm 級にすると、機械剛性・サーボ応答速度・熱雑音が支配的になって、エンコーダの数字通りの位置決めができなくなる。さらに総パルス数が32bit境界(約21億)を超えると、カウンタオーバーフローで制御破綻する。「必要十分」を狙うのが設計者の腕の見せどころだ。
こんなときに役立つ
ケースA: 装置立上げ前の仕様確認 購買部からサーボの型番が上がってきた。要求公差±5μmのラインに対して、分解能が十分か検証したい。PPR・逓倍・駆動構成を入れれば即答。
ケースB: コストダウン検討 安価な低分解能エンコーダ(PPR=1024)に置き換えたいが、許容できる最小公差はいくつか。試算を何パターンか回す。
ケースC: 駆動方式の選定比較
同じモータに対して、ボールねじ・ベルト・ラックピニオンのどれがコスパ良いか。3方式比較表でsRevの差が一発でわかる。
ケースD: トラブルシューティング
「なんで0.01mm刻みの指令が効かないんだ?」と現場から問い合わせ。エンコーダPPRと減速比を入れて r を表示、「分解能0.03mmなので物理的に無理」と説明する。
基本の使い方
- エンコーダ仕様を入力 — PPR(パルス/回転)、逓倍(×1/×2/×4)、減速比
iを入れる。ノイズマージンは3倍がデフォルト(経験則) - 駆動方式を選択 — ボールねじ・ベルト・ラックピニオンのうち1つ。駆動固有の入力欄がUIに現れる
- 駆動固有の寸法を入力 — リード
L、またはベルトピッチp+ プーリ歯数Z、またはモジュールm+ ピニオン歯数Zp - 結果を確認 — 直動分解能
r、最小位置決め指令minCmd、1回転移動量sRev、1m移動あたり総パルス数が瞬時に算出される。プリセット6件から類似構成を選んで微調整する使い方が最速
具体的な使用例
ケース1: 高精度研削盤(0.1μm級)
高分解能エンコーダに細リードのボールねじを組み合わせた構成。
- 入力: PPR=20000, 逓倍=×4, 減速比 i=1, ボールねじ L=5mm, ノイズマージン=3倍
- 結果: 直動分解能 r=0.0625 μm/パルス, 最小指令 0.1875 μm, 1回転移動量 5 mm/rev, 1m移動=16,000,000 パルス, 逓倍後PPR=80,000
- 解釈: 0.1μm級の超精密研削に耐える分解能。ただし32bit境界(21億)まで十分余裕あり。実機精度はバックラッシュで3〜5倍落ちるので0.2μm〜0.3μmの位置決め精度を想定するのが現実的
ケース2: SCARAロボット(ベルト駆動+大減速比)
減速機50倍でベルトのバックラッシュを打ち消す構成。
- 入力: PPR=10000, 逓倍=×4, 減速比 i=50, ベルトピッチ p=5mm (S5M), プーリ歯数 Z=40, ノイズマージン=3倍
- 結果: 直動分解能 r=0.1 μm/パルス, 最小指令 0.3 μm, 1回転移動量 200 mm/rev, 1m移動=10,000,000 パルス, 逓倍後PPR=40,000
- 解釈: 組立ロボットに十分な分解能。減速比50倍のおかげで、ベルト1回転で200mm動くが分解能は細かい。ただし総パルス数が1000万/mなので、長ストロークではカウンタ設計に注意
ケース3: CNCフライス(汎用構成)
最も標準的な構成。
- 入力: PPR=8192, 逓倍=×4, 減速比 i=1, ボールねじ L=10mm, ノイズマージン=3倍
- 結果: 直動分解能 r=0.3052 μm/パルス, 最小指令 0.9155 μm, 1回転移動量 10 mm/rev, 1m移動=3,276,800 パルス, 逓倍後PPR=32,768
- 解釈: CNCフライスの0.001mm指令(1μm)に対して余裕あり。汎用的なPPR=8192と標準リード10mmの組み合わせで、ほとんどの金属加工要求を満たす
ケース4: 搬送コンベヤ(ラックピニオン+減速機)
長距離搬送でラックピニオンを使った例。
- 入力: PPR=2500, 逓倍=×4, 減速比 i=10, ラックモジュール m=2, ピニオン歯数 Zp=20, ノイズマージン=3倍
- 結果: 直動分解能 r=1.2566 μm/パルス, 最小指令 3.7699 μm, 1回転移動量 125.664 mm/rev, 1m移動=795,775 パルス, 逓倍後PPR=10,000
- 解釈: 搬送用としては十分な粗さ(約1.3μm)。ラックピニオンはストロークが長くてもコスト増えないのが利点。精密位置決めには不向きだが、mm単位の搬送停止には適する
ケース5: 半導体露光ステージ(17bit絶対値+極細リード)
半導体製造装置の最高精度構成。
- 入力: PPR=131072, 逓倍=×4, 減速比 i=1, ボールねじ L=2mm, ノイズマージン=2倍
- 結果: 直動分解能 r=0.00381 μm/パルス (3.81 nm/パルス), 最小指令 0.00762 μm, 1回転移動量 2 mm/rev, 逓倍後PPR=524,288
- 解釈: nm級の超高精度領域。このレベルになると機械剛性・温度安定性・エアベアリング支持が支配的で、エンコーダ分解能は必要条件でしかない。ノイズマージンを2倍に絞って、要求に対してギリギリ詰めた設計
ケース6: 3Dプリンタ送り軸(マイクロステップ+S2Mベルト)
ホビー〜デスクトップ3Dプリンタの典型構成。
- 入力: PPR=1600 (ステッピング200step × マイクロステップ8), 逓倍=×4, 減速比 i=1, ベルトピッチ p=2mm (S2M), プーリ歯数 Z=20, ノイズマージン=4倍
- 結果: 直動分解能 r=6.25 μm/パルス, 最小指令 25 μm, 1回転移動量 40 mm/rev, 逓倍後PPR=6,400
- 解釈: 3Dプリンタで一般的な積層ピッチ0.1mm(100μm)に対して、分解能6.25μmで16倍の余裕。ステッピングモータのオープンループ制御なのでノイズマージン4倍と多めに取って、共振・脱調のリスクを吸収している
仕組み・アルゴリズム — 3駆動方式の換算と実装
候補手法の比較
エンコーダ分解能を出す方法は3つ考えられた。
- メーカー別選定ツールの数値をそのまま読む — 型番が対応していれば楽だが、メーカー非対応の組み合わせで使えない
- Excelで各自式を書く — 現場で広く使われるが、駆動方式ごとに式を書き直す必要があり、桁間違い・逓倍忘れが頻発する
- 駆動方式を切り替える汎用計算ツール ← 採用
3を選んだ理由は、駆動方式の違い(ボールねじ/ベルト/ラックピニオン)を「1回転移動量 sRev」という共通インタフェースで抽象化できるから。UIでは駆動方式セグメントボタンで切替、内部では分岐ロジックでsRevを計算し、その先の分解能計算は共通化した。
実装の計算フロー
内部処理は次の5ステップ。
// 1. 共通値のパース
totalPPR = PPR × mult
// 2. 駆動方式ごとに1回転移動量 sRev を計算
if (driveType === "ballscrew") {
sRev = L // [mm/rev]
} else if (driveType === "belt") {
sRev = Z × p // [mm/rev]
} else if (driveType === "rack") {
sRev = Math.PI × m × Zp // [mm/rev]
}
// 3. 直動分解能を算出(mm→μm変換の ×1000 を含む)
r = sRev × 1000 / (totalPPR × i) // [μm/pulse]
// 4. ノイズマージン倍率を掛けて実用最小指令
minCmd = r × noiseMargin // [μm]
// 5. 1m移動あたりの総パルス数
pulsesPerMeter = 1e6 / r
シンプルだが、現場で間違えやすい3点(逓倍の掛け忘れ、mm/μm換算の抜け、減速比の位置)を全部構造化している。
ステップ計算例
ケース3「CNCフライス」を手でたどると、
totalPPR = 8192 × 4 = 32768
sRev = 10 [mm/rev] // ballscrew L=10
r = 10 × 1000 / (32768 × 1) = 10000 / 32768 = 0.30517578... ≈ 0.3052 [μm/pulse]
minCmd = 0.3052 × 3 = 0.9155 [μm]
pulsesPerMeter = 1,000,000 / 0.3052 = 3,276,800 [パルス]
となる。手計算でも検算できる範囲の数式だが、ノイズマージン3倍とpulsesPerMeterの同時確認は意外と忘れられる。特に長ストローク(5m以上)の場合、pulsesPerMeter × ストローク が32bit境界(2,147,483,647)を超えるとカウンタオーバーフロー対策(64bitカウンタ or 周期リセット)が必須になるので、ツール側で警告を出している。
なぜノイズマージン3倍がデフォルトか
計算で出た理論分解能 r は「エンコーダと駆動系の量子化限界」で、実機では以下のノイズ源が重なる。
- エンコーダ信号のジッタ(±1カウント)
- サーボアンプの電流ノイズ(±0.5カウント)
- 機械共振による見かけの振動(±1カウント)
合計±2.5カウント程度のブレが常時あるので、指令最小単位をrちょうどに設定すると追従できず「指令したのに動かない」状態になる。経験則としてr × 3を最小指令に取れば、ブレを飲み込んだ上で確実に1ステップ前進できる。半導体露光のように機械剛性・温度管理が別途確保されている場合は2倍まで絞れる。
他ツールとの違い(エンコーダ分解能 計算ツール比較)
エンコーダ分解能の計算はサーボメーカーのWebサイトや設計支援ソフトにも搭載されている。では、なぜこのツールを別途用意する意味があるのか。違いは横断性・実用性・駆動方式網羅の3点にある。
メーカー公式の計算ページは、基本的に自社エンコーダ・自社アクチュエータを前提としている。PPRのプリセットは自社ラインナップから選ばされ、駆動方式も自社が強い領域(ボールねじ専業メーカーならボールねじ中心)に寄る。三菱電機のサーボ選定ツールと安川電機のSigmaWinでは、同じ軸構成を入力しても数値が微妙に違うことがある。丸め位置や逓倍の扱いが社内流儀だからだ。
次に、Excelテンプレートや技術資料のPDF計算例は、駆動方式ごとに別ファイルに分かれていることが多い。ボールねじ版のシートを開いて数値を入れた後、「もしベルトだったら?」と切り替えたくなっても、別シートで入力しなおし。比較表を手で作る羽目になる。
このツールは、次の点で既存のツールと差別化されている。
- 駆動方式3種を1画面で横比較。同じPPR・逓倍・減速比で、ボールねじ/ベルト/ラックピニオンの直動分解能と最小指令がテーブル表示される
- ノイズマージン倍率込みで最小位置決め指令を出す。理論分解能
rだけ見て指令値を設定すると量子化ノイズに埋もれるため、2〜4倍のマージン設定を標準で強制する - 32bitカウンタ境界警告を自動判定。総パルス数が
2,147,483,647を超える構成では、コントローラ側で64bit拡張や周期リセットが必要になる - メーカー非依存。PPRは
100〜1,048,576の任意値を受け付けるので、17bit(131,072)や20bit(1,048,576)の絶対値エンコーダも入力できる
「設計初期に駆動方式を決め切る前段階で、どの方式だと目標精度に届くかを素早く見積もる」。この用途に絞ったのが本ツールだ。
豆知識:インクリメンタル と アブソリュート の違い
分解能を語るうえで避けて通れないのが、エンコーダの種類だ。ここではインクリメンタル(Incremental、相対位置)とアブソリュート(Absolute、絶対位置)の違いを整理する。
インクリメンタルエンコーダは、軸が回ったぶんだけA相・B相のパルスを吐き出す方式。電源を切ると「今どこにいるか」の情報が消えるため、起動のたびに原点復帰(ホーミング)が必要になる。構造が単純で安価、高PPRを作りやすい、という利点がある。2相パルスの位相差を読むことで回転方向も分かり、4逓倍で分解能を稼げる(Wikipedia: Incremental encoder)。
一方、アブソリュートエンコーダは、軸の絶対角度を常に保持している。内部のコード板にグレイコードやバイナリコードのパターンが刻まれていて、電源投入直後から「今ここ」の角度を返す。17bit なら 1回転を 131,072 分割、20bit なら 1,048,576 分割する。停電からの復旧や非常停止後の位置復帰が速いため、産業ロボットやCNCマシニングセンタで標準採用が進んでいる。
多回転対応のアブソリュートエンコーダはさらに高機能で、バッテリーバックアップ付きのギアカウンタやWiegand電源を使って、何回転目にいるかも記憶する。これで「ボールねじ5mリードで10回転した先の絶対位置」まで電源OFF状態から復帰できる。安川の Σ-X シリーズや三菱の MR-J5 はバッテリーレス多回転アブソリュートが標準装備になりつつある。
「じゃあ常にアブソリュートで良いのか?」というと、そう単純でもない。アブソリュートはコスト・サイズ・通信遅延の面で不利になる場面がある。高速NC軸のように制御周期 0.1ms でフィードバックを回したい用途では、シンプルなラインドライバ出力のインクリメンタルが選ばれることも多い。
分解能の計算式自体は両方式で同じだ。PPRを入力欄に打つ代わりに、アブソリュートの場合は「2の分解能ビット乗」を入力すれば良い。17bit ≒ 131,072、20bit ≒ 1,048,576 は暗記しておくと楽。参考として JIS B 6190-2(NC工作機械-精度及び位置決め精度)は位置決め精度の計測方法を規定している(JIS検索ページ)。
Tips(分解能選定で失敗しない5項目)
- 逓倍はまず4倍から入る。2相出力のインクリメンタルは4逓倍(A/B両相の立ち上がり・立ち下がりをカウント)が業界標準。×1・×2は古いカウンタIC制約がある場合のみ
- ノイズマージン倍率は装置環境で決める。工場床置きの搬送装置なら3倍、半導体製造装置の防振エリアでも2倍は確保する。ゴミ取りをケチると「謎の位置ズレ」で夜呼び出される
- リードは細くする前に逓倍で稼ぐ。ボールねじのリードを半分にすると推力が倍必要になる。PPRを倍にできるならそちらの方が機械負荷への影響が少ない
- 減速比 1 未満(増速)は原則使わない。計算上は分解能が上がるように見えるが、ロストモーション・共振・寿命すべてが悪化する。本ツールも増速時には警告が出る
- 32bit カウンタ境界を先に確認。1m移動あたりのパルス数が数百万〜数千万になる高分解能構成では、PCやコントローラの32bit符号付き境界(約 21 億)に到達する。ストローク 5m × 高PPR の装置は事前チェック必須
FAQ(エンコーダ 分解能 計算)
ボールねじのリードを半分にすれば分解能も半分(倍精度)になる?
理論分解能はそのとおり半分になる。ただし実精度は半分にはならないことが多い。リードを細くすると、同じ送り速度を得るためにモータ回転数が倍になり、共振・トルクリップル・発熱が増える。さらにボールねじ自身のリード精度(JIS B 1192-1 の等級)やバックラッシュが支配的になり、エンコーダ分解能を細かくしても機械側で潰れる。「ツールの数値どおりに実精度が出るのはエンコーダ分解能が機械精度の1/5以下のとき」が実務の目安だ。
タイミングベルト駆動は分解能的にボールねじより不利?
数字だけ見るとそうなる。1回転あたり移動量がベルトでは Z × p(例: 40歯 × 5mm = 200mm)とボールねじリード(5〜20mm)より桁違いに大きいため、同じPPRなら分解能は悪化する。ただしベルトは高速・長ストローク・低コスト・低発熱という別の強みがある。10μm単位で十分な搬送・ピックアンドプレースならベルトが合理的で、μm以下の位置決めが要るならボールねじかリニアモータ、という棲み分けだ。
「最小位置決め指令」と「直動分解能」はどう違うのか?
直動分解能 r は、エンコーダの1パルスに対応する直動移動量。いわば物理的な最小単位だ。一方、最小位置決め指令 r × margin は、量子化ノイズ・エンコーダノイズ・サーボループの量子化誤差を考慮した「実用上の指令最小値」だ。r 単位でコマンドを送っても、ノイズに埋もれて位置が安定しない。マージン倍率2〜4倍を掛けた値が実用最小となる。本ツールは標準で3倍、シビアな環境(研削・露光)は2倍、粗い環境は4倍を推奨している。
アブソリュートエンコーダの「17bit」「20bit」を入力欄にどう入れる?
ビット数を「2のべき乗」でPPR欄に入れる。17bitなら 131072、20bitなら 1048576、23bit(安川Σ-X)なら 8388608 だ。このとき逓倍は×1のまま使う。アブソリュートエンコーダのビット分解能はすでに逓倍相当の細分化が含まれていて、×4すると分解能が誇大計算になる。メーカーのカタログPDFを見て「1回転あたりパルス数(ppr)」「1回転あたり分解能(resolution)」の表記を確認し、前者は逓倍前・後者は逓倍後の数字なので取り違えに注意。
計算結果や入力した数値は外部に送信される?
送信されない。計算はブラウザ内のJavaScriptのみで実行され、入力したPPRやリード・歯数などはサーバーに保存されない。プリセット選択情報も端末側で完結する。社内限定品番の構成や開発中装置のパラメータをそのまま入れても、外部に漏れる経路はない。安心して試作時の数値検討に使って良い。
まとめ
エンコーダ分解能は、モータ側のPPRと機構側の1回転移動量の比で決まる。「エンコーダを高分解能化する」「減速比を大きく取る」「リードや歯ピッチを細くする」の3方向から攻められるが、コスト・速度・機械精度のトレードオフを忘れないこと。本ツールで理論分解能とノイズマージン込み最小指令を早く掴み、その上でボールねじ選定には/ball-screw-select、タイミングベルト軸の詳細設計には/belt-driveを合わせて使ってほしい。気になる挙動や改善要望があればお問い合わせからぜひ教えて。
Mahiro
Mahiro Appの開発者。サーボの分解能計算でPPR=20000を扱えるメーカーツールが見つからず、Excelで桁を間違えてラインタクトを誤算した経験から、メーカー非依存の駆動方式横断ツールとして作った。
運営者情報を見る