いろいろと実験した結果、このタイプのアナライザは誤差が大きく、校正して使わなければSWR値は信頼が置けない。共振点を見つけるくらい、ディップメータ程度にしか実用にならないと考えている。なので、実用に供すべくアンテナアナライザの校正についてのまとめとめてみた。
・誤差の原因
K6BEZタイプに代表されるダイオード検波型アンテナアナライザはダイオードの特性により系統誤差がある。このアナライザに使用されるGeダイオードは一般的に図のような特性となっている。SWRの値は、進行波の電圧をFWD、反射波の電圧をREVとすると、
SWR=(FWD+REV)/(FWD-REV)
で計算される。
また、広く使用されているAD9850 DDSユニットは、フィルターの特性、Qが低いためか広域での減衰が大きい。下図はDDSの特性を測定したものでY軸はAD変換値をダイレクト(10Bit 0-1023)に表示しているが、ほぼmVと見て良い。赤がオリジナルで青 MLA48は、フィルターを改修して高域の特性を改善したものである。
・校正表を作る
インピーダンスが純抵抗 (実数) 成分のみで構成される場合には、そのインピーダンスの比がそのままVSWRの値となる。したがって特性インピーダンスが 50 Ω、負荷のインピーダンスが 25ΩであればVSWR = 2となる。このことを利用して、市販の抵抗で各SWR値のダミーロードを作る
これらの値をもとにした、Arduino のデータ補正主要部分のスケッチは以下の通り。
REV = analogRead(A1); // Read the forward and reverse voltages
FWD = analogRead(A0);
if(REV>=FWD) VSWR = 99.99; // To avoid a divide by zero or negative VSWR then set to max 999
else VSWR =(FWD+REV)/(FWD-REV); // Calculate VSWR
// Adjust VSWR data by approximationformula
if ( VSWR < 1.10 ) VSWRratio =-4.0065 + 4.8971 * VSWR;
else if ( VSWR < 1.33 ) VSWRratio = 0.8162 + 0.5034 * VSWR;
else if ( VSWR < 1.65 ) VSWRratio = 1.2501 + 0.1764 * VSWR;
else if ( VSWR < 30.0 ) VSWRratio = 1.5481 - 0.0064 * VSWR;
else VSWRratio = 1.36 ;
VSWR= VSWR * VSWRratio;
if (VSWR < 1.00) VSWR = 1.00;
if (VSWR > 99.9) VSWR = 99.99;