ラベル SI5351 の投稿を表示しています。 すべての投稿を表示
ラベル SI5351 の投稿を表示しています。 すべての投稿を表示

2022年5月23日月曜日

DDS & PLL Tester

 無線関連の自作を行っているが、最近DDSやPLLを使用することが増えてきている。そんなときトラブルが発生したとき、原因調査でDDSやPLLが壊れていないか調べることがある。
 今までは、ブレッドボードで試験回路を作って調べていた。マイコン制御であるため、試験プログラムもいくつか作っていた。ということで、各種DDS,PLLを簡便に試験できるテスターを作ってみた。

【 HardWare 】
 ハードウェアといっても、ユニバーサル基板にArduinoとTFT-LCD、DDS等を乗せるためのpinソケットだけの簡単なものである。
唯一の特徴はタッチパネル付きのLCD(2.8inch)を使用したことでしょうか。

【 SoftWare 】
 今回のスケッチは、過去作成したものに継ぎ足しで作ったのでわかりにくいと思うがご容赦。 
 単純にDDS,PLLを選択し、リファレンスクロックと出力周波数をテンキーで入力することにより動作するという単純なものである。





【 Device 】
 試験できるDDS、PLLは以下のもの。
 DDS       AD9833,AD9834,AD9850,AD9851
                AD9833はサイン波、三角波、方形波を選択できる
   PLL        Si5351
                Si5351はCLOCK0,CLOCK1,CLOCK2を選択できる

【 操作 】
    (1) タッチパネルDeviceを選択
  (2) Ckockを入力しEキーをタッチ
            0を入力しEキーを押すと規定値が設定される
            AD9833-25MHz,AD9834-75MHz,AD9850-125MHz,AD9851-30MHz
            Si5351-25MHz
  (3) 出力周波数を入力しEキーを押す
            0を入力しEキーを押すと規定値が設定される
            出力周波数は 1MHz
  (4) 信号が出力される
    (5) RestartでTOPに戻る。


 以上簡単な構成である。スケッチで最も面倒なのは、タッチパネルのキャリブレーションと思う。ALL BAND TRANSCEIVERで説明しているので参考にされたい。

 スケッチ、回路図(PDF)     Sketch & Schematics

以下に回路図と各種DEVICEの画像を乗せておく。















2021年8月9日月曜日

ALL BAND TRANSCEIVER (5)

今回はこのTRANSCEIVERの中枢であるコントローラーについて簡単に解説します。

Microprocessor 

 今回のコントローラーは、以前BlogにUPしたVFO Ver8.0を基にカスタマイズしています。
 MPUは、Arduino Due を使用しました。今回のプロジェクトでは、ALL BANDで多機能であるため、I/Oが多く、十分なメモリ容量でスピードが速いものを必要としました。
 主な仕様は以下の通り


Specification
Microcontroller AT91SAM3X8E
Operating Voltage : 3.3V
Input Voltage (recommended) : 7-12V
Input Voltage (limits) : 6-20V
Digital I/O Pins : 54 (of which 12 provide PWM output)
Analog Input Pins : 12
Analog Outputs Pins : 2 (DAC)
Total DC Output Current on all I/O lines : 130 mA
DC Current for 3.3V Pin : 800 mA
DC Current for 5V Pin : 800 mA
Flash Memory : 512 KB all available for the user applications
SRAM : 96 KB (two banks: 64KB and 32KB)
Clock Speed : 84 MHz

TFT Color LCD with Touch panel


 今回のコントローラーで一番苦労したところが、タッチパネルのコントロールであった。
LCDは、ドライバーがILI9341でSPIインターフェース。これにタッチパネルが付いたものである。

Specification
Display Color    RGB 65k color
Screen size       3.2inch
Driver              ILI9341
Resolution        320x240 pixel
Interface          4 wire 
SPI 
Touch panel     Resistive touchscreen
Touch Driver    TSC2046

Arduino Due周りの結線図を再度掲載する。DueとLCDの接続を赤くしてある。

 特に苦労した部分について簡単に記載します。

USB Port
Dueは2つのUSBポートがある。一つはPrograming Portで主にプログラムの書き込み、消去等にしよう。もう一つはNative Portで主にユーザープログラムで使う。
 今回は筐体背面に両方のポートを付けた。Programing用とCAT通信用としている。
 CATはメーカーによってコマンドが違うためどれかに決める必要がある。今回はHamLogの周波数設定程度なので、Yaesu FT-991,Kenwood TS-2000に対応できるようにした。(コンパイル時に選択)
 スケッチは、mainルーチンで外部からUSB経由でシリアル信号を受信したかチェックし、文字列を判読し、情報を返信する単純なスケッチである。以下は参考スケッチです。

