A/D変換によるPICのSWR算出ヒント
2011-05-27
どうも数学(っていうか算数の領域も含めて)は苦手なんですが、SWRの計算は、多分以下の式で求められると思います。
SWR = (進行電圧+反射電圧) / (進行電圧-反射電圧)
① ②
進行電圧の方が反射電圧より必ず大きいとすると、①の算出結果の方が必ず大きくなることは明白です。
上の式は超簡単なのですが、PICは加減算はできても乗除算は普通にはできませんし、除算でループをブン回して減算を繰り返すのもどうかと思いますので、「ビット演算」に着目して考えていきたいと思います(A/D変換で使うビット数は10ビットとします)。
まず、MSB(ビット列の一番左側で'1'を示すビット位置)毎に、取り得る数値をまとめると以下のようになります。PICなどのマイコンは2進数の世界ですから、あるMSBビット位置の最小値と最大値の差は、「最小値×2-1」という関係が成り立ちます。
上記①の計算値と②の計算値のMSBが同じだった場合、最大と最小の比率は最大で「2未満」・・・つまり、「SWRは2より小さい」ということになります。さらに、①の計算値のMSBが8ビット、②の計算値のMSBが7ビット・・・のように、②のMSBが①より1ビットだけ小さいと、その差は約4倍・・・「SWRは4より小さい」ということになります。同様に考えてまとめると、MSBのビット差によって以下のように考えられます。
作るものがカップラですから、「SWRが29だな・・・」と解っても意味がありませんね
そう考えていくと、SWRが8より大きい場合マッチングは明らかに取れていないわけですから、「8よりでかいぞ
」程度に丸めてしまえば、MSBの差が3ビット以上のことは考える必要が無くなります・・・というか、かなりアバウトで良さそうです。
MSBが同一の場合はSWRとして1.0~(約)2.0という値になりますが、MSBの差が1ビットの場合でも、512と511、256と255・・・のように、数値的に非常に近いこと---即ちSWRがかなり低い場合もあるわけですから、この辺りを論理的に考えてやればよいことになります。同様に、MSBの差が2ビットの場合はSWRとして2.0~(約)4.0の間の値をとりますから、チューニング中にSWRの変化の挙動を押さえるためには、この辺りもある程度確かな値を計算する必要がありそうです。
さらに、最初の表で解るように、検出された電圧の低い方(MSBが小さい方)では大小比もどんどんと2倍差から離れていき、「同一MSB=約2倍論理」が破綻してしまいますから、せめて②の計算値のMSBが5か6ビットより大きくなるところを近似値計算域として使おう・・・といったところ。SWR測定時のワット数やオペアンプの利得を考える際には、できるだけA/D変換の数値上限で測れるように考慮した方が良いということですね。
ちなみに、MSB=10ビットはA/D変換値ではなく、あくまで①、②の計算値として取り得る値です。念のため・・・。
SWR = (進行電圧+反射電圧) / (進行電圧-反射電圧)
① ②
進行電圧の方が反射電圧より必ず大きいとすると、①の算出結果の方が必ず大きくなることは明白です。
上の式は超簡単なのですが、PICは加減算はできても乗除算は普通にはできませんし、除算でループをブン回して減算を繰り返すのもどうかと思いますので、「ビット演算」に着目して考えていきたいと思います(A/D変換で使うビット数は10ビットとします)。
まず、MSB(ビット列の一番左側で'1'を示すビット位置)毎に、取り得る数値をまとめると以下のようになります。PICなどのマイコンは2進数の世界ですから、あるMSBビット位置の最小値と最大値の差は、「最小値×2-1」という関係が成り立ちます。
MSB | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|
最大 | 2047 | 1023 | 511 | 255 | 127 | 63 | 31 | 15 | 7 | 3 | 1 |
最小 | 1024 | 512 | 256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 0 |
比率 | 1.99 | 1.99 | 1.99 | 1.99 | 1.98 | 1.96 | 1.93 | 1.86 | 1.75 | 1.50 | 1.00 |
上記①の計算値と②の計算値のMSBが同じだった場合、最大と最小の比率は最大で「2未満」・・・つまり、「SWRは2より小さい」ということになります。さらに、①の計算値のMSBが8ビット、②の計算値のMSBが7ビット・・・のように、②のMSBが①より1ビットだけ小さいと、その差は約4倍・・・「SWRは4より小さい」ということになります。同様に考えてまとめると、MSBのビット差によって以下のように考えられます。
MSBビット差 | 0 | 1 | 2 | 3 | 4 | ・・・ |
---|---|---|---|---|---|---|
SWR比最大値 | 2 | 4 | 8 | 16 | 32 | ・・・ |
作るものがカップラですから、「SWRが29だな・・・」と解っても意味がありませんね


MSBが同一の場合はSWRとして1.0~(約)2.0という値になりますが、MSBの差が1ビットの場合でも、512と511、256と255・・・のように、数値的に非常に近いこと---即ちSWRがかなり低い場合もあるわけですから、この辺りを論理的に考えてやればよいことになります。同様に、MSBの差が2ビットの場合はSWRとして2.0~(約)4.0の間の値をとりますから、チューニング中にSWRの変化の挙動を押さえるためには、この辺りもある程度確かな値を計算する必要がありそうです。
さらに、最初の表で解るように、検出された電圧の低い方(MSBが小さい方)では大小比もどんどんと2倍差から離れていき、「同一MSB=約2倍論理」が破綻してしまいますから、せめて②の計算値のMSBが5か6ビットより大きくなるところを近似値計算域として使おう・・・といったところ。SWR測定時のワット数やオペアンプの利得を考える際には、できるだけA/D変換の数値上限で測れるように考慮した方が良いということですね。
ちなみに、MSB=10ビットはA/D変換値ではなく、あくまで①、②の計算値として取り得る値です。念のため・・・。
- 関連記事
-
- 遠隔君の状態と処理内容
- 除算もどきでSWR算出を攻略!?
- A/D変換によるPICのSWR算出ヒント
- カップラのSWR検出
- 遠隔君の概要