0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

概要

TunerStudioを、究める。
野望を語る。

野望

pythonとverilogの両方に対応しており、shrike-liteの「マイコン側」で複雑な燃料・点火制御アルゴリズムを動かし、「FPGA側」でクランク角トリガーの超高速デコードやマルチスパーク制御を完全に並列処理する、理想的なアーキテクチャを開発します。

この構成は、現代の先進的なECU(例:Link ECUHaltechの上位モデル)が採用している「ヘテロジニアス(異種混在)コンピューティング」の理想系です。

オープンソースのFPGA搭載ECU開発プロジェクトであるshrike-lite(GitHub)をベースに、PythonとVerilogを共存させて超高速かつ柔軟な制御を実現する理想的なシステムアーキテクチャを設計しました。

全体アーキテクチャ概要
本システムは、ハードウェア記述言語(Verilog)による「超高速・リアルタイムハードウェア層」と、高レベル言語(MicroPython等)による「柔軟・高度演算アプリケーション層」の2層でシームレスに役割を分担します。

役割分担の最適化

  1. FPGA側(Verilog):
    100%決定論的な超高速リアルタイム処理
    ナノ秒・マイクロ秒単位の精度が求められる、エンジンの「同期」に関わる処理をすべてハードウェア(論理回路)に任せます。
    CPUの割り込みオーバーヘッドを完全に排除します。
  • クランク・カム角デコーダー:
    60-2や36-1などのトリガーホイール信号をFPGAのハードウェアタイマー(カウンタ)でキャプチャし、現在のクランク角度とエンジン回転数(RPM)を1クロック(数十ナノ秒)単位の精度で超高速デコードします。
  • マルチスパーク(多段点火)ジェネレーター:
    マイコンから「点火開始角度」「ドウェルタイム」「マルチスパーク回数」を受け取り、指定されたパルス(例:数ミリ秒の間に数回点火)を完全に並列で自律生成します。
    高回転時でもCPUの処理遅延による失火が起きません。
  • クランク角度一致イベント(Angle-Clock):
    時間ベースではなく、クランクの「角度」をベースにしたトリガー信号をハードウェアレベルで生成し、正確なタイミングで燃料噴射(インジェクター)のON/OFFを切り替えます。
  1. マイコン側(Python):
    複雑な制御アルゴリズム
    数ミリ秒サイクル(クランク1回転に1回程度)で十分な、物理モデル計算や通信処理を担当します。
    Pythonの高度な記述力を活かして、セッティングの柔軟性を最大化します。
  • 3D燃調・点火マップ補間:
    エンジン回転数(RPM)と吸気圧(MAP)から、内挿補間アルゴリズムを用いて目標の燃料噴射量や点火時期を算出します。
  • 物理モデルベース制御(VE計算):
    吸気温度、冷却水温度、気圧などの補正係数を掛け合わせ、理想気体の状態方程式に基づいた体積効率(VE)計算をPythonの数式で美しく記述します。
  • クローズドループ制御:
    O2センサー(空燃比)やノックセンサーの信号をフィードバックし、PID制御アルゴリズムを動かして動的に燃料・点火を微調整します。
  • TunerStudio通信プロトコル:
    TunerStudioとのシリアル通信(MegaSquirt互換プロトコルなど)をバックグラウンドで処理し、リアルタイムデータ送信やマップ書き換えを行います。

両者の連携インターフェース(データの流れ)

マイコンとFPGAの通信は、レジスタマップ(メモリマップドI/Oまたは高速SPI)を介して行われます。

  1. FPGA -> マイコン (毎サイクル更新)
    FPGAが計算した最新の「RPM」および「現在のクランク基準位置(TDC)」を特定のメモリ番地に書き込みます。
    マイコン側(Python)は、この数値を読み取って計算のトリガーとします。
  2. マイコン -> FPGA (計算完了ごとに書き込み)
    Pythonで計算された
    「次の点火時期(例:BTDC 15度)」
    「点火ドウェルタイム(例:3.0ms)」
    「燃料噴射開始角(例:ATDC 90度)」
    「噴射時間(例:4.5ms)」を、FPGA側の制御レジスタに書き込みます。
    FPGA側は、クランク角がそのターゲット角度に達した瞬間に、ハードウェアが自動でインジェクターやイグナイターのピンを駆動します。

このアーキテクチャの圧倒的なメリット

  • エンジンの安全性の確保:
    万が一、マイコン側のPythonコードがエラーでフリーズしたり、TunerStudioとの通信負荷で処理が遅延したりしても、FPGA側のハードウェア層が「クランク角と同期した最低限の点火・噴射」を維持、または安全に即時停止(セーフモード)させることが可能です。
    エンジンブローを物理的に防げます。
  • 開発効率の劇的な向上:
    開発者は、タイミングがシビアな「エンジン同期処理(Verilog)」を一度作り込めば、後から触る必要がありません。
    最も頻繁に変更・チューニングしたい「燃料補正アルゴリズム」「特殊な制御ロジック(ローンチコントロールやアンチラグ等)」は、コンパイル不要でその場で書き換えられるPythonでガレージやサーキットでも迅速に開発・テストできます。

この「ハードウェアによる超高速同期」と「高レベル言語による柔軟な数理制御」の融合は、自作ECU(DIY-ECU)の歴史においても究極のベンチマークとなる構成です。

以上。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?