---------------------------------------------------------
byte CATbyte = 0;

void setup(){

    SerialUSB(38400);}

void main(){


CATbyte = SerialUSB.available();
if (CATbyte >0){CATset();}

}

//----- CAT Controll(FT-991) -------------------------
void CATset(){
  String CATinput = SerialUSB.readStringUntil(';');
  SerialUSB.flush();
  if (CATinput == "FA"){
    SerialUSB.print("FA");
    String freqtcat = freqt;
    int mojicat=(freqtcat.length());
    if (mojicat <9){
      for (int i=9; i > mojicat; --i){
        SerialUSB.print("0");
      }
     }
    SerialUSB.print(freqtcat);
    SerialUSB.print(";");
  }
  if(CATinput == "MD0"){
    String modecat = String(mode);
    SerialUSB.print("MD0");         
    SerialUSB.print(modecat);
    SerialUSB.print(";");   
  }
  else{
   SerialUSB.print("?;");
  }
}
----------------------------------------------------------

Touch panel
 タッチパネルの処理には非常に苦労をした。製作までにかなりの時間を要したが、逐一記載すると非常に大変なので、結果だけを書くことにする。

タッチパネルには今回抵抗膜方式のもので、タッチしたときの抵抗変化で位置を特定する方式である。タッチパネルのドライバーはTSC2046、LCDはILI9341、MPUはArduino Due。
 初めにタッチパネルのキャリブレーションが必要である。押した位置の抵抗値をLCDのPixelに変換する。これにより位置判断が可能となる。
 キャリブレーションのスケッチは以下のライブラリーのサンプルスケッチにある。
https://github.com/marekburiak/ILI9341_due
[ uTouchCalibration.ino]が目的のスケッチである。
 55行を今回のハードウェアに変更する。
   URTouch  myTouch(30, 28, 26, 24, 22);
            ↓
   URTouch  myTouch(6,5,4,3,2);

 73行を使用するLCDの方向に合わせる。(90 or 270)
tft.setRotation(iliRotation270); // landscape
 

これをDueに書き込むと右の画面が表示される。画面のどこかをタッチすると次の画面が表示される。




この画面で左上ハイライトされた+をタッチする。中央の[PRESS]が[HOLD]に代わり[RELEASE]に変わる。すると今度は左中央がハイライトする。同じようにタッチして8か所すべてが終了すると最終の情報画面に変わる。


CAL_X
CAL_Y
CAL_Z
これがキャリブレーションで得られた情報である。




 この情報はIDEのシリアルモニタにも出力される。
 
ここで、今回使うタッチパネル用ライブラリー
http://www.rinkydinkelectronics.com/library.php?id=93にあるURTouchを使用する。


このライブラリー内にある[URTouchCD.h]をエディターで開きオリジナルのXYZをコメントアウトし、シリアルモニタのXYZをコピー&ペーストし保存する。
 これで使用するLCDのキャリブレーションが終了する。LCDを変更した場合はそのたびにキャリブレーションが必要となる。


参考スケッチ
実際のスケッチの抜きだしなのでよくわからないかもしれない。mainルーチンでパネルが押されたかどうか検出しx,y情報をサブルーチンに渡し処理を行う。URTouchライブラリーのexampleスケッチなど参考にしてください。

