2017年2月8日水曜日

RF Analyzer Case in (Ver.1.0)

前回紹介したRF Analyzerをケースに入れ、バグ取り等修正を行い、1号機として完成した。

Fig.1 OUT-1

【ハードウェア】
 ケースはTAKATIのYM180 (W:180,D:140,H:40)。 今回プロトタイプの基板をそのまま収容したためこの大きさとなった。専用基板を作ればさらに小型化が可能だ。現在いつもお世話になっているKさんがプリントパタンを作ってくれているので、これが出来上がれば、また紹介したい。

Fig.2 OUT-2

 内部は、プロトタイプでユニバーサル基板を使用して作った基板そのものである。左からDDS基板、中央は下部にArduino-nano基板、上にLCD用レベルコンバータ基板、右にAD8307ログアンプ基板である。パネル面に2.2inchTFT-LCD、スイッチ、ロータリーエンコーダー。

Fig.3 Inside1
 AD8307の入力部分にはパッチンコアをつけている。これでノイズフロアが-5dB以上下がった。電源コードにもメガネコアを取り付け外部からのノイズ防止としている。AD8307は広帯域且つ感度がいいので十分ノイズ対策が必要だ。この対策は試行錯誤で組み上げてから対策していくほか無い。

Fig.4 Inside2

【基本仕様】


 Hardware
  • MPU        Arduino-nano uno
  • DDS        AD9850
  • LogAMP   AD8307
 Software
  • Arduino IDE    1.6.12
  • Sketch       fra1_00.ino (My Download Site)
  • Schematics         RF_analyzer.jpg (My Download Site)
  • Libraries             ucglib.h
                             Rotaly.h


 測定機能

  1. Signal Generator        0 - 55.000.000MHz
  2. Power Meter      -60dBm - +17dBm
  3. Frequency Analyzer  F: 0-55MHz 0-30MHz ±1dB 30-55Mhz ±2dB
  4. Antenna Analyzer      F: 0-55MHz  SWR 1.002 - 17
校正機能

  1. DDS Adjustment       DDS Clock Adjust (125MHz)
  2. AD8307 Adjusment   AD8307 level Adust

【取説】

Fig.5 MENU
「MENU」
 電源を入れると右のメニュー画面が現れる。
 MENUスイッチを押すたびに下にスクロールするので希望の機能を選択し、ENTERスイッチを押す。
 選択されている機能は赤く表示されている。





Fig.6 SG

「Signal Generator」
 信号発生器でDDS(AD9850)からフィルターを通して出力している。
 出力可能周波数は0(停止)~55MHz。
 出力レベルは-9dB~-11dBm

 ロータリーエンコーダーを使用し希望周波数にあわせる。
 エンコーダーのSTEPは、← →矢印で10MHz-1Hzに変更する。



Fig.7 DDS OUT Level

 Fig7.はDDS出力レベルをFrequency Analyzerで見たものである。30Mhz位まで-1dB 55Mhzまで-2dB位の変化がある。これは内部のフィルターの影響が多いと思われる。ノーマライズすると良いのであるが、Arduino-nanoではメモリー等無理である。
 今後もう少し検討したい部分である。







Fig.8 Noise Floor

 Fig.8は、AD8307入力をオープンでそくていしたもので、ノイズフロアを示している。-65dBm位で広帯域入力としては上出来では無いだろうか。AD8307の上限が+17dBmなので82dBのダイナミックレンジとなる。








Fig.9 Power Meter

「Power Meter」
 -60dBm ~ +17dBmまで測定可能。合わせてmW,Vrms,dBuVに変換した値を表示する。
 AD8307直接入力なので、くれぐれもオーバー入力しないように、アッテネーター等を付けて測定することが望ましい。また低レベル測定の場合は、広帯域アンプを付加して測定する。






Fig.10 Freq Analyzer1

「Frequency Analyzer」
 MENUを選択するとFig10.のコンフィギュレーション画面が表示される。ここで測定したい周波数範囲(Start、Stop)を入力。
 ← →スイッチで1,2,3を選択しENTERを押すことにより周波数セット画面になるので、エンコーダーとSTEPで設定する。
3のRef setでリファレンスレベルを変更することが出来る。






