E46M3 DIYでCSLスタイルカーボンエアボックスに交換する場合に考慮が必要なこと3

Turner製 CSLスタイル カーボンエアボックスに交換したときの2000〜3000rpmの乗りにくさが、ベースマップのチューニングによってやっと解消できたので、そのアプローチをシェアしたいと思います。
データロガーで容積効率とエンジン回転数、ナローバンドO2センサーのラムダの値を15分ほど取ります。そのデータを燃料噴射のベースマップと同じ軸でラムダの平均値をとり、ベースマップの現在の値に掛けるとうまく調整されます。
するとアクセル踏み始めの燃料が濃かった状況が改善され、十分なトルク感が得られるようになりました。これによってカーボニアスのシュノーケルノズルもその他の追加ダクトも不要になりました。
NA M3 Forumsで、素晴らしい方達が示して下さった方法を試して上手くいきました。
ここまでかなり長い道のりでした..走って悩んで、調べて走って悩んで、調整して走って調べて悩んで.. NA M3 Forumsで道を示して下さった方たちには感謝しかありません。
今回のコンテンツは、この方法について実際にやってみたことを共有することで、ご自身で作業ができるイメージをより具体的にすることを目的にまとめています。
ずっと悩みだった中間領域のドライバビリティ
2000〜3000rpmの中間領域の乗りにくさをもう少し具体的に表現すると
- トルク感の不足
- アクセル踏み込んでも詰まったように回転が上がらない
- シフトアップした時のジャーキング(ガクガクする)
でした。
これらの症状から、シュノーケルノズルが無いことで以下のような補正制御のバランスが崩れたんだろうなと予想していました。
- アンチジャーキング制御
- エンジン慣性重量定数
- シフトアップ制御
これらのマップを眺めたり、いじったり、走ってまたいじって、エンジンの反応を感じてエンジニアならどう制御するかなど、想像を膨らませながら調整するのを繰り返しても改善できずにいました。
実走ログをもとに燃料噴射ベースマップを調整
DMEチューニングといえば、オープンループマップをシャシーダイナモに載せて調整するというのがよく目にする方法です。
今回のチューニング方法は、実走ログをもとにクローズドループマップ(ベースマップ)を調整する方法です。
CSLのベースマップはVE(Volumetric Efficiency=容積効率)マップです。
エンジン排気量などから計算された理論最大吸気量に対して、温度、圧力、スロットル開度などから計算された吸気量の比率とエンジン回転数のテーブルで燃料噴射量を決定しています。
訂正(2026/8):縦軸に温度も圧力も入っていませんでした。 ベースマップ
kf_rf_soll(XDF 0xD2FE)の縦軸aq_rel_rfは、幾何と回転数だけで作られます。AQ_ABS = アイドルバルブ開口面積 + KL_AQ_ABS_WDK(スロットル角) ← 単位 mm² AQ_REL = AQ_ABS / K_AQ_ABS_MAX ← 11918 mm² で正規化 aq_rel_rf = AQ_REL を kl_aq_rel_rf_fakt(回転数) で割ったもの温度と圧力が効くのはマップを引いた後の
RF_PT_KORRという乗数で、しかも圧力側は MAP(吸気管圧)ではなく大気圧でした。マニホールド圧が効くのは ±2.5 %RF の 積分補正だけです。つまりこのマップは、入力軸で見れば Alpha-N(スロットル開口面積×回転数)そのもので、 「容積効率」にあたる RF はこのマップの出力の方でした。
クローズドループは、ナローバンドO2センサーの値(ラムダ1=理論空燃比14.7)を目標に燃料調整されるため、ベースマップの調整は基本的には不要だというのがこれまでの定説だったようです。
※ナローバンドO2センサー:理論空燃比に対して濃いか薄いかの出力をDMEに送るセンサー。コスト的にも安く純正採用されることが多い。
※ワイドバンドO2センサー:現在の空燃比を正確にDMEに送るセンサー。主にアフターマーケット向けだったが、最近では純正採用されている。
しかし、例えばアクセルを抜いて蛇行している状態(O2センサーのフィードバックがない状態)から、初めてアクセルを踏み始めたタイミングは何を基準に燃料噴射するんだ?と疑問がありました。
この始めの一発目の燃料噴射量を決めるのが、ベースマップの役割だったようです。
この燃料が多すぎると失火して、ガクガクとエンジンの回転が上がっていかないという状況だったようです。(身をもって体験しました。)
現車セッティングといえば、ワイドバンドO2センサーをつけて空燃比をモニタリングしながらオープンループマップを調整する方法が一般的ですが、今回のチューニング方法はナローバンドO2センサーのみで十分対応できるセッティング方法でした。
トルク感は雲泥の差
標準M3の低回転トルクが戻ってきた感じで不満がなくなりました。街乗りも十分です。
軽自動車に負けることはありませんし、上り坂でも4速ホールドのまま普通車を追い越せるくらいトルク感が回復しました。
なのに回せば快音を響かせてくれて、超気持ちいいのは変わりありません。
CSL含むカーボンサージタンク仕様で、フラップを除去した場合の持病であるゼロスタート時の息継ぎも概ね解消されます。
チューニングのポイント
使うツールや手順は、NA M3 Forumsにこれ以上ないってくらい丁寧に書かれていますので割愛します。
ここでは、実際に自分でチューニングしてみて感じた、チューニングのポイントを残しておきたいと思います。
方法論を理解する
このチューニングで最も重要な理解は、走行ログをCSL用のベースマップと同じ解像度で取得し、フィルタリングしてテーブル形式に整理することです。


