« PIC24FJシリーズ SPI 誤動作 | メイン | PIC24FJ128GB106 データメモリー不足 »

2015年8月 8日 (土)

アンテナアナライザーの製作(全機能組み込み)

<カテゴリ:アンテナアナライザー>

LCDドライバーのマイコンのROM容量が64Kをオーバーしそうになったので、ROM容量が128K品であるPIC24FJ128GB106に変更し、製作を継続してきましたが、正規の基板を使っていない事もあり、配線引き回しが多く、ノイズによる誤動作で苦労しました。 せめて両面高密度実装基板なら、こんな問題は起こらないのですが、そこは手作りの基板ゆえ、苦労が絶えません。 とりあえず、目標としたアンテナアナライザーの全機能を組み込む事ができました。 これから、実際に使ってみると、問題点も出るでしょうが、 アンテナアナライザーの製作の最終章です。

Aa50normal

Aa50cal

左上がノーマル状態、右上が校正モード時のLCD画面となります。

校正が完了した各ダミー抵抗によるADの出力値は赤色で表示されています。

校正は3.5MHzバンド付近のみで行い、他の周波数では行いません。 これは、センサー部分のブリッジからダミー抵抗まで約50mmあり、これが影響して周波数が高くなるに従い、検出されるRやXはもちろん、Zも変化するためです。

Aa50100dummy

ちなみに、100Ωのダミー抵抗(純抵抗)を接続し、Mコネクターの特性インピーダンスを仮に30Ωと置いて、周波数を可変した時の計算値は左の表のようになり、実際の値も、近い値を示します。 例えば、50MHzで100Ωのダミー抵抗による校正をするという事は、50MHzでZ=100にすることになり、実際値とは異なる数値になるからです。 従い、このアナライザーでは、3.5MHzにてZ=100と定義し、RとXはその時のSWR=2.0との関係より計算させるという方法を取っています。 そして、広帯域発振器の出力レベルを比較し、周波数により変化が有ればこれを補正する事にしました。

Aa5017m

Aa50fc_2

左上が私の18MHz用ループアンテナのSWR特性。 右上が今回追加した周波数カウンターモードの表示例です。

周波数カウンターは、WWVやWWVHで校正された基準周波数を入力して、内臓の周波数カウンターのゲート時間を正確に20m秒に調整する必要があります。 その時の外部基準信号をアンテナを接続するMコネクターから加える事にしましたが、この機能をそのまま、周波数カウンターとして使えるようにしました。 0dBmの信号で最高周波数110MHzくらいまでは100Hz単位で計測できます。 しかし、よくよく眺めると、SWR,ZやR,Xの表示がバラバラです。バラバラになるのは当然なのですが、見てくれは良く有りません。次回、変更のチャンスが有ったら、これらの表示が無効になるような対応を考えたいと思います。

一応、当初の目標としていた機能はすべて組み込み完了しましたが、ひとつだけ気になる問題があります。 18MHzのアンテナのSWR特性カーブの中の、SWR1.1付近で不自然にカーブがずれています。 この原因を詳しく調べると、この不自然な変化周波数を境にして右側はインピーダンスが50Ωより高くなっており、左側は50Ωより低くなっています。 SWRを換算するとき、50Ω以上の時と、50Ω以下の場合のSWRの換算方法が異なる為、この境目でSWRが一致しないという問題でした。 SWRが小さい状態でインピーダンスが50Ωを横切った場合、あまり目立ちませんが、SWRが大きい状態でインピーダンスが50Ωを横切ると、完全に段差が生じます。

このインピーダンスにより、換算値に誤差が出る原因は、SWRメーターとアンテナのリアクタンスの関係 の記事で触れたように、リアクタンスが含まれた時の計測誤差が影響しておりました。

Aa50swr0

Aa50swr1

Aa50swr2

上の画像は28MHzのCW運用バンドに合わせたループアンテナのSWR特性です。 

 左の画像が、インピーダンス50Ωを境に、高い時と、低いときでSWR換算方法を使い分けたものです。 50Ωを横切る周波数が2か所ある為、2か所で段差が生じています。

真ん中の画像は、換算方式を通常のSWR計と同じ方法にしたものです。段差が無くなった代わりに、中心周波数より離れた周波数で、SWRが低く表示されています。

