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

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月28日月曜日

ALL BAND TRANSCEIVER(2)

 Appearance(front)

Do you notice anything when you look at the appearance?
Most frequency knobs such as transceivers made by manufacturers are attached to the right side. My transceiver is on the left. Because I'm left-handed.

Frequency nob    Rotary encoder 100als/r
Switches
    Lock      Frequency lock
    Turbo    Multiplies the frequency step by 10.
    ATT       Preamplifier Off
    AGC      Slow/Fast
    Tune     Test transmission (1kHz modulation)
    COMP    Compressor ON/OFF

Volume
    AFGAIN    Audio Gain
    SQL         FM Squelch
    MIC         Mic gain
    CLAR       Clarifier(rit)  Rotary encoder 25pls/r

LCD             3.2inch TFT-LCD with touch-panel
                   driver ILI9340 320x240

 Appearance(back)
ANT-1    
2 Antenna connector
ANT-2   Can be selected for each band
TRV      To transverter
IF         IF OUT(Not use)
10MHz IN    External reference frequency input(10MHz)
USB-U        Arduino Due USB (nativ port)  for CAT control
USB-P        Arduino Due USB (proglaming port)
AUX           External modulation Input
REC            Audio Output
KEY            CW KEY
SPEAKER    AF 8 ohm 2W

Circuit overview
The receiver is a double super heterodyne with a first IF 70.455MHz and a second IF 455kHz. The filter is a Collins mechanical filter 
     (SSB 2.4kHz, CW 500Hz, AM 6kHz).
The transmitter is a PSN direct transmitter using dsPIC and MAX2452.
The VFO controller used Aruino-Due & 3.2inch TFT-LCD with touch panel.

The following explanations will be written in Japanese. 
My English is poor. Sorry.

受信部

① BPF&LPF
ALL-BANDとなると各種フィルターがバンド毎に必要になり、製作が大変である。幸いオークションでICOM IC730のRF基板ジャンクを入手し流用した。この基板は1.9-28MHzの9バンドなので、50MHzBPFとゼネラルカバー受信(0-60MHz)用のLPFを自作し追加した。 
 
② RF amp
2SC1426を使用したNFBアンプで凡そ10dB程度増幅する。2SC1426は50mAバイアス電流を流しIP3を改善するようにしている。パネルにあるスイッチでON/OFFができるようにしている 。
 
③ 1st Mixer
このMixerでVFOと混合し第一中間周波数70.455MHzに変換している。 
MixerにはSL6440CというICを使用した。このICはIP3が高く、尚且つ変換ゲインがあるという優れものである。難点としてはSNが少し悪いことと、電流が50mA程度流れる。HF固定機で使う分には問題ない。VFO入力は結構クリティカルで大きすぎると極端に歪み始める。-10dBm - 0dBm当たりで調整が必要。スペクトラムアナライザーがあると簡単に調整できる。

④ MCF(70.455kHz)
第一中間周波数70.455kHzのフィルターで、帯域幅は15kHzである。オークションで入手。この谷も45MHzあたりのフィルターも時々見かける。2素子1組のものである。

⑤ Post Amp
Mixer後1段軽く増幅している。使用した素子は3SK291デュアルゲートFETである。回路はごく普通の回路。(回路図省略)

⑥ 2nd Mixer
uPC1037Hを使用したダブルバランスドMixer。外付け部品が少なく扱いやすい。最近秋月で互換性のある日本無線のNJM2594が入手できる。70.455MHzに70MHzを注入し一気に455kHzに変換する。FT-900でも同じ周波数構成を行っている。 
 
⑦ Collins Filter
今回の目的である「いつかはコリンズ」フィルター
SSB用    2.4kHz    562-8694-010 
CW用     500Hz      562-8693-010 
AM用    6kHz        562-8695-010 
クリスタルフィルターに比べてスカート特性等は非常に綺麗である。切れ音質ともにさすがコリンズと思えた。気のせいであろうか?(AM用フィルターの特性を以下に示す)
 
Colins Filter 6kHz

⑧IF Amp 
IFAmpはAD603 2段増幅で80dB増幅とした。回路はJA9TTTさんの記事等を参考にしている。非常に安定してうまく動作している。AGC等は周波数の違いもあることからカットアンドトライで決めた。
 
