Skip to content
cfd-lab:~/ja/posts/2026-06-25-otto-diesel-a…● online

この記事は著者が韓国語で書いた原文の翻訳です。 原文(한국어)を読む

NOTE #083DAY THU 유체역학DATE 2026.06.25UPDATED 2026.10.19READ 6 min read#Otto-Cycle#Diesel-Cycle#Thermodynamics#Flow-Phenomena#Compression-Ratio

ガソリンエンジンはなぜ圧縮比12で止まるのか — オットーとディーゼル

加熱量alphaを3から6にしてもr=9の効率は0.5848のままです。動くつまみは圧縮比だけです。

1919年、製油会社のトーマス・ミジリーはエンジンの金属的な「カチカチ」を追っていました。圧縮比を上げると出力は増えます。線を越えると、点火プラグより先に燃料が自分で爆発します。その音がノッキング(knock)です。往復エンジンを四つの熱力学過程に畳むと、効率を固定する式が残ります。同じ圧縮比でオットーとディーゼルのどちらが上かは、末尾のPythonが測ります。

圧縮比を上げるほど強くなるのに、どこで止まったのか

圧縮比(compression ratio、シリンダーが最大のときと最小のときの体積比)はエンジン効率のつまみです。空気を強く押すほど、同じ燃料から仕事が余計に出ます。

先に限界になるのは温度です。断熱圧縮は体積を縮めながら温度を上げます。圧縮終わりの温度が自然発火点を越えると、炎が届く前に混合気が一気に爆発します。ノッキングです。ピストンとベアリングが先に壊れます。

圧縮比のスライダーを上げるとP–Vの輪が左右に伸び、加熱量のスライダーはその輪を上へ押すだけです。

Thermal efficiency η = 58.5% (k = 1.4, shaded area = net work)

塗られた面積が1サイクルの正味仕事です。加熱量を上げても効率の数字はほとんど動きません。ノッキングが見るのは輪の左端、圧縮が終わった温度です。

ミジリーは1921年、テトラエチル鉛で発火を遅らせました。オクタン価(アンチノック指数)はここから出ます。添加剤にも終わりがあります。ガソリンの圧縮比はふつう9〜12にとどまります。

エンジンを四つの過程に — 空気標準オットーサイクル

実際のエンジンは吸気・燃焼・排気が入り混じっています。これを扱うために、作動流体を一定量の理想気体(空気)とし、燃焼を「外から入る熱」に置き換えます。こう単純化したものがオットー(Otto)サイクルです。

四つの過程で閉じます。

  • 1→2: 断熱圧縮(ピストンが空気を押す)
  • 2→3: 定積加熱(体積一定、瞬間燃焼)
  • 3→4: 断熱膨張(空気がピストンを押す — 出力行程)
  • 4→1: 定積放熱(排気で熱を捨てる)

断熱過程では、圧縮比 r=V1/V2r=V_1/V_2 と温度が次のように結びつきます。

T2T1=r k−1\frac{T_2}{T_1} = r^{\,k-1}

ここで TT は温度、kk は比熱比(定圧比熱/定積比熱、空気で約1.4)です。圧縮比が大きいほど、圧縮終わりの温度 T2T_2 が急に上がります。ノッキングの種はこの式の中にあります。先ほど圧縮比で輪が左右に伸びた理由がここです。膨張で速度を買うノズルは スロートの後ろで広がらないと速くならない流れ の側です。エンジンの膨張はピストンを押す仕事に使います。

効率は圧縮比ひとつが決める

熱効率は、受け取った熱に対してした仕事です。定積加熱と放熱では熱量が温度差に比例するので、

η=1−QoutQin=1−T4−T1T3−T2\eta = 1 - \frac{Q_{out}}{Q_{in}} = 1 - \frac{T_4 - T_1}{T_3 - T_2}

ここで QinQ_{in} は受け取った熱、QoutQ_{out} は捨てた熱です。断熱関係 T2/T1=T3/T4=rk−1T_2/T_1 = T_3/T_4 = r^{k-1} を代入すると温度がすべて約分され、驚くほど単純な式だけが残ります。

