エレクトロニクス工作室
No.94 電子メトロノーム
1.はじめに
No.83のようなヤドカリ式ツールを作っていると、様々なアイデアが出てきます。XYLから「メトロノーム」というリクエストがありましたので、安くて簡単なソフトで作る事を目指して作ってみました。今までよりも一回り小さい、写真1のような小型ヤドカリにまとめましたので紹介します。
写真1. このような音と光で表示する、小型のメトロノームを作成しました。
2.実験
一般的に電子メトロノームは、LCDかLEDに1分間に何拍かのテンポを表示させます。しかしその場合は、押しボタン制御とテンポをUP/DOWNする制御が必要となり、多少複雑になります。そこで、一番簡単で安易な方法としてロータリー式のDIPスイッチを使い、ソフトで読んだDIPスイッチの逆数、つまり周期を計算するようにしました。これで回路もソフトも簡単な構成となります。写真2はNo.2で紹介した「PIC/AVR開発用ボード」を利用して、実験中の様子です。この程度であれば、普通のブレッドボードでも同じようなものでしょう。
写真2. 実験をしている様子です。
実験をしていて気が付いたのですが、AVRは1.8Vから動作します。クリスタルオシレータを使用せずにセラミック発振子を使用すれば、そのまま1.8Vで使用できます。電子ブザーを調べると、写真3のは3Vでは音が出なくなりました。これでは、トータル的にアンバランスです。そこでネットで探し、写真4のムラタ製PKB24SPCH3601を入手すると2.0V以上で音がでました。これで2V以上、つまり単3×2本の仕様で十分に動く事になります。相当にくたびれた電池でも使えます。写真5はNo.22で紹介した電源を使って、最低電圧での動作をテストしているところです。
写真3. 3Vで音の出なくなった電子ブザーです。
写真4. ネットで2Vまで下がっても使えるものを探しました。少々大きめになってしまいました。
写真5. 低電圧での動作試験をしている様子です。
なお、セラミック発振子の場合、クリスタルを使った発振回路よりも精度はずっと下がります。しかし、このような用途の場合には、何ら問題にはならないでしょう。少なくともアナログ式のメトロノームに比べれば、はるかに正確です。
数年前までは、必ず秋葉原まで部品の買出しに行っていたのですが、最近では通販が多くなりました。規格をじっくりチェックできるし、混雑した店頭よりも探し物が容易に見つかります。この電子ブザーも秋月電子の通販で入手しました。
3.回路
回路は図1のようになります。CPUにはAVRのATtiny861Aを使っています。このチップが入手容易のため使っただけで、ソフトはわずかなエリアしか使っていません。確認はしていませんが、ATtiny261Aで十分と思います。
図1. 回路はこんなに簡単です。
ブザーは2Vで動くムラタ製です。電圧だけの問題ですので、電池を3本にすれば制約も少なくなり、「何でも良い」レベルになります。
セラミック発振子は8MHzとしましたが、手持ちの関係だけです。ソフトを変更すればAVRの上限まで変更できます。また、後述のように対応表を作ったくらいですので、この表の修正をするならば何でも良い事になります。
4.作成
ヤドカリ方式の小型版ですので、単3×2本用の電池ホルダーを使いました。もちろん基板も写真6のように半分のサイズにしています。いつものように実装図を図2のように作成してからハンダ付けを始めました。部品も少なくすぐに完成しますが、DIPスイッチ周りはスッキリしません。本当はISP用のコネクタ程度は付けたかったのですが、スペース的にあきらめました。実験ボードで何個か書き込んだのを作っておきました。ソフトの修正が簡単にはできない状態というのは、あまり感心しません。
写真6. 基板をカットし、これからハンダ付けをするところです。
図2. 実装図を作って配線しました。
なお、電池ケースに付いている電源スイッチは使わず、基板上にスライドスイッチを置いています。このほうが作りやすくなるためです。
今まではアルミ板の上にカラーで基板を固定し、アルミ板を両面テープで電池ボックスに固定していました。今回は小型軽量を目指し、基板を直接電池ホルダーに貼り付けてしまいました。従って、後々の修理や修正は困難です。その上綺麗には貼り付かず、すごく見難い外観になってしまいました。貼る前の動作チェックは念入りに行います。
電池ボックスを単3×4本用のものにして、2本分のスペースに回路を組んでしまう方法もあったと思いました。上手に作ってみて下さい。
5.ソフト
ソフトはBASCOM AVRを使って作りました。考え方としては1分間は60000msですので、これをテンポ数で割り周期を計算します。更にピッ音は50msとしましたので、周期から引き算して音を出さない時間を算出するという、簡単で単純なソフトです。1サイクルの最初にDIPスイッチを読みますので、他にLCDを制御したりするルーチンが必要ありません。これで充分に正確なタイミングを作る事ができます。ここからソフトをダウンロードできます。
BASCOM AVRのマニュアルを見ると、Waitmsコマンドには誤差があると書いてありますが、人間の感覚では全く解りません。私だけかも・・ですが。
テンポ数の設定をDIPスイッチで行う事としましたので、0〜F表示のDIPスイッチを2個使う事にしました。つまり10進表示ができません。0〜9表示のDIPスイッチを使う方法もあるのですが、そうすると99以上の設定時にもう一つのスイッチが必要となってしまいます。そこで、完全にヘキサにしてしまいました。ヘキサが解らない人でも、60⇒3Cと書いて貼っておけばそれほど解り難いものではありません。但し、とても売り物にはなりません。罪滅ぼしに表1を作って、一応は対応できるようにしています。
表1. このような変換表を作り、ラミネートしています。
DIPスイッチは正論理でも負論理でもソフト次第で使えますが、解りやすくするため負論理のコンプリメントタイプを使っています。つまり00を設定すると、全端子がGNDレベルとなって、そのまま00と読めます。設定できる幅は、本来は16進数では00〜FF(h)、つまり10進数で0〜255(d)となります。しかし、1サイクルの開始時にしかDIPスイッチを読みに行きません。従って0のままスタートしてしまうと、そのまま無限ループに入ってしまいます。1の時でも、そのまま60秒間も次の設定に移れません。そんなテンポを実際に使うとは思えないので、0〜29(d)は30(d)と見なす事にしました。表1は注意喚起のため、一部に色を付けました。
このようなズボラな作り方にした理由は、アナログのメトロノームを触ってみてからです。テンポは振り子に付けた錘の位置ですので、細かい設定はできません。それ程正確とも思えません。シビアには考えず、小さく作る事が一番と考えました。
6.調整
メトロノームですので、それ程シビアな調整ではありません。拍数を60、つまり3Cをセットしたときに、時計の秒針と同期すれば全く問題ありません。私の場合はピタリと合いました。ずれがあった場合は、ソフトで基準周波数の値を調整します。「正しい」とはいえませんが、対応表を修正しても良いと思います。
7.使用感
想像どおり、解り難い、見難い、回し難い、と言われました。使い勝手を差し置いて、作る方が簡単に作りやすく作ったのですから当然でしょう。その代わり小さくて軽いので、写真7のように譜面台に乗せられるというメリットがありました。アナログのものでは、とても無理です。LCDを付けると無理になるでしょう。
写真7. このように譜面台にもONできます。
メトロノームですから、頻繁にテンポを変えるものではありません。一番大事なのは正しいテンポである事です。少なくともアナログに比べると正確でしょうし、操作性もそんなに悪いとは思いません。と、居直っても仕方ありません。このDIPスイッチは寿命があるようです。2000ステップ/ポジションですので、交換時期が来る頃には、もう少し使いやすいものをLCD表示で作るか、逆にDIPスイッチを1個にしてしまい30から5ステップ毎にしてしまうという、超マイナーチェンジでも良いかもしれません。対応表を作ってしまえば何でも「あり」です。
電子メトロノームは、楽器店に行けば3000円程度で売っています。しかし、自作すると700円位の部品代で作れてしまうのは楽しいです。