OBD2パラメーターを使用して燃料消費量(MPG)を取得するための最良の方法は何ですか。
以下の式は単純ですが、最も正確ではありません。正確な見積もりを取得するための他の式です。車速の値はKm/Hrで表され、マイルに変換して0.621317を掛けます。 MPGを計算するには、MPHをGPHで割ります。 MPGの最終的な数式は次のようになります。
ガソリンエンジン用
MPG =VSS * 7.718/MAF
ディーゼルエンジンが瞬時消費量を計算するために知りたいのですが。また、obd2標準から入手可能なパラメーターから車のモデルとは無関係に計算しようとしています。
同じトピックを調べている人に役立つかもしれないいくつかのリンク。
それがインスタント消費の公式です。
平均消費量を計算したい場合は、時間の経過とともに使用された燃料の総量を計算し、同じ期間に移動した総距離で割ります。
更新:それは比率がどうあるべきかです。ピストンを溶かしたり、力を失いたい場合を除いて。空燃比は、燃料の種類を変更しない限り変更されないはずです。 〜102オクタンガソリンまたはエタノール。その計算は、恐ろしく複雑にしたい場合を除いて、おそらく最も正確です。
念のために言っておきますが、あなたがトヨタに取り組んでいるオフチャンスです。トヨタには、エンジンに噴射されている燃料の量を実際に測定する追加のセンサーがあります。したがって、そのPIDを読み取ることができます。しかし、他の車の場合、与えられた式が標準です。
更新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;
}
}
時間の経過とともにこの値を計算したい場合は、各即時計算を保存してから平均を取得してみませんか?
それが役に立てば幸い。