Fig.11 Filter Analyze1

 Fig11は9.785MHzのCB用クリスタルフィルタを測定したもの
 周波数START 9.780000MHz STOP 9.790000MHzの10KHzSPAN
 DDS出力は直接入力
 帯域4Khzで、スカート部分で確認できるのは-55dB程度








Fig.12 Filter Analyze2 

 Fig12は、上記フィルタ試験で、DDS出力に10dBの広帯域アンプを付け測定したもの。ダイナミックレンジが増加しスカート部分も延びて見える。
 尚SPANを20KHzにしているので、細く表示される。
 レベルの最大最小マーカーも表示している。
 マーカーはSPAN100Khz以下の時に測定表示する。位置変更は出来ない。





FIG.13 LPF Anlyze

Fig13.は7MHz用のLPFを測定したもの。
周波数範囲は0~30MHz SPAN 3MHz/DEVなので9Mhzで落ち始めていることが判る。









Fig.14 Crystal Analyze

Fig14.は10Mhzのクリスタルを測定したもので、fs,fpが綺麗に表示されている。fs-fpは22Khz位であった。
精度はDDSの精度によるため、DDSクロックを下記にでてくる調整試験で調整することにより向上する。目安としては十分と思う。







Fig.15 Antnna Analyze1

「Antenna Analyzer」
 MENUで選択するとFrequency Analyzerと同じ周波数範囲設定コンフィグレーション画面が出てくるので周波数を設定し、再度MENUを押すことにより測定画面が出る。
測定にはリタンロスブリッジを使用している。測定方法は前節で紹介している。
 Fig.15は15Mhzダミーアンテナを接続したもので綺麗にディップしている。SWRは1.05と表示されている。




Fig.16 Antenna Analyze2

Fig.16は当局の21,28,50トライバンドビームをアナらイズしたもので
21,28は綺麗にディップしている。50Mhzは今一あっていないことがわかる。43Mhzのディップも気になる。オートチューナーをつかっているのであまり気にしていなかったが、再調整が必要だ。
中々便利である。
中央のグリーンの横線はTFTの故障であるので無視願いたい。








Fig.17 DDS ADJ

「DDS CLOCK Ajustment」
 DDSのクロックである125Mhzは正確で無い。
DDSから10Mhzが出力されるので、周波数カウンターに接続し10Mhzになるように125Mhzをロータリーエンコーダーで調整する。概ね高めのようである。調整には十分エージングしてから行うこと。





Fig.18 AD8307 ADJ
「AD8307 Ajustment」
 AD8307からdBmをログ変換した電圧が出力されている。その変化(傾き等)を自動調整する。AD8307にボリュームを付けて変更できるが、今回は自動化した。
 信頼できる信号発生器で最初に0dBmを入力する。その後ENTERキーを押し次に-50dBmを入力する。再度ENTERキー押すことにより計算されROMに記憶される。信号発生器が用意できない場合は、初期設定値のままで使用すること。





Fig.19 Comparison

 「比較」
  Fig.19は、NET Analyzer2種類とプロトタイプのRF Analyzerと波形比較をしたものである。ダイナミックレンジ以外はほぼ同じ様な波形が観測できている。



  今後の課題として、DDSの周波数範囲の拡大や、出力の平準化等を検討したいと考えています。レベルとしてはアナログテスターレベルだと思いますが、これでも十分自作には活用できると思います。ご意見、質問等があればコメントかメールを頂ければ幸いです。
いやーー Homebrew is very interesting ですね。

Hi,My Homebrew friends in the world

Sorry,My English is poor.
Many efforts are necessary to me to write it by English.
I'd like to write it by English in the future.
If there are questions, please write a comment or send a mail.

73's
JA2NKD Ryuu




















2017年1月29日日曜日

RF Analyzer (Prototype)

P.1 RF Analyzer
P.2 MENU
 アンテナアナライザーを作りたいと思い、色々調べていた。その過程であれもできる、これも出来るということで纏めて作りこめれば便利だなと思いRFアナライザーを作ってみた。まだ試作段階であるが一応使えそうなことから掲載することにした。
 アナライザーというとちょっと恥ずかしい。RF用のテスターといった位置づけである。当然高級な測定器には遠く及ばないが、調整試験には十分活用できると思う。
 この手の測定器としてはJF3HZB 上保さんのFRMSが有名である。これを参考にさせていただいた。

