« 2010年11月21日 - 2010年11月27日 | トップページ | 2010年12月26日 - 2011年1月1日 »

2010年12月5日 - 2010年12月11日の1件の記事

2010年12月 9日 (木)

電子音量リモコンの実装版の回路図・ソース公開

Pc043427

 先月末から珍しく行事が重なり、忙しくてなかなか電子工作のまとまった時間がとれなかった。実装版の電子音量リモコンは完成しているのだが、公開する予定の回路図を描く暇がない。なんやかやで、ブログの更新が2週間以上も空いてしまった。やっと時間が出来たので実装版のソースコードと回路図をアップする(12/9/2010)。

ケースのレイアウトを考える(11/22/2010)
 ブレッドボードでの試作に成功したので、実装を本格的に検討し始めた。予定しているケースはタカチのSS-125(サイズ80×32×125)である。このケースは以前作ったリズムキャプチャー用に買ってあった。ブログを見直したら2年も前のことだ。月日の経つのは本当に早い。

 このケースは裏蓋がついていて、基板を裏側(ハンダ面)から固定するタイプである。基板固定用のビス山が4隅に出っ張っていて余り大きな基板スペースがとれず、工作が面倒なこともあって別のケースを買い直し、このケースはそのままになっていた。

 つや消しの黒の何の変哲もない小型ケースである。こんどのはオーディオ機器なのでもう少し見栄えに凝りたいが、ちょうど入りそうな大きさだし、このまま遊ばせておくのも可哀そうだ。とりあえずはこれで実装して駄目なら買い直しすることにしよう。

Pc093449

 千石電商で買った基板にピンで固定するタイプの小型電源トランス(S.E.L)、オーディオ入出力用のRCAジャック4本(秋月の安価なもの)、これにフューズボックス、7セグLEDなど必要な部品を集めて基板に載せてみる。トランスが意外にかさばり結構タイトなレイアウトである。

 レイアウトがかなり窮屈なことがわかったので、サーキュラーソーで汎用基板の4隅をカットし(これ専用の基板もあるようだが高価)、基板がケースに入るように加工した上でさらに部品を基板に仮配置する。これをやらないとあとが危ない。工具があるお陰で、こういうことが簡単に出来るようになった(前はこれがおっくうで別のケースに走った)。

 電子ボリュームPGA2311と、CPUチップATTiny2313の位置が問題だ。アナログとデジタル、電源部はなるべく離したいが、ケースが小さいのでどうしても近くなってしまう。頭の痛いところだ。

Pb183400

 仕事の帰り、秋月で7セグLEDを買い足した。今までにない色、青(OSL10561-LB ¥100)と赤(OSL10561-LRA ¥60)を入手する。リモコンを考慮して少し大きめだ。いずれもカソードコモン。実装はトランジスタアレイでなく単独のトランジスタ(2SC1815)でドライブする予定。色は流行りの青を使うことにする。

 久しぶりのケース工作である。7セグLEDはケースの縦面に表示するので7セグLEDを固定したドーター基板を立てる必要がある。良い方法を思いついた。このあいだのリニアPCMプレーヤーでも活用したCDプラスティックケースを使ってアングルを作ることである。

 しかし、適当なCDケースの角はみんなプレーヤーに使ってしまって使えそうな部分がない。そのときふと横に山積みになっているFDの空ケースを見つけた。こいつはCDケースより厚いが、うまく使えそうだ。サーキュラーソーでコーナーを切り取ると、基板を立てる丁度良いアングルになった。

Pc043426

ケースの工作に汗を流す(11/27/2010)
 基板の工作で一番厄介なのが、コンセントやジャックの取り付けである。こいつらは大抵、汎用基版のピッチ(100mil)を無視したピン配置なので、特別に穴を開けてやる必要がある。このRCAジャックもそうだ。結局どのピン間隔も100milピッチでないので、ドリルで2ミリの穴を4×4、16箇所もあけさせられる。

 微調整も大変だ。紙のフットプリントを基板にあてて慎重に開けたはずだが、正確にあけることは難しい。それに、ここは力のかかるところなのでいい加減な実装ではすぐボロが出る。念入りに取り付け穴をカッターで広げて調整する。何のことはないRCAジャックをつけるのが一番の大仕事になった。

 次の課題は、7セグLEDを取り付けるドーター基板の固定だ。例のFDケースから切り取ったアングルにドーター側2ミリとメイン側2.6ミリの穴(セルフタッピング)を開け、それぞれ固定する。一方のアングルはスペースがないので基板をはさむ溝をアクリルの小片で作り、これに基板をはさんで固定する。うまいぞ。一人で悦に入る。工作はこういう工夫で課題が解決した時が特に楽しい。