右側の画像は、インピーダンスが全て50Ω以下と想定して、換算させたSWR特性です。

どの、画像も、SWRが1.5を超えたら、それぞれ誤差が大きくなり、特にSWR2以上の場合、いずれも、正確なSWRは表示していません。 アンテナ調整を行う時、悪いSWRが良く出る率が小さい方がましですので、このアナライザーは一番右の特性になる方式でいきたいのですが、SWR2.0の校正を100Ωでやっている関係で、一番右の換算方法では100Ω時のSWRが校正されません。 25Ωの抵抗で校正すれば、OKなのですが、世の中のアンテナアナライザーのほとんどが100Ωで校正されていますので、25Ωで校正した場合、比較したとき誤差が大きくなりそうです。 従い、このアナライザーも一般のアンテナアナライザーやSWR計と同じ校正方法となる真ん中の方式でいく事にします。

また、この製作の発端となったLCD表示のアナログメーターの動きも、大きな違和感なしで共振周波数を探る事が出来ます。  指針の動く速さを改善する手段として新たに、指針移動角度に応じて書き換える範囲を可変する事にしました。 指針が移動するとき、旧指針を消して、新しい位置に指針を書き込む必要がありますが、これを1回の書き換えで実現する為に、新指針のエリアより上下左右の広い範囲に目盛の再書き込みを行い、この操作で旧指針を消していました。 しかし、指針が2度の角度で移動するとき、左右で9ピクセル分の目盛データを上書きする必要がありました。  そこで、指針の移動角度小さいときは、それなりにカバーする範囲を小さくし、最少角の0.25度の時は、左右で3ピクセル分のみカバーさせる事にしました。 さらに、このカバーエリアの拡大は、指針が右へ動く時は、左側だけ、左に動く時は右側のみとして、書き換えるエリアの面積を常に必要最小限とする事により、 クラニシのアンテナアナライザーのメカニカルメーターと同等の速度まで改善する事ができました。

指針が0.25度動いたときの最大移動ピクセルは約0.7です。 0.7ピクセルは実在しませんので、実際は1ピクセル移動します。 従い、進行方向はゼロピクセル、後方は1ピクセルだけ再描画すれば旧指針は消えるのですが、実際は、ADの変換値がチラチラとばらつきますので、そのバラツキをカバーする為に、進行方向は1ピクセル、後方はさらに1ピクセルの2ピクセル分だけ再描画が必要です。さらに、0.5度間隔から0.25度間隔に変更した時点では、0.5度分のピクセルが残っていますので、これを吸収する為、さらに後方に1ピクセル分の再描画エリアを確保する必要がありました。  このアルゴリズムでプログラムを組んで様子を見ていますが、時々旧指針が消えずに残る時があります。 旧指針の範囲を指針が移動するまで残ります。 ただし、この異常現象は、バグ対策を行うほどに頻度が小さくなっていくようです。

各ADの出力値は温度や周波数でわずかに変化します。このわずかな変化を検知して、出力されたADデータ値を補正します。 この補正プログラムも組み込みましたが、過酷な温度試験は実施していません。 たちまちは、気温差が10度くらいで100Ωの指示誤差が+/-1Ω程度になるように、補正係数を調整しました。

今後、実用テストが出来るようにケースに収納した上で、デバッグを継続する事にします。

ROM容量が64Kをオーバーするかも知れないと、マイコンを128K品に交換しましたので、少しでも視認性を上げるべく、フォントを新作して、組み込む事にしました。 ところが、データエリアが32Kを超えたとたん、コンパイラーがエラーを吐きます。 なんとか対策できましたが、完成度はなかなか上がりません。

最新回路図をダウンロード

完成度はあがりませんが、せっかく実現した周波数対SWRのカーブをPCに転送してPCの画面上にグラフを描かせる事にトライする事にしました。 たちまちは予備検討です。

この記事でアンテナアナライザ製作を終了する予定でしたが、色々と問題点や改善テーマが出てきて、終了できませんでした。 しばらくは製作記事が継続します。

SWRグラフをSDカードへセーブ へ続く。

アンテナアナライザーの製作を最初のページから参照したい場合ここからどうぞ。

INDEXに戻る