当サイトは広告が表示されます。

WRX OBD2で車両情報を取得する その8 ELM327を車両OBD2に接続する

2018年10月23日Ad,OBD2,社外部品・DIY

前回まででELM327とPLC間の通信確認が完了しました。車両側でサポートされている項目(PID)を調べる為のコマンド「0100」も用意したので、今回は実際にELM327を車両のOBD2コネクターに接続してみます。ただしまずはELM327自体が車両と通信出来るのかの確認から行う必要があります。その上で今回、車両と通信を行って「0100」の結果まで得られれば良いのですが。

スポンサーリンク

電源の用意

車両との接続の前に、PLCを車内で使う為の電源(DC24V)を用意します。これまでは室内でPLCのセット品だったスイッチング電源(AC100V→DC24V)を使っていましたが、車両バッテリーはDC12Vなのでアップコンバーターが必要です。Amazonで下記製品を購入しました。

車両のDC12VからDC24Vに昇圧してPLCで使用します。利用しているPLCの消費電力は10W以下なので、大した負荷にはなりません。

とりあえず車両の電源ソケットからPLCの電源を取る事にしました。使わなくなった後付けの増設ソケットがあったのでコードを切断し、そのプラグ側を使います。プラグ内には5Aの管ヒューズが入っている事もこれを利用する理由です。

ELM327を車両OBD2コネクターに接続

まずはELM327を車両のOBD2コネクターに接続してみました。PLCとの接続ケーブル(RS232C)は繋がっておらず、車両のエンジンは停止状態(キーOFF)です。

接続すると上記の様にランプが点灯しました。室内で最初にELM327に電源を入れた時と同じ状態です。OBD2コネクターの16番ピンが電源ですが、車両側は「常時電源」となっているのでELM327を接続した時点で電源が入ります(車両にもよる)。他のELM327製品を含め、電源スイッチの無い製品は注意が必要です。

ちなみに矢印のコネクターは普段OBD2に接続して使用しているトラストのインフォメータータッチです。この製品の場合は別途ACC電源の配線を繋ぎ、ACC電源OFF時は電源が切れます。また私の車(取説ではスバル車の一部、日産OBDタイプ)ではACC電源配線は必要無く、OBD2コネクターからの配線のみで電源のON/OFF(IGに連動)が出来ています。

PLCの電源を入れる

次にPLCとELM327の接続となるRS232Cを繋ぎ、PLCの電源となる先のプラグも車両に接続した上で、車両のACC電源をON状態にしてみました。上記の様にELM327は電源ランプのみの点灯になりました。

しかしPLCの画面には「?」が表示されました。通常「?」はPLC(RS232C)からのATコマンドに対するエラー表示ですが、現状PLCには前回確認出来たコマンドしか入れていませんし、まだ送信さえしていません。ここでの「?」の意味するところはわかりません。また車両での確認作業を考えて、PLCの画面が前回から少し変わっています。

ELM327とOBD2の通信確認

車両のACC電源はON状態のまま、ELM327が車両OBD2と接続出来たのかを確認します。PLCから現在のプロコトルを表示する「ATDP」のATコマンドを送信してみます。

すると上記の様に、前回室内では「ATDP」コマンドを送信して「AUTO」のみだった表示に、「ISO 15765-4 (CAN 11/500)」が追加されました。ELM327が自動で車両と接続出来るプロコトルを探して、結果的に「ISO 15765-4~」で接続出来た形です。

余談

今回、私の車(WRX:VAB-A)ではISOで接続出来ましたが、スバルにはメーカー独自(?)の「SUBARU」規格もあります。私が使用しているインフォメータータッチの適合表では、古い年式は「SUBARU」のみ、最近の年式では加えて「ISO」にも対応している記載になっています。私の車で両方を試した事がありますが、「SUBARU」規格だと通信が遅い様で回転数のアナログメーター表示などは少しカクカクした動きでした。また「SUBARU」規格でのインマニ(ブースト)圧は「-1.28~1.27」となっていて、WRXではピークで1.5近くになるので上が足りません。さらにELM327を使用した機器ではこれらメーカー独自の規格には対応していません(実際に接続してみないと分かりませんが)。

「0100」を送信する

ELM327と車両OBD2の接続は出来た様なので、PLCから「0100」のコマンドを送信してみます。車両はACC電源がONの状態です。

コマンドを送信すると「NO DATA」が返ってきました。実際にOBD2データを取得するには車両のIG電源をONにする必要がある様です。車両のプッシュスイッチをもう1度押してIG電源を入れ(エンジンは掛けなくても可)、再びコマンドを送信します。

今度は「41」から始まる数値が表示されました。これは「0100」コマンド送信に対する正確な返信です。この数値から車両でサポートされているPID(水温や回転数などの項目)を判断出来ますが少し変換して読まないといけないので、この辺りは次回記事で書きます。

意外にあっさりと「0100」コマンドでPIDの情報を取得する事が出来ました。もう少し何か戸惑ったり不明な点が出て来るかと思い、PLCで下記の画面も作成しておいたのですが必要ありませんでした。

ELM327から送られて来るデータを格納するデータデバイスのモニター画面です。

ただし今回利用しているPLCでは本体に指定するデバイスのモニター機能や、ラダープログラムのモニター機能も標準で備わっています。いちいち指定するのが面倒なので画面を作りました。

おまけ

車両のOBD2コネクターに接続した状態で、電圧を表示する「ATV」コマンドを送信してみると「12.3V」となりました。前回の記事で誤差があった場合の補正コマンドについても書きましたが、インフォメータータッチでの表示を見てみると同じ値になっています。

右側はTPMS(タイヤ空気圧モニター)ですが、こちらは「12.5V」です。ELM327も意外に合っている様ですが、実際にはテスターでバッテリー電圧を測らないと正確な値は分かりません。

次回は今回得られた「41」から始まる数値の内容を調べます。

「OBD2」関連記事

以下は「OBD2」タグの記事一覧です(投稿順)。現在の記事とこれ以降に投稿した記事も含みます。

その他

ブロック形式でプログラミングが行える、教育用「micro:bit」も始めてみました。micro:bitでもELM327と接続して車両OBD2ポートからの情報取得を試しています。

micro:bit全体の記事は以下から始まります。

注記

  • OBD2の仕様は各メーカーや車両で異なる部分があります。メーカーや車両によってはアフターマーケット製品による利用を推奨していない場合や、利用した場合による不具合発生の可能性を示している事があります。
  • このブログ内で書いている内容はあくまで私の車両、私の利用する製品や機器での場合です。他メーカーや他の車両をはじめ、同じメーカーの車両または製品、機器であっても記事内容の保証、責任を負う事は出来ません。
  • 記事内で紹介している製品や、その他の類似製品を購入・利用する場合はそのメーカーや購入先で、利用する車両などへの適合を確認し、自己判断と自己責任の下で利用して下さい。
  • OBD2やELM327、その他記事内容について個別の問合せや依頼を頂いても回答する事は出来ませんので、予め御了承下さい。
  • ELM327はElm Electronics Inc.の登録商標です。その他のブランド名または製品名は各所有者の商標です。