自動車のスピードワーニング装置

Last-modified: 2016-01-24 (日) 08:59:34
初出 2007-4-22
最終更新 2011-12-3
製作時期 2007-4
ソース公開の車速パルス変換器とソース公開のスピードメータ自作を扱った新しいページを設けました。 まずこのページの方をご覧下さい。
 

(2016-1-23追記)本ページで紹介している速度警報装置は、殆ど周辺機能を持っていない余り物のPICを使って、間に合わせで作ったもので、技術的に参考になりません。もっと真っ当なページを作成した2010年頃からは(一応残しとくけど)あまりアクセスして欲しくないページだと思っています。
(いつまで経っても本ページに真っ先にアクセスされる例が多いので書かせて頂きました。)


 

speed-warning_1_s.jpg
自動車に取り付ける速度警報装置の自作です。
設定しておいた速度(たとえば107km/h)以上に達するとダイソーの防犯ブザーを鳴らしてスピードの超過を警報します。

 

ファームウェアを少しだけ改造すれば速度域によって鳴らし方を変えることもできます。たとえば90~100km/hは「プルプルプル、プルプルプル...」と鳴らし、100~110km/hは「プルプル、プルプル...」と鳴らすなど...普通は最初からそのように作ると思いますが、私の現在の取り付け環境でそのような機能は必要ないので(理由は後述)現状はある一つの速度を超えるとブザーが鳴るだけです。

 

ありあわせのものを寄せ集めて作りました。デッドストックとなっていたPIC16F84A、ジャンクからサルベージしたL7805CY、2SK2607、セラロック、ケーブルを使用しています。

 

車速パルスについて

よほど古い車でない限り、車速は車速パルス信号から取得できます。
車速パルス信号をプルアップすれば矩形波が得られます。(2010-8-22追記)プルアップは必要がない環境が殆どのようです。
※マイコン内のweak pull-upは利用できないと思います。

 

この車速パルスはJISで定められていて国内各社だいたい共通の基本仕様に準拠していますが、メーカー・車種によって1回転あたりのパルス数にいくつかの種類があり、それらは4パルス、8パルス、16パルス等の呼び方で区別されています(記憶だけで書いているので自信なし)。

 

車速パルスの仕様はかなり以前に定められたものなので、かなり古いマイコンにとって都合の良いものになっています。つまり現在のマイコンの実力と比べると非常に低い周波数のパルス波となっています。

 

我が家のトヨタ車は4パルスを採用していますが、この場合、時速100km/hでも70Hzほどしかなく、速度を1km/h単位まで知ろうと思えば、1秒半くらいのサンプリング時間が必要ということになります。これは速度計を作る場合には厳しい仕様ですが、スピード警報器の速度リミットの設定間隔は1km/hである必要はありません。2km/h刻みにすればサンプリング時間は1km/h刻みとする場合の半分で済みます。本作例も速度リミットの設定間隔は約2km/hです。
(2008-3-30追記)ちょっと説明不足でしたが、いまどきの車種だと4パルスなんてことはなく、もっと高い周波数の車速パルスを採用していますので、本ページの「超簡単工作+超簡単ファームウェア」でもkm/h毎のような小刻みな速度設定が十分可能です。(2008-7-29追記)ごめんなさい。最近の車でも4パルスが当たり前みたいです。4パルスでレスポンスのいいスピードメーターや詳細な設定ができる速度警告装置を作るなら、本ページの超簡単な方式ではなく、下記に示した、パルス間の時間をはかる方法が必須です。

 

各車種別の車速パルスの取り出し先等の情報はカーナビメーカーのホームページ等から取得できます。
たとえば、
Clarion Japan クラリオン カーナビ カーオーディオ 車種別取付ガイド
製品取付け情報 | ALPINE Japan
ECLIPSE 車速信号接続ガイド
ただしこれらのページから全ての車種・グレードにおいて正確な情報が得られるわけではありません。私の少ない経験でも幾度か間違いを発見しています。くるまの販売店から資料をいただくことも一つの方法です。販売店の資料は正確なんですが、素人が理解しにくい表記になっている場合があります。私の場合三代目プリウスの資料はそのようなものでしたので店の方に読み方を教えて頂きました。

 

車内の配線は少なくとも日本車の場合は普通はきちんと種類每に色分けされています。なので資料なんかなくてもある程度何とかなりますし、資料があっても間違いを防ぐ為に必ず線の色(模様も含む)を確認するべきです。

回転数(パルス数)の検出法について

PICを使ったお手軽DCファン回転数計にPICに特化した内容があります。

 