ηOtto=1−1r k−1\eta_{\text{Otto}} = 1 - \frac{1}{r^{\,k-1}}

効率に残るのは圧縮比 rr と比熱比 kk だけです。燃料をどれだけ燃やしたか(QinQ_{in})は式から落ちました。加熱量のスライダーを押しても効率が動かなかった理由です。

出力に出る56.5%は r=8r=8 の 1−8−0.41-8^{-0.4}、63.0%は r=12r=12 です。k=1.4k=1.4 なので損失項は r−0.4r^{-0.4} です。温度比は T2/T1=1/(1−η)T_2/T_1 = 1/(1-\eta) で裏返ります。r=8r=8 で約2.30、r=12r=12 で約2.70です。コードの吸気300 Kをそのまま使うと、圧縮終わりはおよそ690 Kと810 Kです。8から12へ4目盛り上げるあいだに効率は6.5ポイント、温度は約120 K上がります。効率の傾きは寝て、温度の傾きは残ります。ノッキングが効率より先に点く場所です。

r=9r=9 の閉じた式は0.5848です。損失 1−0.5848=0.41521-0.5848=0.4152 なので T2/T1T_2/T_1 は約2.41、T2T_2 は約722 Kです。加熱のつまみalphaは T3=T2αT_3 = T_2 \alpha なので、3なら T3T_3 は約2170 K、6なら約4330 Kです。T4=T1αT_4 = T_1 \alpha で放熱も同じ倍率で増えます。qout/qin=T1/T2q_{out}/q_{in} = T_1/T_2 ではalphaが約分されます。熱を倍にしても0.5848は固定されたままです。

圧縮比8なら約56%、12なら約63%です。数字だけ見ればまだ上げたくなります。ノッキングが12付近で道を塞ぎます。

ディーゼルは定圧加熱で圧縮比の壁を越える

ルドルフ・ディーゼルは別の道を選びました。燃料を先に混ぜません。空気だけを先に圧縮します。圧縮終わりの温度を自然発火点より上に上げた後、燃料を噴射すると触れた瞬間に燃えます。点火プラグはありません。ノッキングを起こす予混合気がそもそもないので、圧縮比を15〜22まで上げられます。

違うのは加熱の仕方です。燃料がゆっくり噴射されながら燃えるため、体積が増える間も圧力がほぼ一定に保たれます。定積ではなく定圧加熱です。

ここで新しい無次元数が登場します。締切比(cut-off ratio)rc=V3/V2r_c = V_3/V_2、定圧加熱で体積が何倍に増えたかです。効率はこう変わります。

ηDiesel=1−1r k−1 rc k−1k (rc−1)\eta_{\text{Diesel}} = 1 - \frac{1}{r^{\,k-1}}\,\frac{r_c^{\,k}-1}{k\,(r_c-1)}

オットーの式に分数がひとつ掛かった形です。その分数は rc>1r_c>1 のとき常に1より大きくなります。つまり同じ圧縮比ならディーゼルはオットーより損です。代わりにディーゼルは圧縮比をはるかに高くできるので、実際のエンジンではより高い効率に落ち着きます。

同じ圧縮比ならオットーが勝つ

二つのサイクルを圧縮比の軸に並べると、順位は図の前に見えます。曲線は右へ行くほど寝ます。圧縮比を1上げて得られる効率は減ります。同じ rr ではシアン(オットー)が琥珀色(ディーゼル)の上です。赤い帯がガソリンの現実の限界です。オットーはその手前で止まり、ディーゼルは帯を抜けてさらに右で回ります。

締切比を1.2へ下げると、定圧加熱が定積加熱に近づきます。rc→1r_c \to 1 で二つの式は一致します。その目盛りは、ディーゼルがオットーからどれだけ離れたかです。数字は次の表が先に出します。

Python — 二つのサイクルを直接測る#

