PIC16F887・HUD スピードメーター Ver.7 の製作 (2011/01/12〜2011/01/15)

(Last update:2012/03/21)


前作の表示部を使って
ブレッドボード上で再開発
前作の制御基板表。

三端子レギュレーターに
クールスタッフ」を貼って放熱。
制御基板表。

DC/DC コンバータの実装面積が
三端子レギュレーターと大差無く、
しかも放熱不要なのがオイシイ
制御基板裏。

チップ抵抗が大量に ^^;
表示基板装着後 ケーシングの様子。
最上位桁は必要な部分以外は
隠して不要な反射を防ぐ
全点灯の様子 完全スタティック点灯版(画面左下)に
ほぼ匹敵する輝度を確保できた ^^v
回路図 参考配線レイアウト
(レイアウト作成には PaaSを使用)

LED のダイナミック配線は省略

shibukei さんより製作レポートをいただきました
↓↓↓
2012/03/21

静岡の F さんより作品写真を
いただきました
管理人コメント:

ターゲットスクリーン装備なら
真夏逆光でもかなり見易そうですね ^^
管理人コメント:

ノイズ対策で苦労されたとのことですが、
仕上がりは上々のようですね ^^;

製作の動機:

 前作を製作し、実車に搭載してはや 2ヶ月が経過した。前作は昼間でも視認できる輝度を確保していたものの、偏光サングラス(HOYA Multi Gear レンズ)越しでは視認性が悪く、だんだんと不満が募ってきた(バー LED 表示はなんとか見えるけど)。

 ツッ込まれる前に書いておくと、そもそも偏光サングラスというものは余計な反射光をカットするためのアイテムであって、反射光を利用する HUD 表示が見えにくくなるのは当たり前。偏光サングラスをかけて HUD 表示を読み取ろう、ということ自体が矛盾しているのは重々承知している。だが偏光サングラスといえども反射光を 100% カットできるわけではなく、実際、別の前作なんかは LED が極めて高輝度で偏光サングラス越しでも視認できたりする。

 そんなこんなで最低限バー LED だけでも偏光サングラスに負けないものに改良したい、と思っていたところ、たまたま秋葉原のパーツ屋で手頃なオンボード DC/DC コンバーターを発見し、早速改良に着手。


改良方針:

 基本的に輝度を上げるためには、

 (1) できるだけ点灯時間を長くする(スタティック点灯が理想)
 (2) LED に流す電流を多くする
 (3) LED を高輝度のものにする

 が基本。

 最も理想的な解決策は (3) だが、現実には LED 表示色、サイズ、入手性の点で自由度は低い。よって (1) と (2) による対応がメインとなるが、これらは消費電力(とそれに伴なう発熱)とトレードオフの関係になり、うまくバランスを取りながらハードウエア/ソフトウエアを設計する必要がある。

 前作では全ての LED を 1つづつ順次点灯させていく「完全ダイナミック点灯」ながら、白昼下 HUD でも視認できる輝度を確保しつ消費電力を抑えたが、最大 38個の LED をチラツキを抑えながら順次点灯させていくので、点灯時間の点では既に限界に達していた。そこでさらなる輝度 UP のためには LED の点灯方式を極力スタティック点灯に近づける必要が出てきた。

 で、スタティック点灯(や部分的ダイナミック点灯)すなわち同時に LED を点灯させる場合に解決しなければならないポイントは 2つ。

 1つ目のポイントは電源部の放熱。多くの LED が同時点灯するとなると消費電流が激増し、三端子レギュレーターによる降圧ではしっかりとしたヒートシンクが必須となる。

 2つ目のポイントはどうやってディマー機能を実現するか。点灯する LED が常に 1つなら前作のような「電流総量規制型」のディマー回路で部品点数を減らしつつ滑らかな輝度調整ができる(LED 自体の特性による多少の輝度のバラつきはソフトウエアで点灯時間を調整して吸収できる)。だがスタティック方式のように LED が同時に点灯する場合は、当然ながら LED の点灯数によって必要電流量が変化するため、電流を絞った場合に輝度がバラつきやすい(例えば 7 セグ LED に「18」を表示させると桁間輝度が異なる)。

 そこで今回は以下の方法をとる。

 ・LED 点灯を完全ダイナミック点灯から通常のダイナミック点灯へ
 ・降圧を三端子レギュレーターから DC/DC コンバータへ
 ・ディマーをハードウエアではなく PWM 制御へ