簡単に言いまして、

  1. 一定時間中のパルス数を数える方法(サンプリング時間一定)
  2. 一定数パルス間の時間をはかる方法(個数一定)
    があります。
 

非常に低い周波数のパルス波である車速信号を使って、たとえば速度計を作らなければならい場合、検出法の選択は重要です。2の方法を採用したとしても、速度域によって観察個数を変更することも必要かもしれません。

 

ただし、本機は比較的高い一つの速度に対応するだけなのでどちらの方法を選んでも優劣は全くないと思います。これとかこれで慣れ親しんだ1の方法を用いました。

 

(2007-6-25)比較的高い速度とはいっても、4パルスだとやはりまだkm/h単位で設定するにはパルス数が不足です。レスポンスのことを考慮すると、今以上にサンプリング時間を延ばすわけにもいかないので、制限値をkm/h単位で設定したい場合は2の方法に変更した方がいいと思います。しかし1の方法はファームウェアがシンプルで済むという捨てがたい長所があります。

(余談1)パルスの変換について

車速パルスの1/偶数への間引くこと(分周)はごく簡単なロジックと貧弱なマイコン(あるいはディスクリート)でおこなうことができます。しかしパルスを整数倍に増やすこと(逓倍)は周波数が常に変化する車速パルスの場合困難な処理です。詳しくはこのページをお読み下さい。

 

一応ここでも8パルスから4パルスへの変換などのパルス数変換の仕組みを簡単に説明しておきます。

  • パルス数を1/2(もしくは1/偶数)に間引く変換(=パルスの分周)
    • マイコンの外部割り込み(入力ポートの立下り・立ち上りのいずれかのみに反応するタイプの割り込み)を使用。
    • マイコンのタイマ割り込みは使用しない(必要ない)。
    • 割り込みを一度おきに無視する仕組みを作り、無視しないケースでは出力ポートをLoの場合はHiに、Hiの場合はLoにトグルする処理をおこなう。
       
  • パルス数を2倍に増やす変換(=パルスの逓倍:大変難しい)
    • 外部割込みと外部割込みの間の時間を計測し、それに応じて生成するべきパルス波の周期をを予測します。分周とは比較にならない程困難な処理です。具体的にはこのページの説明や、ソースの中身を参照して下さい。

(余談2)メーカー純正スピードメーターのスゴさ

これを見て下さい。停車直後の瞬間を撮影したものです。
speed-warning_3_s.jpg
左のメーカー純正スピードメーターの表示は既に0km/hになっていますが、右のスピードモニター・プラス No.4015ではまだ2km/hと表示されています。実際にはあまりに瞬間のことで写せなかったのですが、左が0km/h、右が4km/hの瞬間もあります。

 

ここを読むとわかると思いますが、現行の4パルスとか8パルスとかの車速パルスは速度が減るに従って信号が送られてくる頻度も減ってくるわけで、低速時に表示の追随性を上げるのは困難です。スピードモニター・プラス No.4015のように、停車した瞬間にはまだ2km/hとか4km/hを表示しているというのはごく当たり前のことです。たとえば4パルスの場合、時速0.5km/hだとパルスは約3秒間隔にしか送られてこないのでスピードメーター内部で「速度がゼロになった」と判定するのは大変難しいのです。

 

それなのにメーカー純正スピードメーターの表示はまるでアナログ時代のように素早く実際の速度に追従します。この表示の素早さは予測機能を持ったアルゴリズムを導入しない限り到底実現不可能です。メーカー純正スピードメーターの開発者は「アナログメーター並みの素早い0km/h表示」実現の為に労力をかけて予測アルゴリズムを開発したに違いありません。ただし所詮予測に頼っているので「停車寸前に逆に速度を上げる」みたいなメーターに対していじわるな運転をすると「実際には一瞬たりとも停車していないのに一瞬0km/hが表示される」みたいな誤表示も当然起こりえると思われます。

 

※余談の余談:写真の車は3代目(ZVW30)プリウス(標準タイヤが195/65R15のグレード)です。スピードモニター・プラス No.4015には補正機能があるので高速道路のキロポストなどを使って距離計と速度計をほぼ正確に本当の距離と速度を表示するように補正することができます。その補正をおこなった後のスピードモニター・プラス No.4015と純正のメーター類との表示を比較した結果、
純正距離計(オドメーター)=ほぼ実際に一致
純正速度計(スピードメーター)=実際の約8%増し
であることがわかりました。

 

