ELM Home Page

2005. 2. 14
Update: 2005. 5. 29

オーディオ・スペクトラム・モニタ


SG12232C

去年の夏に秋月電子から小型グラフィックLCD(SG12232C)が発売になりました。意味もなく衝動買いした方も多いと思いますが、例によって使い道が思いつかない。というか、はっきり言って使い道が無い(笑)。グラフィック表示ならではの用途ならともかく、同じ\1500出すなら20桁×4行表示のキャラクタLCDモジュールの方が手軽で用途が広いと思います。

やがてジャンク箱行きになりそうになっていたので、とりあえず火を入れてみることにしました。単に魔女っ娘画像を表示して終わりではあまりにも芸がないので、オシロのように音声波形をダイナミック表示してみることにしました。ついでにスペクトラム解析も付けてみたところ、ラジカセのイルミネーションのようで面白かったので、レポートをまとめておくことにします。

また、ラジオバンドへの応用も可能です


ハードウェア


回路図

SG12232Cは、水平122ドット、垂直32ドットのフルグラフィックLCDモジュールです。コントローラとしてエプソンのS1D15200を2個使用しています。S1D15200は、1個で水平61ドットを表示できるので、左右半分づつを受け持っていることになります。このLCDは液晶パネルの駆動に2kHzの外部クロックが必要です。電源が入っているときは絶えずクロックが供給されている必要があります。さもないと液晶パネルが直流バイアスされて壊れます。バスインターフェースは、80系と68系が選択できますが、HD44780のような4bitモードはありません。マイコンに接続するには、少なくとも14本のI/Oポートが必要になります。

右に制御基板の写真と回路図を示します。お馴染みのmega8でオーディオ信号をA-D変換してLCDに表示しているだけなので、とても簡単ですね。A-D変換のプリフィルタには、MAX293(8次エリプティックLPF)を使ってみました。SCFを一度使うとオペアンプで組むのがアホらしく感じます。

ソフトウェア

右の図に内部処理のフロー図を示します。A-D変換された信号はFFTアルゴリズムでフーリエ変換されてLCDの左半分(64dot分)にヒストグラム表示されます。また、波形表示はゼロクロスまでシフトしてなるべく静止して表示されるようにします(右半分残り58dot)。

FFT演算は16bit固定小数点で行っています。最適化の結果、128点FFTとその周辺処理(ウィンドウ処理+バタフライ演算+スカラ変換)で約7.3msとなり、ほぼリアルタイム表示できました。このクラスのマイコンとしてはかなり高速といえます。スペクトラム表示は左端のバーから順に、基本周波数×0(DC成分)、基本周波数×1、×2、×3、...となっています。基本周波数はサンプリング周波数が9.6kHzだから、9.6k/128=75Hzとなり、今回の場合はスパン4.8kHzで75Hzの周波数分解能となります。

資料

Sign