ハードウエア:

 基本は前作を参照。変更点は以下の通り。

  【電源まわり】

  前作は消費電流を最大 50mA 程度に抑えたため、三端子レギュレーターで何とか対応できた。

  しかし今回の消費電流は飛躍的に増加して最大 200mA 弱。仮に三端子レギュレーターで降圧すると熱損失は (14 - 5 )V x 0.2A = 1.8W となり、それなりのヒートシンクが必要。もともと高温になりやすいダッシュボード設置では下手をすれば熱シャットダウンしてしまう。

  そこで今回は小型の DC/DC コンバーターを投入することで放熱問題を解決。使用したはコーセルの SUS1R51205C (秋葉原店頭価格 \900弱)。9〜18V 入力 → 5V 出力で最大電流は 300mA とやや少なめだがそのぶんサイズが小さく、横倒しで実装した三端子レギュレーターとほとんど同じ実装面積で済むのが最大のメリット。

 なお、SUS1R51205C が入手できない場合はシガーソケット接続の携帯充電器をバラして流用するという手も ^^; (だいたい 5.5V 500mA 出力なので整流用シリコンダイオードで電圧を少し降下させれば使える)

  【ディマー回路】

  前作「電流総量規制」は使えないので、ソフトウエア PWM で輝度を調整する。

  明るさは前作同様フォトトランジスタを使うが PIC には直結せず、間にトランジスタをかましている。これは H と L の中間電位付近で予期せぬ大電流が流れないようにするため(C-MOS 入力 IC の基本的な注意事項。もっとも NJL7502L の明電流は 10mA MAX なので心配不要だったかも ^^; )。

  なお、明暗の検出感度(スレッショルド)は VR で調整できるようにしておく。

  【LED まわり】

  バー LED の入手先は前作参照。同時点灯時の輝度を揃えるため全ての LED に電流制限抵抗が必要となる。電流制限抵抗は実際に輝度と電流を確認しながら以下のように決定。

表示色 抵抗値 (Ω) 電流 (mA)
300 6.6
470 3.2
470 4.2
ピンク 150 13
300 10
7 セグ 22 27


  ピンクは輝度が低めでやや不便なので、橙で統一するのもアリ。

  7 セグ LED OSL10561-IB の最大定格は、スタティック点灯時 20mA、パルス点灯時 100mA(周期 10ms、DUTY 1/10)とデータシートに記載されている。定格に近づければ近づけるほど劣化(輝度低下)が加速するし、そもそも上記は 25℃ の場合の値であって、高温になるダッシュボード上に設置するにはかなり余裕をみておく必要があることから、流し込む電流は控えめに 27mA とした。もっともこれでもパルス時の定格から考えるとやや流しすぎかもしれない。輝度が落ちたら諦めて交換する方向で(殴)

  なお、管理人が使用したものとは違う LED を使用する場合は改めて Try & Error が必要。注意点としては、同一点灯ブロック内の LED が 8 個全部同時に点灯した場合でも 90mA(PIC16F887 の定格)を超えないようにすること。

 【その他】

  回路図中、2SC3199 は 2SC1815等で代替可能。

  一方 7 セグ LED には最大 200mA 弱流れるので、桁制御トランジスタはそれなりの Ic(コレクタ電流) が必要。2SA1015 (Ic = -150mA) や デジタルトランジスタ RN2205 (Ic= -100mA) では役不足のため、今回は Ic = -500mA の 2SA854S を投入。2SA950 (Ic = -800mA) でも可。