3代目プリウスの車速パルスの取り出しに関する情報を掲載します。09年にディーラーから頂き、利用したものです。
その1 その2 その3 その4
いろいろなデータを全部で12枚頂いたのですが、実際に車速取り出しに関係ありそうなのはせいぜいこの4枚だけでした。この4枚に関してもたしか結局「その1」だけで間に合ったような気がするのですが、もしかすると「その3」に記載のコネクターをを利用したかもしれません。記憶が定かではありません。とにかくセンターコンソールのパネルを外せばすぐにはっきりします。パネルの外し方は簡単です。シフトノブを外した後、柔らかプラスチックのパネル外し専用ヘラでどんどん外せます。
(2011-12-3追記)書いた方が親切だなと思いながらも不精して書いてなかったことを書きます。たとえばバッテリーを外さずにパネルを外す作業をしているときに中途半端な状態でパワースイッチを押してしまって、コンピュータがエラーを検知した状態になってしまった場合でもコンピュータのリセットは自分でおこなえます。(後部トランク下の)バッテリーを外せばコンピュータはリセットできます。あとはハンドルを少しまわしてキャリブレーションすればいいだけです。こんなことでわざわざディーラーのお世話になる必要はありません。2年半も前の情報なのでもう一般的になっているのかもしれませんが。

防犯ブザーの利用

ダイソーの防犯ブザーはこのような用途には理想的だと思います。僅か105円で電圧をかけるだけで大音量で鳴るブザーが手に入ります。
元々電池3個仕様なので5V電源で使用できます。

 

リードスイッチを取り外し、電源ケーブルを取り付けています。ダイソーの精密ハンドドリルで簡単に加工できます。

 

5Vの電圧を与えた際の電流値は170mAでした。そこでジャンクFETで駆動することにしました。

本機作成の経緯

本機(本作例)は私の車に取り付ける為に作成したものではありません。スピード違反を絶対にしたくない人の為に作成したものです。その人の車には既に永井電子のスピードモニター・プラス No.4015が装着されています。この装置はたとえば70km/hの速度で警告を発するように設定しておくと、70km/h~80km/hで「ぴーーっ、ぴーーっ」、80km/h~90km/hで「ぴーっ、ぴーっ」、90km/h以上で「ぴっ、ぴっ」というふうに3種類の音で速度超過の警告を出してくれます。しかし、もう一種類、他の音を他の速度(107km/h程度を想定)で鳴らせたいとの考えで本機を作成しました。
※現在はこちらのようにちょっと使い方を変更しています。

取り付けについて

前段で触れたように私の取り付け環境には既に車速パルスを利用する別の機器が装着されています。配線もそれを利用しています。別の機器の配線中に5ピンのコネクタが使われている部分がありますのでそこに中間コネクタの形で本機のコネクタを割り込ませて装着しています。

 

ヒューズは別の機器のものを共用しているという形になります。元々その機器用のヒューズは1Aでしたが、本機にかなり電流が流れるので1.5Aに換装しました。

 

プルアップ抵抗も別の機器のものを共用しています。本機には取り付けていません。本機を単独で使用する場合は必ずプルアップ抵抗を追加する必要があります(確認済みです)。もちろんヒューズも追加するべきでしょう。

 

この取り付け仕様は、別の機器の駆動電圧が(本機の)5V駆動PICのスレッショルド電圧から5Vの間であることを前提にしています。もちろんPICの入力ポートが十分にハイインピーダンスであることもこの仕様を支えています。

 

細かく書くと、ここは紙面を費やすところだと思います。
本機は車側とは、車速パルス、電源、アースの3本しか接続する必要がありません。
車速パルスはECU以外の場所からも取得できる場合が多いと思います。たとえば私の場合ですと、車速パルスはセンターコンソールのエアコンコンピュータ、ハンドル下のパワステコントロールユニットからも取り出すことが出来ます。
電源はヒューズボックスから取り出すのが最も簡単だと思います。

回路図

speed-warning_circt_s.png
ものすごーく簡潔な回路です。
本機が商品なら水晶を使用しなければならないところですが、アマチュア工作なのでセラロックを使用しています。(多少の精度が必要ですし、使用環境の温度変化も激しいのでさすがに内部RC発振は使用していません)。
ちなみに図中の他の機器のプルアップを利用できない場合に取り付ける抵抗についてですが、実際にその場合の動作確認もおこなっています。(2010-8-22追記)ただし実際にはプルアップ抵抗はそもそも全く必要のない場合が殆どのようです。

 

BSch3V形式(zip圧縮)
filespeed-warning_circt.zip

ソース

MPASM形式
filespeed-warning.asm
※ieの場合、直接開けないことがあるようです。
自由にお使い下さい。

 