CSL用ベースマップと同じ解像度というのは、縦軸が容積効率(%)、横軸がエンジン回転数(rpm)、交点がO2センサー(ラムダ)の平均値でデータを集計するということです。
訂正(2026/8)— この方法を試す方はここに注意してください
ベースマップ
kf_rf_soll(0xD2FE)の縦軸は容積効率ではなくaq_rel_rf(スロットル相対開口面積)でした。容積効率にあたる RF はこのマップの「出力」であって 軸ではありません。出力でビニングして入力軸に貼ると、補正表が縦にずれます。具体例を挙げると、870rpm では
aq_rel= 1.196% の行の値が 0.504(RF 50.4%)です。 ここで「rf = 50%」を基準に集計してしまうと、y = 45%/65% あたりの行に載ってしまい、 本来の行から12行ずれます。ただし、DS2 でログできる
aq_relと、マップが実際に引いているaq_rel_rfが 同じスケールかどうかは、まだ確認が取れていません。 DS2 のaq_relは定義上 1bit = 0.465% なので、そのままだとマップ下端の11行 (0.098〜1.611%、まさにアイドルとガクつきの領域)が 1〜3bit に潰れてしまいます。ですので現時点では「どちらの軸で集計すべきか」を断定できません。 これから試す方は、まず既知の運転点を1点だけログして、マップの軸と実測値が 同じ土俵に乗っているかを確かめてから本番の集計に入ることをおすすめします。
CSL用ベースマップの容積効率とエンジン回転数の交点は燃料噴射係数ですので、この係数に走行ログで平均を取ったラムダ=調整係数を掛けるだけで調整が取れてしまうのです。
訂正(2026/8):ここも縦軸が「容積効率」ではなく
aq_rel_rf(スロットル相対開口面積)です。 さらに交点の値も「燃料噴射係数」ではありません。交点にあるのは RF(相対充填量)で、 噴射時間になるのはTL = RF_TI_CONST × RF / 2000を通した後です。 噴射係数のマップはこれとは別にあります(部分負荷はKF_TI_N_RF、全開はKF_TI_N_RF_VL)。ただし手順そのものは変わりません。RF に比例して噴射量が決まる以上、 ラムダの平均値を掛けて RF を寄せていくというやり方は成立します。
ひとつ注意点として、RF は点火時期とトルクモデルの負荷軸でもあります (基本点火
KF_TZ_GRUNDの y軸も RF)。ですので VEマップのセルを動かすと、 燃料だけでなく点火時期の参照位置も一緒に動きます。
なぜ濃いか薄いかの出力しかしないナローバンドO2センサーで良いかというと、燃料が濃かった回数と薄かった回数の平均を取ることで、どっち寄りかの係数を求める事ができるからです。
実際のO2センサーの挙動を見ていると、燃調が取れていれば上振れ下振れの波形がバランス良くていい感じに一定です。平均すると1になるはずですので、この状態だと燃料調整が取れているということになります。

