「ラック&ピニオン駆動のモータートルクを計算する|移動抵抗・減速比・加速慣性」の内容を表す技術イラスト
UNIT 01機械設計 FIG.00 · EYECATCH

ラック&ピニオン駆動のモータートルクを計算する|移動抵抗・減速比・加速慣性

ラック&ピニオン駆動に必要なモーター回転数とトルクを、移動抵抗、ピッチ円直径、減速比、伝達効率、加速慣性から計算します。Python実装と選定時の注意点も解説します。

DOC NO.EKP-01-1134
DATE
REVB
READ約 15 分

ラック&ピニオンでテーブルや走行軸を動かすとき、定速時の抵抗力だけでモーターを選ぶと、加速中にトルクが不足することがあります。反対に、最大加速トルクだけを見ても、連続運転時の発熱や減速機・歯面の許容荷重は判断できません。

必要なのは、次の量を同じ計算境界で整理することです。

  • テーブルを動かす運転方向荷重
  • ピニオンのピッチ円半径で変換した負荷トルク
  • 減速比と伝達効率を反映したモーター軸トルク
  • 移動質量、ピニオン、減速機、ローターの加速トルク
  • 速度―トルク特性、実効トルク、歯面の許容伝達力

この記事では、ラック&ピニオン駆動に必要なモーター回転数とトルクを、水平走行軸の計算例とPythonコードで整理します。

目次

計算の全体像

ラック&ピニオンでは、ピニオンの回転がラックの直線移動へ変換されます。ピニオンのピッチ円半径を $r$、角速度を $\omega_p$ とすると、ラック速度は次式です。

$$ v=r\omega_p $$

モーターとピニオンの間に減速機があり、減速比を「モーター回転数 ÷ ピニオン回転数」として $i$ と定義すると、

$$ \omega_m=i\omega_p $$

です。したがって、モーター回転数はラック速度、ピッチ円半径、減速比から求められます。

flowchart TD
  A["質量・摩擦・外力"] --> B["運転方向荷重"]
  B --> C["ピニオン軸トルク"]
  C --> D["減速比と効率でモーター軸へ換算"]
  D --> E["加速慣性を加えて候補と照合"]

オリエンタルモーターの技術資料でも、ワイヤ・ベルト駆動とラック・ピニオン駆動について、運転方向荷重をピッチ円直径、効率、減速比からモーター軸の負荷トルクへ換算する考え方が示されています。

記号と計算条件

例として、水平なリニアガイド上の走行テーブルをラック&ピニオンで駆動します。

項目記号値
テーブルとワークの総質量m120 kg
案内部の等価摩擦係数μ0.015
運転方向の外力F_A200 N
傾斜角θ0°
ピニオンのピッチ円直径d80 mm
減速比i5
伝達効率η0.90
目標直線速度v0.80 m/s
加速時間t_a0.40 s
ピニオン側回転体の慣性J_p0.00040 kg·m²
モーターローター慣性J_m0.00008 kg·m²

摩擦係数、伝達効率、回転体慣性は機構によって変わります。実設計では、ガイド、減速機、カップリング、ピニオン、モーターの仕様値を使用します。表の値は計算手順を示すための例です。

運転方向荷重を求める

傾斜角を $\theta$ とすると、テーブルを一定速度で動かすための運転方向荷重は次式で表せます。

$$ F=F_A+mg(\sin\theta+\mu\cos\theta) $$

水平軸では $\theta=0$ なので、

$$ F=F_A+\mu mg $$

となります。重力加速度を $g=9.807\ \mathrm{m/s^2}$ として代入します。

$$ F=200+0.015\times120\times9.807=217.65\ \mathrm{N} $$

定速時の運転方向荷重は約217.65 Nです。

ここでいう外力には、加工反力、ケーブルベアの抵抗、シール抵抗、ワイパー抵抗など、運転方向に作用する既知の力を含めます。摩擦係数だけで全抵抗を代表できない場合は、実測した走行抵抗を使う方が確実です。

