使用 OBD2 参数获取油耗 (MPG) 的最佳方法是什么。
下面的公式很简单但不是最准确的,任何其他公式都可以得到准确的估计。车速值以 Km/Hr 为单位,转换为英里乘以 0.621317。计算 MPG 将 MPH 除以 GPH。MPG 的最终数学表达式为:
汽油机用
MPG =VSS * 7.718/MAF
我想知道柴油机计算即时消耗。此外,我正在尝试根据 obd2 标准提供的参数独立于汽车模型来计算它。
一些链接可能对那些正在研究同一主题的人有用。
使用 OBD2 参数获取油耗 (MPG) 的最佳方法是什么。
下面的公式很简单但不是最准确的,任何其他公式都可以得到准确的估计。车速值以 Km/Hr 为单位,转换为英里乘以 0.621317。计算 MPG 将 MPH 除以 GPH。MPG 的最终数学表达式为:
汽油机用
MPG =VSS * 7.718/MAF
我想知道柴油机计算即时消耗。此外,我正在尝试根据 obd2 标准提供的参数独立于汽车模型来计算它。
一些链接可能对那些正在研究同一主题的人有用。
这就是即时消费的公式。
如果要计算平均消耗量,请计算一段时间内使用的燃料总量,然后除以同期行驶的总距离。
更新:这就是应该的比率。除非你想熔化活塞或失去动力。除非您更改燃料类型,例如更改为 102 辛烷值汽油或乙醇,否则空气/燃料比不应更改。这个计算可能是你能得到的最准确的,除非你想让它变得非常复杂
请注意,如果您正在为丰田工作:丰田有一个额外的传感器,可以实际测量注入发动机的燃料量。所以你可以读那个PID。但对于其他汽车,给定的公式是标准。
更新 2:一些常见的空燃比:
您还需要考虑,当发动机处于高负载时,空燃比会向下变化。
如果您可以读取喷油器脉冲宽度并除以速度,您可以获得即时消耗。如果你有使用的总燃料和距离,你可以得到平均值。获取喷油器脉冲宽度是获取油耗的直接方法。它是实际喷射的燃油量(嗯,这是喷油器打开的时间,但此时计算喷射量很容易)。
有一个 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;
}
}
如果你想随着时间的推移计算这个值,为什么不存储每个立即计算然后取平均值呢?
希望能帮助到你。