PIC16F887・HUD スピードメーター Ver.5 の製作 (2010/09/25〜2010/11/13)

(Last update:2011/01/17)


7 セグ LED:A-1001UB 版
(前作踏襲バージョン)

2素子/セグメント LED のため輝度は
十分だが Vf の関係上電源を 5V
単一にできない。
よって部品点数が多め
7 セグ LED:OSL40562-IR 版

トランジスタアレイすら不要で最も
部品点数を減らせる
7 セグ LED:YSD-160AB3C-8

1素子/セグメント LED にしては
文字サイズが大きめなのが魅力。
制御基板表。
PIC の下にも部品を実装
制御基板裏
表示基板表 表示基板裏
相変わらず LED のダイナミック
配線が面倒 ^^;
78M05 は放熱シート「クールスタッフ」を
貼って放熱面積を稼いだ
ケースに入れたところ
動作の様子(最終ケーシング前の状態) 参考配線レイアウト

(レイアウト作成には PaaSを使用)
LED のダイナミック配線は省略
回路図 おまけ: YSD-160AB3C-8 バージョン。
カタログスペック上は輝度十分のはずだが、
実装してみると HUD にはやや輝度不足だった。

仕様:

 これまで製作した一連のスピードメーターの締めくくりとして、速度分解能、実装サイズ、実用性のすべてを満足させる「集大成」作品を製作することに。

 ・速度を 3桁 7 セグ LED とバー LED で表示する
 ・バー LED 表示は分解能 5Km/h で、5Km/h 〜 120Km/h 表示
 ・周囲の明るさに合わせて輝度を変更するディマー回路あり
 ・ジャンパ設定により、速度補正(速度水増し表示)有/無切り替え可能
 ・4 パルス車専用(ソース 1ヶ所変更でパルス数変更可能)
 ・パルス電圧は 5V, 12V 両対応
 ・デフォルトは HUD 表示だがソース 1ヶ所変更でノーマル表示可能


ハードウエア:

 【PIC】

  I/O ポート数は、7 セグ表示に 10個、バー LED 表示に 24個、車速パルス入力に 1個で最低 35 ポート必要。そこで単純にピン数の多い PIC16F887 を使用。秋月でたったの \200 なのがステキ ^^

 【LED】

  青 7 セグ LED は秋月で売っている OSL10561-IB を採用。1素子/セグメントのため前作で使用した A-1001UB(2素子/セグメント)より輝度は落ちるが、代わりに電源系を 5V に統一できる(=部品点数削減可)メリットと手頃なサイズによって採用。

  バー表示用の LED は前作同様、こちらの 2mm x 3mm x 4mm の超高輝度角型 LED から、青、緑、橙、ピンク、赤を採用。密集実装が可能のため、装置サイズの小型化が可能。手に入らなければ秋月で売っている 3mm径の超高輝度 LED なんかでも OK と思うが電流制限抵抗の値は追試が必要。

 【電源まわり】

  今回は電源を 5V 単一とする。7セグ LED の絶対最大定格はパルス時 100mA だが、輝度を現物確認しながら総消費電流を 50mA 程度に抑えた。ただそれでも三端子レギュレーターによる熱損失は (14-5)V x 0.05A = 0.45W と大きめで、ダッシュボード上に設置すると 78L05 ではシャットダウンするのは目に見えている。前作で使用した μPC29M05 (78M05)、あるいはもっと余裕を持たせて 7805 の投入が必要。今回は手持ちの都合上 78M05 を使用し、金属フィンに秋月で売っている沖電線の放熱シート「クールスタッフ」を貼って放熱効率を高めた。


 【ディマー回路 〜 LED 回り】

  一連の前作の回路をそのまま踏襲。電流制限抵抗は輝度を実際に確認しながら合わせ込む。


ソフトウエア:

 【速度計算】

  一連の前作をそのまま踏襲してレシプロカル方式とする。

  なお前作の検出下限速度は 6Km/h だったが、 Ver 2.0 から 3Km/h に改良した。

 【表示速度補正】

  JIS 規格上は速度 = 車速パルス周波数 x 1.412(4パルス車の場合)のはずだが、最近の車は速度をやや速めに表示するようで、管理人のフィット(GE6型)では 1.5 でメーターと一致した。そこでジャンパで表示速度補正の有/無を選択できるようにする。(補正ありで周波数 x 1.500、補正無しで周波数 x 1.412)

 【LED 点灯制御】

  消費電流削減(=三端子レギュレーターの発熱低減)と部品点数削減のため、完全ダイナミック点灯(桁内もダイナミック点灯)とする。LED が最も多く点灯するのは 128Km 時で、7セグ LED 側 14個、バー LED 側 24個で合計 38 個と多め。加えてピンク LED は点灯時間を長めにして輝度を確保している関係上、点灯タイミングはかなりシビアに(汗)。目が良いヒトなら多少チラつきが判ってしまうかもしれないが、運転中にマジマジと見つめるものでもないのでそこらへんは妥協する。

 【バー表示】

  ごく普通に 70Km/h の LED を 70Km/h で点灯させると前作同様、実走行時にかなり違和感を覚える。例えば 69Km/h で走った場合、体感的には既に 70Km/h なのにバー表示は 65Km/h のままだからだ。

  そこで体感速度と LED 表示との間に違和感が生じないよう、バー LED は指定値を中央値として ±2Km/h で点灯させることにした。(つまり 70Km/h LED は 68〜72Km/h で点灯、75Km/h LED は 73〜77Km/h で点灯)

 【ウオッチドッグタイマー(WDT)】

 念のため実装。100ms 強毎に WDT リセットをかけて不測のハングアップに備える。