-------------------------------------------------------------
void main(){
  if (myTouch.dataAvailable())
    {
    myTouch.read();
    int x = myTouch.getX();
    int y = myTouch.getY();
    ProcessKeyTouch(x, y);  
}

//----- Touch -----------------------------------------------
void ProcessKeyTouch(int x, int y)
{
//  SerialUSB.end();
  ucg.setFont(ucg_font_fub11_tr);
  if (x >= 5 && x <= 5+key_width){               // Menu
    if (y >= 210 && y <= 210+key_height){
      key_rows = 2;
      menu_sub();
    }
  }
  if (x >= 5+1*80 && x <= 5+1*80+key_width){       // Band Set
    if (y >= 210 && y <= 210+key_height){
      key_rows = 3;
      band_set();
    }
  }
  if (x >= 5+2*80 && x <= 5+2*80+key_width){    // Step UP
    if (y >= 210 && y <= 210+key_height){
      fstepmem=fstepmem+1;
      fstepset();
    } 
  }
  if (x >= 5+3*80 && x <= 5+3*80+key_width){    // Step Down
    if (y >= 210 && y <= 210+key_height){
      fstepmem = fstepmem-1;
      fstepset();
    } 
  }
  if (x >= 5 && x <= 67){        // VFO
    if (y >= 10 && y <= 30){
     key_rows = 1;
     vfo_menu();  
    } 
  }
  if (x >= 77 && x <= 122){      // Mode
    if (y >= 10 && y <= 30){
      key_rows =2;
      mode_menu(); 
    } 
  }
  while(x != -1 ){
      myTouch.read();
      x = myTouch.getX();
      //y = myTouch.getY();  
  }
}

一部省略して書いたので少々わかりにくいかもしれませんが、ご容赦

以上 これでALL MODE TRANSCEIVERの解説は終了の予定。質問や、聞きたいことなどご要望があれば追記するかもしれません。メールまたはコメントにてお知らせください。

DE JA2NKD Ryuu


2021年7月24日土曜日

ALL BAND TRANSCEIVER (4)

 今回の 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;
  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とする。
    } 
  }
}

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リレーを制御するようにいている。

MODEも同様であるが、選択数が少ないのでデコーダーに74HC238(3INー8OUT)を使用いた。これはActiv HighなのでNPNデジタルトランジスタ(DTC144)を使用しColinsフィルター切替を行っている。

尚、BAND情報は、Linear と Transverterのためにバッファ(74HC125)経由でDINコネクタに出力している。

 さすがにALL BAND TRANSCEIVERともなると、フィルタ、BPF、LPFの切り替え処理が非常に煩雑となることを実感した。今回極力手持ち部品を使用したため、どうも一貫性のない回路となった感じである。ご容赦願いたい。

今回は、あまり日の当たらない部分の解説なので、少々つまらなかったもしれませんが、備忘録としてUPしておくこととした。

DE JA2NKD Ryuu







 




2021年7月4日日曜日

ALL BAND TRANSCEIVER (3)

 ALL BAND TRANSCEIVER (3)

送信部


❶ マイクアンプ  
  マイクアンプは、コンプレッサーTA2011SとOPAMP(LM741)を切り替えるようになっている。またSSB送信試験用に1kHz発振回路を組み込んでいる。これで口笛による調整から解放される。この3回路をOPAMP(NJM7043)でミキシングしSSBはPSN回路に、FMはFMキャリア回路に送っている。
 
❷ AF-PSN回路 
以前blogに掲載した50MHzPSN送信機と同様の回路で dsPIC33FJ64GP802を使用し位相のずれたAFを作っている。このdsPICのソフトはTJ-Labの上保さんの作成されたものであるが、非常に優秀である。
 
❸ 直交変調器
 これも50MHzPSN送信機と同様MAX2452を使用している。特に調整回路がないのでキャリアバランス等の調整は行っていない。AFレベルを調整しても効果がなかった。何とか40dB程度である。他にも直交変調器のICはあるようだが、ほとんどがGHz用であり、HFに使えそうなものは見つからない。またDBMやスイッチを使ってディスクリートで組むこともできるが、回路規模が大きくなってしまう。その点MAX2452は外付け部品もなく簡単である。また運用してモニターしいただいているが、おおむね音質はよく、キャリア、逆サイド等は認められないとの評価をいただいている。この直交変調器にSi5351によるVFOを直接入力している。このVFOの周波数は運用周波数の2倍を入力している。50MHzであれば100MHzとなる。これで全バンド ダイレクトにSSBができる。
 
❹ 前置増幅器 
MAX2452の出力は非常に小さいのでMMIC(MSA-0886)で25dB程度増幅している。

❺BPF
直交変調器で出来たSSB信号をBPFを通すことによりスプリアスを除去させている。BPFは「トロイダル・コア活用百科」の2ポールBPFを使用した。

 ❻前置増幅器
 目的出力を得るにはまだ低いので再度MMIC(MSA-0886)で再度25B程度増幅する。オールバンドにはMMICが得意だ。
 
❼プリアンプ 
ファイナルをドライブするため100mW程度に増幅する必要がある。三菱の高周波パワーFETRD00HHS1を使用している。アイドリングは50mA

❽パワーアンプ
RD16HHF1プッシュプル。出力は10W以下なので十分すぎるが、全バンド安定して増幅するために採用した。ドライブレベルを調整し概ねMAX 8W 程度の出力としている。バンド差が大きく出てくるかと思ったが、意外にそろっている。

