2016/10/24 新規作成

法人向けのETC専用カード

はじめに

電子マスカットさんのオーディオレベルメータの記事を見て、自分も作りたくなりました。
ただし、LEDの個数を増やして派手に光るようにアレンジしてみました。

本機では左右の音声チャンネルはそれぞれ最大128個のLEDまで点灯でき、左右合わせると最大256個のLEDを表示できます。


注意

もし何らかの損害が発生しても当方は一切責任を負いませんので、あくまでも自己責任でお願いします。


ハードウェア製作

構成

音声信号の整流+増幅までの構成は、マスカットさんの記事そのままです。
その後は音声電圧をマイコンのA/D変換機能で読み、電圧に応じたLEDを点灯します。
たくさんのLEDを点灯させるため、LED状態の保持に 74HC595 を使用します。

LEDを接続できる単位は、片チャンネルあたり16個、32個、64個、128個の4通りです。

回路図

メイン基板の回路図(クリックで拡大)

回路図中の RCK 信号は1サンプルごとにLow/Highのパルスを出力します。
周波数カウンタやオシロスコープをお持ちの方は、この信号線を観測するとサンプルレートを知ることができます。

LED基板の回路図(クリックで拡大)

LED基板の74HC595は4個や8個単位など、実装しやすい数で作ると良いと思います。
この基板は連結して容易にLEDを増やすことができます。
基板の入出力それぞれにコネクタを設けると接続が楽になります。

メイン基板とLED基板を分けたのは、たとえばLEDをPCモニタやテレビ画面の左右に設置するなど、左右のLEDが分離できれば便利そうだからです。


ロジックレベルを長く引き回すのは宜しくないかもしれませんが、現在はメイン基板とLED基板間は20pのケーブルでつないでいまして、特に問題は出ていません。

接続の例です。

LED基板を連結すると容易にLEDが増やせます。

大きなユニバーサル基板があるならば、最初から多めに実装する手もあります。

もちろん、一枚の基板にメイン回路とLED回路を収めてもOK。

一時的に片チャンネルのみ連結して、より多くのLED表示をテストしてみる。

LEDの電流制限抵抗は、電源の供給能力とLEDの数とのバランスで決めてください。
仮に秋月さんにある5V-2Aのスイッチングアダプタを使う場合、一般的に定格の2Aを目一杯使うとアダプタに負担がかかって寿命が縮みますから、アダプタの安全も考えると1A程度で使うのが良いでしょう。ここで全256個のLEDを接続した場合は、1個のLEDあたり4mA程度しか流せません。

どの機器につないでも入力レベルが足りない場合は、回路図中の10k〜4.7kと記されている部分を4.7kに変更し、オペアンプの増幅率を上げてみてください。
マスカットさんの記事では上記の抵抗は10kを使い、LM3915に対してフルスケール1.2Vになるよう設定されています。
本機の場合はマイコンのA/Dリファレンス電圧が2.5Vですから、必要なレベルが2倍ほど高くなっています。

ちなみに、LED基板のバス配線作業中は えるむ さんの「回路内導通チェッカ(旧)」が大活躍しまして、電子工作には手放せなくなりました。


ソフトウェア

せっかくマイコンを使うのですから、LEDの表示はソフトでパターンを変えられるようにしました。

まずLEDのバー表示とドット表示を切り替えできます。
次に、LEDのレベル表示は対数スケールとリニアスケールの切り替えができます。

チープなマイコンでリアルタイムに対数計算を行うのは荷が重いため、対数変換テーブルを用意してマイコン自身の計算処理を極力減らしています。
おかげでマイコン自身の処理は単純になり、A/D変換した音声レベルを元にテーブルを参照し、74HC595 に表示データを与える程度の処理となります。

128LEDの対数表示モードでは、マイコンのA/D分解能の不足により、音声レベルの低い辺りがリニア的な変化になってしまっています。
本機は処理速度を考慮して8bitでA/D変換を行っていますが、10bitに変更しても同じです。
実際に使ったところ、あまり違和感を感じませんでしたが、無難なのは片チャンネルが64LEDくらいかと思います。

自分で作っておいて言うのもアレですが、128個のLEDは変化が激しくて目が疲れます(汗

ソースファイルとHexファイル
levelmeter.zip(12KB)


動作確認

まず、接続したLED数をスイッチで設定します。
次に音声入力端子へCDプレーヤやPCのライン出力などから繋ぎ、電源を入れます。

すると電源の投入時に、LED設定のテスト表示が行われます。
例えば64個のLEDを接続し、本機のスイッチで64個表示の設定をした場合は下図のような動きをします。

もし、64個のLEDを接続したにもかかわらず、設定スイッチが32個表示の設定になっている場合は下図のようになります。

ボリュームを調整しながら、音声に合わせて下図のようにLEDが振れることを確認します。

※GIFアニメの仕様上、動きが遅いですが、実際は音声に合わせて高速に動きます。

敢えて、接続しているLEDの個数とスイッチの設定とを異なるように設定すると面白い動きをします。
例えば64個のLEDを接続している時に、スイッチ設定を16にすると、

このような動きをします。

これはシフトレジスタにスイッチ設定分のデータのみ送っているからです。
シフトレジスタに16ビット分のデータを送ると、前の16ビット分のデータが次のシフトレジスタに押し出されるためです。


最後に

LEDは広拡散のFluxLEDで作ると派手に光りますし、逆にチップLEDを細かく並べて高精細に表示しても格好いいと思います。

マスカットさんの記事にもありますが、砲弾型LEDですとそれぞれのLEDの光軸がブレてしまい、光がばらばらで見た目が汚くなってしまいますのでご注意ください。

物を作った本人が記事を書くと、必要な情報は何なのか分からなくなってきます。
もしご覧になって分からないことがありましたらお問い合わせフォームからご相談ください。

当サイト内の検索