Top Page トランスバータ用CI-V周波数変換
自作工程のメモとして
02.May.2018


 昨年のテーマ「IC-7600 のトランスバータ端子を使う」でIC-7600にトランスバータ(以下:TRV)を接続しましたが、TRVモードにしてもIC-7600のCI-V出力は親機の28MHzのままで、例えばMMVARIを使うと周波数情報が144MHzに成りません。
本当なら、IC-7600側のファームウェアで処理してもらえれば何の問題も無いのですが、対応してもらえそうも無いので少し困っていました。
そこで、PICを使ってCI-Vの周波数情報を変換する装置を作ろうと基板を作りかけましたが、「Mikro C」を長いこと使ってなかったので重い腰が上がらず、試しにArduino を使って変換装置を作ってみようとブレッドボードで組んでみると、思いのほか簡単に実現できたようなのでArduino Nanoを使って掲載します。


簡単なものですが完成品です。

次項に有る回路の内、抵抗とダイオードをそれぞれ1本使うだけで、その他は組込み先の回路を流用しています。


Edit by bluegriffon3.0.1


1.回路図

 動作確認は、Arduino UNO(互換)で実施しましたが、UNOでは大き過ぎるので実装はNanoを使います。
Serialポートは1つだけなので、SoftwareSerial機能を使い単純な回路としています。


■ 回路図


おまじないのLとC、衝突回避のRとDだけで、通常でしたらL2の右側に付けるプルアップ抵抗は省略しました。


2.スケッチ(ソースプログラム)

 このスケッチでは、Rig側のCI-Vスピードを9600bps・パソコン(以下:PC)側を19200bpsに設定しています。
同じスピードでも問題無いと思いますが、速度変換も実現する試みとしてこのまま使用する予定です。
また、SoftwareSerial 側はスピードがそんなに上げられないと思いますが、変換だけの処理しかしていないので9600bpsでは問題はないようです。
なお、周波数変換をせずにスピード変換だけでしたら、void loop()内の記述は2行で済んでしまうほど単純な処理になります。

■ トランスバータ用周波数変換のスケッチ(IC-7600 + 144MHzTRVを想定)

// 2018/04/30
/*
  IC-7600+144M トランスバータ(TRV)対応用のCI-V(周波数データ)変換

  例)ハムログ等では、TRV使用を前提とした周波数加減算用の設定は有るが、
  MMVARIでは、その変換が無い。
  そのため、PCが受信する周波数データのみ+116MHz加算したCI-Vデータに変換する。
  参考:Arduino 日本語リファレンス の ソフトウェアシリアルのサンプルコード
*/


#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // SoftRX Pin, SoftTX Pin
int state = 0;
byte rxchar;
int trvON = 0;

void setup() {
  Serial.begin(19200); // ハードウェアシリアルを準備
  mySerial.begin(9600); // ソフトウェアシリアルの初期化
}

void loop()
{
  // if (mySerial.available()) Serial.write(mySerial.read());  // この行を以下のように変更する。
  if (mySerial.available()) {
    rxchar = mySerial.read();
    switch (state) {
      case 10:
        state = 0;
        break;
      case 9:
        if ((trvON == 1) && (rxchar == 0x00)) rxchar = 0x01;
        state++;
        break;
      case 8:
        if ((rxchar >= 0x28) && (rxchar <= 0x29)) {
          rxchar = rxchar + 28;
          trvON = 1;
        } else {
          trvON = 0;
        }
        state++;
        break;
      case 7:
      case 6:
      case 5:
      case 3:
      case 2:
        state++;
        break;
      case 4:
        if ((rxchar == 0x00) || (rxchar == 0x03))   // 5Byte目のコマンド00 or 03 のみ
          // stateをカウントUP
        {
          state++;
        } else {
          state = 0;
        }
        break;
      case 1:
      case 0:
        if (rxchar == 0xfe)
        {
          state++;
        } else {
          state = 0;
        }
        break;
    }
    if (rxchar == 0xfd) state = 0;
    Serial.write(rxchar );
  }
  if (Serial.available()) mySerial.write(Serial.read());
}





3.ケースへの実装

 実装に当たっては小さな箱を探しましたが適当なものが見つからず、別テーマの「CI-V_HUBの製作」の箱にスペースが有るのでそこに入れ込むことにしました。

■ 別の箱(CI-V_HUB)の空きスペースに実装した状態

回路上のチョークコイル(L)は、CI-V_HUBの物を使用しています。




9.その他気づいたこと

(1)144MHz帯でjtdx wsjt-x 等を使用するとき、RadioにIC-7600を指定すると「Rig Control error」になります。
jtdx wsjt-x 等の設定(File ==>Setting==>Radio)でRig にIC-7600を指定すると、本来の周波数範囲外(144MHz)のため、エラーとなります。そのため、Rigは無し(None)として使用します。
この時はCATでの送信ができないため、「PTT Method」で「Port」とRTS・DTR等を選択する必要が有ります。
MMVARIでは、CI-Vアドレスを指定する設定のため、144MHz帯の周波数読取やCI-Vでの送受信操作も問題無く使えます。

(2)上記(1)にwsjt-xでの設定について記述しましたが、周波数の設定項目にトランスバータが有り、設定してみました。(2018/10/14)

Settings ==> Frequencies

先に周波数の設定で、Station Informationに2mバンドのOffset(116MHz)を記述します。

Settings ==> Radio
次にRigの設定で、HF/6m機のIC-7600を設定すると、周波数関係のエラーが出ずに使えるようです。
ついでに、PTT MethodをCAT指定に変えてみました。
また、Modeは今までNoneにしていましたが、Data/Pktに変えています。これでRig側がUSBモードでも自動的に[USB-D1]等に切り替わってくれます。
さらに、Sprit Operationは、Rigになっていた(Spritモードになる)のでNoneにして変更しています。

PSK31はほとんど見かけなくなりましたので、今後MMVARIを使うことが無くなれば、本変換装置は不要になってしまいます。

(3)都度追記します。




99.追記用(予備)