❾LPF
λ/4 5次LPFで「トロイダル・コア活用百科」を基本として設計している。

❿FMキャリア水晶発振器
ジャンク水晶67.18235MHzを基本波発振させ3逓倍し67MHz台としている。これにバリアブルキャパシタダイオードにマイクアンプからのAF信号でFM変調を行っている。オーバートーン発振ではほとんど変調がかからないので注意。

⓫FM用ミクサー
⓫の水晶発振信号とVFOを混合し目的のFM信号としている。以降はSSBと教養である。

⓬オシレータ回路
今回周波数の安定度、正確性を確保するためにオシレーター回路に拘った。必要とする周波数は、70.455MHzの第一中間周波数を455kHzに落とす70MHz、455kHz前後のSSBキャリア信号及びVFOである。
 70MHzhDDSAD9851を使用している。このDDSクロックは10MHzのTCXOを基準としてVCXO30MHzを PLLを組み安定化し供給している。またVFO(Si5351)用のクロック25MHzも30MHzクロックのAD9851で作っている。455kHzキャリアは10MHz基準のAD9850から作り出している。これらはすべて固定周波数なのでArduino-nanoを使用しコントロールしている。10MHzは外部からGPS基準信号等が入力できるようにしている。詳細は下部回路図を参照願いたい。こだわりのOSCである。

⓬VFOコントローラー
 今回はマルチバンドトランシーバーなので以前blogに掲載したタッチパネル付きVFOコントローラーを基本として採用している。ただこのトランシーバー用にカスタマイズしている。
 コントローラーにはAruino-Dueで、メモリー容量、スピード、I/O数等十分な性能がある。難点はどうしても大きいことであろう。特徴としてtっちパネルを採用し、多機能でありながら機械的スイッチの数を大幅に減らすことが可能となった。

⓭CATコントロール
Arduino-DueはUSBを2回路積んでいる。1個はプログラミング用、もう一つは外部機器との通信に使用できる。これを利用しパソコンと接続し「Turbo HAMログ」でデータ入力時に周波数を自動的に表示できるようにした。基本的な通信g理解できたので、トランシーバーを外部からコントロールできるようにすることも可能である。今後発展させていきたい。

 以上オールバンドトランシーバーの概要です。詳細については 省略させていただきます。

DE JA2NKD









 

 

2021年6月21日月曜日

ALL BAND TRANSCEIVER(1)

 Nowadays, SDR is the mainstream.

But I like analog systems. Since I first started amateur radio 50 years ago, I've always wanted "Collins". Recently, the "Collins Filter" has finally been discontinued.

Covid-19 occurred two years ago, and from last year, "Stay home" began to be shouted. This allows you to spend a lot of time on homebrew. On this occasion, I decided to make a transceiver using the "Collins filter" that I had longed for for many years.

For VFO, I used the touch panel type VFO controller that I posted on my blog before.

It was finally completed two years after it started. But the pandemic has not yet converged.


Specifications

Receiver
Circuit Type                    SSB/CW/FM/AM: Double conversion  Super heterodyne
Sensitivity                      SSB:2.4kHz CW:500Hz FM:12kHz AM:6kHz
Intermediate frequency  1st:70.455MHz,2nd:455kHz
Frequency range            Ham band (1.9,3.5,7,10.14,18,21,24,28,50)
                                    General (0-60MHz Receive only)
Audio Output                 2W into 8 Ohms

Transmitter
Modulation types            SSB(J3E),FM(F3E),CW
Power Output                5-8W
FM Deviation                 ±5kHz
Microphone Impedance  600 Ohms

Others
Power Consumption       Rx 1.0A    Tx 3.7A  (Maximum)
Supply Voltage              13.8V
Dimensions                   W:430mm  H:100mm  D:450mm
VFO                             Si5351 PLL
Controller                    Arduino Due
LCD                            3.2inch TFT with Touch Panel

Internal View


Block diagram

Video(YouTube)    https://youtu.be/toFvZ_4qtKs

I will upload the commentary to the blog little by little in the future.

DE JA2NKD


2020年8月8日土曜日

TRIO TR-5000 External VFO

 ※ 2020.08.30 Corrected the schematic