定速時の負荷トルクを求める

ピニオンのピッチ円半径は、直径80 mmをmへ換算して、

$$ r=\frac{d}{2}=\frac{0.080}{2}=0.040\ \mathrm{m} $$

です。ピニオン軸で必要なトルクは、

$$ T_p=Fr $$

なので、

$$ T_p=217.65\times0.040=8.706\ \mathrm{N\cdot m} $$

となります。

減速比 $i$ と伝達効率 $\eta$ を考慮したモーター軸の負荷トルクは、

$$ T_L=\frac{Fr}{\eta i}=\frac{Fd}{2\eta i} $$

です。

$$ T_L=\frac{217.65\times0.040}{0.90\times5}=1.935\ \mathrm{N\cdot m} $$

定速時のモーター軸負荷トルクは約1.94 N·mです。

減速比の定義を逆にすると計算結果も逆になります。本記事では一貫して、$i=$ モーター回転数 ÷ ピニオン回転数としています。

必要回転数を求める

ピニオン1回転でラックが移動する距離は、ピッチ円周 $\pi d$ です。ピニオン回転数は、

$$ n_p=\frac{60v}{\pi d} $$

となります。

$$ n_p=\frac{60\times0.80}{\pi\times0.080}=190.99\ \mathrm{rpm} $$

モーター回転数は、

$$ n_m=in_p=5\times190.99=954.93\ \mathrm{rpm} $$

です。

目標速度0.80 m/sに必要なモーター回転数は約955 rpmです。

候補モーターは、この回転数で必要トルクを出せる必要があります。定格回転数や無負荷回転数だけでなく、ドライバと組み合わせた速度―トルク特性を確認します。

加速中の直線慣性力を求める

停止状態から0.40秒で0.80 m/sまで一定加速度で立ち上げると、直線加速度は、

$$ a=\frac{v}{t_a}=\frac{0.80}{0.40}=2.0\ \mathrm{m/s^2} $$

です。移動質量を加速するための力は、

$$ F_a=ma=120\times2.0=240\ \mathrm{N} $$

となります。

定速抵抗と加速力を合計し、モーター軸トルクへ換算すると、

$$ T_{trans}=\frac{(F+F_a)r}{\eta i} $$

$$ T_{trans}=\frac{(217.65+240)\times0.040}{0.90\times5}=4.068\ \mathrm{N\cdot m} $$

この値には、テーブルの直線慣性と定速抵抗が含まれますが、ピニオンやモーターローター自身の回転慣性はまだ含まれていません。

回転体の加速トルクを加える

ピニオン角加速度は、直線加速度とピッチ円半径から求められます。

$$ \alpha_p=\frac{a}{r}=\frac{2.0}{0.040}=50\ \mathrm{rad/s^2} $$

モーター角加速度は、

$$ \alpha_m=i\alpha_p=5\times50=250\ \mathrm{rad/s^2} $$

です。

ピニオン側回転体の慣性トルクをモーター軸へ換算すると、

$$ T_{Jp}=\frac{J_p\alpha_p}{\eta i} $$

$$ T_{Jp}=\frac{0.00040\times50}{0.90\times5}=0.0044\ \mathrm{N\cdot m} $$

モーターローターの加速トルクは、

$$ T_{Jm}=J_m\alpha_m $$

$$ T_{Jm}=0.00008\times250=0.0200\ \mathrm{N\cdot m} $$

したがって、加速中のモーター軸トルクは、

$$ T_{acc}=T_{trans}+T_{Jp}+T_{Jm} $$

$$ T_{acc}=4.0680+0.0044+0.0200=4.0925\ \mathrm{N\cdot m} $$

安全率を掛ける前の加速中トルクは約4.09 N·mです。

減速機内部の慣性は、メーカーが示す入力軸換算慣性をモーター側へ加えます。入力軸換算値と出力軸側の慣性を混在させると、減速比を二重に反映するため注意が必要です。

最大トルクと実効トルクを分ける

