RaceChrono & OBDLink LXでBRZ, 86のCAN-Busから情報取得
連休最終日、身延山に登りに行く道中で、昨晩ググって見つけたことを実験してみたところ、CAN-Busから情報を取得することに成功した。そしてそのリフレッシュレートに驚いた。((((;゚Д゚))))
対象のパラメータによって違うけど、回転数とかアクセルペダル位置とかは100Hz前後でデータが取れる!圧倒的なサンプリングレートだ!!(゚∀゚)
グラフにしてみると、いつものOBD2だと折れ線グラフの点が足りないな(シフトアップ時の一瞬のアクセルオフのペダル位置や回転数が1,2点しかないetc.)と思ってるところが、ちゃんとペダル操作や回転数の変化が見えるようになってる。アクセルペダルとかは逆に点が多すぎてギザギザになってるぐらいw。
- 水色:エンジン回転数
- 薄紫:アクセルペダル位置
- 薄黄色:車速(CAN-Bus)
- 薄赤:車速(スマホGPS(1Hz))
- 薄緑:ブレーキペダル位置
OBD2でブレーキペダルや油温が取れるようになったことに喜んでたけど、こりゃ完全にCANBUS一択だな。
情報源はこちら。
- RaceChronoで、S660 can-busのデータをロギング ①②③
- BRZ(ZC6), 86(ZN6)の定番CAN IDと数式例
- RaceChronoの数式のリファレンス
リンク先を見ればいいんだけど、例によって自分メモとして大雑把な手順と画面キャプチャを貼っておく。
まず、「その他のデバイス」のところに「OBDLink LX/MX/MX+ Bluetooth (CAN-Bus)」を追加する。「OBD-IIリーダー」の方の「OBDLink LX」は無効にしておく。(両方ONになってるとうまく接続できない)
次に、車両情報のところの一番下の方で、CAN-Busチャネルを追加する。
チャネルの追加は、先ほどのリンク先のページをマネして、以下のように入力。
Channel name | CAN ID | Equation | Notes |
---|---|---|---|
Accelerator position (%) | 320 | A/2.55 | |
Brake position (%) | 209 | min(C / 0.7, 100) | The 0.7 divider seems to be a good value to get 100% at pressure slightly higher than those you’re likely to use on the track for cars with no aero. You can use 0.8 or 0.9 if you see 100% too often. |
Brake pressure | 209 | C * 128 | |
Coolant temperature | 864 | D - 40 | |
Engine RPM | 320 | bitsToUIntLe(raw, 16, 14) | |
Engine oil temperature | 864 | C - 40 | |
Speed | 209 | bytesToIntLe(raw, 0, 2) * 0.015694 | May want to check the multiplier against an external GPS aevice |
Steering angle | 208 | bytesToIntLe(raw, 0, 2) * -0.1 | Positive value = turning left. You can remove the - if you prefer it the other way around. |
Channel name | CAN ID | Equation | Notes |
---|---|---|---|
Clutch position | 320 | B & 0x80 / 1.28 | Only 0% and “not 0%”, unfortunately. |
Gear | 321 | (G & 0xf) * (1 - (min(G & 0xf, 7)) / 7) | Car calculates it based on speed, RPM and clutch position. It’s pretty slow. I really doubt it’s worth wasting one CAN ID for this channel. It’s not that hard to see which gear you’re in based on speed and RPM in data. |
Lateral acceleration | 208 | bytesToIntLe(raw, 6, 1) * 0.2 | Data is noisy. |
Longitudinal acceleration | 208 | bytesToIntLe(raw, 7, 1) * -0.1 | Data is noisy. |
Combined acceleration | 208 | sqrt(pow2(bytesToIntLe(raw, 6, 1) * 0.2) + pow2(bytesToIntLe(raw, 7, 1) * 0.1)) | |
Throttle position | 320 | G / 2.55 | This is the throttle valve, not pedal. |
Wheel speed FL | 212 | bytesToIntLe(raw, 0, 2) * 0.015694 | Use same multiplier as for “Speed”. |
Wheel speed FR | 212 | bytesToIntLe(raw, 2, 2) * 0.015694 | Use same multiplier as for “Speed”. |
Wheel speed RL | 212 | bytesToIntLe(raw, 4, 2) * 0.015694 | Use same multiplier as for “Speed”. |
Wheel speed RR | 212 | bytesToIntLe(raw, 6, 2) * 0.015694 | Use same multiplier as for “Speed”. |
Yaw rate | 208 | bytesToIntLe(raw, 2, 2) * -0.286478897 |
エンジン回転数を入力した例。
とりあえず、ブレーキ以外にもステアリング角度とヨーレートは使えそう。動画に表示しても面白そう。
4輪の車輪速とか面白いなと思ったけど、さすがにそこまで細かく解析してらんないかな。でも、データを色々取得してもサンプリングレートは特に落ちないっぽいので、取れるだけ取ってやってもいいかも。
ギアは、ちょっとややこしい数式になってるけど、メーターに表示されてるギア段数が取れるようだ。つまり、4.5ファイナルのウチの場合、6速に入れれても5速と表示される(笑)。あと、Rに入れても1と表示された。
あとは、計測時に所望のデータを取るようにチェックを入れたり、動画に重ねるオーバーレイのメーターをOBD-IIじゃなくてCAN-Busの方にしたりすればOKのはず!
オマケ。身延山のYAMAP活動記録。
身延山の巨大な霜柱 / たぽさんの身延山の活動データ | YAMAP / ヤマップ