【回路】
 回路構成は、DDS(AD9850)、LogAMP(AD8307),Arduino-nanoの3ブロックで校正している。
DDSで発信した信号をDUT(測定物)を通しArduinoのアナログ入力で読み取り解析・表示を行う簡単なものである。表示はPC等を使わずTFTカラー液晶に表示している。FRMSのようにPCを使って解析表示を行えばさらに見やすく、分析もより深くできるが、今回はTFTに表示しスタンドアロンで使える簡便なものとした。(というよりPCのソフトは作れないので。。。)
 DDSは例によって中華製のボードを使用した。このボードには問題もあるが、簡便に使える。
ボード上のクリスタル発振器は3.3V使用であるが、5Vで使用しているため多くの消費電流を消費すると共にかなり熱くなる。また出力についているLPFの特性が良くなく、高域になるとかなり出力が下がってしまう。今回の目的から極力広範囲でフラットな出力でなければ制度が落ちてしまう。
今回は直接出力を使い外部にLPFを設けた。このフィルターが重要であるが、今回簡便にπ型定型フィルタとしたが、もう少し検討したほうがいいかもしれない。作りやすさを優先した。
 LogAMP(AD8307)は優秀なログアンプでかなり正確に検出してくれる。今回の部品で一番高価なものである。測定物から出力される信号をこれで、dBをリニアな電圧に変換して出力される。これをArduinoに送っている。
 Arduinoはnanoを使用しているが、unoでも問題なく動作する。アナログ測定をするので、基準電圧として定番のTL431シャントレギュレーターを使用し2.5VをAREF入力に供給している。TFT液晶は大きいほど見やすいが、コンパクトにしたいことから、2.2または2.4inchi 240x320のものを使用。
 最近2.2inch液晶が品薄になってきているような気がする。2.4inchのほうが入手しやすいかもしれない。TFTドライバーがILI9341であれば使用可能だ。
 今回は高性能のAD8307をつかっているので、アースやシールド等作りこみによってノイズレベルが変化することから十分注意して作る必要がある。


【仕様】
 メニュー画面にあるように4つのファンアクションと2つの調整機能がある。

P.3 Signal Generator
(1)信号発生器

  DDSの信号を周波数を指定して出力する。
  周波数範囲 0-55MHz 1HzSTEP
  出力レベル -6dBm(~30MHz)
   これ以上はすこしレベルが下がる(1-3dB)






P.4 RF meter

(2)RF電力計
  
  RF電力を測定
  測定範囲 -60~+10dBm
   これ以下を測定する場合は、外部に増幅器を付ける。
   以上の場合はアッテネーターを付ける。
   くれぐれもオーバードライブに注意
      参考にmW , Vrms , dBμv 換算表示させた



P.5 frequency Analyzer

(3)周波数レスポンス

  DDSからスキャン信号を出力し測定物(DUT)の周波数特性を測定する。
  右のクリスタルフィルタは、9.75MHzのCB用のもの
  スキャン幅 10KHz
 ダイナミックレンジがもう少し欲しいところである。
 DDS出力に10dBのアンプをつけるといい。




p.6 Crystal response

 右は水晶を測定
 スキャン幅 100KHz 最高最低のレベルと周波数を表示
 幅が100Khz以下の場合は最高最低を再度細かくスキャンし測定する。







P.7 Antenna Analyzer

(4)アンテナアナライザー
 15MHz擬似アンテナを測定
 基本は周波数アナライザーと同じであるが、SWRを計算し表示する。
 測定には外部にリタンロスブリッジを付けて測定








P.8 Return Ross Bridge
リタンロスによるアンテナ測定の接続










P.9 DDS Adjust

(5)DDSクロック周波数調整
  DDSの基準クロック125Mhzはずれがあるので、ここで調整する。DDS出力を周波数カウンタに接続し、125MHzを変更しカウンタが10Mhzとなるようにする。
 補正値はROMに記憶される。







P.10 AD8307 Ajust

(6)AD8307 調整
  AD8307の出力も回路や個体差で変わるので、正確な0dBmと-50dBmを入力することにより補正できるようにしてある。
 補正値はROMに記憶される。