TRIO(KENWOOD)TR-5000  1968年販売開始されたAM,FMトランシーバー。OMならご存じではなかろうか。
受信はVFO,送信はクリスタルというスタイル。当時はこれでも結構QSOができた時代である。最近ではクリスタルの特注も難しい(特にHC-6Uタイプは)。
SDRが主流となってきた昨今いまさらAM,FMとも思うが、ノスタルジアだろうかAM通信もまだまだ愛好家が頑張っています。SDRではだれが作っても同じ性能のものになってしまいます。アナログ機器は作り手によって性能が大きく変わる。そこが楽しい。
 そんなことで、今回物置からTR-5000を引っ張り出し、外部VFOを製作しました。
ただの外部VFOでは面白くないので、周波数表示と送受信トランシーブVFOとした。


【構想】
・できるだけ本体は改造しない。
・トランシーブ操作
・周波数表示
・Arduino nano
・Si5351




【回路】
 受信用VFOの出力コイル2次側からFET(2SK241)ソースフォロワーで取り出す。出力は-25dBmくらいなので、MMIC(SGA-6386)で0dBm程度まで増幅する。これをさらに増幅、波形成型し74HC90で1/10に分周しArduinoによる周波数カウンターに入力する。
 カウンターの入力回路はJE1UCI冨川OMがICOM BEACONエレクトロニクス工作室No.134で発表されている回路を使用させていただいた。この回路は感度もいい。調整は2SC1815のコレクタ電圧を2.5Vにする。
 Arduinoに入力された信号はゲートタイム1秒でカウントし、LCDに表示する。また送信時(PTT ON)にカウントした周波数から送信周波数を計算し、Si5351PLLで送信出力を生成し外部VFO入力(外部クリスタル)に出力する。例えば
受信周波数 50.600.000の場合 VFO=50.6-41.58+1.65=10.67MHz
カウンタ入力=10.67/10=1.067MHz
なので表示数は(1.067*10)+39.93000=50.600MHzとなる。
送信周波数は24逓倍なので 50.6/24=2.108333MHzとなる。(Si5351出力)
 これで受信周波数によるトランシーブ操作VFOとなる。
 一つ問題がある。Arduinoの基準クロックは16MHzであるが、正確ではない。またSi5351の基準クリスタル25MHzも正確ではない。そこで、この補正を行うため、ロータリーエンコーダーを使いキャリブレーションできるようにしてる。
 操作は、運用周波数を受信し、CALスイッチをONにし、エンコーダーでメーターの振れが最大になるようエンコーダーを回す。これで送受信が一致して運用できる。電源を入れて1回操作をすれば大きくずれることはない。AM,FMなので問題ない。
 また、プログラムの中でカウンタの補正も行っている。既知の周波数を入力し表示周波数を見る。この比率で補正計算を行っている。
 例えば正確な10MHzを入力し10.00500MHzとなったら、計数0.9995を補正値とする。
 古い機器を再生させようと思っているOM諸氏の参考になれば幸い。

Arduino Sketch & Schematics(tr5000_counter.zip) Download
73's







2020年6月30日火曜日

VFO Controller 8.0 (Aruduino Due with touch panel)


多機能のVFOを製作しようと考えると、どうしてもスイッチが多くなる。例えばVFO7.1では12個のスイッチを使用した。こうなるとパネル製作も一苦労である。今回タッチパネル付きのTFTを使用し外部スイッチの削減を試みた。最近のメーカー製トランシーバーやSDRもほとんどがタッチパネルを採用している。どうせ作るなら盛り沢山の機能を搭載することにした。最近の私にとっては、ちょっとしたチャレンジである。尚、このVFOはアナログトランシーバー向けのVFOです。
【Hardware specification】
  • VFO  Si5351a PLL
  • TFT  2.8inch TFT with Touch Panel
  • MPU   Arduino Due
  • EEPROM 24LC64