Pc093448

 最後の大仕事は、この7セグLED用のケースの窓あけだ。7セグLEDをドーター基板に仮止めし、何度も開ける位置を確認しながら慎重に窓を開けていく。ここはやり直しが効かないところだ。ルーターで少しづつ削りだしては現物と見比べ、最後はやすりで整形し、LEDがきっちりケースの外に見えるように仕上げた。LEDが少し傾いているが、これは仮止めのハンダ付けを調整すればきれいになる。よーし、ほぼ満足できる出来栄えになった。

 残るは、赤外線センサーの穴と、信号受信を知らせるLEDの穴だが、位置が確定していない段階で穴を開けるのは危険なのであとで現物合わせにする。それに信号受信用のLEDは考えて見たらあまり必要ではない。今は7セグLEDはリモコンの複数コマンドで1つ数字が変わるようになっているが、これをリモコンの一回のコマンドで必ず動くようにソフトを変えてしまえば確認用のLEDは不要になる。要するに手抜きだが、この電子ボリュームの音量調整は256段階もあるので(普通は60から100)、問題ない。

Pb283418

7905は通常のレギュレーターと違うピンアサインだったとは(12/1/2010)
 とんでもない間違いをしてまたすんでのところでレギュレーターを壊すところだった。よほど、レギュレーターにたたられているようだ。

 電源周りのハンダ付けが終わり、kumanさん流の逐次開発方式(すっかり愛用している)で、とりあえずは電源テストと、途中でACコードを仮付けしてテストしたときのことである。

 プラス側はちゃんと5V(4.998V)でているが、マイナス側は-1.5Vしか出ていない。それにレギュレーターが2つとも少し熱い。無負荷なのにおかしい。負電源側のレギュレーターは始めて使う7905だ。配線は何度も確かめた。負電位のコンデンサーの極性も間違っていない。

 これは7905のピンアサインを疑うしかない。7805と同じにしているが、一度も確認したことはない。PCを立ち上げてNJM7900(7905A)のデータシートを探す。

 えっえっえー、7905のピンアサインは7805と違う! レギュレーターは左から、in common outが常識だが、7905は左からcommon in outなのだ。あーあ、また壊したか。

 暗い気持ちでハンダ付けをしなおす。UEW線と違って、電源用のAWE28撚り線はハンダ付けしにくい。それにトランスが大きいスペースをとってレギュレーター周りのレイアウトが窮屈だ。苦労して修正する。半田ごての熱でまたレギュレーターを壊さないか冷や冷やする。

 再度テスト。良かった。マイナス側も-5.003Vと想定どおりの電圧。熱も出なくなった。いやいや、それにしても落とし穴だった。どこかの神社でレギュレーターのお払いをする必要があるか。

電源断のときのボリュームレベルを記憶するロジックを考える(12/3/2010)
 ブレッドボードで動かしている電子ボリュームの使い勝手だが、どうも5回に一回音量レベルを記憶するロジックはすっきりしない。感覚的なものだが何となく違和感がある。やはり電源を切る直前のレベルが再現されないと気分が良くない。

 何とかしたい。工作の合間に電源を切る直前にEEPROMに書く方法をあれこれ考えていた。始め、CPUをシャットダウンさせるためのリセットICを考えていたが(実際に買ってきた)、その必要のない方法を思いついた。

 EEPROMに書いた後、自ら無限ループに入ればそのうち電源が動作電圧以下になり、CPUが止まる。これなら電圧低下で暴走し、他に悪影響を与えることがない。

 簡便に出来そうに見えたので、早速、オシロを使ってテストしてみることにする。実際にCPUの消費電流を測り、その抵抗とバックアップコンデンサーの時定数の動きをオシロで測る。はじめスーパーキャパシター(電気二重層)を考えたが、計算してみるとそんな大きな容量は不要だ。数百μFでもEEPROMに記録するくらいの時間は確保できることが分かった。

 あらためて2313の電流消費量を測る。なにい100mAを越えているぞ。これはどういうわけだ。慌てて詳しく調べる。ああ良かった、PGA2311の電源が入っていないときは、こちらに60mA近くも流れ込むことがわかった。