(2010-5-5追記)
スピードメーターを自作したいと思った方の中には、webでソースを探しまくったけど、どのページもソース非公開だったという経験をお持ちの方も多いでしょう(特に今、ここを読んでいる方の中には)。自動車の改造ファンの世界ではアマチュアでもソースを公開しないという、私には理由のわからない(ソースが汚くて恥ずかしいという理由でしょうか?)慣習みたいなものがあるようです。
そんな中、ビット・トレード・ワンという会社では、自作できるスピードメータのソースの公開を始めました。儲けはPIC18F2420を用いたキットや基板の販売で得られればいいという考えなんだと思います。7セグを使用している為、ある程度配線が多いのでこんなことこんなことをやっている私でもさすがにユニバーサル基板で作りたいと思いません。基板は既製のものを使いながらも、半田付け、コンパイルツール(MPLAB C18)のダウンロード、コンパイル(ソースのカスタマイズ)、書き込み、車への取り付け等々で十分「手作り」の実感が得られると思います。

ちょっとした改造

speed-warning_2_s.jpg
現在は空きスペースにスイッチを取り付けて、走行中にON・OFF可能にしています。

 

運用開始後しばらく後に、本機は69km/h以上でブザーが鳴る設定に変更しました。そして高速道で鳴りっぱなしとならないように高速道の乗り降り時に(走行中に)OFF・ONできるようにしました。永井電子のスピードモニター・プラス No.4015のスピードワーニング機能は高速道専用の設定に変更しました。高速道での速度警告はスピードモニターに任せています。

 

改造内容はあまりに簡単なので、改造後の回路図、ソースは載せません。お察しがつくと思いますが、入力を1ポート追加し、ソースに2、3行追加しただけです。

 
 

ご要望、ご意見、質問を下のフォームにどうぞ
(でもここより、掲示板書き込みフォームのページに書いて頂いた方が気づき易いと思います。)

  • 図中の他の機器のプルアップを利用できない場合に取り付ける抵抗についてですが これは別に12V電源を抵抗を通して車速信号に送ったら良いのでしょうか -- gori? 2010-08-18 (水) 18:39:55
  • 違います。プルアップ抵抗は、(使うとしたら)5Vで動作するマイコンの入力の為ですから5Vの電源と接続します。でもそもそも必要がない場合が殆どです。 -- disklessfun? 2010-08-22 (日) 19:20:20
  • 1年前の記事にあれなんですが、レギュレータのOUTに変な負荷がかかるようにみえました。ダイオードなりが必要そう。 -- lightz? 2011-03-17 (木) 14:35:54
  • 教えてください。0V→5V→0V→5Vのパルス信号の対応スピードメーターをプリウスに装着できますか?又、出来ない場合変換機等が有るか教えてください? -- tonton? 2011-06-02 (木) 00:04:57
  • そう言われればプリウスの車速パルス線には「スピードモニター・プラス No.4015」しか繋いだことがないので5Vだと確認してないですね。多分No.4015は12Vにも対応しちゃってるでしょう。でもトヨタだから多分5Vですよ。パルスの種類は4パルスです。多分世間的には最も素直な部類のパルスだと思います。 -- disklessfun? 2011-06-02 (木) 22:55:12
  • 最近のクルマのメーターはもっとパルスの多いABSからの信号で動いてます -- まさぽん? 2013-07-01 (月) 10:00:16
  • 注意:まさぽんさんからのレスは余談です。最近の車にも(周波数の低い)車速パルス信号は(まず殆ど)あります。まさぽんさんからの情報はユーザがサードパーティのメータ類を取り付ける話にはほぼ関係ありませんので、誤解なきようお願いします。

    さて、まさぽんさんのレスは、ここ( http://wikiwiki.jp/disklessfun/?speed-warning#w345ddaa )に呼応したものでしょう。そこを記述時、私も当然その可能性を考えましたが、ここ( http://bit.ly/11ahmxQ )にあるLAT, CLK, SI, WE, BKR, STP1, STP2, STP3, STP4等の意味がわからなかったので、とりあえず純正メータにも(JIS4倍速の)車速パルスが入力されているものと仮定しました。まさぽんさんのレスも参考にすると、STP1がABSの速度信号なのかもしれません。 -- disklessfun? 2013-07-01 (月) 23:11:35
  • 中期(年式確認しませんでした)のプリウスは速度パルスが12v出力でした。 -- koi? 2013-12-20 (金) 22:04:11
  • ↑補足)速度パルスの取り出しはオーディオ裏のカプラーからです。 -- koi? 2013-12-20 (金) 22:08:37