実装:

 設置面積を抑えるため、一連の前作同様、制御部と表示部とを分けて二段重ねとする。そのぶん多少ぶ厚くなってしまうのだが、ケースにタカチの SW-T75 (W50 x H30 x D75) を使用し、前作よりもかなり小型に仕上げた。


使用感:

 前作よりも 7 セグ LED の輝度が落ちていること、7セグ LED、バー LED の両方とも物理的なサイズが小さくなったこと、フロントガラスの曲面に合わせて光軸をズラしながら LED を実装する小技を使っていないこと、から視認性だけで言えば前作に軍配が上がる。特に偏光サングラスをかけた場合の視認性はかなり悪くなってしまった(ってか、偏光サングラスをかけて HUD を見ること自体が間違いなのだが)(2011/01/17 追記:偏光サングラスにも負けない輝度の改良版を後日製作。詳細はこちら

 ただ管理人的には今回のような直線的バー LED 配列が一番スキで、前作をお蔵入りにしてこっちを愛用することに^^;


改良案:

 最大 38 個もの LED をダイナミック点灯する都合上、LED 1個あたりの点灯時間が短く、輝度面で不利になってしまった。7 セグ LED は桁内をスタティック点灯にすることである程度解決できるのだが、ディマー回路との絡みでどうしても部品点数が増えてしまうので今回は見送った。

 具体的に言うなら、スタティック点灯(桁内スタティック点灯含む)にする場合にアタマの痛いのが三端子レギュレーターの発熱とディマー機構。前者は小型の DC/DC コンバーターに置き換えることで容易に解決できるが、後者は工夫が必要。

 完全ダイナミック点灯の場合は点灯する LED が常に 1つなので、LED に流す電流量は周囲の明るさのみで決めることができる。対してスタティック点灯では LED の点灯数が常に変化するため、明るさだけで電流量を決めると桁間で輝度がバラついてしまう。つまり、電流量を明るさと点灯 LED 数の 2パラメータで決めなければならないわけだ。

 したがって、スタティック点灯で輝度を揃えつつディマーを実現するには明るさを PIC で読み込み、流し込む電流を PWM で制御してやればよい。が、ソフトウエアが複雑になるし、いかんせん今回の場合は空きポートが無い(爆)。(2011/01/16 追記:改良版を製作。詳細はこちら

 よって、一番手っ取り早い解決方法は、より輝度の高い LED を使うこと。具体的には秋月で売っているダイナミック点灯用緑 7 セグ LED OSL40562-IR がお勧め。7 セグ LED の中ではズバ抜けて輝度が高く、ダイナミック点灯でも 20mA で輝度十分(=外付けトランジスタアレイ不要)。しかも LED 内部はダイナミック接続済で配線の手間が大幅に減らせる、といいことづくめ。OSL40562-IR に交換する場合は回路図に記したように R1, R2 の値を変更要。

 もっとも地上での HUD だと背景に植物が映り込む場合が多く、輝度云々よりも「青」という色自体が重要かもしれない。(ちなみに戦闘機では青空がバックになるためか HUD は緑表示が多いようですな)


2011/02/25 追記:

 その後 OSL40562-IR を使用した緑 HUD 表示の電波時計を製作。詳細はこちら


2010/12/16 追記:

 システムクロックを 8MHz から 4MHz まで落として速度検出下限を 6Km/h → 3Km/h に引き下げた。前作でも書いたとおり、本作では TMR1 がオーバーフローするまでにパルスが来なければ「諦めて」速度を 0 にしている。これはクロック 8MHz 時の TMR1 オーバーフローが最長 262ms であり、この間にパルスが来る下限速度が約 6Km/h であったため。ならばクロックを 4MHz に落として TMR1 オーバーフロー時間を倍の 534ms にすれば、速度計算に関してはプログラムをほとんど変更せずに約 3Km/h まで拾えることになる。

 ただしクロックを落とすと全体の処理速度も落ちるわけで、特に LED 表示時間等は再調整が必要となる。8MHz → 4MHz ではさほど問題はなかったが、クロックをさらに 2MHz(1Km/h まで拾える)に落とすと、ダイナミック点灯する LED 数が多いためにチラつきがかなり目立ってしまった(汗)。LED の点灯時間を短めにすればチラつきは防げるが、輝度との兼ね合いもあるので今回は 4MHz に留めておくことにした。

 もちろん安易にシステムクロックを落とすよりも、TMR1 オーバーフローをさらに 8bit カウンタで管理(自前のソフトウエア・ポストスケーラーですな)したり、あるいは 7 セグ LED かバー LED のどちらかをスタティック点灯にして表示に必要な処理速度を節約するのがまっとうな対処方法デス ^^;


プログラム:

 改変自由だが商用利用厳禁

プログラム v2.0 ( asm & HEX ) (2010/12/16)
Speed_Meter5_v2.0.zip

謝辞:

 数値演算にはこちらのライブラリを使用させていただいております。開発者に御礼申し上げます。


2011/01/16 追記:

 さらに輝度を上げた「最終型」を開発。小型の DC/DC コンバーターが手に入るならこちらをお薦めする。



 [電子工作のページへ]