しかし、それでも40mAは流れている。7セグLEDのドライブは考えてみたら、2313の出力ピンだ。7セグLEDは2つ全体ではこれくらい流れることがわかって胸をなでおろす。はじめは誤配線かとあわててトランジスタアレイのデータシートを確かめたりしていた。7905の例もある。大丈夫間違いはない。データシートによれば、2313は全体で200mAまで電流を流すことが出来る。

 100μFにSBD(ショットキーダイオード)をかけてオシロで電源断の過渡現象を見る。よーし、数十msは、2313の最小動作電圧の1.7V以上が出ている。EEPROMのアクセススピードを測るためプログラムに測定ロジックを入れる。所要時間は書き込みで3.5ms、読み込みの方は0.1msだった。十分余裕がある。

 しかし、電源断のあとVccが素直に0Vにならない。何故か1~2V近辺で暫く推移する(数百ms)。これでは正しい電源断のタイミングが得られない。ここでリセットICをこのセンスに使うことを思いついた。リセットICの出力は、電源電圧が一定以下になると、ぴったり0Vになるので、このリセットピンをセンスすれば電源断を把握できる理屈だ。

Pc093444

 これはいいのだが、問題は逆に電源を入れたときである。100ms以上のディレイが起きるので、これを回避するロジックを入れないといけない。何かしかけがおおがかりになってきた。それにこんなことにリセットICを使っている例はどこにも見当たらない。そんなこともあって、電源断のときのEEPROM記録は当面諦め、とりあえずは今のソースのまま実装を急ぐことにする。

実装版のソースコードと回路図を公開(12/4/2010)
 ケースの基板の配線がすべて終了した。7セグLEDをつけないで実際に音量が調整できるかどうかのテストは済んでいる(問題なく動いた)。いよいよLEDのテストだ。トランジスタの配線部分を何度も確かめる。

Pc043422

 通電する。おおお、青色LEDが輝いて数字が出てきた。一発で動いた。リモコンを操作する。ははは、数字が逆だ。1位が左に、10位が右に表示されている。ドライバーピンをとりかえて問題なく音量レベル値が出た。こうなると勢いである。実際のQUADのアンプにつないでテストすることにした。

 祈る気持ちで電源を入れる。よーし何の問題なく音量がリモコンで操作できた。いやあ嬉しい。長年の夢が実現した(ささやかな夢だけど)。少し動かしてみてすぐ外した。というのはこのソフトは、PGA2311が35dBのアンプにもなるテストバージョンで、もし暴走すると大きな音が出てアンプやスピーカーを痛める可能性が0ではないからである。

Pc043436

 公開に向けて、回路図をBsch3Vで描き始めた。これが結構、手間がかかる。回路には余り自信がない(自己責任でお使いください)。アナログは一点アースを基板上で行っているので(データシートの指定どおり)、それを表現するのに一工夫した。

 実装版のソースコードは、最大音量レベルを0dBにし(PGA2311の値では192)、EEPROM読み込みが暴走してデータのないところ(0xFF)を読み、前回値がFF(最大値)になってしまわないようなコードが追加されている。AVRのEEPROMはウェブサイトにも情報があるが、信頼度は余り高くない。極く稀れにだがデータが壊れていたり、暴走したりすることがあるというので万が一のときの対策である。

Ir_remocon

 リモコンはSonyフォーマットだが、実装版のソースもUARTを生かしてあるので(送信だけ有効)、UARTをつなぐと赤外線リモコンのデコードしたビット列がすべて表示されるようになっている。これを見ながら別のボタンにコマンドをアサインしたりボタンを追加することが出来る。

 ただ、他社のリモコンを使うには、ビット列ではなく、そもそものパルス巾が、リーダーといわれる最初のロングパルスや、0,1のパルス間隔を含めてまちまちなので、これらを調整してデコードするところまで戻る必要がある。しかし、このあたりはウェブサイトに結構情報があるので、そんなに苦労しないはずだ。

 月初めまでえらく忙しかったが、少し手が空いて回路図を描く暇ができた。久しぶりに、フリーのCADソフトBsch3Vを使った。このソフトがどんどん使い易く進化していることを知る。こういう有用なソフトを気前良く提供し、しかも改良に努められている水魚堂さんに改めて感謝したい。

以下に実装版のソースコードを、いつものようにAVRStudioのプロジェクトフォルダーの形で置きます。回路図ファイル(.CE3)はこのフォルダーの中のBsch3Vフォルダー内にあります。なお、ソースファイルの名前等は、前のブレッドボード版と全く変わっていないので注意してください。変わっているのはzipファイル名だけです。

「Rcon2313_1209.zip」をダウンロード


| | コメント (6) | トラックバック (0)

« 2010年11月21日 - 2010年11月27日 | トップページ | 2010年12月26日 - 2011年1月1日 »