OBD2アダプターを使うと車の故障診断コネクターからデータを取ることが出来ますが、欲しい情報が全て取れる訳ではないようです。走行ごとの燃費を取得したいと思っても、トヨタ ヴィッツ(KSP140)のように燃料消費量の計算のもとになる、エンジン吸入空気量(MAF=Mass Air Flow)が取得できない車もあるようです。そこで、エンジン吸入空気量「Air Flow Rate>」が取れるトヨタ ヴォクシー(ZRR70W)で、同じような結果が計算できる情報があるか調べたところ、パラメータID(PID) 43(Hex) 「Absolute load value(負荷絶対値?)」から計算すると8%程度の差がありますが、グラフで確認してもほぼ比例関係にある、と言えそうです(図1)。以下、詳細です。

図1.AbsoluteLoadから計算した値と満タン法給油量

ガソリン消費量はエンジン吸入空気量(MAF)から計算

 「スマホアプリを使って計測したトヨタ ヴォクシー(ZRR70W、H.24年式)のガソリン消費量を満タン法と比較」で、トヨタ ヴォクシー(ZRR70W)では

\[ ガソリン消費量(L/s) = エンジン吸入空気量(g/s) / 14.7(空燃比) / ガソリン密度(g/L) \]

の式でエンジン吸入空気量(MAF=Mass Air Flow)から燃料消費量を計算し、満タン法でのガソリン消費量と比較したところ、誤差約0.1%程度実際のガソリン消費量より少なめですが計算できることが分かりました。一方で、「トヨタ ヴィッツ(KSP130、R.1年式)からOBD-II(OBD2)アダプターでどんなデータが取得できるのか調査」にあるように、車種によってはエンジン吸入空気量がない場合もあるようです。そこで、エンジン吸入空気量が取得できるトヨタ ヴォクシーで、エンジン吸入空気量が求められるようなパラメータIDが他にないか探しました。

ガソリンエンジンの負荷と吸入空気量(MAF)の関係

 ところで、ガソリンエンジンは空気を吸い込んで、その吸い込んだ空気にガソリンを混ぜ、爆発的に燃焼させることでガソリンの持つエネルギーを回転エネルギーに変換して出力を取り出す仕組みですが、4ストロークエンジンでは1気筒が2回転するとその気筒の排気量分の空気が吸い込まれて吐き出されます。トヨタ ヴォクシー(ZRR70W)は排気量1.986Lの直列4気筒DOHCエンジンですので、1気筒当たりの排気量は0.4965Lとなり、0.4965Lの空気が2回転で排出されるので1回転あたりで考えるとその半分の0.24825Lの空気が通過すると言えます。4気筒では4倍して0.993Lになります。つまり、1回転当たりカタログに載っている排気量の半分の量の空気がエンジンに吸入されます。

\[ エンジン吸入空気量(L/回転) = 排気量(L) / 2 \]

 よく、エンジンの最高回転数が8,000回転だ、1万回転だと言いますが、この時の「回転」は1分間当たりの回転数、「rpm(=revolutions/rotations per minute)」であることが多いと思いますので、1秒当たりのエンジン吸入空気量は、1rpm=60rps(r/s)なので、

\[ エンジン吸入空気量(L/s) = 排気量(L) / 2 × エンジン回転数(rpm) / 60(r/s) \]

となります。ここで、一旦単位をMAFに合わせてg/sにします。

\[ エンジン吸入空気量(g/s) = 排気量(L) / 2 × エンジン回転数(rpm) / 60(r/s) × 空気の密度 (1.292 g/L) \]

エンジン回転数はPID 0C(Hex)の「エンジン回転数(Engine Speed)」で取得できそうです。

負荷率と吸気管圧

 ガソリンエンジンは出せるだけの出力を常に出しているわけではなく、負荷を調整するための絞り弁、スロットルが付いていて必要な出力になるようにスロットルで調整しながら運転されています。どれくらいの出力を今出しているか、は、今どれくらいの空気がエンジンに吸入されているか、であり、それを排気量で割った値が「車の吸排気系システムとは?」では「充填効率」となっています。が、負荷率(Engine Load)がその値だとする使えるかもしれません。パラメータIDには、PID 4(Hex)の「Calculated engine load(計算エンジン負荷?)」と、PID 43(Hex)の「Absolute Load(負荷絶対値)」の2つあります。また、その記事によると、「吸気圧力」もエンジンの吸入空気に関係ありそうです。PID 0B(Hex)の「吸気管圧絶対値」がありますね。

データ取得結果

 実際に、トヨタ ヴォクシー(ZRR70W)のデータを取得してみます。停車状態から加速し、車速(Vehicle Speed)、エンジン回転数(Engine Speed)が取得できていることを確認し、「Calculated engine load(計算エンジン負荷?)」、「Intake Manifold Absolute Pressure(吸気管圧力絶対値)」、「Absolute Load(負荷絶対値)」を「Air Flow Rate(吸入空気量)」と並べてみます。

図2.スピード(Vehicle Speed)とエンジン回転数(Engine Speed)
図3.時系列データで比較

「Calculated engine load(計算エンジン負荷?)」はよく見ると100%を超えてますね...。ターボのついたエンジンではないので、100%は超えないはず...。

「Intake Manifold Absolute Pressure(吸気管圧力絶対値)」データはちゃんと取れてそうですが、吸入空気量を計算するには大気圧が欲しいのですが取ってなかった...。

ということで、残り有望なのは「Absolute Load(負荷絶対値)ですね。

「Absolute Load(負荷絶対値)」からの吸入空気量予測

 では、「Absolute Load(負荷絶対値)」に前述のように回転数と空気密度、排気量を掛け、単位を[g/s]になるようにして、「Air Flow Rate(吸入空気量)」と比較しました。グラフにしてみるとなかなか良好で、図4のようにグラフにしてみるとほぼ比例関係にありそうです。近似式の係数を見ると、「Absolute Load(負荷絶対値)」からの計算値が「Air Flow Rate(吸入空気量)」より、8%割程度多く計算されるようです。

図4.AirFlowRateとの比較

走行開始からの累積値で比較すると(図5)、同じく8%程度「Absolute Load(負荷絶対値)」から計算したほうが多い結果になりました。

図5.走行開始からの累積で比較

ガソリン給油時の比較

 では、最後にガソリンを給油するタイミングで給油量と比較しました。7回、比較できそうなデータが取れましたが、これもまた、おおよそ8%ほど実際の給油量より多くなりましたが、思ったよりばらつきは小さいと思ました。

図6(図1再掲).満タン法給油量との比較