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を、究める。

憧れのTunerStudioに、手、出してみる。

iniファイルを書いて、tunerstudioに読み込ませて、usbに繋いだ、shrike-liteをEFIと思わせる。

tunerstudioとは

TunerStudio(チューナースタジオ)は、世界中のDIYチューナーやエンジニアに愛用されている、自作フルコン・オープンソースECUセッティング用の業界標準ソフトウェアです。
EFI Analytics社が開発しており、Windows、Mac、Linuxで動作します。主に「Megasquirt」「Speeduino」「rusEFI」などのECUとPCを接続し、エンジン制御のすべてを視覚的に調整するために使われます。

image.png

主要な4つの機能

  • リアルタイム・ダッシュボード表示
    エンジンの状態をPC画面上でリアルタイムに監視できます。
    回転数(RPM)、吸気圧(MAP)、水温、空燃比(A/F)などをメーターやグラフで表示します。
    画面のデザイン(ゲージの配置や種類)は、スマホのアプリのように自由にカスタマイズ可能です。

  • 3D/2D 燃料・点火マップの編集
    エンジンのセッティングの核となる「マップ」を直感的に書き換えることができます。
    燃料マップ(VEテーブル)や点火時期マップ(Ignition Advance)を、縦軸(負荷・吸気圧)、横軸(回転数)の3Dグラフィックで表示します。
    キーボードの矢印キーなどで、エンジンをかけたままリアルタイムに数値を増減させ、瞬時にECUへ反映(書き込み)できます。

  • 自動セッティング機能(TuneAnalyze Live! / オートチューン)
    有料版(TunerStudio MS Ultra/Registered)に搭載されている、最も強力な機能です。
    ワイドバンドO2センサーを車両に取り付けて実走すると、ソフトが現在の空燃比を監視します。
    自分が設定した「目標空燃比(ターゲットAFR)」と実際の数値のズレをソフトが自動計算し、走行しながらリアルタイムに燃料マップを自動補正・最適化してくれます。これにより、個人でも短時間で安全なベースマップを作成できます。

  • データロギング(走行データの記録)
    走行中のすべてのセンサーデータを1秒間に数十回〜数百回という超高速で記録(ログ採取)できます。
    記録したデータは、姉妹ソフトの「MegaLogViewer」を使ってグラフ化し、「なぜあの回転数でノッキングが出たのか」「加速ポンプの燃料は足りているか」などを後から精密に分析できます。

写真

1000rpm-5000rpmをsinで動きます。

image.png

準備するもの

shrike-lite

image.png

手順

tunerstudioを起動して、新規プロジェクトで、下記iniファイルを読み込みます。
サンプルコードをshrike-liteに書き込みます。
写真の画面が表示されれば、成功です。

iniファイル

[TunerStudio]
    queryCommand    = "F"
    signature       = "MShift v0.01"
[Constants]
    endianness      = little
    nPages          = 1
    pageSize        = 12
    pageReadCommand = "C"
[OutputChannels]
    ochGetCommand   = "O"
    ochBlockSize    =  7
    rpm             = scalar,  U32,   0,       "RPM",   1.00000,  0.00000,  0.00,       3000.0
[TableEditor]
[FrontPage]
    gauge1          = tachometer
    gauge2          = tachometer
    gauge3          = tachometer
    gauge4          = tachometer
    gauge5          = tachometer
    gauge6          = tachometer
[GaugeConfigurations]
    tachometer      = rpm,    "Engine Speed",  "RPM",  0,    8000,   200,   500,   6000,  6000, 0,  0
[Menu]

サンプルコード

import time
import sys
import math
import struct

def get_simulated_rpm():
	t = time.ticks_ms()
	rpm = 3000 + int(math.sin(t * 0.63) * 2000)
	return max(0, rpm)

signature = 'MShift v0.01'

while True:
	input_one = sys.stdin.read(1)
	if input_one == 'F':
		print(signature, end='')
	if input_one == 'C':
		print(signature, end='')
	if input_one == 'O':
		current_rpm = get_simulated_rpm()
		data_block = struct.pack('<I', current_rpm)
		sys.stdout.buffer.write(data_block)

以上。

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?