FE5680A周波数切替器
FE5680Aは内部のDDSをシリアル通信で設定変更が出来、それによって出力周波数変更できます。普通はPCなどを使って変更するのですがオーディオの場合は44.1kHz系(11.2896MHz)と48kHz系(12.288MHz)の2種のみなのでわざわざPCを用意して立ち上げるのも大げさになってしまいます。そこでAruduino(ProMini5V16MHz品)を使ったルビジウムクロックの周波数(DDSの分周比)を変更する簡易的な切替器を作ってみました。
内容は電源投入と連動した周波数選択スイッチを読取り、それに応じたDDS設定のシリアル信号をTXから送り込むだけです。Arduinoの電源も変更の後は切ってしまうので、現在の設定周波数が判るようにフリップフロップでLED表示を残しています。
回路図の補足ですが、Dsub9ピンの配線は本体側の事情に合わせて変更してください。HC02の電源配線が書かれていませんがSWの手前からデカップリングを入れて5Vを供給してください。SWはセンターロックの両跳ねを使うと便利で下側に押したときが44k系です。Aruduinoのピン番号はこちらで勝手につけたものです。6.3V47uFは電源側につけたほうが良いかもしれません。プルダウン抵抗値は適当でかまいません。LEDの抵抗は使用するLEDに合わせて決めてください。
プログラムの頭でピン番号と入出力は#define文で示してあります。変更する場合には此処を替えて下さい。基板上のLEDの点滅周期でどのSW(周波数)が選択されているかが判ります。44.1kHzの方が周期がゆっくりになっています。
なお周波数設定値(F=********の所)はルビによって少しづつ違います。お手持ちのにあわせてください。まあ僅かなのでこのままでも特に支障は無いと思います。
*プログラムにインデントが無く、見難くてすみません。どうも半角スペースがうまくはいりません。
/*
* Rubidum Frequecy Select
*/
int ledPin = 13; // DIGITALの13番にオンボード
int LED;
#define RSPout44 2 // 44.1kHz RSFFポート番号
#define RSPout48 3 // 48kHz RSFFポート番号
#define SWPin44 4 // 44.1kHz スイッチポート番号
#define SWPin48 5 // 48kHz スイッチポート番号
#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");
digitalWrite(RSPout48, LOW);
digitalWrite(RSPout44, HIGH);
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");
digitalWrite(RSPout44, LOW);
digitalWrite(RSPout48, HIGH);
delay(100);
if(LED==OFF){
digitalWrite(ledPin, HIGH); // LEDをオン
LED=ON;
}else{
digitalWrite(ledPin, LOW); // LEDをオフ
LED=OFF;
}
}
}
2010/7/13 記
2010/8/24 修正