約4.09 N·mは加速中のピーク候補であり、連続運転の熱的判定値ではありません。工程ごとのトルクを $T_k$、継続時間を $t_k$ とすると、実効トルクは次式で求められます。

$$ T_{rms}=\sqrt{\frac{\sum T_k^2t_k}{\sum t_k}} $$

少なくとも次の二つを別々に確認します。

  • 加速・減速・外力変動を含む最大トルクが、対象回転数でモーターの瞬時最大トルク以下であること
  • 運転サイクル全体の実効トルクが、モーターの定格トルク以下であること

減速時には、慣性トルクの向きが変わります。下降軸や外力が移動を助ける条件では回生状態になるため、ドライバの回生能力、回生抵抗、保持ブレーキも確認します。

Pythonで計算する

同じ計算を再利用できる関数にすると、ピニオン径、減速比、速度、加速時間を変えた比較が容易になります。

from math import cos, pi, radians, sin


def rack_pinion_motor_torque(
    moving_mass_kg: float,
    friction_coefficient: float,
    external_force_n: float,
    incline_deg: float,
    pinion_pitch_diameter_m: float,
    gear_ratio: float,
    transmission_efficiency: float,
    target_speed_m_s: float,
    acceleration_time_s: float,
    output_rotating_inertia_kg_m2: float = 0.0,
    motor_inertia_kg_m2: float = 0.0,
) -> dict[str, float]:
    if moving_mass_kg < 0:
        raise ValueError("moving_mass_kg must be non-negative")
    if pinion_pitch_diameter_m <= 0:
        raise ValueError("pinion_pitch_diameter_m must be positive")
    if gear_ratio <= 0 or acceleration_time_s <= 0:
        raise ValueError("gear_ratio and acceleration_time_s must be positive")
    if not 0 < transmission_efficiency <= 1:
        raise ValueError("transmission_efficiency must be in (0, 1]")

    g = 9.807
    angle = radians(incline_deg)
    radius_m = pinion_pitch_diameter_m / 2

    running_force_n = external_force_n + moving_mass_kg * g * (
        sin(angle) + friction_coefficient * cos(angle)
    )
    linear_acceleration_m_s2 = target_speed_m_s / acceleration_time_s
    acceleration_force_n = moving_mass_kg * linear_acceleration_m_s2

    pinion_speed_rpm = 60 * target_speed_m_s / (2 * pi * radius_m)
    motor_speed_rpm = gear_ratio * pinion_speed_rpm
    pinion_angular_acceleration = linear_acceleration_m_s2 / radius_m
    motor_angular_acceleration = gear_ratio * pinion_angular_acceleration

    steady_motor_torque_nm = (
        running_force_n
        * radius_m
        / (transmission_efficiency * gear_ratio)
    )
    translational_accel_torque_nm = (
        acceleration_force_n
        * radius_m
        / (transmission_efficiency * gear_ratio)
    )
    output_inertia_torque_nm = (
        output_rotating_inertia_kg_m2
        * pinion_angular_acceleration
        / (transmission_efficiency * gear_ratio)
    )
    motor_inertia_torque_nm = (
        motor_inertia_kg_m2 * motor_angular_acceleration
    )

    peak_torque_nm = (
        steady_motor_torque_nm
        + translational_accel_torque_nm
        + output_inertia_torque_nm
        + motor_inertia_torque_nm
    )

    return {
        "running_force_n": running_force_n,
        "pinion_speed_rpm": pinion_speed_rpm,
        "motor_speed_rpm": motor_speed_rpm,
        "steady_motor_torque_nm": steady_motor_torque_nm,
        "acceleration_force_n": acceleration_force_n,
        "peak_torque_before_safety_nm": peak_torque_nm,
    }


result = rack_pinion_motor_torque(
    moving_mass_kg=120.0,
    friction_coefficient=0.015,
    external_force_n=200.0,
    incline_deg=0.0,
    pinion_pitch_diameter_m=0.080,
    gear_ratio=5.0,
    transmission_efficiency=0.90,
    target_speed_m_s=0.80,
    acceleration_time_s=0.40,
    output_rotating_inertia_kg_m2=0.00040,
    motor_inertia_kg_m2=0.00008,
)

