【问题标题】:What is the best way to get fuel consumption (MPG) using OBD2 parameters?使用 OBD2 参数获取油耗 (MPG) 的最佳方法是什么?
【发布时间】:2013-06-18 13:48:27
【问题描述】:

使用 OBD2 参数获取油耗 (MPG) 的最佳方法是什么。

下面的公式很简单,但不是最准确的,任何其他公式都可以得到准确的估计。车速值以 Km/Hr 为单位,转换为英里乘以 0.621317。计算 MPG 将 MPH 除以 GPH。 MPG 的最终数学表达式为:

汽油机

MPG =VSS * 7.718/MAF

我想知道柴油机计算即时消耗。此外,我正在尝试根据 obd2 标准提供的参数独立于车型来计算它。


一些链接可能对那些正在研究同一主题的人有用。

【问题讨论】:

  • 所以你解决了你的问题?我现在遇到了同样的问题,我用 GPS 计算了我的消耗量,以计算拍摄距离和油箱 lvl 的百分比变化......你的公式使用了哪些 pids?
  • 你好,你最后是怎么计算出来的?
  • @Dario,并非总是可以根据 ODB 信息计算油耗。由于供应商提供不同/不提供信息。

标签: obd-ii


【解决方案1】:

这就是即时消费的公式。

如果您想计算平均油耗,请计算一段时间内使用的燃料总量,然后除以同期行驶的总距离。

更新:这应该是这个比率。除非你想熔化活塞或失去动力。除非您更改燃料类型,否则空燃比不应改变,例如至 102 辛烷值 汽油或乙醇。这个计算可能是你能得到的最准确的计算,除非你想让它变得非常复杂

  1. 包括所有六个 O2 传感器的读数,以验证是否发生了最佳燃烧,
  2. 考虑发动机温度(较冷的发动机允许更好的燃烧,因为它允许更密集的氧气进入进气歧管),
  3. 定时提前设置是否正确(您必须根据数据表检查)。
  4. 以及我遗漏的其他内容。

请注意,如果您正在为丰田工作,那您的机会不大:丰田有一个额外的传感器,可以实际测量注入发动机的燃油量。所以你可以读那个PID。但对于其他汽车,给定的公式是标准。

更新 2:一些常见的空燃比:

  1. 天然气:17.2
  2. 汽油:14.7
  3. 丙烷:15.5
  4. 乙醇:9
  5. 甲醇:6.4
  6. 氢气:34
  7. 柴油:14.6

您还需要考虑,当发动机处于高负荷时,空燃比会向下变化。

【讨论】:

  • 感谢您的回复,是的,我正在寻找即时油耗,但上述公式假设空燃比为 14.7 和燃料密度,我正在寻找是否有其他更好的估计。
  • @Nadosh 你能分享你对每种燃料的计算吗?顺便问一下,OBD标准对天然气的定义是什么?我只看到天然气,但没有。
  • @RustemK 嗨 Rustem,我已经更新了链接,我尝试根据这些链接计算油耗。但我没有用基本事实来评估它。而且这些计算也是近似值。仅从 OBD2 端口确定油耗是困难的。许多参数是制造商、特定型号和不同的。
  • 你知道丰田的特殊PID吗?我正在为雷克萨斯做一些事情,这真的很有帮助。
  • 读取油耗率的PID是01 5E。请注意,并非所有汽车都会响应此命令。也可以查看整个OBD-II PIDs table
【解决方案2】:

如果您可以读取喷油器脉冲宽度并除以速度,您就可以获得即时消耗量。如果你有使用的总燃料和距离,你可以得到平均值。获取喷油器脉冲宽度是获取油耗的直接方法。这是实际喷射的燃油量(嗯,是喷油器打开的时间,但此时计算喷油量很容易)。

【讨论】:

  • 我正在尝试计算即时消耗。此外,我正在尝试根据 obd2 标准提供的参数独立于车型来计算它。
  • @Nick,如何从喷油器 PW 计算喷油量?您需要知道燃油压力、喷油器销轴尺寸和电池电压(更高的电池电压 = 更快的开启时间 = 更多的燃油喷射)。您可以从 OBD 获得电池电压,但其余的呢?你会怎么做?
  • 首先,指挥型私服已经将所有这些因素都考虑在内。您只需要知道喷油器尺寸和燃油压力。即使不是这样,您也可以通过假设恒定的电池电压、燃油压力等来得到一个很好的估计。由于 99% 的汽油车使用压力调节器来保持恒定的压差,因此电池电压可能在 14.0 伏左右。应该是这样的:jsfiddle.net/38db1qye/8 虽然我似乎有一些事情要做。
【解决方案3】:

有一个 OBDII 命令 (01 5E) 可以为您提供每小时的燃料消耗率。我有它与 C#/Xamarin 客户端一起使用,不确定 Java?

如果这不可用,那么您可以使用 VSS 和 MAF 值来计算 l/100km:(3600 * MAF)/(9069.90 * VSS)。 MPG 需要进一步调整,但这很简单。

此外,为了使速度值通用,将速度实现为一个类并公开英制和公制属性,如下所示(C#):

public Class VehicleSpeed 
{
public int MetricSpeed
{
    get
    {
        return metricSpeed;
    }
}

/// <summary>
/// <para>getImperialSpeed.</para>
/// </summary>
/// <returns> the speed in imperial units. </returns>
public float ImperialSpeed
{
    get
    {
        return ImperialUnit;
    }
}

/// <summary>
/// Convert from km/h to mph
/// </summary>
/// <returns> a float. </returns>
public float ImperialUnit
{
    get
    {
        return metricSpeed * 0.621371192F;
    }
}

如果你想随着时间的推移计算这个值,为什么不存储每个即时计算然后取平均值?

希望对你有帮助。

【讨论】:

  • 并非所有车型都能回复该命令。对于某些汽车,该命令不可用。此外,AT 命令与您使用的客户端无关(无论是 C# 还是 Java,OBD 都会以相同的方式回复。
【解决方案4】:

比燃料消耗的更详细推导(燃料流量的速度):

那么,假设燃料密度为 0.75kg/l:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 2016-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多