★★★ 車速信号の解析と取得方法 ★★★
動機)
RX-8では車速信号に関する情報(パルス電圧、パルス周波数など)がないため、色々今後の自作パーツのために解析しました。
解析方法)
解析の対象線は、
オーディオ裏にある最も大きいコネクタの 『緑/赤線』
です ( カーナビの車速信号に接続する線 )。
解析には、オシロがあれば楽ですが、そんなもの素人は持っていないので、以下3つで行いました。
① 電圧計(電圧、電流しか測れない980円ハンディメーター)
② Excel(計算できれば電卓でも)
③ 以下回路図に示す自作検証回路
図1 回路図 図2 完成回路(裏は大変・・・)
【 回路図の補足 】
・ 設定用7セグのGNDをトランジスタで制御し、ダイナミック点灯を実施(2つの7セグを交互に点灯し残像現象で両方表示する)
・ 測定した車速信号は最大5vなので、そのままRBポートに接続
解析)
① パルス数の予想
車速信号はJIS規格で、60km/hで637prmのケーブル軸回転(昔のケーブルがスピードメーターに繋がっているタイプ)と規定されており、
現在は電気的にこの信号を作り出しています。この電気的に信号を作成するのに、メーカー、車種により×1、×2、×4、×8・・・などあるよう
ですが、RX-8はネットで探してもこの情報ありません・・・。
とりあえず、電圧計で測定すると、信号は最大5vであることはわかりました (後にわかったのは、純正カーナビ資料に0-5vパルスである・・・と書いてあるそうです)
RX-8は速度計がデジタル表示であり、5km/hでも速度が表示されることから・・・
60km/h 637rpm×1 → (637/60×5)×1/60 = 0.88Hz (≒1.13秒に1パルス)
60km/h 637rpm×2 → (637/60×5)×2/60 = 1.77Hz (≒0.57秒に1パルス)
60km/h 637rpm×4 → (637/60×5)×4/60 = 3.54Hz (≒0.28秒に1パルス)
60km/h 637rpm×8 → (637/60×5)×8/60 = 7.08Hz (≒0.14秒に1パルス)
と計算できます。いくらなんでも、×1や×2ではデジタル速度メーターが低速時に計算が遅すぎるので、×4以上とあたりをつけます。
実際の速度の計算でも、このパルス間の時間から逆算して速度を出していると想われます。
Excelで各速度でのパルス数、周波数を計算すると、以下の通り。
表1-1 4パルスでの各速度周波数 表1-2 8パルスでの各速度周波数
とりあえず、低速域でも車速信号線から速度を取得する方法としては以下の2通り。
1) パルス~パルス間の時間を測定し、そこから計算して速度を取得
【長所】 プログラムが比較的簡単
【短所】 速度毎にパルス~パルス間時間が異なり、一定周期で実行するようなプログラムに使うには困難
(例:4パルスで10km/hでは0.14secだが100km/hでは0.01secと速度により次の処理へ行けるまでの時間が大幅に異なる)
2) 基準時間当りのパルス数をカウントして、カウント数から計算して速度を取得
【長所】 速度毎によるパルス取得の時間差が無いため、一定周期で実行するプログラムに適している
【短所】 最低速度でもパルス~パルス間の時間を基準時間以上にするため、高速時でも0.1secなど非常に遅い時間でしか処理しない
(0.1secというと短く感じると思うが、PIC、AVRなど、0.4usec(0.1secの250分の1)で動くので、相対的にとてつもなく長い!)
上記より、まず解析ということで、『 1) パルス~パルス間の時間を測定 』を採用し次に進めます。
② 解析プログラム内容とパルス数確定方法
車速パルス~パルス間の時間を測定するに当たり、まずは『RX-8は60km/hで637rpmに何パルスなの?』になりますので
これを解析します。方法としては自作回路にプログラムを書込み・・・
(1) 最初の車速パルスを取得し、
(2) 200km/hでも充分な40usec毎に次のパルスがあるまで、回数をカウントする
(3) (1)で受けたパルスの次のパルスがあればカウント終了
(4) 7セグに、カウントした結果の100の位と10の位を表示する
こうしてプログラムした回路をRX-8につなぎ、走りながら速度と7セグを見比べれば、何パルスかわかります。
ちなみに、以下表2-1,2のように16パルス版、32パルス版、64パルス版も作成しています。
表2-1 4パルスを40usecでカウントした場合の回数 表2-2 8パルスを40usecでカウントした場合の回数
こうした解析をした結果、
RX-8の車速信号は、『 60km/hで637rpmの4パルス 』
とわかりました。
③ 車速表示テスト
上記の結果から、パルス数もわかったので、自作回路による速度表示テストをしてみます。
プログラムとしては、先のプログラムに・・・
(1) 最初の車速パルスを取得し、
(2) 200km/hでも充分な40usec毎に次のパルスがあるまで、回数をカウントする
(3) (1)で受けたパルスの次のパルスがあればカウント終了
(4) 7セグに、カウントした結果の100の位と10の位を表示する → 変更
基準数を(3)まででのカウントで割り、速度を計算する
(5) 速度を7セグにダイナミック点灯する
なお、基準数からの速度計算ですが、以下表3から、時速10kmでは40usec毎にカウントすると3532カウントなので
3532×10 ≒ 35400 → 基準数
となり、この『35400』でカウントした回数を割れば、その時の速度が計算できます。
このプログラムにより、RX-8メーターと自作回路は+1/-1km/hの誤差以内で表示できました。
そのプログラムはこちら。なおこれを使用するにはマクロファイルが必要です(説明はこちら)。
表3 4パルスでの速度計算結果
④ 車速信号解析まとめ
RX-8の車速信号の解析結果をまとめると以下の通りである。
・ 信号線はオーディオ裏カプラーの『 緑/赤線 』
・ 信号は0v/5vの繰返しパルス
・ 停止中は0vでは無く、5vの場合もある
・ 60km/hで637rpmで4パルス(つまり、637×4 = 2548パルス/min)
間違っていたらすいません・・・。とりあえず上の仕様を満足するPIC、自作回路、自作プログラムで問題無く動いてます。
【 おまけ 】
ちなみに今回の自作回路の仕様は以下の通り。
・ 分解能は1km/h
・ 速度は1~215km/h
・ 速度測定は、時速1km/hで1秒毎、10km/hで0.24秒毎、30km/h以上では0.1秒以下と
10km/h以上の速度であれば、他のプログラムへの活用可能なプログラム実行速度
活用例)
・ 速度感応式の装置 (ウィンカー、ドアロックなど)
・ 車速モニター (車速のサンプリングなど)
・ シフトポイントインジケータ