ケンのオーディオメモ

アクセスカウンタ

zoom RSS ルビジウム周波数切替器完成

<<   作成日時 : 2010/02/10 11:02   >>

なるほど(納得、参考になった、ヘー) ブログ気持玉 1 / トラックバック 0 / コメント 6

画像
 ルビジウムの周波数切替をAVRのマイコンを使ったArduinoを使って作った。選択表示のLEDをつけて完成。

 内容は前回も説明したように、シリアルデータで分周比の設定コマンドとそれぞれの分周比の文字列を送るだけなので簡単な内容なので、このような小さなマイコンチップが相応しい。

 脇の両ハネのトグルスイッチで切替えるのだが、スイッチを操作するとマイコンチップの電源が入り、スイッチ状態を読んで相当する分周比文字列を送る。同時にRSFFをたたいて表示を変更する。SWを放せばマイコンの電源は切れるが表示のRSFFは電源を切らずそのまま次の変更まで表示を保持する仕掛け。上側が44.1kHz系の11.2896MHz、下側が48kHz系の12.2888MHzとなる。

 変更コマンドの送出まで少し時間がかかるので操作性はもうひとつだが、小さくて切替時以外はノイズも出さないので周波数切替がとても便利になった。

 参考にプログラムはこんなもの。あまりスマートではないが一応動作している。
操作LEDのON,OFFは動作確認用。最終的には不要なので削除すればすっきりする。
RS232Cのボーレートは9600のはずだが4800で無いと希望のスピードにならなかった。
この点は詳細不明。

最終版のレポートはこちら

/*
* Rubidum Frequecy Select
* 2010/2/6 by T.Ishida
*/

int ledPin = 13; // DIGITALの13番にオンボード
int LED;

#define SWPin44 4 // 44.1kHzスイッチポート番号
#define SWPin48 5 // 48kHz スイッチポート番号
#define RSPout44 2 // 44.1kHz RSFFポート番号
#define RSPout48 3 // 48kHz  RSFFポート番号
#define OFF 1
#define ON 0

void setup()
{
pinMode(ledPin, OUTPUT); // 出力に設定
LED=OFF;

pinMode(RSPout44, OUTPUT); // 出力に設定
pinMode(RSPout48, OUTPUT); // 出力に設定
digitalWrite(RSPout44, LOW);
digitalWrite(RSPout44, LOW);
pinMode(SWPin44, INPUT); // 入力に設定
pinMode(SWPin48, INPUT); // 入力に設定
Serial.begin(4800); // RS232Cボーレート設定
}

void loop()
{
if(digitalRead(SWPin44) == HIGH){
Serial.println("F=39826754"); //11.2896MHzに設定
digitalWrite(RSPout48, LOW);
digitalWrite(RSPout44, HIGH); //周波数LEDを44.1kHz系に切替

delay(200);
if(LED==OFF){
digitalWrite(ledPin, HIGH); // 操作モニターLEDをオン
LED=ON;
}else{
digitalWrite(ledPin, LOW); // 操作モニターLEDをオフ
LED=OFF;
}
}
if(digitalRead(SWPin48) == HIGH){
Serial.println("F=3E986288"); //12.288MHzに設定
digitalWrite(RSPout44, LOW);
digitalWrite(RSPout48, HIGH); //周波数LEDを48kHz系に切替

delay(100);
if(LED==OFF){
digitalWrite(ledPin, HIGH); // 操作モニターLEDをオン
LED=ON;
}else{
digitalWrite(ledPin, LOW); // 操作モニターLEDをオフ
LED=OFF;
}
}

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
気持玉数 : 1
なるほど(納得、参考になった、ヘー)

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(6件)

内 容 ニックネーム/日時
完成おめでとうございます。本記事を大いに参考にさせていただきながら、同じくArduino Pro Miniを使ってI2C経由のレジスタ設定にトライしてみました。その結果STA328のConfiguration Registerの値をひとつだけ変えることにより、SDTrans192のI2S出力を、改造したラステームのD級アンプに注入して、44.1 kHz/ 16 bit, 48 kHz, 96 kHz, 192 kHz /24 bitのWAVファイルの再生をすることができました。
RSDA302Uのアナログ入力のADCのチップを外した上に、いくつかの配線パターンカットを行い、内蔵MPUのI2CとArduinoのI2Cをスイッチで切り替えられるようにしております。
Arduinoは本当に、開発環境の簡便さが優れていて、手軽にC言語ベースのプログラミングが可能で、その値段と使いやすさに感心しました。つぎはSDTrans192で使われているC8051のアセンブラで実現することを目指すつもりです。
Bunpei
2010/02/11 02:20
ボーレート4800でないと動かないというのはもしかして…
LFまで送ってませんか?
通常キーボードですとCRだけです。
Serial.println("F=39826754");
はF=39826754<CR><LF>
と出しているとCRの後にデータが入り割込処理が入っておかしくなると言うのはありそうです。
9600のときはこれが処理に影響あるくらいの割り込み間隔になるというのでは?
そうでなければもともと9600bpsで受け切れていないとなりますが…
神楽坂でお世話になっとります
2010/02/11 05:26
使ったことのない開発環境なので正確な情報ではないかもしれませんが…。

http://wiki.onakasuita.org/pukiwiki/?Arduino%20IDE

ここの「Arduino-0017 (2009/08/12)」に
「シリアル通信時のボーレートの計算がより正確になった(8MHz Arduinoでの倍速問題も解決)」
と記載されているので、Arduino(開発環境?)のバージョンがこれ以前のものだと設定した倍のボーレートで出力されるのではないでしょうか?
jujurou
2010/02/11 08:02
 よく考えてみたらボーレートの件はjujurouさんのご指摘の様に(更に?)倍速の16MHz版を使っているためだろうと思います。開発環境は最新の0018を使っているんですが、16MHz版はまだ未公認なのでしょかね。

 BunpeiさんはもうI2Cをやられましたか。私もラステームは有るのでやってみたいですね。DACはどんなに優秀と言えどもD/A,A/Dが入ると雑味は増えます。まあ、それが良いと言う場合も有りますが。
ケン
2010/02/11 08:29
ijadfijdsf
sdfj
2010/03/05 04:22
ハイテクオーディオマスター、私は非常にあなたのルビジウムクロック11.2896mhzから22.5792mhzにフェーズリンクPLL502 - 02とコンパレータを使用して乗算に関心を持っています。あなたは私の乗算回路を表示してもいいですかどのように正方形の形に正弦波からのクロック出力波形を変更する?あなたの助けが高く評価されます!可能であれば、私にメールを送る rickchan.bw@gmail.com
本当にありがとうございます!
rickchan
2010/03/05 04:31

コメントする help

ニックネーム
本 文
ルビジウム周波数切替器完成 ケンのオーディオメモ/BIGLOBEウェブリブログ
文字サイズ:       閉じる