久しぶりにマイコンで遊べる時間があったので、ホビー系で人気のあるMicrochip社のPIC12F690を使って車載用マル チメーターを作ってみた。 思い返してみれば最初にCyberPit HILOとして公開を開始してから13年以上になるがマイコン使った物の製作記事はこれが初めてだった、全アナログな回路で構築するのもオツなもんではあ る が 用途次第ではマイコンのほうが圧倒的に簡単に処理できる場合もあるし、ソフトだけで大胆なカスタマイズが可能にできるケースも多い、最近の石ならそこそこ のDSP的な演算もで きるので今後は積極的に採用していくこととしよう。
では簡単に今回製作したマルチメーターの主機能を紹介すると
- 電源電圧計(ディップ・ホールド機能付)
- メインアンプ用出力パワー計(ワット表示、インピーダンス設定、ピーク・ホールド機能付)
- ヘッドルームマージン表示(dB値表示)
- バーグラフ表示(2ch独立のdB単位ヘッドルーム表 示)
【基本方針】
今回は青色バックに白色キャラクターが表示できる液晶モジュールを採用し、多機能ながらも判りやすくシンプルな表示になるように心がけた、また 液晶モ ジュールの外字登録機能を最大限に駆使して 可能な限り「いかにもキャクター液晶使ってます」的なチープな印象を与えにくいような画面になるよう配慮し た。 操作を簡単にするためにボタンはただ一つだけとしたが、このボタン一つで通常表示モードの切り替えと、初期設定操作を実現するという一見ムリっぽい 難題 に挑戦することにした、うまくデザイン出来れば今までにない画期的な操作スタイルが確立できるであろう。 設計に際し構想段階では以下のような目標を設定 し た。
基本構成としてマイコンのADCで電圧を読み、この値をCPUで処理して液晶モジュールに見やすく表示するという単 純明快なユースケースであ る。 プログラムをC言語で記述したので効率が低く、たったこれだけの機能ななのに内蔵プログラムメモリ領域をほぼ使いきってしまった。 やはりこの先を 目指すのであればPIC24Fシリーズに乗り換えるのが正解なのかもしれない。 ADCの入力ch数にはまだ余裕があるので、ここに加速度センサーを繋い でコーナリング中の横G最大値を記録したり、車重+搭乗者体重を設定して加速中にリアルタイムで実馬力を表示するエンジン・パワーメーターなんてバリエー ションを作ってみるのも面白そうだ。
【システム構成解説】
電源電圧のように瞬間的な変動といっても比較的ゆっくりでなだからな変化であれば問題ないのだが、問題なのがオーディオ波形の測定方法で 当初 はマイコンのADCを使って音声波形を直接 10bitADCでサンプリングし、これをソフト的に積分することで真の実効値を表示しようかと考えていたのだが、8ビットコアのC言語で記述するコード で は信号処理できる帯域に限界があることと、回路が片電源なのでオフセット電位を正確に差し引くという処理は意外に大変だし、この演算結果次第で小レベル時 の精度が左右されてしまうことと、スピーカーの保護目 的なら波形ピークの監視のほうがより現実的だと考え直して、アナログの検波(全波整流)回路+ADCでレベル検出を行うという半アナログな構成に落ち着い た。 片電源で無調整でも 安 定動作する全波整流回路の設計にはずいぶん悩んだが、最終的には比較的安価なLM324という石の内部回路構造の利点をフルに活かしてやや特殊な検波回路 を考 案した。 ちなみにこの回路は4558とかの普通のオペアンプでは絶対にマトモに動かないので製作される方は使用部品に注意されたし。
【回路図】
以下に全回路図を掲載します。
【回路動作解説】
システム全体での消費電流の殆どはLCDモジュール のバックライトなので通常の車両ならアクセサリ電源だけで十分駆動することが可能だ。 上 記回路図でいちばん上側が電源回路で、三端子レギュレターを使い+12V電源から安定化した+5Vの電源を得ている。 JP2のジャンパーで監視する対 象となる電源を選択することが可能、ただし 回路を簡単にしたい事情から現状の回路だと車両の常時電源を監視する場合 R21とR11に常時1mA程度と僅かではあるが電流が流れるのでバッテリーの電荷を消費する、どうしてもこれが気になるのならP-chのMOS-FET をモニタ電圧検出用入力に入れるなどしてエンジンオフ時には完全に切り 離されるように改良して欲しい。 REF-ADJの半固定VRは通常アンプが丁度クリップする出力のときにヘッドルーム表示が0dBになるように設定 するが、大出力アンプの時など殆ど振れなくてつまらないと感じるのなら適当にセットしたとしても特に壊れることもないので感覚的に?好きなようにセットす るといいだろう。
CN1の1ピンと3ピンをそれぞれ監視したいアンプのSP端子と接続する訳だが、BTL構成のアンプの場合はSPプラス端子側だけを接続し、アンプのSPマイナス端子側とは絶 対に接続 しないよう注意して欲しい。 両者の見分け方は、テスターをACレンジにして再生中に車体グランドとSPマイナス端子間の電圧が動かなけれ ばシ ングルエンド、逆にSPプラス側と同じように振れるのならBTL構成だ、昨今のカーオーディオ機材なら殆どがBTL構成、ホームオーディオ機器なら多くが シングルエ ンドだと思う。 BTL/シングルエンド形式での表示値の違いは初期設定モードの中で設定することで補正される。 残念ながら本回路はクラスDとかのデジ タルアンプの場合だとうまく動かない可能性が高い。
SPK 接続端子から入った信号を処理する初段回路のIC1(LM324)でIC1AとIC1Bがほぼゼロボルトから動く仮想ダイオード回路だ、ここでは入力波形 のマイナス領域だけがゲイン−1倍に反転増幅され、プラス領域では帰還抵抗を素通りする、その結果として全波整流が実現され波形の上下のピークがいずれで も検出可能となっている。 後段のT1とT2のバッファ(エミッタフォロワー 回路)でのB-E間の電位差を打ち消せるようにIC1AとIC1Bの非反転入力端子にはオフセット電圧を掛け小レベル時の誤差を低減するよう努力をしてい るが無調整なので精度的には気休め程度。 また通常このような理想ダイード回路では帰還ループに入れるダイオードは1本 で済ますのだが、予備実験での動作評価をもとにゼロクロス時のいわゆる「キレ」を良くするためにわざと三本直列にしてある。 T1とT2のエミッタには 1μFのコンデンサーと抵抗で時定数を持たせて低い周波数でのリップルを低減させ値が読みやすくなるようにしている。 このようにして検波/平滑化された 信号は最後にゲイン1倍のボルテージフォロワー(IC1CとIC1D)に入る、ヘッドルームを稼ぐためにLM324は直接12V電源で駆動しているので、 PICのADC入力電圧がオーバーロードしないようにLM324の出力を抵抗で分割し、ほぼ5VフルスケールにしたものがAD変換用として入力されるよう になっている。
PIC16F690はピン数に余裕があるのでLCDモジュールは端子をケチらずに8bitデータ接続で駆動している。 これでも基板に電源を接 続していない状態であればISPヘッダーか ら基板にPICを載せたままでプログラム書き替えることが可能だ。
【ソフトウェア動作解説】
【使い方】
初期設定の方法:【ソースコードとバイナリ】
上記の記事における情報は、確実な性能及び動作等の一切を保証するものではありません。
従って本情報に基づいて実施した際に、動作しない、もしくは、期待した性能が得られない、燃えた、壊れた等の障害が発生したり、火災や事故が生じる可能
性もあります。万が一に事故等が発生したと
しても、当方は一切の責務において関知しないものであります。 従って実際に実験等を行う際は、あくまでも各自、個人の責任において行
ってください、特に腕に自信の無い方は絶対にトライしないで下さい。
[Caution:] (Please use above documents, At Your own risk!)
Fixed 2010.Apr.24th