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

本文译自作者的韩语原文。 阅读原文(한국어)

NOTE #083DAY THU 유체역학DATE 2026.06.25UPDATED 2026.10.19READ 4 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)

涂色面积是一个循环的净功。加热量上去,效率数字几乎不动。爆震盯的是环的左端,压缩刚结束时的温度。

米奇利在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,四档换来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%,超到前面。相同压缩比下的亏损是截止比那个分数造成的,翻过来的决定是允许更高的压缩比。压力先掉、液体先沸的那堵墙,在 蒸汽压比温度更早到场的空化 里另看。

如果对您有帮助,请分享。