工作してみた(みる)
オーディオセレクターを作る
table of contents
iPod Dock を作る(nano用)とトライステート Web Radioを「加工」してみるが一応終わり、複数のオーディオ出力機器が出来ましたので、今度はオーディオセレクタを作ってみます。学研真空管アンプ「変形」ができたら、セレクタにアンプをつなげる予定です。
このサイトの工作頁を複数お読みの物好きの方はおわかりでしょうが、ここまでのところ、ぼくはケースやパネル加工の学習をかねて各種電気工作を行ってます。
今回のケース工作目標
今回は、アルミケースの穴を手作業だけでうまく空けて行く練習を中心に、工作をはじめます。
- ケガキ、ポンチをめんどくさがらずにつかって、穴の並びがズレない、等間隔に開けることができること。
- バリが綺麗にとれて見栄えが悪くないこと。
- 二ブラとヤスリをつかって、できるだけ綺麗に四角穴を開けられること。
出来あいのケースの場合、前後面のパネル部分は、すでにLの字になっているので、ぼくんちのフライス(haku 2030)では穴を開けられません(Z軸の高さが足りない)。手作業だけでどこまで出来るのかの練習です。結局は<汚い>のが嫌で,結局は、その上にアクリルパネルを貼るとは思うんですけど、とりあえず経験しておいてわるくないと考えてます。なにせ、いまんところ
右の写真みたいな穴あけ技能しかもっていないわけですから、少しは上手くなりたいということで。
中身のスペック
セレクターは外部入力が3つ。出力を2つ。電子ボリューム付。ついでにFMラジオを組み込む。したがって入力は4つ。アナログスイッチを2個使います。出力は勉強をかねて機構式のリレーを使ってみようかな、と今のところ考えてます。
電源は搭載しません。とりあえず12Vぐらいの入力ジャックをつけることにします。
ケース
TAKACHIのYM薄型ボックス YM-180(W180 H40 D130)を使います(=>変更しました)。
結構スペースがあるので、作っていく途中で、上のスペックが変わったりするかもしれません。
パネル前面に部品を並べてみました。入出力はオーディオジャックを使います。情報表示にLEDを複数使うのは面倒なので、真ん中の表示器を使ってセレクト表示とFMラジオの周波数表示をする予定です。液晶は面白みにかけるのでちょっと変化球。
表示器はAgilent TechnologieのHDLG-2416datasheet というもので、以前電脳オークションでぽちったジャンクです。チップワンストップで価格を調べると3000円以上するようです。高い。ぼくは一個700円程度で購入しました。この表示器の機能については次項でメモします。
HDLG-2416
HDLG-2416は、5x7ドットで4桁表示出来るキャラクタディスプレイで、CMOS ICのディスプレイドライバが内蔵されており、外部からの信号で制御出来ます。
右の表でわかるように、空白文字にあたる0x20から英数記号を経てチルドの0x7Eにいたる部分は、ASCIIコード準拠でです。
4個の表示部は、A1,A0(pin7,pin8)で選択するようになっていて、右(一桁目)から順に00,01,10,11で指定します。全体のピン割り当ては右の表です。
まとめると右の絵のようになります。
タイミングチャートは右のようです。CE1/CE2をLOWにして→表示桁を選択(A1/A0)→WRをLOWにして→データを流す(D0-D6) という順序。 となります
動くかどうか。ベタにブレッドボード+Arduinoで結線して、ORZを表示してみました。OKっぽいです。なお省略可能なピンとしては次のようなものがありそうです。1. カーソル表示関係のCUE,CU(pin4,pin5)をそれぞれLOW/HIGH固定(カーソルレジスタを使わない)。2. Chip Enableのまま=CE1,CE2(pin1,pin2)はLOW固定。3. 消灯(Blanking Input)(pin18)は使わない=HIGH固定。配線するのが面倒になったらここらへんは省略するかもしれません。以上、とりあえず、覚書でした。
回路構成
入力からバッファ部分は、ChaNさんのhttp://elm-chan.org/works/pcamp/report.htmlをそのまま使わせてもらいます。
あとはてきとーに。。。。って、いいかげんに回路を書く癖をつけたほうがいいよね、とは思いますが、パソコン画面でワークするのは面倒であります。でもこの機会にEagleに挑戦してみようか、どうしようかな。
とりあえずブロック図だけでもかいておいたほうがいいかなあ。どうしよう(<==やる気ないのが見え見えか
)
電子ボリューム
いろいろ悩んだが、PGA2311datasheet を選択する。digikeyで1000円ぐらいで購入してあったもの。
悩んだのは両電源が必要だからです。
スペック・ケース再考
ケース変更
HDLG 2416が思いのほかやっかい(ピンが必要)なのと電子ボリュームが両電源必要なので、ケースを一回り大きくして、電源を入れ込むことにしました。またもや登場するのはTAKACHIのSY-190A(190x54x200)。HDLGは電力喰いで全部点灯すると180mAも使うらしいので、手持ちトランス的に言えば、このケースに入れるのが余裕があってよろしいようです。もちろんパネルの穴あけ加工は初志貫徹で手作業で行います。
mega168を複数化してmaster/slave
HDLG 2416はAVR 16ピン分を占拠します。省略してもせいぜい3ピンなので、他にアナログスイッチ、ロータリーエンコーダ、FMラジオの制御ピンを考えるとmega168では、足らなくなります。シフトレジスタを使うことも考えましたが、いっそのことAVRを2つ使って、I2Cでmaster-slaveにしようと思います。
簡単に作ろうと思っていたら、なんだか規模が大きくなってきました。
2個のArduinoで、master-slave テスト
実はやったことがなかったので、Arduinoを2個使ってMaster/SlaveのI2C通信テストをしました。2つのArduinoのanalogピン4、5を結線し、1.5KOhmの抵抗でプルアップします。テストプログラムはExperiment:I2C communication between two Arduino boardsのまんまです。
大丈夫っぽいので、mega168を2個使った回路を考えます。
master slaveの役割案
いろいろ考えた結果、次のように役割分担を行うことにしました。入力と各種IC制御をmasterに、出力表示系統をslaveに割り当てます。
---
master-+-アナログスイッチ(入力選択LED出力兼用)(4ピン必要)
+-入力のON/OFFトグルスイッチ(3入力+FMラジオ)(4ピン)
+-ロータリーエンコーダ(A/B相2ピン)
+-Vol/周波数表示/入力ONOFF切り替え用のトグルスイッチ(1ピン)
+-電子ボリューム(3ピン)
+-FMラジオ制御(3ピン)
+-I2C(2ピン)
slave-+-HDLG2416(11ピン)(<=上に書いたように,1,2,4,5,18は固定する)
+-I2C(2ピン)
masterで19ピン、slaveで17ピン。ぎりぎり収まりました。
mega168はいずれもフラットパッケージ(QFP/MLF32)を使います。たくさん配線しなければならないので、DIPよりも楽そうです。どっちも16MHzの水晶をつけて、とりあえずArduino Diecimilaのスケッチで動くようにしておきます。
FMラジオ(TEA5767)部とmaster用mega168の実装
まず最初に、FMラジオとマスターのmega168の基板を作ります。
FMラジオは、aitendoのTEA5767モジュールを使います。今現在残り8個ですから、なんとか捌けるようですね<aitendo
このモジュールは、80Mhz以下のFM放送受信が出来ない、という点が「有名」で、ブレッドボードに組んで試してみたところ、確かにそのようです
。でも安いし、5Vでそのまま動いてくれるので、使うことにしました。
制御は3線制御で行います。slave用megaと一緒にI2Cスレーブにすると、なにかと面倒な気がしたので、あくまで3線でシンプルに制御。
ただし80Mhz以下の放送局が受信出来ないのはこまります。
というわけで「改造」を施します。この「改造」に関してはオーディオクラフト工房サイトが、改造実験を行った「Kさん」のレポートを載せてくれていますので、それをそのまま使わせてもらいます。
aitendoのボードに載っているバリキャップに5PF程度のコンデンサを並列に付加してVCOの発振周波数を心持ち下げる、という方法です。
小さいボードで半田付けは面倒ではありますが、この程度ならなんとか僕でも加工出来ます。右のように、コンデンサは5PFのチップコンデンサ(0603タイプ)を使いました。リード線はAWG30(0.26mm)のジュンフロン線(ETFE電線)の被覆を剥いたもの。少し太めの方が構造的にしっかりすると考えてのことです。
ハンダ付け作業が終わったら、裏返し、右のような感じで1.27ピッチ基板に両面テープで装着します。
3線制御は、R/WをPB5,CLOCKがPB3,DATAがPB4、それぞれSPIのSCK,MOSI,MISOピンでArduinoのピン名だとそれぞれ13,11,12にあたります。
ためした結果、80Mhz以下の局も受信OKでした。とりあえずテストに使ったArduinoのスケッチを掲載しておきます。
aitendo TEA5767ボード制御テストスケッチ
#define uint uint16_t
typedefunsigned charuchar;
int LA = 13; //latch=S/W
int CK = 11; //clock pin
int DA = 12; //data pin
uint freqIf = 225;//中間周波数。khz
uint freqXtal = 32768;//水晶発振周波数。hz
uint pll;
uint fre = 8810;//選局初期周波数 khz
void calcPll(void)//周波数計算
{
long temp;
temp = fre;
pll = (uint)(((temp*10+freqIf)*4000)/freqXtal);
}
//3線制御。MSBから書き込み
//arduinoのshifOut関数を使えば不要。とりあえずテストとして。
void pr(byte data)
{
int x;
int n;
for(x = 7 ; x >= 0 ; x--) //send eight-bit register data
{
digitalWrite(CK, LOW); //Toggle the SPI clock
n = (data >> x) & 1;
if (n == 1){
digitalWrite(DA, HIGH);//Put high bit on SPI data bus
}
else {
digitalWrite(DA, LOW); //Put low bit on SPI data bus
}
delayMicroseconds(11);
digitalWrite(CK, HIGH); //Toggle the SPI clock
}
digitalWrite(CK, LOW);
}
char fm(void) //5バイトで制御する。
{
calcPll();
char b1,b2;
b2 = pll/256;
b1 = pll%256;
pr(b2);
pr(b1);
pr(B00010000);
pr(B00110110);
pr(B00000000);
return (1);
}
void setup(){
pinMode(CK, OUTPUT);
pinMode(DA, OUTPUT);
pinMode(LA, OUTPUT);
digitalWrite(LA, LOW);
delay(10);
digitalWrite(LA, HIGH);
//fre = 7610;//80Mhz以下のテスト用
fm();
digitalWrite(LA, LOW);
}
void loop()
{
}
20100128:またも方針変更。AVRのmaster-slave案を破棄し、74574でポート拡張
とここまで、書いていろいろ考えた結果、avrを2個使ってmaster-slaveにする案を破棄(20100128)。
買った覚えがない74VHC574datasheet が、10個ほど部品箱にあったので、これでポート拡張することにする。3個使います。配線タコですが、一応動作する。
理由:表示器のpinをフルに使いたかったのと、汎用ロジックによるポート拡張などという技は知らなかったので、ちょっとやってみたかった。
arduinoのテストスケッチは下記のようになりました。
74VHC574による表示器制御テスト
int ddf[] = {5,6,7,8,11,10,9,12};//VHC574 dataピン
int sw[] = {1,0,13};//VHC574 CLK ピン
/*
*HDLG2416ピン
*sw[0] 8:1
*sw[1] 11:18
*/
int CE_1 = 8-1;
int CE_2 = 8-4;
int CLR = 8-3;
int CUE = 8-2;
int CU = 8-5;
int WR = 8-6;
int A_0 = 8-7;
int A_1 = 8-8;
void hdlgControl(int digit)
{
digitalWrite(sw[0],LOW);
digitalWrite(ddf[CLR],HIGH);
digitalWrite(ddf[CU],HIGH);
digitalWrite(ddf[CUE],LOW);
digitalWrite(ddf[CE_1],LOW);
digitalWrite(ddf[CE_2],LOW);
//表示セグメント選択
digitalWrite(ddf[A_1],digit & 1);
digitalWrite(ddf[A_0],(digit>>1) & 1);
//データ書き込み許可
digitalWrite(ddf[WR],LOW);
digitalWrite(sw[0],HIGH);
}
void hdlgDataWrite(byte data)
{
digitalWrite(sw[1],LOW);
int n;
for(int x = 0 ; x < 7 ; x++){
n = (data >> x) & 1;
if(n == 1) {
digitalWrite(ddf[x],HIGH);
} else {
digitalWrite(ddf[x],LOW);;
}
}
digitalWrite(ddf[7],1);//blank
digitalWrite(sw[1],HIGH);
}
void setup()
{
for(int i=0;i<8;i++) {
pinMode(ddf[i],OUTPUT);
}
for(int i=0;i<3;i++)
{
pinMode(sw[i],OUTPUT);
for(int j=0;j<8;j++){
digitalWrite(sw[i],0);
}
}
hdlgControl(0);
hdlgDataWrite('Z');
hdlgControl(1);
hdlgDataWrite('R');
hdlgControl(2);
hdlgDataWrite('O');
hdlgControl(3);
hdlgDataWrite(b0000000);
}
void loop()
{
}
20100312:方針大変更ののち、配線完成
いろいろあって、2月は、風の随に漂っておりました。工作も中断気味。
で、3月おひな様のころに再開。1月の時点での計画を大きく変更し、とりあえず本日基板配線については一段落しました。以下、変更から完成までについて、簡単にメモをしておきます。
初版(改):1.27ピッチ基板、デジタル・アナログ+5V電源共通バージョン
1月末までの実験を踏まえて、1.27ピッチの基板を使って2月下旬あたりには、右のような感じで配線は終了しておりました。外部入力3+FMラジオ入力1
ところが、FMラジオを鳴らした時に、表示器の5V線のノイズがFMモジュール側に回り込んでくる。電波強度が一定以上だと気になりませんが、弱い電波だと、ノイズが目立ってわかる。
あちこちにパスコンをつけたり、電源を強化したり、FMモジュールを離したりしても埒があかない。これで嵌りました。
表示器電圧を少し下げる(4.3V程度)とノイズが収まるのだけど、5V以上が推奨電圧な表示器をその電圧で動かすのも気が進まない。というわけで、一から作り直しを行いました。
二版:2.54ピッチ基板、デジタル・アナログ+5V電源別、切り替えはリレーでバージョン
ハーフピッチ両面基板での工作は、おもしろいんですけど、配線変更、部品交換を頻繁に行うには、ちとつらいので、二版は、2.54ピッチ基板で工作しました。
+5V電源については、レギュレターを別にして、アナログ・デジタル配線を切り離す。
また入力切り替えは、アナログスイッチ(4066)をやめて、手持ちのオムロンのG6K-2Fという二回路リレーを使いました。一袋200円5個入り。リレーのほうが、配線が混み合わないのと、アイソレーションがよいからです。ただこのリレー3V駆動なので、3.3Vレギュレター回路が必要になりました。駆動は、電圧シフトも兼ねて、デジタル・トランジスタ(TD62003APG)で行います。
基板の中央部に上重ねユニット化されているのはFMラジオ部です。写真右がデジタル部、左がアナログ部なので、その関ヶ原的なところに起きました。ユニットにしたのは、別のFMチップを交換して遊んでみたかったからです。
あと、アンプを加えました。秋月で売ってるHT82V739を2個。
これもまた秋月で売ってる一個100円のダイナミックスピーカー(8Ohm 8W)を接続して、鳴らしてみましたが、結構な音。ノイズもありません。
右は、お約束の裏面配線写真。
というわけで、ようやく本体「完成」。これからケース工作に移ります。
20100322:RDA5800CにFMチップを変更
ブログの方でも書いたんだけど(RDA5800C動作確認myblog)、RDA5800CというFMチップを入手したので、交換しました。
感度が全然違うのでありました。
なお、これに伴い、裏面配線も一部変更。これでほぼ確定なので、ハヤコートgoogle スプレーで、裏面を絶縁コーティングします。
201000322:表パネル配置
全面のスイッチ等配置は右のようになりました。
左3つのタクトスイッチは1から3のセレクタ用。四つ目はFMラジオのON/OFF。SMDのLEDでON/OFF表示をしてます。
表示器横にある5つめのタクトスイッチはFM周波数表示とボリューム表示の切り替え用。
さて、いまからパネル穴の実測をします。
20100408:結局パネルはCNCで作ることになる
アルミ板四角穴あけの練習をいくつか。やっぱり綺麗にはあきません。直線を作るにはニブラでやるのが一番なんですが、どうしてもアルミが切り取り方向にゆがみます。
結局、予定通り
、アクリル板をCNCで加工することになりました。ははは。
201004012:「完成」
3mm厚の黒アクリル板をポケット加工します。もともとのケースパネルは2mm厚のアルミなので、周囲のはめ込み部分は2mm厚のポケットにして枠を作ります。
前面パネル用基板のタクトスイッチの部分もそのままではスイッチ軸部分の尺が足りないので1.5mm程度ポケット加工で削りました。
パネル基板とアクリルパネルを合わせたところ。
はめ込み完成の図
この写真でも実はわかるように、表示デバイス部とアクリルパネル穴の間に少し隙間が出来てます。(上部の方)。0.5mm 程度穴開けが大きかったみたいです。
これを修正するには再度CNCをいじるか、シールでごまかすか。・・でも、とりあえず、これで セレクターは「完成」ということにします。
なんせ、学研真空管アンプを「変形」してみるの製作開始から半年、あっちこっちに道草してるんで、ホントにそろそろ本道に戻らないと、と思うわけです。
お後がよろしいようで。