一方で、O2センサーの挙動が上振れすることが多ければ、燃料が濃い傾向たにあり、下振れすることが多ければ燃料が薄いことになります。
訂正(2026/8)— 濃い/薄いが逆でした
正しくは 上振れ(1より大)=ベースが薄い、下振れ(1より小)=ベースが濃い です。
ここで見ている「ラムダ1/ラムダ2」は、DS2 のライブ値でいうと
la_f_regler1/2=ラムダ制御係数、つまり DME が噴射量に掛けている補正倍率です (K_LA_FMIN0.700 〜K_LA_FMAX1.300 でクランプ)。 1 より大きい=DME が燃料を足している=ベースマップが薄い、ということになります。第5回の「1より小さいとリッチで、大きいとリーンです」が正しい記述です。 こちらが正しくないと、上に書いた「平均値をベースマップに掛ける」手順自体が破綻します (濃いときに1より大きい数を掛けたら、さらに濃くなってしまいます)。
走行ログの量が少なすぎると、極端に調整量が増えて危険ではないか?と心配になってしまうかもしれません。
しかし、実際のラムダは1.2から0.8なので平均を取った係数を掛けても、ベースマップの燃料噴射量を極端に濃くしてしまったり、薄くしてしまったりということはありません。
訂正(2026/8):この範囲は物理的な性質ではなく、クランプ値でした。 実際の権限は
K_LA_FMIN= 0.700012(0x481C)〜K_LA_FMAX= 1.299988(0x481A)の ±30% です。ですので1回の補正でセルは最大 ±30% 動きます。さらに注意が必要なのは、0.70 や 1.30 に張り付いている運転点では 真の誤差はそれ以上あるということです。平均を掛けても1回では収束しないので、 そういう運転点が残っていないかを確認しながら、複数回まわしてください。
ですが、データ量が多いほど係数の精度が高まることには変わりないので、なるべく長く走行ログを取ります。
ガイドでは走行ログは15分以上が推奨されていますが、15分とは言わずデータ取得量が多ければ多いほど良いと思います。僕が実際やってみた感覚では1セッション30分くらいが良いかなと思います。
ちなみに、セッティング用の走行ログで最低限必要な4点(容積効率、エンジン回転数、ラムダ1、ラムダ2)を取ると、データ取得間隔は0.3秒から0.6秒になります。これに性能評価の為に速度とスロットルポジションを追加すると0.8秒前後になってしまい、かなり荒いというかデータを取れるチャンスが失われてしまいます。
訂正(2026/8)— 速度とスロットルポジションは、足してもレートは落ちません
DS2 は信号単位ではなくブロック単位でしか読めません。ブロック番号を指定して要求すると、 そのブロックの全項目が1往復でまとめて返ってきます。 したがってレートを決めているのは選択したブロックの数であって、信号の数ではありません。
- ブロック3:
n(回転数)、rf、wdk1/2(スロットル位置)、pwg1/2、各種温度- ブロック19:
la_f_regler1/2(ラムダ)、v(車速)、ti1..6、lls_tvつまり最低限の4点を取る時点で、すでにブロック3とブロック19の両方を読んでいます。 そこに速度とスロットルポジションを足しても、どちらも既に読んでいるブロックの中にあるので 往復回数は増えず、レートも変わりません。遠慮なく足してください。
走行ログ計画を立てる
実際に走行ログを取ってみると、自分が良く使う中間領域のデータが取れます。悪い言い方をすると走る道や自分の運転の仕方によってデータが偏ります。
街乗り、高速、峠道などで取れるデータ領域が偏ります。
欲しいのは、アクセルを踏み込んだ瞬間のラムダですので、まずはデータをとってみた後データをよく観察し、走る道や走り方の戦略を立てると良いと思います。
NA M3 Forumsでは、5回くらいやればいいんじゃない?的な感覚で説明されていますが、実際にやってみてその通りだと感じます。
CSLベースマップとAlpha-Nマップは別物
訂正(2026/8)— この節は前提が逆でした
0401 の逆アセンブル解析の結果、CSLのベースマップと「Alpha-Nマップ」は別物ではなく、 同じ一枚のマップでした。定義ファイル上の名前がそのまま
kf_rf_soll (CSL Alpha-N)で、 説明にも「通称 CSL Alpha-N マップであり、0401 の主たる容積効率テーブル」と書かれています。入力がスロットル側(Alpha-N)、出力が充填率(VE相当)という、一つのマップの 二つの面を、当時の僕は別のマップだと思い込んでいました。
以下の記述は当時の理解のまま残します。
Alpha-Nという言葉の意味が理解されず、このチューンが必要だという認識だけが一人歩きしてますので、意味をはっきりさせておきたいと思います。
CSL用のベースマップは縦軸が容積効率(%)に対して、Alpha-Nの縦軸はスロットル開度(%)です。横軸はエンジン回転数で共通です。
訂正(2026/8):縦軸の物理量では区別できません。どちらもスロットル由来の同じ族の量でした。 しかも「スロットル開度(角度)」でもなく、開口"面積"の相対値です。 角度から面積への変換は
KL_AQ_ABS_WDKという非線形カーブが担っていて、 開度 13% → 2.2%、52% → 32.7%、100% → 100% という具合にかなり歪みます。 下のグラフで容積効率とスロットル開度が一致しないのは「別物だから」ではなく、 この面積換算のためでした。
容積効率は、エンジン排気量などから計算された理論最大空気密度に対して、MAP(マニホールド空気圧)センサーやIAT(吸気温度)センサー、スロットル開度などの値からDMEによって計算された実質空気密度の割合です。
訂正(2026/8):基準は「空気密度」ではなく充填量でした (
K_RF_LUFTDICHTE1.136 kg/m³ ×K_RF_HUBVOLUMEN3.201 dm³)。 また補正に使われる圧力は MAP(マニホールド圧)ではなく 大気圧P_UMGです。 マニホールド圧が効くのは ±2.5 %RF の積分補正だけでした。
気圧と温度が空気の密度にどれほど影響を及ぼすかは、高校化学を思い出していただければ想像できるはずです。
わかりやすいように、容積効率(赤い線)とスロットル開度(白い線)を同時に走行ログをとって時系列で比較してみました。