⑨ SSB,CW Detector 
 検波回路には2ndMixerと同じuPC1037Hを使用。キャリア周波数はDDSで作成しモードで変更するようにしている。
 
⑩ FM IF
DET FMIF増幅と検波は定番のMC3361を使用。周波数変換部を使用せず、中間周波455kHzをFM用フィルタ(CFWLB455F +-6kHz)を通してMC3361に入力している 
 

⑪AF Amp
AFアンプはOPアンプで増幅したのちuPC575C2という一昔前のメーカーリグに多用されていたICを使用。LM386と比べると2Wで余裕があり、音質もいい。


TO be continued

 

 

 

 


    

       

2020年1月27日月曜日

RF Power LDMOS Transistor

 昨今RF用のパワートランジスタが入手できなくなってきた。最近私が好んで使っているのは三菱のRDシリーズ(RD16HHF06等)である。好んでというよりは選択肢がないというのが正解であろう。非常に使いやすいが、アイドリング電流が大きい等の課題もある。
 そんな折、自作仲間からMOSが良さそうだという情報を頂いた。早々色々検索をしてみたが、自作で使用している例はほとんどなかった。そこで実験をしてみることにした。
 候補としては、国内である程度の価格で購入できるRQA0009TXDQS(RENESAS)とAFT05MS004NT1(NXP)とした。
いづれも400MHzで5W程度のFETで、中華製のハンディートランシーバー等に使用されている。実際にいづれもHF,VHFで5Wの出力を確認できた。データシートのデータではいづれもVd=7.5Vとなっていて、やはりモバイル用機器用と思われる。2つを比較するとRQAのVdss=16Vで13.8V仕様では低すぎる。AFTはVdss=30Vでどうにか13.8Vで使えそうであることが分かった。マージンを考えると40Vはほしいところである。もちろん13.8VでAMは無理である。CW,SSBなら何とか使用できそうだ。実際に使用して確認していきたい。
 ということでAFT05MS004NT1で製作してみた。AFT05MSはLDMOSというFETで最近の主流となりそうなものである。

 使用例がないので、いつもの定番回路で実験してみた。
入力はコンデンサー直結の非同調で、バイアスを可変抵抗で調整できるようにした。また、ゲート側の抵抗を分割し51オームでAC負荷とした。これにより信号源インピーダンスを落ち着かせることができるのではと思っている。
 出力側はトロイダルコイル(FT-37-43)による広帯域とした。回路図と写真を参考にされたい。

 この回路で動作させた結果をグラフで示した。思いのほか高性能である。また、同一回路で三菱のRD16HHF06を使用したものよりも広帯域に動作し、HF~50MHzにおいてほぼ同様の結果となった。50MHzでも増幅度27dB程度ある。(fig1) 効率も60%を超え優秀である。Vd:13.8V アイドリング:100mA 入力:10mW 出力:5W Id:0.6A)

 入出力特性もリニアである。非常に良い結果が出た。周波数で50MHz以上で低下しているのは回路設計の問題で、VHF,UHF用に設計すれば同様の特性が得られることは間違いないと思う。(fig2) もともとVHF,UHF用だから当然である。
 この結果は大いに満足できる。HF~50MHzのオールバンドトランシーバー製作に弾みが付きそうだ。

 今後の課題は、形態がSOT-89というチップタイプであり、十分放熱できるように取付方法を検討する必要がある。写真のような基板構造では放熱効果が低く基板がかなり熱くなり、基板上の部品の温度変化等も含めアイドリング電流が増加していく。冷えれば戻るが。実験ではCW連続信号なのでなおさらであるが。SSBならこれよりはましだとは思う。
一応この構造で5分の連続運転でも無事ではあった。
 このAFTシリーズには、15W,30W出力のものもあるようなので、機会があれば入手して実験したいと思う。

 これがうまく稼働すれば、2SC1970,2SC1971,2SC1972といったトランジスタに代わるものとして使用できるのではないかと期待している。
 尚今回JA2GQPさんが基板を製作され提供して頂いた。いつもながら深謝。
 FETの入手先はマルツ(Digi-key代理店)

DE JA2NKD