OBD
 
以前、ウラルのOBDは市販のスキャナーで読めることを知って、OBDアダプターを製作しました。



この時、接続と読出には成功したのですが、どう言うわけかエンジン回転数が一桁少なく表示され、解決方法が見つけられませんでした。

FullSizeRender
その時は、一桁少ないだけなら読み替えれば大きな問題は無いだろうと思っていたのですが、よくよく考えると、そんな単純な物でも無さそうで。
と言うのもディーラーツールだと回転数の下一桁まで表示されるらしいので、単に数値を10倍しているのでは無いらしい。

海外のユーザーフォーラムの書き込みを見ると、ウラルのOBDはaRacerのオリジナルなので市販のOBDでは正常に読めないのではないか、との意見もありました。

色々調べても解決策が見つからなかったので、しばらく放置していたのですが、ちょっと思い付きで、ダメ元でGrok3に訊いてみることにしました。

Grok3は、かのイーロン・マスク氏が立ち上げたxAIと言う会社が開発した最新のAIチャットボットで、マスク氏曰く「地球上で最も賢いAI」だそうです。
XユーザーであればXアプリから無料で手軽に使用できます。

Grok3のプロンプト(入力欄)に、CarScannerアプリでエンジン回転数が一桁低く表示されること、iPhoneアプリであること、K-Lineプロトコルであること、自動車メーカーの選択肢に(ウラルがないので)「その他」を選択していること、本来はアイドリングで800〜900RPMと表示されるべきところ55RPMと表示されること、などを提示し解決策を求めました。

何度かやり取りした後、Grok3は次の回答を提示しました。
FullSizeRender
読み取った値を16倍するカスタムPIDを作成し、デフォルトRPM表示と入れ替える、というものです。

ECUからのエンジン回転数がデータが何らかの理由で1/16に換算されて送られているのではないか、と言う訳ですか。
それなら話は早い。

CarScannerアプリの「設定」→「センサー」の右上をタップして「カスタム」を選択します。

FullSizeRender
表示される「New PID」のどれかをタップして選択します。

FullSizeRender
「センサー名」に任意の分かり易い名前を付けます。
「省略名」はダッシュボードに表示されるので、これも分かり易い名前を付けます。
「デコード方式」は「式」を選択し、「PID(12)*16」と入力します。
「最小値」「最大値」は表示される数値の最小値と最大値なので適当に決めました。

続いてダッシュボードの編集。
デモモードを起動してダッシュボードを表示させます。

FullSizeRender
歯車アイコンをタップして「ページを設定する」を選択します。

FullSizeRender
項目1の横にある歯車アイコンをタップしてセンサー編集画面へ。

FullSizeRender


「センサー」をタップして表示される候補の中から、先程設定したPIDを選択します。
目盛りやレッドゾーンの表示は「スケールとポインター」で設定します。


実際に車両に繋いでみます。
OBDアダプターを車両に接続し、エンジンを始動したらCarScannerアプリを起動しました。

IMG_4524
暖機運転後のダッシュボードに900RPM前後が表示されるようになりました。


IMG_4525
グラフを取ってみました。
アイドリング回転数がたまに落ち込むことがありますが、概ね安定しているようです。

しかしながら、この方法だとエンジン回転数は必ず偶数になります。
ディーラーツールでは奇数も表示されるので、規格外の方法で回転数を取得しているか、移動平均処理のようなものが入っているのかも知れません。
実際の回転数と大きく乖離していないようなので、当面はこのまま使用しようと思います。