Alpha-NマップとVEマップを見比べると縦軸は両方とも0-100%表記で、パーセンテージのレンジも変わりない上に燃料の噴射係数も大きく違いがありません。
このグラフから以下のことが考えられます。
- 低回転領域はVEマップの燃料が濃すぎる
- 高回転領域はAlpha-Nマップの燃料が薄すぎる
やっぱり最適なドライバビリティを得るには、調整しないといけないことがはっきりしました。
なお、容積効率は各センサーの値をもとにDMEがリアルタイムで計算していますので、各センサーのスケーリング(入力電圧に対する温度や圧力のマッピング)が間違うと、燃料噴射量も間違ってしまいます。なのでセンサー選びは慎重に。また、センサー電圧に対する実際の温度や圧力をDMEにセットアップするのを忘れずに。
訂正(2026/8):「各センサーの値をもとに計算」という書き方は誤解を招くものでした。 充填量(RF)の主経路はスロットル開口面積と回転数だけで作られていて、 センサーが効くのはその後に掛かる
RF_PT_KORR = KL_RF_TAN_KORR(吸気温) × KL_RF_P_UMG_KORR(大気圧)という補正の1か所です。ですのでセンサースケーリングを間違えると噴射量も間違う、という結論自体は正しい のですが、効き方は「主入力」ではなく「補正」です。実際、吸気温側の権限は −40〜100℃ の全域を通しても 1.130→0.951(±13%幅)で、大気圧側の方が大きく効きます。 第4回でIATスケーリングを直したら安定した、という話もこの経路です。
チューニングのスタート地点
どこをどう弄れば車がどう変わるか、納得できるレベルでコントロールできるようになったところでやっとスタート地点に立てたのだと思います。
チューニングの世界は落とし所はあっても終わりはないというのは誰もが想像できることだと思います。
僕もこの先M3の楽しみ方が変わってくると思いますので、その時心地よい状態にチューニングしていきたいなと考えています。
関連投稿





CSLスタイルカーボンエアボックスのオーダー
オススメは、Turner製です。理由はサウンドとレスポンスです。
画像をタップ or クリックするとTurnerの製品詳細ページにジャンプして購入に進ことができます。
MTかSMGか、マットかグロスか、純正部品を使うかアフター品を使うか、カスタマイズオーダーができますので、通常キットを購入するより費用を下げることができます。
Turner MotorsportPR(アフィリエイトリンク)CSLスタイル カーボンエアボックス(Build Your Own)このリンク経由で購入していただけると、5%のアフィリエイト収入が僕に入ります。サービスの研究開発費になりますので、ご協力していただけると嬉しいです。