P.11 Noise level
参考までにAD8307入力オープン時のノイズフロアレベルです。
-60dBm










回路図とスケッチはダウンロードサイト




Hi, This is JA2NKD

I made a simple measuring tool (RF Analyzer).
When homebrew Radio  it can be used conveniently.


Thin Analyzer has 6menu. (see P.1)

1) Signal Generator
    0-55MHz 1Hz STEP (0-30Mhz Output -6dBm. 55Mhz is about -3dBm down)

2) RF Power Meter
    -60dBm - +10dBm

3) Frequency Response
     0-55Mhz filter,Cristal check,etc

4) Antenna Analyzer
    Added return loss bridge outside. Measurd SWR

5) DDS Adjust
    DDS Clock Adjast. Data is written EEPROM.

6) AD8307 Adust
    AD8307 output level adjust. Data is written EEPROM.

Hardware
  AD9850 DDS , AD8307 Log Amp, Arduino nano,TFT-LCD

Schematics & Sketch is my downloadsite.

Thank you.

73's
JA2NKD








2017年1月11日水曜日

Experiment of Cascode Amplifire

 いつもお世話になっているJH8SST 八柳さんがCQ誌新年号に7Mhz Simpleceiver を発表された。シンプルな構成であるが、7MHzにおいては十分な性能を発揮している。回路図を見てみるとFETを使用したカスコードアンプが採用されている。回路はN6QW Peteさんが発表しているSimpleceiverである。PeteさんはJ310x2のカスコードアンプをRF-Amp、IF-Amp、Detecter等に使用した受信機を多く発表されている。以前お世話になっているKさんからN6QW Pete氏のArduino、TFT液晶、Si5351のVFO情報を教えて頂いたときに、このカスコードアンプに興味を持った。以後何回かこの回路を使ってきたが、非常に便利であることを痛感した。然しながらこのカスコードアンプの特性については詳しく調べていなかったので、改めて簡単に特性を調べてみた。
 最近では3SKタイプのFETも入手難であることからゲインコントロールやミキシングが出来る回路は大変助かる。






 ARRLの「Experimental Methods in RF Design」 ( W7ZOI氏 他 著)に幾つか回路が掲載されていたので、これを見本に実験を行った。



実験は上図を参考に以下の回路図の3通り行った。

Schematics
【Fig1】
 2SK125を2個使用した回路で入出力は非同調のトランスマッチングでコイルは共に20:4である。
回路のミソは、下段FETのソースにダイオードを4個直列にして回路全体を持ち上げていることである。これによりゲートの動作範囲を大きく出来る。
 コントロール電圧を変化させたときの最大、最小の周波数特性を以下に示す。

MAX
MIN
【Fig2】
 2SK125と2SC1815を使用した回路で、後はFig1と同じ
 コントロール電圧を変化させたときの最大、最小の周波数特性を以下に示す。

MAX
MIN
(注) VG2としているが2SC1815のVb

【Fig3】
 2SK125と2SC1815を使用し、入出力を同調コイル(狭帯域 50MHz)としたもの
 コントロール電圧を変化させたときの最大、最小の周波数特性を以下に示す。

MAX
MIN


 上記のような結果であった。Fig1,Fig2は入出力非同調であるが、広帯域とまでは行かなかった。これはコイルの特性等によるものと思われる。
 Fig2のFET+TRの場合のほうが帯域は多少広がっている。IF辺りに使用する場合にはどちらでもいいと思う。
 Fig3の狭帯域は予想通り十分な増幅度が確保できている。(50MHz)

【コントロール電圧】
 Fig1,Fig2においてコントロール電圧を変化させたときの増幅度変化を以下に示す。
 FET+FETは変化がリニアである。FET+TRはリニアではないが大きな変化量を確保できる。
 受信機のIFアンプ等に使用した場合、聴感がどうなるかは分からないが問題にはならないと思う。今後実験をしてみたい課題だ。
 FETの入手難を考えるとFET+TRを使用していきたいと思う。
 QST200712月号にW7ZOI,WA7MLH共著で「The Hybrid Cascode A General Purpuse AGC IF Amplifire」を掲載している。これを見ても問題は無いということだと思われる。

Control-V VS OUTPUT


