2017年01月23日 | Arduino IDE 1.6.0以降でも使えるスケッチに差し替え。 |
この連載の2ページ目で作ったユニバーサル基板のレベルメータを元に、両面基板を起こしました。
回路図を次に示します。
ユニバーサル基板に組んだときの回路図と基本的には同じ回路です。使っている部品もほぼ同じなので、部品表は省略します。ただ、回路を変更した点が3箇所あります。
1つ目の変更点は、感度調整のヘッダを設けた点です。入力の信号のレベルが、利用方法や、利用者の好みの音量などで変わってくるため、CN6に感度調整用のショートソケットを差し込むヘッダを設けました。ここにショートソケットを差してから基板に電源を入れると、感度が12dB上がるようにしました。
2つ目の変更点は、電源の入力部分に保護回路を付けたことです。Q1は逆電圧保護回路として働きます。センタープラスの5VのACアダプタで動作させることを前提に設計していますが、誤ってセンターマイナスのACアダプタを接続して、逆電圧をかけた場合は、回路に電源が供給されません。また、CN3にショートソケットを差して、ACアダプタ、USBシリアルアダプタ、外部接続端子(CN5、後述)のいずれから電源を供給するか選択するようにしたことで、複数の電源を同時接続できないようにしました。
3つ目は、外部接続端子(CN5)を付けた事です。これは、自作アンプなどに組み込むことを想定して、ステレオミニジャックとACアダプタからではなく、ピンヘッダから信号と電源を取れるようにと考えての事です。
基板サイズを小さくするため、抵抗は全て1/8Wサイズにしました。基板のサイズは、100mm×50mmになりました。
今回作った基板用のスケッチは下のリンクからダウンロードできます。
2017年1月23日追記:以前公開していたスケッチは、Arduino IDE 1.0.Xでしかコンパイルできませんでした。Arduino IDE 1.6.0以降をお使いの方は、お手数ですが、スケッチをダウンロードしなおしてください。また、このスケッチを利用するには、MGLCDライブラリVer. 0.40以降が必要です。
スケッチを使うには、まずVer.0.40以上のMGLCDライブラリと、Timer1ライブラリをインストールしてください。インストールの方法は、ブレッドボード版レベルメータのソフトウェアについてをご覧ください。
上のリンクでダウンロードしたZIPファイルを解凍すると、S12232ZA_LEVEL_METER7というフォルダができます。その中のS12232ZA_LEVEL_METER7.inoというスケッチをArduino IDEでコンパイルし、レベルメータ基板のマイコンに書き込みます。
書き込み時には、CN3のSERと書いてある列に、ショートソケットを差し込み、電源の供給をUSBシリアル変換器から受けるモードにしておきます。
その後、CN2にUSBシリアル変換器を差し込み、USBケーブルでパソコンと接続します。
それから、Arduino IDEのツール→マイコンボード→Arduino Unoメニューを選択し、シリアルポートの設定を自分の環境に合わせた上で、スケッチを書き込みます。
その後、ACアダプタで利用するなら、CN1のACと書いてある列にショートソケットを差し込み、DCジャックにACアダプタを接続してください。内径2.1mmのプラグの付いた、5V、センタープラスのACアダプタが適合します。スイッチング型ACアダプタか、安定化ACアダプタをお使いください。電圧を安定化していないACアダプタを使うと、回路に過電圧がかかり、故障の原因になります。またArduinoに使うACアダプタは、7V以上のACアダプタなので、使えません。
最初の起動時に一度だけ、キャリブレーション操作(実装した抵抗の誤差を補正して正しい波形を表示できるようにする操作)が必要です。
次の写真のオープニングメッセージを描画している最中に、SW1を押して、そのまま約10秒ほど押し続けると、キャリブレーションが始まります。なお、キャリブレーション操作をする際は、ステレオミニジャックに何も繋がないでください。
キャリブレーションが始まると、"Measureing offset..."という表示が出ます。さらに、キャリブレーションが終わると、その結果の2つの数字(下の写真ではL:512 R:511)が表示されます。これらの数字は、抵抗値のばらつきの程度を表わしており、おおよそ512付近の値になるはずです。(3%以上の誤差が出るなら、抵抗の精度が悪かったり、回路が正しく組み立てられていないなど、何らかの異常があります)
なお、電源を入れ直してオープニングメッセージを表示している間にSW1を長押しすれば、何度でもキャリブレーション操作をやり直すことができます。
キャリブレーションが終わってしばらくすると、レベルメータの表示になりますので、ステレオミニジャックに音楽の信号を入力してください。
レベルメータの表示中にSW1を押すと、レベルメータの種類が変わります。これまでの4種類のレベルメータに加えて、電圧を文字で表示するモードも設けました。
交流電圧計モードにすると、電圧をピーク・ピーク値と実効値で表示します。一定期間、波形を観察して、その最大電圧と最小電圧の差からピーク・ピーク値を求め、されにその値を22で割ることで実効値を求めています。測定原理上、正弦波を入力しないと、正しい実効値が測れません。最大計測電圧は5Vp-p(1.77Vrms)です。
A/D変換の基準電圧を5Vの電源としているので、正確な5Vの電源を使わないと、測定結果に誤差が生じます。そのため、測定値は参考程度にご利用ください。もし正確な5Vの電源を与えたら、実用レベルの精度が出ると思います。
下の写真は400Hzの正弦波をパソコンのサウンドカードで発生し、それをレベルメータ基板と、デジタルマルチメータで同時に計測した際の写真です。
この写真を見ると分かるように、レベルメータ基板で測った実効値が0.751Vrmsと、デジタルマルチメータで測った実効値(0.769Vrms)よりも2.3%だけ低い値になっています。この時、ACアダプタの電圧が5.18Vと、規定の5Vよりも3.6%高かったため、その分計値を低く測ってしまっているはずです。レベルメータ基板での計測値(0.751Vrms)を3.6%大きくすると0.778Vとなります。ACアダプタの電圧が5Vちょうどなら、測定値も0.778V程度になると思います。この時のデジタルマルチメータの測定値とのズレは1.2%と、実用になる高精度が出ているのがわかります。
レベルメータ基板で測った交流電圧を、シリアル経由でパソコンに送るスケッチを作れば、2チャンネルの交流電圧のデータロガーができます。また、回路に少し変更を加えれば、直流電圧のデータロガーも作れます。いつか時間があれば作ってみたいと思います。
この基板の完成品をMaker Faire Tokyo 2013、NT京都2014、NT金沢2014において頒布しました。LCDレベルメータサポートページもご覧ください。
また、インターネットで購入できるようにもしました。
商品名 | LCDレベルメータ | |
税抜き小売価格 | 3500円 | |
販売店 | スイッチサイエンス | |
サポートページ | LCDレベルメータサポートページ |
インターネット販売においては、版権の都合で、ミクがネギを振るモードを付けられませんでした。以下のスケッチを書き込んだ上で販売します。
2017年1月23日追記:以前公開していたスケッチは、Arduino IDE 1.0.Xでしかコンパイルできませんでした。Arduino IDE 1.6.0以降をお使いの方は、お手数ですが、スケッチをダウンロードしなおしてください。また、このスケッチを利用するには、MGLCDライブラリVer. 0.40以降が必要です。
次のページでは、ネギ振りモードのアニメーションを、オリジナルの絵柄に書き換える方法について説明します。
商品名 | LCDレベルメータ | |
税抜き小売価格 | 3500円 | |
販売店 | スイッチサイエンス | |
サポートページ | LCDレベルメータサポートページ |
商品名 | S12232ZA | |
税抜き小売価格 | 400円 | |
販売店 | スイッチサイエンス | |
サポートページ | S12232ZAサポートページ |
商品名 | 122X32モノクログラフィックLCDシールド | |
税抜き小売価格 | 3333円 | |
販売店 | スイッチサイエンス | |
サポートページ | 122X32モノクログラフィックLCDシールドサポートページ |
商品名 | Arduino Uno用ブートローダスケッチライタシールドキット | |
税抜き小売価格 | 1440円 | |
販売店 | スイッチサイエンス | |
サポートページ | Arduino Uno用ブートローダライタシールドキットサポートページ |
商品名 | Arduino用ブートローダ/スケッチライタキット | |
税抜き小売価格 | 3000円 | |
販売店 | スイッチサイエンス | |
サポートページ | Arduino用ブートローダ/スケッチライタキットサポートページ |