負荷慣性はモーター軸から見た値へそろえる
モーター選定では、必要トルクだけでなく負荷慣性モーメントも確認します。慣性が大きい機構は加速・減速に時間がかかり、指令への追従、停止時の振動、整定時間に影響するためです。
ただし、ローラー、テーブル、歯車、カップリング、モーターローターの慣性を、そのまま足すことはできません。各部品は異なる回転数で動くため、すべてを同じ軸へ換算してから合計する必要があります。
実務では、モーター軸へ換算した負荷慣性を求め、モーターローター慣性との比を計算します。減速機がある場合、負荷側の慣性は減速比の二乗で小さく見えることが重要です。
慣性モーメントとは何か
直線運動で質量 $m$ が速度変化に抵抗するように、回転運動では慣性モーメント $J$ が角速度変化に抵抗します。角加速度を $\alpha$、慣性トルクを $T_J$ とすると、基本式は次のとおりです。
$$ T_J=J\alpha $$
$J$ のSI単位は $\mathrm{kg\cdot m^2}$、$\alpha$ は $\mathrm{rad/s^2}$、$T_J$ は $\mathrm{N\cdot m}$ です。
代表的な形状の重心軸まわりの慣性モーメントは次のようになります。
| 形状 | 慣性モーメント |
|---|---|
| 中実円柱・円板 | J = m r² / 2 |
| 薄肉円筒・リング | J = m r² |
| 直線移動質量のプーリー軸換算 | J = m r² |
ここで $r$ は回転半径またはプーリーのピッチ円半径です。ベルト駆動では外径ではなく、ベルトが運動を伝えるピッチ円半径を使います。
減速比の二乗で換算される理由
本記事では減速比を次のように定義します。
$$ i=\frac{\omega_m}{\omega_L} $$
$\omega_m$ はモーター角速度、$\omega_L$ は負荷側角速度です。減速機でモーターが負荷の5倍の速さで回るなら $i=5$ です。
負荷側の慣性モーメントを $J_L$ とすると、負荷が持つ回転運動エネルギーは、
$$ E_L=\frac{1}{2}J_L\omega_L^2 $$
です。このエネルギーと等価になるモーター軸換算慣性を $J_{Lm}$ とすると、
$$ \frac{1}{2}J_{Lm}\omega_m^2=\frac{1}{2}J_L\omega_L^2 $$
となります。$\omega_L=\omega_m/i$ を代入すれば、
$$ J_{Lm}=\frac{J_L}{i^2} $$
です。
つまり減速比5では負荷側慣性がモーター軸から見て25分の1、減速比10では100分の1になります。減速機が大きな慣性負荷の駆動に有効なのは、トルクを増幅するだけでなく、モーター軸から見た負荷慣性も小さくするためです。
複数軸を一般式で換算する
機構内の各回転体について、慣性モーメントを $J_k$、その軸の角速度を $\omega_k$ とします。モーター軸へ換算した慣性は、
$$ J_{ref,k}=J_k\left(\frac{\omega_k}{\omega_m}\right)^2 $$
です。すべての回転体を合計すると、
$$ J_{ref}=\sum_k J_k\left(\frac{\omega_k}{\omega_m}\right)^2 $$
となります。
この式なら、単段減速機だけでなく、複数段歯車、ベルト比、チェーン比が混在する機構にも使えます。重要なのは、各部品がモーターの何倍または何分の1の角速度で回るかを明確にすることです。
直線移動質量を回転慣性へ置き換える
ベルトやラックで質量 $m$ を直線移動させ、負荷側プーリーまたはピニオンの有効半径を $r$ とします。直線速度と角速度の関係は、
$$ v=r\omega_L $$
です。直線運動エネルギーと回転運動エネルギーを等しく置くと、
$$ \frac{1}{2}mv^2=\frac{1}{2}J_{linear}\omega_L^2 $$
なので、
$$ J_{linear}=mr^2 $$
となります。さらに減速比 $i$ を介してモーター軸へ換算すると、
$$ J_{linear,m}=\frac{mr^2}{i^2} $$
です。
ボールねじでは、1回転当たりの移動量であるリードを $p$ とすると、直線移動質量のねじ軸換算慣性は、
$$ J_{linear}=m\left(\frac{p}{2\pi}\right)^2 $$
です。ねじ軸とモーターの間に減速比がある場合は、さらに $i^2$ で割ります。
計算例:ベルト駆動テーブルの等価慣性
次の条件で計算します。数値は換算手順を示すための例です。実機では各部品の仕様値を使用してください。
| 項目 | 記号 | 値 |
|---|---|---|
| 移動質量 | m | 80 kg |
| 負荷側プーリーのピッチ円半径 | r | 0.050 m |
| 負荷側回転体の慣性 | J_out | 0.012 kg·m² |
| 減速比 | i | 5 |
| モーター側歯車・カップリング慣性 | J_in | 0.00035 kg·m² |
| モーターローター慣性 | J_M | 0.00025 kg·m² |
まず、移動質量を負荷側プーリー軸の慣性へ換算します。
$$ J_{linear}=mr^2=80\times0.050^2=0.200\ \mathrm{kg\cdot m^2} $$
負荷側回転体を加えた負荷側合計慣性は、
$$ J_{L,out}=0.200+0.012=0.212\ \mathrm{kg\cdot m^2} $$
です。これをモーター軸へ換算します。
$$ J_{L,m}=\frac{0.212}{5^2}=0.00848\ \mathrm{kg\cdot m^2} $$
モーターと同じ速度で回る歯車・カップリングの慣性は、減速比で割らずに加えます。
$$ J_{ref}=0.00848+0.00035=0.00883\ \mathrm{kg\cdot m^2} $$
モーター軸換算負荷慣性は0.00883 kg·m²です。
慣性比を計算する
慣性比は、モーター軸換算負荷慣性をモーターローター慣性で割った値です。
$$ R_J=\frac{J_{ref}}{J_M} $$
例の条件では、
$$ R_J=\frac{0.00883}{0.00025}=35.32 $$
となります。
この35.32という値だけで適否は判断できません。許容慣性比は、サーボモーター、ステッピングモーター、ブラシレスモーターなどの方式、ドライバの制御能力、オートチューニング、機械剛性、運転パターンによって異なります。メーカーが対象シリーズに示す許容慣性比または許容負荷慣性と照合します。
また、慣性比を満たしていても、必要回転数、最大トルク、実効トルク、回生エネルギーの確認は別に必要です。
加速トルクとの関係
モーター自身の慣性を含む理想的な総慣性は、
$$ J_{total}=J_M+J_{ref} $$
です。モーター角加速度を $\alpha_m$ とすると、理想的な加速トルクは、
$$ T_A=J_{total}\alpha_m $$
で求められます。
ただし、実際の減速機には損失があります。慣性比を計算するときは、運動エネルギーに基づく軸換算として効率を混ぜません。一方、モーター必要トルクを求めるときは、負荷側の加速トルクや外力トルクをモーター軸へ換算する過程で伝達効率を考慮します。
「等価慣性の換算」と「損失を含む必要トルク計算」を同じ式に押し込まず、計算目的を分けると二重補正を防げます。
Pythonで軸換算を自動化する
各回転体について、慣性モーメントとモーターに対する速度比を登録すれば、複数段機構も同じ関数で計算できます。
from dataclasses import dataclass
@dataclass(frozen=True)
class RotatingPart:
name: str
inertia_kg_m2: float
speed_ratio_to_motor: float
def reflected_inertia(parts: list[RotatingPart]) -> dict[str, float]:
result: dict[str, float] = {}
for part in parts:
if part.inertia_kg_m2 < 0:
raise ValueError(f"{part.name}: inertia must be non-negative")
if part.speed_ratio_to_motor < 0:
raise ValueError(f"{part.name}: speed ratio must be non-negative")
result[part.name] = (
part.inertia_kg_m2 * part.speed_ratio_to_motor**2
)
result["total_reflected_load"] = sum(result.values())
return result
moving_mass_kg = 80.0
pitch_radius_m = 0.050
gear_ratio = 5.0
linear_inertia_at_output = moving_mass_kg * pitch_radius_m**2
parts = [
RotatingPart(
name="linear_mass",
inertia_kg_m2=linear_inertia_at_output,
speed_ratio_to_motor=1 / gear_ratio,
),
RotatingPart(
name="output_rotating_parts",
inertia_kg_m2=0.012,
speed_ratio_to_motor=1 / gear_ratio,
),
RotatingPart(
name="input_gear_and_coupling",
inertia_kg_m2=0.00035,
speed_ratio_to_motor=1.0,
),
]
result = reflected_inertia(parts)
motor_rotor_inertia = 0.00025
inertia_ratio = result["total_reflected_load"] / motor_rotor_inertia
for name, value in result.items():
print(f"{name}: {value:.8f} kg m^2")
print(f"inertia_ratio: {inertia_ratio:.2f}")
主な結果は次のとおりです。
linear_mass: 0.00800000 kg m^2
output_rotating_parts: 0.00048000 kg m^2
input_gear_and_coupling: 0.00035000 kg m^2
total_reflected_load: 0.00883000 kg m^2
inertia_ratio: 35.32
speed_ratio_to_motorには「その部品の角速度 ÷ モーター角速度」を入れます。減速比5の出力軸なら 1 / 5、モーターと同速なら1.0です。この定義を固定すると、減速比を掛けるか割るかの混乱を防げます。
実務で起こりやすい失敗
減速比を一乗で換算する
トルクは減速比の一乗で変換されますが、慣性は速度比の二乗で換算します。トルク換算式をそのまま慣性へ使わないでください。
モーターローター慣性を負荷慣性へ混ぜる
慣性比の分子は、モーター軸へ換算した負荷側・伝達系の慣性です。モーターローター慣性は分母に使います。加速トルクを計算するときに、初めて両者を合計します。
入力軸換算値をもう一度換算する
減速機メーカーが「入力軸換算慣性」として示した値は、すでに入力軸基準です。さらに減速比の二乗で割ると、過小評価になります。カタログ値がどの軸を基準にしているかを確認します。
外径を有効半径に使う
ベルト、チェーン、歯車、ラックでは、運動を伝えるピッチ円半径を使います。フランジ外径や歯先円半径を使うと、直線移動質量の換算慣性がずれます。
慣性比だけでモーターを選ぶ
慣性比は制御性に関係する一つの条件です。最大回転数、加速トルク、連続運転の実効トルク、回生能力、機械強度、バックラッシ、ねじり剛性も確認します。
データ化するときの持ち方
自動選定やWebツールへ展開する場合は、慣性値だけでなく基準軸をデータとして持たせます。
- 部品名と形番
- 慣性モーメント
- 慣性値の基準軸
- モーターに対する速度比
- 換算後慣性
- 値の出典と資料版
- モーターローター慣性
- メーカー指定の許容慣性比または許容負荷慣性
- 計算に使用した減速比の定義
この構造なら、減速比やモーター候補を変更したときに換算値と慣性比を再計算できます。計算結果だけでなく、各部品がどの速度で回るかを残すことが再利用の鍵です。
まとめ
負荷慣性をモーター選定へ使うには、すべての慣性をモーター軸基準へそろえます。負荷側慣性 $J_L$ を減速比 $i$ で換算する基本式は、
$$ J_{Lm}=\frac{J_L}{i^2} $$
です。複数軸では、
$$ J_{ref}=\sum_k J_k\left(\frac{\omega_k}{\omega_m}\right)^2 $$
を使います。直線移動質量は、プーリーやピニオンの有効半径 $r$ を使って $mr^2$ へ置き換えます。
モーター軸換算負荷慣性を求めたら、ローター慣性との比を計算し、対象モーター・ドライバの仕様と照合します。慣性比に共通の万能基準はありません。メーカーがシリーズごとに示す許容値を使い、トルク、回転数、回生、機械剛性と合わせて判断することが重要です。
