自作e-Powerメーター
1
前車でメーター代わりに使用していた、コムテックのZERO 800VがOBD2経由で使用できなくなったので、過去に作成したESP32 CAN表示システムを流用してe-Powerの状態を表示するメーターを自作しました。
システムの構成は、CANアクセス側と表示器とで2つに分けていて、受信したOBD2のレスポンスを無線で送り、表示するようになっています。
(無線にしている理由は表示周りの配線を減らしたかったためです。単にハードウェアを組むのが面倒だったと言うのもありますが。)
ハードウェアは下記のものを使用しています。プログラムはこれをベースに作り直しました。
https://github.com/cosmoois/Can_ShiftIndicator 2
CAN側の装置は、OBD2コネクタと一体型なので、そのままではアクセル操作に干渉します。
そのため、延長ケーブルを噛ませます。
ステアリングの下にもエアバッグがあるので、それを避けるように真上に引き上げます。
(とりあえず、カップホルダーに吊り下げる形としました。)
3
ELM327とCar Scannerで見たいセンサーを取得してみます。
モーターのトルクが見れると思ったのですが、値がおかしいです。
ECUが直接トルクを出力しているのかと思いましたが、ログを見ると回転数と同じコマンドになっていました。
モーター特性のマッピングから回転数より換算するしかないようなので、とりあえず回転数のみを表示します。
OBD2は診断ポートと言えど何のトラップがあるか分かりません。
なるべく安全にアクセスするため、電源はオーラのPowerOn後に入るようにシガーから取り、READY後にコマンドが行くように、5秒待ってからアクセスするようにしました。
OBD2のスキャンスピードも上げたかったのですが、ECUに攻撃を受けていると勘違いされてエラーが出るかもしれないので、100ms間隔でスキャンするようにします。
(Car Scannerは300ms程度の間隔でしたが、それだと遅すぎるので。)
4
表示する項目は、
・エンジン回転数(ID=12)
・モーター回転数(ID=14200108)
・ペダル位置D(ID=97)
・スロットル位置(ID=17)
・SOC(リチウム電池充電残量)(ID=14200000)
・エンジン水温(ID=5)
としました。
IDはCar Scannerの表示で、OBD2のPIDsではありません。
拡張コマンドはETIの会員のみ開示されるようで、ここでは記述するのを控えます。
モーター回転数を、なるべくリニアに表示したいので200ms間隔として、その他のパラメータは順番にスキャンしています。
また、最大トルクを切った時が分かるように、3183rpmを超えたら色を変えるようにしました。
5
モーター回転数の計算式は実車の動きから推測して求めています。
リバース状態がマイナスになると思っていたのですが、回生時もマイナス表示になるみたいです。(マイナスをオレンジで表示してみました)
エンジンの回転数があるとエンジンの稼働状態が分かります。
インパネに常にエンジンの稼働状態を表示していないので、これはちょっとうれしいかも。
6
表示器としてはESP32に液晶さえ付いていれば良いので、安価で購入できるESP32-2432S028Rも試してみました。
プログラムを書くだけで済みますが、剥き出しなので基板側はカバーを付けたいです。
あと、USBがインパネにはみ出すので、L字コネクタが必要です。
テストではブロードキャストで通信しているため、表示器はどちらも反応します。
[PR]Yahoo!ショッピング
関連コンテンツ
関連整備ピックアップ
関連リンク