今回の ALL BAND TRANSCEIVER で色々な課題があった。今回解説するBAND,MODEの制御もその一つである。
タッチパネルで選択したBANDやMODEは数値化され制御を行う。具体的には変数 [BAND] 変数[MODE]に選択した数値情報が収納される。
上図でPHOT1でBANDをタッチ、PHOTO2で希望BANDをタッチすると変数[BAND]にBAND番号が収納される。この変数を2進数にして各BITのHigh,Lowを調べI/Oに出力をしている。
全部で14BANDなので4BITバイナリーでD14,15,16,17に出力している。
sketchでは、
void DIO_BAND_set(){
int bitdata = 0;
int port_num = 0;
int bitdata = 0;
int port_num = 0;
for (int j=0; j<=3; j++){ // ポートをLowにリセット
digitalWrite(14+j,LOW);
}
for (int j=0; j<=3; j++){
bitdata = bitRead(band,j); // 変数[band]の各Bitを調べる。
if (bitdata == 1){
digitalWrite(14+j,HIGH); // 1なら当該ポートをHighにする
}
else{
digitalWrite(14+j,LOW); // 1以外なら Lowとする。
}
}
}
}
for (int j=0; j<=3; j++){
bitdata = bitRead(band,j); // 変数[band]の各Bitを調べる。
if (bitdata == 1){
digitalWrite(14+j,HIGH); // 1なら当該ポートをHighにする
}
else{
digitalWrite(14+j,LOW); // 1以外なら Lowとする。
}
}
}
Modeも同様にしてD18,19,20,21に出力している。
Aruduino DueのD14-21ポートに出力されたBAND,MODE情報は、以降の処理に使いやすいように(FXMA108)で3.3Vから5Vにレベル変換をしている。
BAND情報はD14-17から出力されレベル変換後TC4515デコーダーを使用し、各BAND個別信号を出力している。このTC4515はActiv Low 選択された信号がLow、それ以外がHighとなる。このためPNPデジタルトランジスタ(RN2201)を利用し選択された受信用BPFに電源を供給するようにしている。
送信も同様にBPF選択を行っている。送信ではさらに TD62084というSink Driverで出力のLPFリレーを制御するようにいている。
送信も同様にBPF選択を行っている。送信ではさらに TD62084というSink Driverで出力のLPFリレーを制御するようにいている。
MODEも同様であるが、選択数が少ないのでデコーダーに74HC238(3INー8OUT)を使用いた。これはActiv HighなのでNPNデジタルトランジスタ(DTC144)を使用しColinsフィルター切替を行っている。
尚、BAND情報は、Linear と Transverterのためにバッファ(74HC125)経由でDINコネクタに出力している。
さすがにALL BAND TRANSCEIVERともなると、フィルタ、BPF、LPFの切り替え処理が非常に煩雑となることを実感した。今回極力手持ち部品を使用したため、どうも一貫性のない回路となった感じである。ご容赦願いたい。
今回は、あまり日の当たらない部分の解説なので、少々つまらなかったもしれませんが、備忘録としてUPしておくこととした。
DE JA2NKD Ryuu