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