【応用】
 このカスコードは、3SKタイプのFETのようなものであることから、当然であるが、周波数変換やSSB検波にも使用できる。現にN6QWさんはプロダクト検波に使用したSimpleceiverを発表されている。

 ゲート回路のダイオードであるが、シリコンダイオード4個なので0.6Vx4=2.4V近辺となるが、W7ZOIは4個だったり5個だったりしている。そこで発光ダイオード(2V位)を使用してみたが、多少変化量が少なくなるものの十分使用できた。流れる電流は最大で25mA位であったのでこれに耐えられる発光ダイオードであればいいと思う。変化量で明るさが変わりカラフルで楽しい。

FETであるが、原典はJ310である。2SK125はほぼ互換と言われている。これもディスコンで流通在庫分しかなくなってきているようだ。2SK192等でも実験したが、IDssが小さなものは変化量が十分取れない。AGC等で変化量を大きく取りたい場合はIDssが大きなものを選択する必要がある。
2SK125は入手が難しくなってきているが、J310はまだまだ入手が容易である。すこし在庫しておくのもいいだろう。

 昔からある回路テクニックであるが、あまり応用された例は見ない。もっと積極的に使われてもいいと思う回路だ。例えば、送信機のポストアンプに使って出力コントロールを行うとか、DDS出力の安定化ALC回路、RFアンプのゲインコントロール等、色々な回路に応用できる。

 今回はあまりきっちり試験をしていないので、こんな感じであると見ていただき、各自色々応用してみては如何。


 



 

2016年12月11日日曜日

Multi Band DDS-VFO controller(Ver3) for 1.8inch TFT

 これまでVFO controller は2.2inchTFT LCDを中心に開発をしてきた。
 最近 海外のHomebrew仲間(Mr.Mikele)から、2.2inchTFTが入手しにくくなってきているとの便りが届いた。
確かにAliexpress等を調べてみると2.2inchの出品が少なくなっているような気がする。また値段も高くなっているようだ。そこでDDS-VFO controller Ver.3を、今のところ入手しやすい1.8inchTFTに対応できるSketchを作成した。
PHOTO-1

 今回使用した1.8inchTFTはST7735Sと言うドライバーが使われている。
PHOTO-2
PHOTO-3

 2.2inchと1.8inchを比べると多少画像が荒くなるが使用上の問題は無い。また、フォントが軽くなった分表示がスムーズになったようだ。動作、使用方法は2.2inchTFTと同じである。回路も基本的に同じである。ただTFTのバックライト用抵抗51Ωx2を51Ωx1に変更しているので注意。
 スケッチの書き込み方法について再度以下に記しておく。
  1. VFO controllerのハードウェアを製作し、Arduino nanoとパソコンをUSBで接続する
  2. Arduino IDE(1.6.5、1.6.12で確認済み)を立ち上げる 
  3. ダウンロードサイト(folder NKDVFO18V3.1)からダウンロードした"vfo_v3_18eep.ino"をIDEに読み込みnanoに書き込む
  4. 書込みが終了しArduino nanoが立ち上がるとTFTに以下(PHOTO-4)の画像が表示される。
  5. 次にダウンロードサイト(folder NKDVFO18V3.1)からダウンロードした(NKDVFO18_Ver3_1.ino)をIDEに読み込みnanoに書き込む。
  6. 書込みが終了すると以下の画面(PHOTO-5)が表示されて動作状態となる。
  7. 終了
PHOTO-4
PHOTO-5

 VFO controller has developed using 2.2inchTFT LCD up to now.
 I have received the comment from my overseas Homebrewer (Mr.Mikele) recently.
He said "I am waiting tft 240x320 long long time ohhhh"
 When I checked Aliexpress, I think exhibition of 2.2inch is little. Maybe it also becomes expensive.
 So I mede Sketch for DDS-VFO(Ver.3)using 1.8inchTFT. It's TFT is using ST7735S driver.
 When 1.8inch and 2.2inch TFT are compared, a picture becomes a little rough, but there are no problems on the use. That a font-data became light, maybe indication became smooth. The movement and use method are same as 2.2inchTFT. The circuit is also same basically.
