にゃん太郎とアマチュア無線

メインクーンのにゃん太郎と趣味のアマチュア無線と電子工作の記録です。

2015年09月

TFTアンテナアナライザにタッチスクリーン


タッチパネルでバンド選択をするようにしてみました。
使ったパネルはAdafruit 2.8インチ TFTタッチシールド です。


DSC03277

DSC03275


動作は下記のようになります。


タッチシールドはいろいろ探してみましたが、できるだけ安いものということで、単に以前にに購入したTFTにタッチシールドがついたものを購入してみましたが、タッチパネル用に5つもピンが必要なようです。
それでやむなく少し高いのですが Adafruit 2.8インチ TFTタッチシールド v2を使いました。これだったら3から9ピンまで自由に使えます。そして、これでしたらUgclibはそのまま使えますので、移植も楽です。
UgclibはadafuiltのAdafruit_ILI9341に比べるとすこし遅いのですが、文字のフォントがきれいです。
これでようやく一段落つきました。タッチシールドのチャタリングにえらく苦労しましたがいろいろArduinoの勉強になってなかなか楽しく遊べました。
まあコストを考えると、前に書いたタッチパネルなしのTFTを使ってSWでバンド選択できるのが一番です。

AD9850とAD9851DDSモジュール

このアナライザの原理は、DDSでアンテナに発振し、その周波数の進行波と反射波をArduinoで計算してシリアルポートに出力するというものです。原理的にはどのアナライザもおなじようなものみたいですが、いままで高い周波数が発振できるDDSが高価だったり、制御が難しくて、アンテナアナライザは結構高価でした。そしてK6BEZがこの安価な中華製DDSモジュールを使って安いアナライザを開発しました。この特徴は、部品点数が少なく、またArduinoで開発されているので、改造や移植も簡単で、特にグラフ化してPCで見られるようになり、アンテナ調整時には、連続Sweepにより、簡単に最低共振点を見つけられるようになりました。今では他にはスタンドアロンで使えるように1602タイプの液晶やDG7GAOの開発したグラフィック液晶をつけられるようにしたものがあります。

AD9850と9851ですが、チップ単体はピン互換です。チップ単体で使うよりフィルター類や水晶が実装されたモジュールで使うほうがはるかに使いやすいです。
そのモジュールですが、下記の写真のように中華製では、2種類のタイプが存在します。ピン互換のため、どちらもモジュールの乗っているチップがどちらかになっているようです。

DSC03272


モジュールの左のタイプの詳細はここにあります。右のタイプの詳細はここにあります。
右のタイプは古いタイプらしく、左のほうがシリアルのピンが一方に集められています。また右のタイプの回路図が間違っていてJ7のGNDと出力のD7に位置が上下逆になっています。
AD9850はクリスタルが125MHZになっていて9851は6逓倍モードがあるため30MHZになっています。
ピンをどちらかのモジュールで統一すると簡単に9850と9851が入れ替えできて便利ですね。

このモジュールは
W_CLK      クロック この立ち上がりのタイミングで下記のデータを更新
FQ_UD      周波数更新
SDAT(D7)    シリアル通信用での周波数データ入力 
RESET      DDSリセット
IOUT        出力ピン
の5つを使います。

AD9850はSine Frequency range: 0-40 MHz AD9851は Sine Frequency range: 0-70 MHz になっていて値段も1000円くらい高くなっています。
AD9851をArduinoで使う場合のスケッチの例はここにあります。
なおK6BEZのスケッチではサブルーチンのSetDDSFreq(double Freq_Hz)でDDSの周波数を制御しているんですが、この部分のint32_t f = Freq_Hz * 4294967295/125000000;をDDSの制御部分を単に周波数をAD9851用に180000000に書き換えただけではうまく動作しませんでした。

それで上記の例を参考にして


#define pulseHigh(pin) {digitalWrite(pin, HIGH); digitalWrite(pin, LOW); }


void tfr_byte(byte data)
{
  for (int i=0; i<8; i++, data>>=1) {
    digitalWrite(SDAT, data & 00000001);
    pulseHigh(SCLK);
  }
}


void SetDDSFreq(double freq_Hz) {
  int32_t freq = freq_Hz * 4294967296.0 / 180.0e6;
  for (int b=0; b<4; b++, freq>>=8) {
    tfr_byte(freq & 0xFF);
  }
  tfr_byte(0x001);
  pulseHigh(FQ_UD);
}

に変更したらうまく動いているようです。

DG7EAOのVNAも50Mhzに対応するようにコンパイルしました。大したことはしていないですが、、、
なおバンド選択でSweepした場合 Zoom inかZoom outを一回しないと表示されないようです。
ここにあります

DG7EAO TFT アンテナアナライザにバンド選択を追加

DG7EAOのアナライザにタクトスッチを増設してバンド選択をできるようにしてみました。この回路図どおりですが、ArduinoのみNanoではなくMicroを使っています。またダイオードを実験的に1N60に変更しています。
私 Arudinoは全くの素人なんですが、なんとかGoogle先生のおかげでできました。
もとこのアナライザはPin2とPin3にタクトSWが2つつけるようになっていて、1つは全体のSWR 1つは全体の最低SWRの周波数±1Mhzの値(詳細)を表示するようになっています。スケッチを描きかえれば任意の周波数を表示できますが、マルチバンドアンテナの調整の場合、それでは少し不便なので、タクトスイッチを1つ追加してました。

SW1 PD2 
アンテナ全体SWR表示

SW2 PD3
そのアンテナの最低SWR±1Mhzを詳細表示 または下記のバンドセレクトで表示したバンドの±1Mhzを詳細表示

SW3 PD4
 バンドセレクト 押すたびにバンドが選択されます。

DSC03273


動画はこちらです。なおこの動画は、試験的にダイオードをAA143から1N60に変更して実験を行っています。少し最低SWRが甘いようですが、手に入りにくいAA143の代わりで安価な1N60でも十分使えます。なおオペアンプはLM358 648Ω抵抗は680Ω 50Ωは100Ωの抵抗を並列に使っています。
これでしたらTFTディスプレイとAD9850以外はすべて秋月でそろうでしょう。




すばらしいスケッチを作ってくれたDG7EAO感謝です。


Very Tnx DG7EAO DK2JK and K6BEZ

プロフィール

nyantaroblog

記事検索
ギャラリー
  • UV-K5の通信ケーブルについて
  • RTL-SDR V3 FTDX3000 cwskimmer
  • RTL-SDR V3 FTDX3000 cwskimmer
  • RTL-SDR V3 FTDX3000 cwskimmer
  • direwolfでRA-35+xastir
  • direwolfでRA-35+xastir
QRコード
QRコード
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

HamLife.jp
  • ライブドアブログ