閉じた式が状態温度から出るかを、下のコードが測ります。

import numpy as np
 
K = 1.4  # 空気の比熱比 (cp/cv)
 
def otto_efficiency(r, k=K):
    """オットーサイクル: 定積加熱、圧縮比 r"""
    return 1.0 - 1.0 / r ** (k - 1)
 
def diesel_efficiency(r, cutoff, k=K):
    """ディーゼルサイクル: 定圧加熱、圧縮比 r、締切比 cutoff"""
    return 1.0 - (1.0 / r ** (k - 1)) * (cutoff ** k - 1) / (k * (cutoff - 1))
 
for r in [8, 12, 18, 22]:
    eo = otto_efficiency(r)
    ed = diesel_efficiency(r, cutoff=2.0)
    print(f"r={r:2d}  Otto={eo*100:5.1f}%  Diesel(rc=2)={ed*100:5.1f}%")

出力:

r= 8  Otto= 56.5%  Diesel(rc=2)= 49.0%
r=12  Otto= 63.0%  Diesel(rc=2)= 56.7%
r=18  Otto= 68.5%  Diesel(rc=2)= 63.2%
r=22  Otto= 71.0%  Diesel(rc=2)= 66.0%

締切比のスライダーを動かすと琥珀色の曲線だけが上下し、横軸は表の圧縮比です。

既定の rc=2r_c=2 では差が r=8r=8 で7.5ポイント(56.5対49.0)、r=12r=12 で6.3ポイント(63.0対56.7)、r=22r=22 でも5.0ポイント(71.0対66.0)です。間隔は縮みますが符号は変わりません。スライダーを1.2へ下げると二つの曲線は重なります。rc=2r_c=2、k=1.4k=1.4 のときディーゼルの分数は (21.4−1)/1.4(2^{1.4}-1)/1.4 です。21.42^{1.4} は約2.639なので分数は約1.171です。r=12r=12 のオットーの損失37.0%に1.171を掛けると43.3%、効率56.7%が表と一致します。

次に状態温度から直接効率を作り、閉じた式と対照します。

def otto_from_states(r, alpha, k=K):
    """状態温度から直接効率を計算 (alpha = P3/P2、加熱量のつまみ)"""
    T1 = 300.0                 # K, 吸気
    T2 = T1 * r ** (k - 1)     # 1->2 断熱圧縮
    T3 = T2 * alpha            # 2->3 定積加熱
    T4 = T3 / r ** (k - 1)     # 3->4 断熱膨張
    q_in = T3 - T2             # cv が約分される
    q_out = T4 - T1
    return 1.0 - q_out / q_in
 
print(otto_from_states(9, alpha=3.0))  # 0.5848...
print(otto_from_states(9, alpha=6.0))  # 0.5848...  加熱量を変えても同じ
print(otto_efficiency(9))              # 0.5848...

三行の出力はすべて同じ 0.5848 です。加熱量のつまみ alpha を3から6へ倍にしても効率は動きません。P–Vシミュレーションで加熱スライダーが効率を変えられなかった理由が、コードで確認できます。

12で止めるか、締切比を削るか#

r=12r=12 でオットーは63.0%、締切比2のディーゼルは56.7%です。同じ圧縮比という条件だけならオットーです。ガソリンはその条件を保てません。予混合気がノッキングに阻まれ、12付近が終わりです。効率式 η=1−r−(k−1)\eta = 1 - r^{-(k-1)} は圧縮比と比熱比だけを残し、燃やす量は出力の大きさだけを決めます。

ディーゼルは空気だけを圧縮して天井を外し、15〜22へ進みます。r=18r=18 のディーゼルは63.2%で、圧縮比12のオットー63.0%と並びます。r=22r=22 なら66.0%で前に出ます。同じ圧縮比の損は締切比の分数が作ったもので、それを覆す決定は圧縮比をもっと許す側です。圧力が落ちて液体が先に沸く壁は 蒸気圧が温度より先に来るキャビテーション で別に見ます。

役に立ったらシェアしてください。