オーディオクラフト工房(4)

更新日:2004年11月15日


オーディオレベルメーターを作ろう

今回のクラフト工房からPICを使った電子工作的な製作を進めて行きます。
その第1弾が「オーディオレベルメーター」です。世界最強のPIC16F88を使います。
最近マイクロチップのHPでPICの通信販売が可能になったので最新版をすぐに購入することが出来るようになりました。早速WEB上からPICを注文してみました。

海外からの直送のため、かなりの送料を取られましたが大変便利です。

(海外から届いた最強のPIC16F88です)
何が最強かと言いますと、PIC16F84と同じパッケージに最新の機能が詰め込まれていることです。
(PIC16F84AとPIC16F88の比較)
(PIC16F88のピン構成)
如何でしょうか、上位機能を持つPICに搭載されている内容を全て持ち合わせいます。
今回はその中から10bitのA/Dコンバーターを使いこなしてみましょう。
オーディオレベルメーターの基本構成
まずは基本となる回路構成を決めます。いろんな資料を参考に次のようにしました。
(オーディオレベルメーターの基本構成)
電源はアンプと共用するためにDC12Vとしました。PICへの供給については5.5Vとします。
PICはLED表示の処理を受け持ちます。
PICの電源が5.5Vのためそれ以上の電圧入力が無い様に簡単なリミット回路を設けています。FET入力回路・平滑回路については随分昔の「ラジオの製作」の記事を参考にしました。(全く同じという説もありますが・・・・)
その後、電圧を上げるためにOPアンプで8倍増幅をしています。
出力に5.1Vの定電圧ダイオードを入れています。詳細は回路図を見て下さい。
オーディオレベルメーターの回路図
では詳細回路図を見て頂きましょう。まずは入力回路部です。
(FET入力回路・平滑回路・8倍回路・リミッタ)
いかがでしょうか、難しいところはありませんね。続いてPIC回路部です。
(PIC回路・LED表示部)
今回の製作はポートをかせぐために、PIC内蔵の発振回路を使います。
オーディオレベルメーターをの基本仕様
1)それぞれ10個のLEDでオーディオレベルを表示します。
2)LED表示はバー表示とドット表示の2種類が選べます。
3)LED表示間隔はdB表示とする。
世間にはオーディオレベルメーター用のICが数多く存在しますが、今回の製作のように、PICを使うところに意義があるのです。
オーディオレベルメーターのポート割付
(オーディオレベルメーターのポート割付)
今までの製作と違うところはRA6、RA7が存在することです。発振回路を内蔵にした分、RA6、RA7のポートが使えるようになります。
オーディオレベルメーターの入力回路部
一応入力回路の検証をしておきましょう。入力にシリコンオーディオプレイヤーを接続してオシロにて波形を観測しました。
(FET出力) (平滑後)
(リミット後)
定電圧ダイオードの働きで約5.2V以上の信号は正しくリミットされています。
信号のレベルについてはあくまで私の製作の場合です。あまり気にしないで下さい。
オーディオレベルメーターのLED表示
LEDの表示はdB表示間隔で行います。次の表はそのdB値に表示を合わせるために計算したシートです。一応参考に付けておきます。
(dB表示検討シート)
まず電源回路の電圧は5.5Vです。入力回路部からの出力電圧の最大値も約5.2Vです。
従ってA/Dコンバータの基準電圧を5.5VとするとA/D変換のデータは10bitの最大値にまでなりません。その辺りを検討するためのものです。またdB表示に対する数値設定検討にも使用しました。dB表示については-15/-12/-9/-6/-3/0/+3/+6/+9/+12dBの3dB刻みとしています。実際の入力最大電圧を5.2Vとしてその時の表示が+12dB付近に来るようにしてあります。
オーディオレベルメーターの電源回路
5.5Vの電源回路にはダイソーの車載用携帯充電器をばらして使用します。
これで300円ですから、へたにICなどの部品別に購入するよりずっと安いです。
(ダイソーの携帯充電器)
どこのキャリア用でも出力電圧は5.5Vと思われます。
(コンパクトにまとまった内部回路)
基本的にはDC-DCコンバータなのでノイズを防止するために出力側に0.01uFのセラコンを入れました。赤色LEDは必要ないので取り外します。
オーディオレベルメーターの回路製作
では順にケース加工及び回路の製作についてダイジェスト写真で示します。
(バラックにて入力回路部検証中)
(入力部回路実装)
(ケース加工中。長い角穴はハンドニブラーが便利)
(まずは入出力部品を取り付けよう)
製作のポイントとして、アンプと接続するために、DC12Vラインの並列出力、オーディオ入力の並列出力端子を設けることが必要に必要になります。
(正面と裏面です。結構良い顔をしています)
オーディオレベルメーターのソフト留意点について
ソフト詳細は後ほどのソースで詳しく見て頂くとして、ここでは実際の製作をしながらつかんだポイントについて説明します。
まず10bitのA/Dコンバータを使用するためにいくつかの設定があります。PICの仕様書抜粋から示します。
(アナログ入力の設定)
どのアナログ入力を使用するかの設定を行います。今回はAN0/AN1を使用します。
(A/Dコンバータの設定)
ADCON0/ADCON1で設定します。設定詳細は各自仕様書にてご理解下さい。
(プログラムでの設定ソースリスト)
(A/Dコンバータの基準電圧)
分かりやすい図が仕様書の中にありましたので、今回の内容を図示しました。
結局VREF+はAVDD、VREF-はAVSSとしています。
(A/D変換クロックとメインクロック周波数との関係)
メインクロックの16分周をA/Dクロックとしています。この場合メインクロックには10MHzまで使用出来るという対応表です。今回は4MHzで動かしますので、全く問題ありません。
(変換データの取り出し)
A/Dコンバータの変換出力については今回は左詰めの上位8bitの読み出しとしています。
次に内蔵クロックについて説明します。内蔵クッロクは周波数の設定が出来ます。
今までの製作から考えて4MHzで問題無いと考えます。
(内蔵クロックの設定)
(プログラムでの設定ソースリスト)
内蔵クッロクの設定についてはアセンブル時にCONFIG設定が必要になります。
ちなみに私は次のようにしています。このマイコンにはCONFIG1とCONFIG2があります。最初の頃のソフトはここのCONFIGでエラーが起きてしまい原因解明に大変でした。
(CONFIG設定)
以上の部分だけ押さえておけばソフトは極めて簡単です。
オーディオレベルメーターの大完成
毎回恒例の大完成した姿です。うーーん、すばらしい。
(完成形内部姿)
(完成形外観姿)
オーディオレベルメーターのLED表示タイミング
LED表示がちらつかい程度で極めて高速表示を行っております。
(波形表示タイミング)
Rch/Lchをほぼ5msecごとに表示を行っています。A/Dのスキャンも10msecに一回行っていることになります。いかがでしょうか。LED表示のレスポンスは極めて良好です。
オーディオレベルメーターの全ソースコードとHEXコード
毎度おなじみのソースリストとHEXコードです。
一緒に圧縮してありますのでダウンロードしてからじっくり眺めて下さい。
ソースリストとHEXコードはこちらです。
ということで皆さんいかがでしたでしょうか。今回は1作品を一気にHP化してみました。
PIC16F88のA/Dコンバータは大変使い易いです。これからもどんどん使いたいですね。
次回もオーディオクラフトネタですがPIC16F88を使います。ご期待下さい。
これからもオーディオクラフト工房はどんどん楽しくなっていきます。
よろしくお願いいたします。
オーディオレベルメーターの電源回路
次回の製作はFMチューナーなのですが、このレベルメーターの電源回路のノイズ発生が大きく影響したため、ダイソーのDC-DCコンバータから通常の7805を使う電源回路に変更しました。5.5Vで設計しているためダイオードを使用して約5.5Vにしています。
次回のFMチューナーで同様の回路としていますのでそちらを参考にして下さい。
よろしくお願いいたします。

オーディオクラフト工房へ戻る