ソフトウエア:

 【LED 制御】

  7 セグ LED は桁内スタティック点灯〜桁間ダイナミック点灯(いわゆる普通のダイナミック点灯)とする。各セグメントには 27mA 弱流すため、全セグメント点灯時の消費電流は 200mA 弱とかなり多め。

  一方バーLED 24個を全てスタティック点灯するには流し込む電流を 4mA/LED 以内に抑えなければならない(PIC16F887 は全 I/O で合計 90mA までしか流せないから)。前作のようにバー表示だけを完全スタティック点灯するなら 4mA でも輝度十分なのだが、今回は 7 セグ LED も点灯する。となると 7 セグ LED 点灯時はバーLED を消さざるを得ず(全 I/O 合計 90mA 制限があるため)、完全スタティック点灯は不可能。

  そこで少し頭をヒネって 24個を 8個づつの 3ブロックに分け、ブロック内はスタティック点灯、ブロック間はダイナミック点灯とすることで 10mA/LED 流すことにした。これなら十分な輝度を確保しながら PIC の定格以内に消費電流を抑えられる。

 【PWM によるディマー】

  明るさ検出には前作同様フォトトランジスタを使用する。できれば明るさを A/D 変換で取り込みたいところだが、あいにく今回は A/D 変換可能なポートがすべて塞がっている(爆)。そこでかろうじて余っていたデジタル入力専用ピン(RE3)を使って明るさを読み取ることにした。ただ当然ながらデジタルポートでは明と暗の二状態しか検出できないわけで、単純に LED の輝度を2段階(2階調)制御にしてしまうと輝度変化が激しすぎて違和感アリアリ ^^; そこで輝度は 32階調で変化させることにした。

  また明るさ変化に対して敏感すぎると、特に夕暮れ時(明暗の境目ギリギリ)に輝度がバタつくことが予想されるので、ソフトウエアである程度のヒステリシスを持たせる。

  で、肝心の輝度調節方法について。本来 PIC16F877 は CCP1 でキャプチャを動作させつつ、平行してハードウエア PWM を動作させることができる。よってハードウエア PWM を使うのが一番手っ取り早いのだだが、あいにく CCP2 ポートも塞がっているのでソフトウエアで LED ON 時間と OFF時間を調節する。詳細はソースを参照のこと(殴)

 【その他】

  前作同様、車速パルス、HUD/通常表示、速度補正係数の変更は容易。ソースのごく一部を書き換えることで対応可能。


実装:

 前作の表示基板を流用するため、制御部の基板サイズも前作と同じに。おかげで基板裏面はチップ抵抗が山盛りになってしまった ^^; 新規に作るなら表示基板側に集合抵抗を実装した方が格段に楽。


ノイズ対策:

 停車時でも 0 Km/h にならない場合は車速信号にノイズが乗っている可能性が高い。

 管理人のフィットではカーナビから車速信号を分岐してシールド無しで 50cm 程度引き回しても特に問題はないのだが、車種や実装状態によってはノイズを拾う可能性がある。

 ノイズが乗っていると思われる場合は、

 ・車速信号の配線をなるべく短く(カーナビから分岐する場合は特に)
 ・車速信号の配線にはあまり細い線を使用しない
 ・場合によってはシールド線を使用
 ・ノイズ源(エンジンルーム)からなるべく離して配線する
 ・カーナビから分岐する場合は分岐点に近い位置にバッファ回路をかます

 あたりを試してみることをオススメする。

 なお、追製作された静岡の F 様からはパルス入力部に 1μF のコンデンサを追加したら収まった、とのレポートも頂いている。コンデンサの容量はあまり大きいと波形が訛って速度が正しく表示されなくなる可能性が高いので、実車に合わせてある程度の試行錯誤は必要であろう。


使用感:

 【ディマー】

  ヒステリシスと32階調制御により、案外違和感なく輝度が変化するので実走時でもまったく問題が無かった。

 【輝度】

  まずは直視状態だが、バー LED は前作の完全スタティック点灯版にほぼ匹敵する輝度が確保でき(写真参照)、また 7 セグの輝度もかなり改善されたため、どちらも強烈な逆光を浴びない限りは十分読み取れる。

  で、問題の偏光サングラス越しの場合。バー LED は問題無しで、7 セグ LED は日陰背景なら十分読めるが、日向背景だとギリ読めるぐらいにとどまった。まぁ 7 セグの読み難さを補完するためにわざわざバー LED を別装備しているわけで、偏光サングラス越しのスピード把握を容易にする、という目的は一応達成したことにしよう ^^; 結局、読み取りやすさでは 2LED/セグメントの大型 7 セグを使った別の前作が一番ですな ^^;


改良案:

 完成後に DC/DC コンバーターの出力波形をオシロで見たところ、スパイクノイズを伴う 300mV 程度の電圧変動が観察された。一応そのままでも問題無く動いてはいるが、出力側に 1000μF 以上のコンデンサを入れることでかなり改善できる。ただこの容量になると選択肢は電解コンデンサしかなくなるので、高温になりやすいダッシュボード上に置くには最低でも 105℃品、理想的には車載グレード品(125℃品、135℃品、150℃品)を使用すべき。(管理人は手持ちがなかったので実装していない。後日追加予定)


プログラム:

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

プログラム v1.1 ( asm & HEX ) (2011/01/17)
Speed_Meter7_v1.1.zip

謝辞:

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


 [電子工作のページへ]