【Software specification】
  • MODE  LSB,USB,CW,FM,AM
  • BAND  1.9-50MHz (Japanese Ham band),0-60MHz(General caverage
               Transverter mode(144MHz,430MHz,1.2GHz)
  • VFO     A-channel B-channel every band
  • VFO Type  Up-conversion Down-conversion chooseable
  • Memory  50channel 
  • CAT  CAT Controll (Frequency,Mode) for Ham Log Software
【manual】
[VFO-A]をタッチ
 サブメニューが開きます。
A/B VFO-AとVFO-Bが入れ替わります。
A->B Aの周波数をBにコピー
B->A Bno周波数をAにコピー
SPLIT メインが受信 サブが送信となりスプリット送信が可能となります。




[USB]をタッチ
 サブメニューが開きLSB,USB,CW,FM,AMの変更ができます。
[BAND]をタッチ
 サブメニューが開きます。希望のBANDをタッチすれば移動します。
[GEN]はGeneralで0-60MHzまで連続可変できます。送信はできません。
[TRV]はトランスバーターでサブメニューが開きます。144MHz,430MHz,1.2GHzが選択できます。この場合書くBAND毎にオフセット周波数を設定できます。イニシャルでは28MHz帯が出力されるように設定してあります。
[MENU]をタッチ
 サブメニューが開きます。
[M/R] メモリチャンネル呼び出し。1-50CH UP/DOWNで選択
[M/W] メモリーチャンネル書き込み。1-50CH UP/DOWNで選択。書き込みは上書きされます。
[PLLSet] Si5351aのクロック周波数を設定します。UP/DOWNスイッチでVFO出力を10MHzにセットし記憶します。
[CLAR]をタッチ
Cralifire(RIT)メニューが開きます。
[CLAR-R] 受信用Clarifire
[CLAR-T] 送信用Clarifire
[OFF] Clarifire 停止

[V-Type]をタッチ
VFOをUPConversionにするか、DownConversioにするかを設定します。BAND毎に設定可能です。

【Make】
 今回MPUにArduino Dueを使用。nano,UNOではメモリー容量が足らないことからの選択である。DueはEEPROMがないため24LC64というI2CのEEPROMを付加した。構成はI2C制御のSi5351、24LC64 SPI制御のタッチパネル付きTFT(driver ili9341)及びロータリーエンコーダーといたって簡単な構成である。またDueには2個のUSBが搭載されており、1つはプログラミング用 もう一つは外部との通信用に使える。今回これを使用し簡単なCATコントロールを搭載した。現状HamLogに対応している。
 注意点としてDueは3.3V動作なのでI/Oも3.3Vである。このおかげでTFTとダイレクトでの接続が可能である。半面 外部とのインターフェースも3.3Vが上限であることに注意が必要である。バンド情報、モード情報等の出力は3.3Vとなる。まだたくさんのI/Oが余っているので、追加機能も可能。


【Software】
 スケッチその他ライブラリー等はDownload Siteに掲載してある。
 タッチパネルを使用するには、最初にCalibrationが必要である。このやり方についてはライブリーの説明を読んで対応してください。Calibration スケッチもSiteに一括して掲載してある。

【CAT】
 CAT Controlle を搭載しました。ただし現状最低限でHam Logに周波数とモード情報を送ることができるだけです。今後機能を増やそうかとも思いますが、今のところ必要性を感じていません。多くの希望でもあれば対応するかもしれませんが。まあ、そんなことはないと思いますが。(笑)

 出来立てなので、まだBUGがあると思います。何かあればコメントでもお寄せください。

73's de JA2NKD

2021.05.13 回路図 修正




2019年8月24日土曜日

RF 2-Tone Generator

 Si5351は違う2種類の周波数を発振させることができる。ひょっとしてこれでRF2tone発振器ができるのではと思いついた。(誰でも想像すると思いますが)しかし小さなICで比較的高出力であること、また出力が矩形波であることから、高調波、PLLノイズ等が多く、発振器自体のIMにはあまり期待はできないと思った。しかし一度実験してみようとこのプロジェクトを開始することとした。


 高調波、低調波を減らすにはローパス、ハイパスではなく、バンドパスが必要である。それもかなり狭帯域としたい。そこで思いついたのがクリスタルフィルターだ。手持ちのクリスタルフィルターを見てみると10M15Aという15kHz/3dBのFM用のものがあった。10kHz離れならば問題なく、20kHzでもなんとかなると思いこれを使ってみた。
Inside

 クリスタルフィルターで歪まないようにSi5351の出力に10dBのアッテネーターを付け合成した後、このフィルターを通して出力している。結果は出力-20dBm IMは70dBc近辺となった。どうにか最低の合格ラインとすることができた。これならばある程度のIM3測定で使えるのではないだろうか
 できれば0dBm出力、IM80dBcはクリアしたいところである。この場合は各出力を合成前にフィルターを挿入し、増幅した後合成すれば達成できると思う。今回は前記の簡易型とした。

 10.7MHzのフィルターに対してきりの良い周波数(20kHzならば、10.690,10.710)となるはずであるが、SI5351のずれとフィルターのずれがあるので、周波数をずらして対応している。スペクトラムアナライザー等で2周波の出力が同じになる位置を探し出すところが、やや面倒かもしれない。10kHz以上の帯域を持ったフィルターがあれば別周波数でも可能である。


 Arduinoは、ATmega328にブートローダーを書き込んだもの(UNO互換)を使用して省スペース化を図った。もちろんNANOでもOK。Si5351はAdaflute互換の中華製を使用した。

 回路とスケッチはダウンロードサイトにあります。

 SI5351は150MHzまで出力できるが、フィルターという固定周波数の素子をいれているため、周波数可変はできません。しかし簡単に発振させることができることと、中華製で安価に入手できることから活用しない手はない。

Generator OUT

0-100MHz Spectrum

20dB Wide band Amplifier Measurement

 

2019年7月24日水曜日

Remake VFO Controller Ver 7.10 (Arduino + Si5351)


   注)改定情報を末尾に記載(Ver 7.20)
 Arduinoを使用したVFO-controllerを製作してから3年経過した。世界各国から色々なコメントを頂き感謝感謝です。この間、受信機等の製作に合わせてそのたびに色々な種類のcontrolerを作ってきた。これには結構なパワーが必要であり、無駄も多くなっている。
 今回このことを反省し、各種機能を取り込んだcontrollerを製作した。今後色々なシステムに合わせて改良しやすいように考慮したつもりである。ただプロセッサーにArduino-nanoを使用しているため、多少動きが良くないところもある。これは今後の課題としたい。