But Resistance 51 Ω x2 for backlights of TFT is changed to 51 Ω x1, so please be careful.
 It's written on below once again about programming method of a sketch.

  1. Hardware of VFO controller is made and Arduino nano and a PC are connected by USB.
  2. Arduino IDE (It's checked in IDE1.6.5 or 1.6.12.) is started.
  3. "vfo_v3_18eep.ino" downloaded from my download site.(folder NKDVFO18V3.1)Read in IDE and it7s written in nano.
  4. When writing in ends. The screen(see PHOTO-4) will be shown to TFT.
  5. Next "NKDVFO18_Ver3_1.ino" downloaded from my download site(folder NKDVFO18V3.1). Read in IDE and it's written in nano.
  6. When writing in ends. The following screen(see PHOTO-5) will be shown to TFT. 
  7. End. It's be operating state.
73's

2016年11月25日金曜日

DDS-VFO controller by STM32-arduino

ブルガリアから嬉しい便りが届いた。



ブルガリア在住のHomebrewer Mr.Veselin Georgiev(LZ2WSG)がaruduino を使ったモノバンドDDS-VFO コントローラー(Ver3.0)をSTM32-arduinoに載せ変えて動作させたとの事であった。
STM32-arduinoというもの自体良く知らなかったが、調べてみると中々魅力的なMPUである。
ST マイクロのARM(ARM32Cortex-M3)を搭載し、動作クロック72Mhz、64Kbフラッシュメモリ、20KbSRAMを搭載した高性能ボードでarduino-nano互換となっている。開発環境もArduino IDEで可能でスケッチもそのままで動作するようである。MPUからするとarduino duoに近い性能である。
スピードを要求されるプログラムであればお勧めのボードである。値段も中国なら$1.5位で買えるのも嬉しい。一度使ってみるつもりである。


ブルガリアのアマチュア無線のホームページというのが有り、ブルガリアのHAM仲間の作品が満載されており、Mr.Veselinの作品も見られる。実に豊富な情報が満載である。一度見てみると面白いと思う。但しブルガリア語なので機械翻訳が必須。それでも分からないことがある。
 彼らの基本はOPENである。総ての情報を開示し、皆で共有しようというすばらしい考え方である。無線を通じて皆が情報を共有し無線を楽しむ。本当にそう思う。この考え方に共感を覚えるとともに、自分もそうありたいと思う。 Mr.Veselinに感謝 !!
尚、STM32-arduinoのソフト関係は以下に公開されている。
http://www.kn34pc.com/tmp/arh/stm32_nkd_vfo/

73's

I have received a wonderful letter from Bulgaria.
Homebrewer Mr. Veselin Georgiev (LZ2WSG) of Bulgarian residence. He made my mono-band DDS VFO(Ver3.0) on STM32-arduino, 
I didn't know anything as STM32-arduino well, but when it'll be checked, it's quite attractive MPU.
It's equipped with STMicro ARM(ARM32Cortex-M3) and it is arduino-nano interchange by a high-performance board equipped with operation clock 72Mhz, 64Kb flash memory and 20KbSRAM. The development environment is also possible in Arduino IDE1.6.5, and a sketch is also just as it is and they seem to move. It's the performance near arduino duo.
When it's the program of which you request the speed, it's a recommended board. 
When it's China, it's possible to buy it for 1.5 dollars. I'm also happy that can get it very inexpensively.

There is a home page of a Bulgarian amateur radio. Many works for  Bulgarian HAM appear on it. Works of Mr.Veselin is also seen. Very rich information is filling. 
 Their basis is OPEN. A wonderful way of thinking which will elucidate all information and share by everyone. Everyone shares information and enjoys through a radio. I think really so. It would like to feel sympathy with this way of thinking as well as be oneself so, too. 
Software of DDS-VFO by STM32-arduino is opened below.
http://www.kn34pc.com/tmp/arh/stm32_nkd_vfo/


Thank you very much Mr.Veselin LZ2WSG

DE JA2NKD

2016年11月20日日曜日

Arduino DDS Controller with TFT LCD(Ver.4) Added Keypad

 海外の自作仲間からMulti-Band VFOをキーパッド対応にしてほしいという依頼があった。最近のSNSのお陰で、世界中の無線家と繋がることが出来るようになった。無線で繋がり、インターネットで繋がり、情報交換が出来る時代なのだとつくづく感じる。


 マルチバンド対応VFOともなると操作のためのスイッチ等が増加し、前回のVer3ではI/Oの不足からアナログ入力を使用してスイッチを増やした。今回キーパッドともなると一挙にスイッチが増えることと、前回まででArduino-nanoのメモリーも限界に近く、これ以上の機能増加は無理である。
 そこで今回はArduino-mega2560を使用することとした。megaであれば、I/Oもメモリーも十分すぎるほど増える。逆にもっと機能を増やしてみたくなる。とはいえまだArduinoを始めて半年あまりなので、まだよく理解できていないことから、キーパッドによる操作のみの改良とした。今後アイデアが出てきたら機能アップをしていきたいと思う。


 キーパッドはごく一般的な4x4の16キーのものを使用している。制御線は4x2=8本を使用している。このキーパッドもご他聞に漏れずライブラリーが用意されている。こういうところがArduinoの良いところであろう。難なく制御が出来た。
 逆に今まで使用してきたロータリーエンコーダーがうまく動作しない。これはハードウェアPin割り込みがUNO,nano等とCPUの違いにより動作が旨くいかないようである。暫く検討したが、私の知識では解決できなかった。そこで、JA2GQPさんにHELPしたところ、ばっちり動作するようライブラリーを改造してくれた。誠にうれしい限りである。

 キーパッドでは、テンキーと付属機能用のスイッチを割り付けている。テンキーでは、バンドを直接呼び出すダイレクトキーとして、又周波数直接入力時のテンキーとしての2つの機能を持たせている。各スイッチの機能を以下に示す。
Input frequency dirctly

  • テンキー(1-9,0)
     バンドを直接選択。押せばそのバンドに移行する。移行前の周波数情報などはROMに記憶し、次回はこの周波数で呼び出される。GEN(0)キーは、ゼネラルバンドとして450KHzから30MHzまでのゼネラルカバーとしている。これによりMWからHFまで使用できるようにした。ただしこのバンドの時は受信専用で送信できないような措置を行っている。
     またENTキーを押した後は、周波数を直接入力するテンキーとなる。
  • STEP エンコーダーの周波数ステップを変更(10Hz,100Hz,1KHz,10KHz)
  • MODE
     
    電波形式を変更する。LSB,USB,CW,AMと変更され、VFO周波数のシフトも行う。尚、モード情報はI/Oの(38,39)にバイナリーで出力しているので、キャリア周波数変更等に使用できる。
  • MEMO
     
    メモリー機能は、今のところあまり活躍していないが、電源を切るときに現状情報を記憶し次回ONしたときに同じ周波数、モード、ステップで立ち上がる。
  • RIT
     Ver.3と同じで受信専用で±10KHz可変可能
  • ENT
     ENTキーを押すと周波数直接入力モードになり、画面上に( F: )が現れ、テンキーで周波数を打ち込むとここに表示される。尚、入力できるのは、現在のバンドの上限下限の範囲内としている。自動的にバンドを設定するようにはしていないので、入力したいバンドに先に移動しておく必要がある。周波数を入力後再度このキーを押すことにより切り替わる。
  • CLR
     
    周波数直接入力を行っているとき、入力ミスをしたときにクリアーする。
 I/Oの機能を以下に示す。
  • PTT(44,45)
     44pinをLowにすることにより送信状態となり、画面上に「ON AIR」と表示する。送信時は45pinがHighに替わり、送受信回路を切替制御できるようにしている。
  • MODE(38,39)
     モードによりこの2pinにバイナリーで情報を出力している。これでフィルタやキャリアの切替を行うことが出来る。(回路図参照)
  • BAND(34,35,36,37)
     選択されたバンド情報をバイナリーで出力している。(回路図参照)
  • メーター
     Ver.3と同様でSメーターと送信パワーメーターを兼用した入力。(0-5V)
  • エンコーダー(2,3)
     エンコーダー入力でA相、B相入力。
  • LCD(47,48,49,51,52)
     2.2inch TFT液晶との接続
  • DDS(40,41,42,43)
     AD9850DDSと接続。尚、AD9851にも対応できるが、ライブラリーの一部修正が必要。
 次にソフトウェアであるが、スケッチと回路図は、小生のダウンロードサイトにUPしてある。
  1. 必要なライブラリーをそろえる。
     LCD用ライブラリー
      * "Ucglib.h"     https://github.com/olikraus/ucglib
  2. AD9850用ライブラリー
      *   http://elecfreaks.com/store/download/datasheet/breakout/DDS/EF_AD9850_library.zip
  3.  キーパッド用ライブラリー
      *     http://playground.arduino.cc/Code/Keypad
  4. エンコーダー用ライブラリー
    * https://sites.google.com/site/ja2gqp/home/Rotary2560.h?attredirects=0&d=1
    上記ライブラリーを入手したらIDEに登録を行う。尚、エンコーダー用ライブラリーはメインのスケッチと同じフォルダーに保存する必要があるので注意されたし。
 IDEでバンド情報書き込み用スケッチ「VFO_V4_eep.ico」を開きmega2560に書き込む。
IDEでメインスケッチ「NKDVFO22_Ver4_001.ico」を開きmega2560に書き込む。
この手順で書き込まないと旨くいかない。

回路図



 A keypad is using 4x4 keys of 16key. A control line is using 8 lines. This key pad library is prepared.  With no trouble I could control.
 The rotary encoder used so far conversely doesn't move well. Hardware Pin_interrupt is UNO,nano and mega, movement is better and they don't seem to go to be different. It was considered for a while, but it couldn't be settled by my knowledge. JA2GQP He made me encorder ribrally for mega2560. Very thanks. 
 Keypad is allothed a numerical keypad and the switch of functions

Numerical keypad (1-9,0)
 A band is chosen directly. When pushing it,  shift to the band. Frequency information before a shift memorizes in ROM and is called by this frequency next time. The GEN (0) key is made a general band from 450KHz to 30MHz. You can use from MW to HF. But only receiving. 
 After pressing a [ENT] key, it'll be the numerical keypad which inputs a frequency directly.

STEP
 The frequency step of  encoder is changed (10Hz,100Hz,1KHz,10KHz).
MODE
  It's changed with LSB,USB,CW,AM, and a VFO frequency is shifted. Mode information is output  binary  to I/O(38,39), so it can be used for carrier frequency change.
MEMO
 When you push {MEMO] then memorizing the current state information and turning on next time started by the same frequency, mode and step.
RIT
 It's same as Ver.3  +/-10KHz variable possible
ENT
 When a ENT key is pressed, it'll be a frequency direct entries mode, and when [ F: ] appears on the screen, and a frequency is driven in by a numerical keypad, it's indicated here. It's necessary to move to the band you'd like to input first.  choose a frequency as pressing this key once again after input and switch over.
CLR
 When doing a frequency direct entries, when doing an input mistake, it's cleared.


The function of the I/O is indicated below.

PTT (44,45)
 It'll be transmit mode by making 44pin Low, and indicates "ON AIR" on the screen. When sending,  45pin change  High. It can use TRX circuit and control.
MODE (38,39)
 Mode information output  s 2bit binaly . It's possible to change a filter and a carrier with this. (Circuit diagram referring)
BAND (34,35,36,37)
 Band information output. (Circuit diagram referring)
Meter
 The analog input which was like Ver.3 S-meter and transmission power meter input. (0-5V)
Encoder (2,3)
 By encoder input.
LCD (47,48,49,51,52)
 2.2inch  Connection with TFT LCD.
DDS (40,41,42,43)
 AD9850DDS connection.

Next it's software. Sketch and a circuit diagram is my download site.

 Library for LCD
  * "Ucglib.h"
      https://github.com/olikraus/ucglib

 Library for AD9850
  *               http://elecfreaks.com/store/download/datasheet/breakout/DDS/EF_AD9850_library.zip

 Library for keypads
  * http://playground.arduino.cc/Code/Keypad

 Library for rotaly encoders
*
 https://sites.google.com/site/ja2gqp/home/Rotary2560.h? attredirects=0&d=1
 This library is necessary in the same folder as a main sketch, so please be careful.

If  get the above library, it's register with IDE except
A sketch for band information writing in "VFO_V4_eep.ico"  write in mega2560.
Main sketch "NKDVFO22_Ver4_001.ico" writes in mega2560.

73's