PTT 遅延回路

 

 

 

 

 

プリアンプを使用してると送受切り替えのタイムラグで、プリアンプが送信側に切り替わる前に送信機から電波が送られてきたら…と気になることも。

送信機のSEND信号を受けてリニアアンプやプリアンプが送信側に切り替わるのが通常。

しかし、機械的なリレーを使うと反応に遅れが出る。

 

14V 60A のパワーリレー

約7mSの遅れ

 

 

接点2Aの同軸リレー

約25mSの遅れ

 

 

約5mSの遅れ

 

 

 

約2.5mSの遅れ

 

 

リレーによって遅延時間は違うのでタイムラグを気にするような回路の場合は厳選して使うのがいいが、できれば半導体に置き換えた方が遅延や動作音も気にならなくなる。

PTTの入力を処理して対象信号をGNDに落とすだけなら回路はシンプル。

 

試作でユニバーサル基板に組んでみた。

トランジスタは手持ちのIC 1A程度のものを直接駆動させた。

マイクの配線をしないでPTT代わりにタクトスイッチで実験。

 

今回は感光基板で作ろうとパターンを作成してみた。

実際にエッチングするまえにもう少し改善を加える。

基本的にSENDはオープンコレクタで大丈夫だと思うが古いリニアアンプ等で送受切替えリレーに100Vを使用している場合はVCEが許容を超えてトランジスタを破壊する。

 

それを防ぐため、リニアアンプ接続にはリレー駆動にできるようジャンパースイッチを設ける。

動作は、PTTを押したら

① プリアンプをスルーにする

② リニアアンプを送信にする

③ リグを送信にする

 

PTTを離して受信に切り替えたら上記の逆の順序で、まず送信を止めることから始める。

/*
PTT遅延
2PIN PTT
3PIN PRIAMP
4PIN LINER AMP
5PIN RIG
*/

void setup() {
    pinMode(2, INPUT);
    pinMode(3, OUTPUT);
    pinMode(4, OUTPUT);
    pinMode(5, OUTPUT);
}

void loop() {
    if(digitalRead(2)==LOW) {
        digitalWrite(3, HIGH);
        delay(100);
        digitalWrite(4, HIGH);
        delay(100);
        digitalWrite(5, HIGH);
    }

    if(digitalRead(2)==HIGH) {
        digitalWrite(5, LOW);
        delay(100);
        digitalWrite(4, LOW);
        delay(100);
        digitalWrite(3, LOW);
    }
}

上記は、それぞれの駆動を100mSec (0.1秒)に固定してあるが組み込んでしまうと変更するためにIDEで書き換えるのが大変になる。

条件で遅延時間を変更することもできるが、VRで可変できるようにする。

これは半固定抵抗でも、つまみ付きでも構わないが外から調整できることが望ましい。

Arduinoの電源は5Vでも12Vでも内部に5Vレギュレータがあるので可能。

その5VをVRで調整してA0に入力。

遅延時間を0~1秒の間で自由に調整可能。

 

void setup() {
    pinMode(2, INPUT);
    pinMode(3, OUTPUT);
    pinMode(4, OUTPUT);
    pinMode(5, OUTPUT);

    int delaytime ;
    Serial.begin(9600) ;
}

void loop() {
  delaytime = AnalogRead(0);
       Serial.print(delaytime) ;
       Serial.println("mSec") ;

    if(digitalRead(2)==LOW) {
        digitalWrite(3, HIGH);
        delay(delaytime);
        digitalWrite(4, HIGH);
        delay(delaytime);
        digitalWrite(5, HIGH);
    }

    if(digitalRead(2)==HIGH) {
        digitalWrite(5, LOW);
        delay(delaytime);
        digitalWrite(4, LOW);
        delay(delaytime);
        digitalWrite(3, LOW);
    }
}