for name, value in result.items():
    print(f"{name}: {value:.6f}")

主な出力は次のとおりです。

running_force_n: 217.652600
pinion_speed_rpm: 190.985932
motor_speed_rpm: 954.929659
steady_motor_torque_nm: 1.934690
acceleration_force_n: 240.000000
peak_torque_before_safety_nm: 4.092468

この関数は、一定加速度、剛体、一定効率を前提とします。S字加減速では指令プロファイルの最大加速度を使用し、ねじり剛性、バックラッシ、共振、制御応答は別途検討します。

歯面と減速機を別に確認する

モーターが必要トルクを出せても、ラック、ピニオン、減速機が荷重に耐えられるとは限りません。機械要素側では、少なくとも次を確認します。

  • ピニオンの接線力とラックの許容伝達力
  • 歯元曲げ強さと歯面強さ
  • 衝撃、始動頻度、負荷変動を含む使用係数
  • ピニオン軸と軸受に作用する荷重
  • 減速機の定格・瞬時最大トルク、許容ラジアル荷重
  • バックラッシ、かみ合い率、潤滑、取付精度

THKのラック付きLMガイド資料でも、ピニオンが負荷する最大推力と、ラック&ピニオンの許容伝達力を照合する考え方が示されています。モーター選定と歯面強度の確認は、同じ推力条件から別々に行います。

実務で起こりやすい失敗

ピニオン外径でトルクを計算する。
力の作用半径には、歯先円半径ではなくピッチ円半径を使います。メーカー図面のピッチ円直径を確認します。

減速比の定義を混在させる。
モーター回転数 ÷ 出力回転数なのか、その逆なのかを最初に定義します。速度とトルクで同じ定義を使います。

定速トルクだけで選ぶ。
移動質量、回転体、ローターを加速するトルクが必要です。短い加速時間ほどピークトルクは大きくなります。

効率を二重に反映する。
力からトルクへ換算するときに効率で補正した後、等価慣性側でも同じ損失を加えると過大評価になります。計算境界を統一します。

モーター軸換算値と出力軸値を足す。
慣性やトルクは、どの軸の値かを明記します。出力側慣性をモーター側へ移す場合は減速比の二乗で換算します。

歯面強度をモータートルクで代用する。
ラックの許容伝達力、ピニオンの歯元・歯面強度、減速機の許容荷重は別に確認します。

実効トルクを確認しない。
ピークトルクが瞬時最大値以下でも、実効トルクが定格を超えると熱的に使用できません。

まとめ

ラック&ピニオン駆動のモータートルクは、運転方向荷重を求め、ピッチ円半径、減速比、伝達効率でモーター軸へ換算します。

$$ F=F_A+mg(\sin\theta+\mu\cos\theta) $$

$$ T_L=\frac{Fr}{\eta i} $$

必要回転数は、

$$ n_m=i\frac{60v}{2\pi r} $$

です。加速中は、移動質量による $ma$ と、ピニオン、減速機、ローターの回転慣性を加えます。

計算後は、最大トルク、実効トルク、対象回転数での速度―トルク特性をモーター仕様と照合します。さらに、ラックの許容伝達力、歯面強度、減速機の許容トルクと軸荷重、バックラッシ、潤滑、取付精度も確認します。

この流れをデータ化するときは、入力値、出典、計算結果、判定を分離し、ピニオン径、効率、慣性、許容伝達力にはメーカー名、形番、資料版、参照日を持たせます。ピニオン径、減速比、速度、加速時間を変更した比較や、複数モーター・減速機候補の一括評価へ発展させられます。

参考情報

参考になったらシェアしてください
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

機械設計・油圧・CAD・Python・AIなど、ものづくりに関わる技術を扱っています。工学知識を整理・構造化し、設計や自動化に再利用できる形へ変えていくことを目指しています。

目次