【特徴】
 今回の特徴としてバンドというイメージがないことである。VFOは1-54MHzまで連続して可変する。最近のメーカー製リグでは当たり前であるが。スケッチを変更すれば、この範囲は変更できる。バンド切り替えがない代わりにBPF,LPF等の選択を行うようにしている。適切なBPFが選択されていないと送信できない措置も行っている。このことから60MHz位のLPFを使用すればGENERALレシーバーとして使用できるメリットがある。できれば周波数に合わせて自動的にフィルターが選択できればいいのであるが、フラッシュメモリーが不足であることと、処理スピードが遅くなりうまく表示できない。もう1ランク上のプロセッサーが必要である。
 2つ目の特徴として、メーカー製リグでは当たり前であるが、2VFO(A,B)を持ち、A=B,A/B、SPLIT機能を設けた。メモリーは最大30チャンネルとした。メモリーからVFOへの移行も可能。
 3つ目の特徴としてtransverter対応としている。このモードは28MHzをベースとして144,435MHzに対応できる。VFOとしては28MHzと動作し、表示を144,430とする機能であり、同時にtransverter制御用の出力を用意した。
 ハードウェアの特徴としてI/O増設のためI2C用の PCF8574 を2個使用しスイッチ用に8ビット、BPF,MODE情報の出力用に8ビット増設している。
 VFO発振にはSi5351を使用し、54MHzまで対応できる。また昨年ブログに掲載したdsPICを使用したPSN送信機にも対応できるように考慮している。この場合受信周波数の2倍の周波数が必要となるので最大54MHzの場合108MHzの出力となる。

【Specification】

  • Rx Frequency Range     1MHz-54MHz
  • Tx Frequency Range     1MHz-54MHz (Ham band only)
  • Emission Modes           CW,AM,LSB,USB,FM (Max 5 modes)
  • Frequency Steps          10H,100H,1kH,10kHz,100kHz,1MzH
  • Memory Chanel           1-30 Chanel
  • BPF           1-15 (MAX 15)
  • meter          S-meter , PO-meter
  これら仕様は最大値で、カスタマイズして小規模用に容易に変更できるようにしている。
【Function】
  • VFO-Mode
          VFO A=B      Copy VFO-A to VFO-B
          VFO A/B       Main VFO Change A to B  B to A toggle
          VFO SPLIT    Main-VFO Rx   Sub-VFO TX 
  • Memory-Mode
          Memory Wite     1-30CH(Friquency,Mode,Step,BPF,SPLIT)
          Memory Read    1-30CH
          Memory to VFO  Memory Cnanel copy to VFO
  • Transverter-Mode
          144MHz,430Mhz   Base friquency is 28MHz
                                     144Mhz - 146MHz (28MHz-30MHz)
                                     430Mhz - 440MHz (28MHz 38MHz)
  • Tune
    Tune   送信機調整用に例えば1kHzを音声回路に送れるように送信時に
         1kH発振ができるようにI/O出力を用意
  • Si5351 Adjust-Mode
    Turbo-switch+Power ON でAdust-modeになり,25MHzが出力される。
    周波数カウンターに接続しUP/DOWNスイッチで調整できる。
  • Turbo
    エンコーダーでの変化を10倍にする機能。
    STEP 10Hzの時に、Turboを押しながら回すと100Hz STEP
    STEP 100Hzの時に、Turboを押しながら回すと1kHz STEP

