汽油发动机为何止步于压缩比12 — 奥托与狄塞尔循环
用空气标准循环看压缩比、发动机效率与爆震之墙
1919年,炼油公司的研究员托马斯·米奇利在追查发动机里那种金属般"嗒嗒"声的来源。压缩比越高,输出越大,但越过某条线后,燃料会在火花塞点火之前自行爆炸。那种金属敲击声就是爆震(knock)。本文把复杂的往复式发动机简化为四个热力学过程——空气标准循环——来追踪压缩比如何决定效率,以及为什么汽油发动机不能一味提高它。最后用 Python 直接测量:相同压缩比下,奥托与狄塞尔谁更高效。
压缩比越高越强,却在哪里停下#
压缩比(compression ratio,气缸最大与最小时的体积之比)是发动机效率的旋钮。把空气压得越紧,就能从同样的燃料中取出更多的功。
麻烦在于温度。绝热压缩在缩小体积的同时也抬高温度。当压缩末端的温度越过燃料的自燃点,混合气会在火焰到达之前一齐爆炸。这就是爆震,它会损坏活塞和轴承。
米奇利在1921年加入四乙基铅来延迟着火。辛烷值(抗爆指数)的概念由此而来。但添加剂也有极限。汽油发动机的压缩比通常停在9到12之间。
把发动机化为四个过程 — 空气标准奥托循环#
真实发动机把进气、燃烧、排气混在一起。为了便于处理,我们把工质设为定量的理想气体(空气),并把燃烧换成"从外部进入的热量"。这样简化后的就是奥托(Otto)循环。
它由四个过程闭合。
- 1→2:绝热压缩(活塞压缩空气)
- 2→3:定容加热(体积固定,瞬间燃烧)
- 3→4:绝热膨胀(空气推动活塞——做功冲程)
- 4→1:定容放热(经排气丢弃热量)
在绝热过程中,压缩比 与温度由下式相连。
其中 是温度, 是比热比(定压比热/定容比热,空气约为1.4)。压缩比越大,压缩末端温度 上升越陡。爆震的种子正藏在这个式子里。
在下面的模拟中亲手操作一下。改变压缩比和加热量,就能看到 P–V 平面上闭合环如何变化。
加大压缩比,环会向左右拉长,阴影面积(一个循环的净功)随之增大。加大加热量,环会向上抬升,但效率数字几乎不动。下一节解释原因。
效率由压缩比一项决定#
热效率是所做的功除以所受的热。在定容加热与放热中,热量正比于温差,于是
其中 是所受的热, 是丢弃的热。代入绝热关系 ,温度全部约去,只剩下一个惊人简单的结果:
效率只由压缩比 和比热比 决定。烧了多少燃料()消失了。这就是为什么移动加热量滑块时效率数字几乎不变。
压缩比8约为56%,12约为63%。只看数字,会想一直往上提。但爆震在12附近挡住了去路。
狄塞尔用定压加热越过压缩比之墙#
鲁道夫·狄塞尔走了另一条路。他不预先混合燃料。只先压缩空气。把压缩末端温度抬到自燃点之上后,再喷入燃料,燃料一接触就燃烧。没有火花塞。既然没有会爆震的预混气,压缩比就能提到15到22。
不同之处在于加热方式。由于燃料缓慢喷入并燃烧,体积增大的同时压力几乎保持不变。是定压加热,而非定容。
这里出现一个新的无量纲数:截止比(cut-off ratio),即定压加热中体积膨胀了几倍。效率变为:
这是奥托式子乘上一个分数的形式。当 时,那个分数总是大于1。也就是说,相同压缩比下狄塞尔不如奥托。但狄塞尔能把压缩比提得高得多,在真实发动机里反而以更高的效率收场。
相同压缩比下,奥托取胜#
把两条循环沿压缩比轴并排画出来,关系就一目了然。
有三点值得注意。其一,曲线越往右越平缓——压缩比每提高1所换来的效率越来越少(收益递减)。其二,在相同的 下,青色(奥托)位于琥珀色(狄塞尔)之上。其三,红色带是汽油的现实极限。奥托必须在那条带之前停下,而狄塞尔穿过它,活在更右侧。
把截止比滑块往1.2方向拉,狄塞尔曲线就紧贴奥托。当 ,定压加热趋近定容加热,两个式子重合。截止比衡量的是"狄塞尔离奥托走了多远"。
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%接着从状态温度直接构造效率,与闭式对照。
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附近。狄塞尔只压缩空气,搬走了那块天花板,虽在相同压缩比下吃亏,却以更高的压缩比把亏损翻转过来。两种发动机的效率之差,归根结底是"在哪里加热(定容还是定压)"与"压缩比能提到多高"之间的拉锯。
如果对您有帮助,请分享。