【MEMO】
  ロータリーエンコーダーを回したときに周波数表示が多少ぎこちない。これはArduino-nanoのSPI速度の問題と表示アルゴリズムのもお題だと思われる。これにはより高速なプロセッサーが必要と思う。近い将来STM32やArduino-mega,Due等に乗せ換えたいと思う。またキャラクタLCDを使用したライトなものも用意したいと思う。
動作の詳細はマニュアルと回路図を参照してください。スケッチ&manualをダウンロードサイトにUPしてあります。

73's JA2NKD






改定(2019.10.22):回路図 修正 スケッチ 修正
改定(2019.12.02):回路図 修正 スケッチ 修正 Ver.7.20
改定(2020.03.22):回路図 修正


2018年10月28日日曜日

50MHz Receiver for PSN-Transmitter

 前回ブログで紹介したdsPICによる送信機が完成したところで、QSOの為には受信機が必要だ。新しく作るのもいいのだが、早くQSOを行いということから、以前ブログで紹介した7MHz受信機を50MHz用に改造することにした。

改造の要点は、

  • 50MHzPSN送信機とトランシーブする
  • そのため送信時に受信周波数の2倍のVFO出力が出来るように改造する
  • RFアンプと混合器を7MHzから50MHz用に改造する
  • 受信機をコントロールしているArduinoのスケッチを改良しトランシーブ対応とする。
【RF&MIXER】
 回路はごく標準的なもので、RFアンプに2SK439(2SK241)、混合器に3SK73を使用。
CQ出版の鈴木氏の「無線機の設計と製作入門」を参考とした。混変調等を考えると少し弱いかと思うが、昨今50MHzも空いていることから増幅度優先で採用した。

【VFO】
 受信時は中間周波数とUSB,LSBの周波数分シフトした発振となっているが、送信時は目的周波数の2倍の周波数が必要となる。この受信機にはSi5351を使用しているので、この周波数にも対応が出来る。
 送信機にもVFOを内蔵しているが、設定をEXT-VFOとすると受信機側で自動的に2倍の周波数を出力するようにスケッチを改良している。また送信機のVFOを使用するときは送信時に受信機VFOの発振を停止している。

【Arduino】
 スケッチはVFOのところに記したようにVFO周波数コントロール部分を書き換えた。
ここで一番問題になるのは受信時と、送信周波数がぴたりと同じでなければならない。
 PSN送信機では出力周波数の2倍の周波数が必要です。このため誤差も2倍になる。
そのためには本来Si5351の基準クロックである25MHzの精度がかぎとなる。然しながらここに使われているクリスタルは汎用のもので制度は求められない。このためスケッチに誤差補正分を演算している。といっても単純に誤差分を足したり引いたりと原始的手法で対応している。十分エージングを行い、誤差分を書き込んだ。そのため広い周波数範囲ではまだ誤差が発生すると思われるが、SSBのみの範囲では十分対応が出来ている。

【送受切替】
 送信時にHiとなる信号と、外部VFOを使用する場合にHiとなる信号を送信機から受信機のArduinoに取り込み上記のような制御を行っている。この辺りはもう少しスマートな制御回路としたかったが、既に有る7MHz受信機を改造したため、多少雑な処理を行った。

【運用】
 これで送信機、受信機がそろった。最近はトランシーバーが主流であるが、久々のセパレートタイプも趣があり気に入っている。
 受信感度もFT-991と比較して遜色がない。課題としてはAGCがある。増幅怒涛が変わったことから時定数の見直しが必要のようである。これについては暫く様子を見てから手直しをする予定。
 数曲との交信を行ったが、周波数がズレていると言うレポートも無いので、送受信時の誤差は許容範囲に収まっているようだ。各局とも音質については非常に良いとの評価でさすがPSNであると実感した。また、「初めてPSNの信号を聞きました」というコメントもあった。フィルターを使わないSSBでこれほど簡単に高品質のSSBが出来上がったことに満足している。当分はメインの装置となりそうである。

 今回詳細説明はしていないので、疑問点や質問があればコメントまたはメールでも頂ければ幸です。聞こえていましたらQSOお願いいたします。

Let's enjoy homebrew.
73's
JA2NKD Ryuu