ほんとにイライラすることばかりが起きる。なんでこんなめにあうのか。本当の意味がわからない。

いくら自分から面白いことを探そうとしても、ひたすらに不幸が追いかけてくる。嫌なことは自動的に毎日起き続けるのに、面白いことは追いかけても逃げていく。


とにかくこの毎日嫌なことばかりが起きるのをなんとかしたい。

自分の中からはただただやりたいことが沸いてくる。大半の嫌なことは他人に起因していて、

  • 嫌なことを言われる
  • 嫌なことを言われると予期される
  • 嫌なことをやらされる

となる。しかし他人に起因することは自分にどうすることもできない。無力。原因が解決しないので、運用でカバーとするしかないが、運用力がない。

もっと果てしないスルー力があれば解決するかもしれない。どのようにしてそれを手に入れればいいかはわからない。他人の重要性をもっともっと下げていきたい。お前らとかどうでもいいと思えるようになりたい。他人の評価を全て無視したい。

とにかくなんとかしてストレス解消したい。最近とことん些細なことでイライラする。

精神的余裕がないのに、追い討ちをかけるような事態しか起きない。ひどいめにあうということしかない。インターネットのほうがまだ安全ではないか。

自分は自分のルールで生きており、つまりこのルールは道徳ないし宗教なので、他人にどうこう言われるようなものではない。ただ生きてるわけでもなく、自分のルールに従って生きている限り、それをどうこう言われる筋合いは全くない。

事情を知らない人間はクソなことを言ってくる。お前の事情なんてこちらとしても存じあげない。コミュニケーションをしないやつに、コミュニケーション能力が低いと罵られる意味はなんだ。

中華AD8307のテストをしてみましたが、これはうまくいけばモジュールとして使えるようにピンヘッダを立てて作りました。

テストした感じでは使えそうなので、まずパワー計として動かしてみることにしました。

といっても、MCUのADCで読んで計算するだけです。

ただ、AD8307 そのままだと入力範囲が -76dBm〜+16dBm と、普段使うには電力範囲が小さいほうに寄りすぎているため、25dB のアッテネータを前段に挿入し、-51dBm〜+41dBm の範囲としました。

耐電力の大きなアッテネータは面倒なので、1/2W 抵抗を使い、定格1W程度、極めて短時間なら10W程度というイメージです。

使用感

実際10W入力すると3秒ぐらいでかなり発熱するのでこわいです。5W ぐらいまでなら〜5秒耐えられそうです。

確度

アッテネータの絶対的な誤差は簡単な校正で消せます (インターセプトが移動してるだけなので) 。AD8307 自体のログとの一致性は±1dB。

ただ、入力周波数によって出力電圧が結構変わりますので、確度を求めるなら周波数カウンタ機能をつけて、周波数も変数にして校正したほうが良さそうです。

例えば10MHzと500MHzだと、出力電圧にほぼ固定で10dB分の差があります (1ケタ!!)。一応、この差は周波数に応じてほぼ固定なので、入力周波数がわかっていれば簡単に補正はできます。

↓ はデータシート記載のものと、実測のもの


今回は周波数を測ってない以上、全域での絶対的な確度はあまり期待できません。

計測できた電力値が実際より大きい分にはあまり問題ではありませんが、実際よりも小さい値が表示されると、これを信じて他の機器につないだときに過大入力になることがあり、よくありません。安全策としては上限周波数で校正をかけることでしょう。

ただし、前段についているアッテネータの特性的に300MHzぐらいが上限です

用途

明確な出力が不明な信号源の場合、直接スペアナに繋ぐまえに、一旦チェックする用として使いたい気持ちです。瞬間的になら10W入力できますし、これなら壊れても痛くありません。

コード

#include <Arduino.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "interval.hpp"

static const float SLOPE = 26.367;
static const float INTERCEPT = -63.51879243;


LiquidCrystal_I2C lcd(0x27, 16, 2);
String formatWatts(const float watts) {
	if (watts < 1e-3) {
		return String(watts * 1e6) + "uW";
	} else
	if (watts < 1e-1) {
		return String(watts * 1e3) + "mW";
	} else {
		return String(watts) + "W ";
	}
}

void setup() {
	Serial.begin(115200);
	Serial.println("init...");

	Wire.begin();

	lcd.begin();
	lcd.backlight();
	lcd.setCursor(0, 0);
	lcd.print("Hello, World");
	lcd.setCursor(0, 1);
	lcd.print("TEST");
}

void loop() {
//	interval<1000>::run([]{
//		Serial.println("1000ms");
//	});

	uint16_t adc_raw = analogRead(0);
	Serial.print("ADC Got = "); Serial.println(adc_raw);
	float adc = static_cast<float>(adc_raw) / 1024 * 5;

	Serial.print("ADC Voltage = "); Serial.println(adc * 1000);

	float dBm = (adc * 1000 / SLOPE) + INTERCEPT;
	Serial.print("dBm = "); Serial.println(round(dBm));

	float watts = pow(10, dBm / 10) / 1000;
	Serial.print("W = "); Serial.println(watts);
	Serial.print("mW = "); Serial.println(watts * 1000);

	lcd.setCursor(0, 1);
	lcd.print(round(dBm));
	lcd.print("dBm");
	lcd.print("                ");

	lcd.setCursor(0, 0);
	lcd.print(formatWatts(watts));
	lcd.print("                ");

	delay(500);
}
  1. トップ
  2. tech
  3. 中華AD8307をデジタル電力計にしてみる

25dB で SMA 入出力のアッテネータが欲しくなったので作ってみました。アッテネータを作ってみるのは初めてです。

回路

アッテネータの計算機 を使って必要な抵抗値を求め、抵抗計算のサイトでどうやって近い値を作るかを調べ、このようにπ型のアッテネータ回路にしました。

ボードレイアウト

小さくつくりたかったので全部縦に並ぶようにしてみましたが、入出力が近くなるので、こう実装するのはあんまり良くなさそうな気がします。

結果

挿入損失

300MHz ぐらいまではそこそこフラットにみえます。

リターンロス

300MHz ぐらいまでなら SWR=1.2 未満になりそうです。

  1. トップ
  2. tech
  3. 高周波用アッテネータを作ってみる

中華AD8307をいくつか手に入れてみたので、ちゃんんと使えるのか実験してみました。というのも、値段的にどう考えてもコピー品だからです (単価50円ぐらい)

回路とボードレイアウト

回路はAD8307のデータシートに記載がある以下の「基本的な接続」の回路ほぼそのままです。電源のデカップリング用の 4.7Ω はフェライトビーズに変え、入力抵抗 52.3Ωは100 // 110Ωで作っています (が、手元に110Ω抵抗がなかったため100 // 220 // 220 Ω)

ボードレイアウトは以下のようにしました。PCB Milling で作るため必ずしも理想的とはいえません。

測定

手元にある信号発生器だと、スペアナのトラッキングジェネレータ出力が一番信用できるので、これを使いました。ただし出力が-20dBm〜0dBmまでを1dB単位でしか出せないので、出力がもうすこし大きくなって飽和近くになったときどうなるかはわかりません。周波数は10MHz固定です。

ということでこのようになりました。確かにログアンプになっているようで、綺麗に dB に対して直線になっています。

傾きは 24mV/dB (= (2230-1750)/20 ), インターセプトは -92.9dBm ぐらいにあります。

AD8307 本来の仕様的にはインターセプトは -87〜-77dBm なのですが、これはずれています。原因はよくわかりません。入力インピーダンスが正確に50Ωになっていない(アンテナアナライザーで測ると約52Ω)影響かもしれません。

追記

500MHz まで段階的にはかりました。

広い範囲にしてみてみると、傾き 25.5mV/dB、インターセプト-87dBm ぐらいに見えます (10MHz時)。こんなもんなのかもしれません。

まとめ

ひとまずログアンプとしては動いているようなので使えそうです。インターセプトのずれは実装の問題なのかICの問題なのかはよくわかりませんのでとりあえず保留としようと思います。自分の場合出力を必ずADCに接続するので、ここが多少ずれていても大丈夫ではあります。

余談

表面実装品のテストにPCB Millingをはじめて使ってみました。PCB Millingとしては、こういう使いかたをするのが一番の目的だったので、ひとまずうまく実験できて良かったです。SOIC は割と足の間隔が広いので、あまり細かいことができないPCB Millingでも十分いけることがわかりました。

  1. トップ
  2. tech
  3. 中華AD8307を使ってみる

ちょっと針が動いて楽しいアナログ計が欲しいなと思っても、昨今ではラジケータ(ラジオ用の精度の低い電流計の総称)もかなり高価で、秋葉原だと安くても500円〜という感じです。この値段だと、インターフェイスの味つけ程度のために買おうとは思いません。

ふと思いたって ebay で analog panel meter で検索してみると、100円程度で売られているものがありました。仕様的には AC 0-300V と、かなり高圧のフルスケールのものです。とはいえ、どうせ抵抗が入ってるだけなので、ちょっと改造すれば使えそうだと思い買ってみました。

仕様

見ての通りパネル全面にダイオードと抵抗がついています。簡単にはずせそうで便利ですね。このダイオードと抵抗は無視して、電流計本体のフルスケールと内部抵抗を測りました。

フルスケールはだいたい1500uA(1.5mA)ぐらいのようです。このとき、電圧は 620mV でしたので、内部抵抗は約413Ωです。


あまり格好いいメータとはいえませんが、スケールを貼り替えてカバーを塗装すれば多少マシになるかもしれません。ただ針の振れかたも安っぽく、ヒゲゼンマイのトルクがいまいちという感じがします。

とはいえ、ちょっとしたケースでデジタルPWMに繋いでアナログ表示させてみるみたいなケースでは使えそうです。3.3V なら 1.8kΩ、5V なら 2.9kΩ を直列に繋げばちょうどよさそうです。

  1. トップ
  2. tech
  3. 100円ぐらいで売られている中華ラジケータ(アナログパネルメータ)を試す

先日

最初は 3.3V で動かしていたのですが、どうしても途中から出力電圧が上がりませんでした。定格上では 3.3V でも +10dBm までは入力可能のはずなのですが、-2dBm ぐらいから出力が上がらなくなり、全くよくわかりませんでした。

http://lowreal.net/2016/02/22/1

と書きました。これの原因のちゃんと調べてみました。

まずAD8307 のデータシートには以下のような記述があります。

In most applications, the signal is single sided and can be applied to either Pin 1 or Pin 8, with the other pin ac-coupled to ground. Under these conditions, the largest input signal that can be handled by the AD8307 is 10 dBm (sine amplitude of ±1 V) when operating from a 3 V supply; 16 dBm can be handled using a 5 V supply. The full 16 dBm can be achieved for supplies down to 2.7 V, using a fully balanced drive.

要約すると、

  • シングルエンドアプリケーション時 (入力の片方のピンがAD8307のGNDに接続されている場合) は 3V のとき 10dBm までの入力が可能。
  • 差動接続の場合は2.7Vでも16dBmまでの入力が可能

と書いてあります。

これを見て 3V でも +10dBm まで使えそうだな、と思ってしまいました。

出力が頭うちに

しかし実際 3.3V で使ってみると、10dBm 入力しても想定した出力がでません。よくよく調べてみると、英語版の最新データシートだと以下のような記述がありました。

Note that while the AD8307 can operate down to supply voltages of 2.7 V, the output voltage limit is reduced when the supply drops below 4 V. This characteristic is the result of necessary headroom requirements, approximately two VBE drops, in the design of the output stage.

要約すると 出力回路に2つのトランジスタがあるので、4V未満ではこれらの 分出力が低下するよ、という感じのようです。出力回路の制限なわけですね。

が 0.7V とすれば2つで1.4V、電源電圧が3.3Vなら、出力電圧は1.9Vまで低減されます。これを入力 dBm に換算すると-8dBm付近になります (実際の によります)。

が -84 dBm、 が 25mV/dB で が 1.9Vだと -8dBm になります。

ということで、実測だと 3.3V 時に出力が頭うちになるのは完全に「仕様」なのでした。

結論

つまり、3.3V で使う場合で、-8dBm 以上入力させたいなら、傾きの調整が必須なのです。

傾きを 20mV/dB にすれば、 1.9V で +11dBm になります。20mV/dB に設定する方法はデータシートにそのまま載っていて、32.4kΩの抵抗と50kΩの可変抵抗を直列にして AD9807 の OUT と COM に接続 (内部の出力抵抗と並列に接続) して調整すれば良いようです。

といっても調整するのが面倒なんですが…

  1. トップ
  2. tech
  3. AD8307 を 3.3V で動かすときの罠

はぁほんと心底 Spring とか嫌だ…… なんでこんなクソなことをしないといけないのか。普通に書きたい……

「コイルとコンデンサは電圧と電流の位相差を90度進めさせる/遅れさせる」という説明を良く見ますが、どうも直感的に理解できていませんでした。電圧と電流の位相差が±90度か0度しかとらないという話ではないだろうし、「途中の位相はないの?」と思ってしまうのです。この説明の意味がわからない、という意味です。

疑問の詳細

コイルとコンデンサの組合せで共振回路をつくった場合、電圧と電流の位相差はゼロになるはずです。ではすこしだけ共振していない場合はどうなるのでしょうか? 現実的には殆どの場合共振していないはずです。

「すこしだけ共振していない状態」であっても回路全体としてはインダクティブであるかキャパシティブであるかのどちらかであり、±90度の位相差は起こっているはずです。

でも現実問題としては回路全体で観測できる電圧と電流の位相差は必ずしも±90度ではありません。少しだけ共振していない場合は殆ど位相はずれていません。

途中の位相はどこいった?

式を使って「このように位相がずれます!!」というのは置いといて「途中の位相はどこいった?」という疑問だけ解決します。


純リアクタンス成分に関していえば、確かに±90度の位相差を常に起こしています。これはコイルとコンデンサだけで構成された回路なら回路全体に対してもあてはまります。「少しでも」コイルやコンデンサがあれば必ず±90度の位相差が起こっています。コイルとコンデンサの複合回路でも、共振していなければ必ず±90度の位相差が起きます。これはシミュレーションでも確認できます。

しかし実際の観測される位相は抵抗成分も含めて考える必要があります。これにより回路全体を見たときの位相差は任意の角度をとります。

全体として、抵抗成分が少なければ少ないほど-90度か+90度に近付き、リアクタンス成分が少なければ少ないほど、0度に近付いていきます。

複素平面上で見たときも、純リアクタンス成分は全体としても±90度にしかならないが、抵抗が加わった瞬間、合成された絶対値はいろんな別の角度をとりうることがわかります。

つまり

「コイルとコンデンサは電圧と電流の位相差を90度進めさせる/遅れさせる」というような説明は、純粋にそのコンポーネントの理想的な電圧の電流の関係をいっていて、抵抗成分を含めたことは言ってないわけでした。この説明、何度も何度も目にしてきたのに、何を言ってるのかわかりませんでしたが (途中の位相もあるよな?と思っていた)、ようやく意味がわかった気がします。

そして思いますが、この説明の仕方は筋が悪いと思います。現実のコイルやコンデンサには必ず無視できないほどの抵抗成分がありますから、これらのコンポーネントだけで回路を構成したとしても必ずしも位相差は±90度のどちらかになるというわけではないはずです。コイルやコンデンサと言うのではなくて「純リアクタンス成分は〜」とかで書いたほうが正確だと思いました。

  1. トップ
  2. tech
  3. 「コイルとコンデンサは電圧と電流の位相差を90度進めさせる/遅れさせる」とはどういう意味なのか

AーDコンバータ活用成功のかぎ―変換のメカニズムと性能の引き出し方 (アナログ・デザイン・シリーズ) - 松井 邦彦

松井 邦彦

5.0 / 5.0

これを読みました。ほぼデジタル回路しか触らないぞと決めていたとしても避けて通れないのはADCです。

ΔΣ型や逐次比較型の説明ももちろんですが、他の構成(全く知らなかった)のADCについても解説がありました。

一番面白いというか役に立ちそうなのは精度に関するところで、何が支配的になって精度に関わってくるか、補正しにくい誤差はデータシートのどこの項目なのかが詳しく書いてあります。こういうノウハウはなかなか知る機会がないのでわくわくしました。

「何が支配的で何に影響を与えるか」は何を考えるときにも大事なところで、「コツ」の言語化だと思うので、こういうことがひたすら書かれた書籍を読みたいところです。

このへんのエントリの続きです

2014年に作ったSWR計でしたが、先月あたりセンサー部分の作りなおしをしてみて、前よりもよさそうだという感触を得られたので、一旦常用できるように仕上げることにしました。というのも、デスク上にバラックで積んであるブレッドボードと液晶がさすがに邪魔だからです……

PCB Milling で基板作成

今回 PCB-GCode という Eagle のプラグイン (ULP) を使ってみました。前に PCB Milling したときは謎の GCode 生成 ULP を使いましたが、こちらのほうが良くできていそうです。

こんな感じの基板を作って

PCB-GCode はこんな感じで

こんな感じの GCode をつくって

GrblServer で切削させて、実装しました。0.8T の基板なので配線が透けています。

片面切削だけにしたかったので、できるだけ Via をつかわず配線しています。そのため、DIP のピンとピンとの間を通すラインがあり、これがうまくいくか不安でしたが今回はうまくいきました。これぐらいなら 0.1mm 単位ぐらいの雑な調整でもなんとかなるようです。

CNC 切削で基板を作る場合、この程度の規模だと時間的にはユニバーサル基板で雑に実装するのとそれほど変わりません。しかし配線を Eagle 上でやって ERC にかけているのをそのまま切削しているので「配線ミス」というのが起きず、安心して実装できます。ユニバーサル基板での実装は結構気を使って疲れるので、ちょっと面倒でも切削でつくるのが気は楽です (ケースバイケースですが)。

インターフェイス

前に作ったものの中身をそっくり入れかえただけで、液晶も昔のものを再利用しています。バラック状態のときと違うタイプの液晶なので、ライブラリのAPIを適当にあわせたりして対応させました。

本当はせっかくなのでもっと格好いいケースに入れたいのですが、ひとまずこのような形におさめました。

ほかにも、高SWR時にブザーを鳴らす機能だとか、送信中にオンになるオープンドレイン出力だとか、シリアルに常時SWRを出力する機能なども実装してあるのですが、使ってません。

  1. トップ
  2. tech
  3. 自作SWR 計を一旦仕上げ

そういえば KX3 の源発振はDDSではなくて Si570 とかいうプログラマブルオシレータだよな、ということを思い出し、どうやって90度違いのI/Qを作ってるのが気になりました。

回路図を見ると以下らへんです。左側からきているのが Si570 からのクロックです。

NC7SB3257 はマルチプレクサ、74VHC4040 はカウンタで、ここはバイパス可能な1/8分周器なのでI/Qには関係ありません。

次に出てくる 74LVC74 は Dフリップフロップで、ここでI/Qのクロックを作っているようです。CLKc CLKs がそれぞれ In-phase と Quadrature のようです。

LTSpice でシミュレーションしてみる

LTSpice に入ってるデジタル素子でシミュレーションしてみました。この素子は理想素子なので、そのまま使うとシミュレーションできませんでした。適当に伝送路に遅延を入れるとなんかそれっぽい波形が出てきました。

4クロックで1つのI/Qクロックに変換される様子がわかります。

源発振の分周比を思い出す

KX3 で無線局免許を更新するとき、送信機系統図に源発振と出力周波数の関係を書いたことを思い出しました。これは電波法の規定で書かなければらないのですが、あまり深く考えていませんでした。以下の表です。

Dフリップフロップを使ったI/Qクロックは上記の通り4分周に相当するので、ここで書いてある表も殆どのケースで 1/4 の分周率になっているのでしょう。

1.8/1.9MHz だと4倍すると7.6MHzぐらいですが、Si570 が 10MHz〜 の発振器なのでさらに分周している、という話のようです。マルチプレクサとカウンタの分周は1.8/1.9MHz用というわけのようです。

DフリップフロップによるI/Qクロック生成のメリット/デメリット

メリット

  • 実質デジタル処理なので広い帯域で正確に90度位相差を得られる
  • クロック発信源が1つだけで良い

デメリット

  • 欲しい周波数の4倍の源発振器が必要
  • 矩形波出力 (デメリットかどうかは場合による)

200MHz ぐらいまでの発振器は安いのがいくらでもあるのですが、ここを超えると急に高価になる気がするので、50MHz で使うかどうか、DDS2台にするかどうか大きく判断が別れそうです。とはいえ、基本的にはDDS2台よりも安価で省電力そうです。

  1. トップ
  2. tech
  3. Dフリップフロップによる I/Q クロック生成

京都は住むのに心地良いところだったなあと思う。長く住んだらそうではないのかもしれないが、圧倒的に神社が充実していたし、気が滅入ったときに明確に休息のポイントがあった。

自分はどこにいても「余所者」扱いされていると感じるので、観光客という余所者が多いところはかえって孤独を感じず、心地が良く感じる気がする。鎌倉とかも良かった。東京も絶対数としては観光客は多いと思うが、圧倒的にクソみたいに馴染んでいる人間が多いのでクソが支配的でクソだと思う。

特に関東の中でも渋谷という土地は知っている中では最悪中の最悪で、どうしようもない。品川とか大崎とか、あるいは悪くとも新宿も比較的綺麗で落ちついている面もあるが、渋谷はどんなに新しいビルでもタバコ臭く、清潔感がない。どこを歩いてもドブの臭いがする。どこにいっても汚ならしいおっさんと汚ならしい若者が同時に存在しており混沌としている。谷底なせいで悪い空気が漂っているとしか思えない。

複素インピーダンスの場合、実数部は抵抗成分・虚数部はリアクタンス成分とわかれているので、イメージしやすいですが、電圧と電流の虚数部とは何なのでしょうか? と疑問に思ったので考えた結果をメモしておきます。

位相情報も含めた電圧・電流

実際のところ、位相も含めた電圧と電流は実数体で表現できます。つまり時間 、角周波数 、初期位相α、電圧振幅 E としたとき、時刻 t のときの電圧 v を表現するには

となります。この式は位相情報も完全に含んでいます。

ということで、位相を扱うには複素数が必須というわけではないわけで、なぜ複素数が必要なのかという気持ちになります。

しかし実数体で位相情報を含めて表現すると、上記のように三角関数を使うことになり、実際の計算はとても面倒になります。そこで、計算を便利にするために複素数の概念を入れます。

このとき使うのがオイラーの公式で、この場合、 三角関数が面倒なので指数関数にしてしまおう、そのためには電圧・電流表現を複素数体に拡大しよう、という感じのようです。

指数関数にするためにはこのような形式にする必要があるので、

と、電圧波形の式を複素形式にして (単に複素数部を付け加えているだけです。波形を表現するだけなら cos/sin はどっちがどっちでも良いので、オイラーの公式の形にあわせているだけです)

と指数関数に変換します。この形式で計算することで、オームの法則を使った普通の計算ができるようになって計算が楽になります。

例えばここでインピーダンスを考えると

e についている指数の割り算は指数同士の引き算になるので

指数の中を整理する

時間変数が消えてしまい、電圧と電流それぞれの初期位相 の位相差によって決まる定数がかかっている状態になります。この定数をまたオイラーの公式で戻してみると

この Z はインピーダンスなので、実数部は抵抗成分、虚数部はリアクタンス成分となっています。

はすなわち位相差なので、電圧と電流の位相差の cos() と sin() が単純な E と I との比にかかって複素インピーダンスを構成していることになります。

で、複素電圧と複素電流の虚数部は何なの?

複素電圧と複素電流の虚数部は何なのかというと「なんでもない」が答えのようです (単体では初期位相と関係しますが)。というのも、電圧にしろ電流にしろ負荷との関係をもって「電圧と電流の位相差」が現われるので、負荷との関係を考えない状態での、単体の複素電圧・複素電流の虚数部は何の意味もないということです。

インピーダンスは定義からして「電圧と電流の比」という関係の表現ですから、この関係の中に位相差が表現されるのは自然なことです。

  1. トップ
  2. tech
  3. 複素電圧・複素電流とはなんなのか

オイラーの公式とは一生無縁だと思っていた

げんきの絵本 おかあさんといっしょ かぞえてんぐ はって はがせる シールえほん - 講談社

講談社

3.0 / 5.0

横山だいすけおにいさんは「かぞえてんぐ」をやってるときが一番キてる(キてるとしか言いようがない)と思うので、一番かぞえてんぐが面白い。

「かぞえてんぐ」は数を数えたくて数えたくて辛抱たまらん!というキャラなのだけど、数えおわったあと絶頂とともにいきりたったところから「何か」が出てくる。

つまり数フェチで、周囲を巻き込んで数を数えるというオナニーをしたうえ絶頂するという完全なる変態である。NHK で放送されていいものなのか不思議なぐらいの変態なんだけど、実績からすると合法っぽいので、汚れちまった人間にだけ変態に見えるということなのかもしれない。

http://www.rigexpert.com/index?s=articles&f=aas で紹介されている回路を一通り自分の中で整理してまとめました。詳しい動作は今まで書いた各エントリにして、ここではそれぞれの特徴を書いてみます。

「アンテナアナライザー」と書いていますが、これをさらに発展させて入出力ポート両方で測定するようにすればネットワークアナライザになるはずです。

ダイオードディテクタ

  • ダイオードで検波するので、小電力時の非直線性が問題になり (誤差が多い) キャリブレーションが必要になる

抵抗1本タイプ

[tech] アンテナアナライザの回路 シリーズ抵抗1本型 | Tue, Mar 1. 2016 - 氾濫原

入力電圧・負荷電圧・負荷電流

  • 回路が簡単
  • 電流検出部で小さな電圧を測ることになる
  • リアクタンスの符号は不明

ブリッジタイプ

[tech] アンテナアナライザの回路 ブリッジ型 | Tue, Mar 1. 2016 - 氾濫原

入力電圧・負荷電圧・負荷電流・平衡電圧

  • 電圧反射係数を別途測っているので、SWR の精度があがる (特に1.0付近)
  • リアクタンスの符号は不明

ログアンプ検波

[tech] アンテナアナライザの回路 - ブリッジの三つの電位差を測るタイプ | Thu, Mar 3. 2016 - 氾濫原

AD8307 を使って検波するタイプ。

入力電圧・負荷電圧・平衡電圧

  • キャリブレーション不要
  • 差動接続のためブリッジの平衡部に直結できる
  • リアクタンスの符号は不明

ログアンプ+位相検出

[tech] アンテナアナライザの回路 ー 位相検出器を使ったタイプ | Fri, Mar 4. 2016 - 氾濫原

AD8302 (ログアンプ+位相差) を使って検波するタイプ

方向性結合器 複素電圧反射係数

  • キャリブレーション不要
  • 移相器を使うものは移相器の調整が必要だがリアクタンスの符号がわかる

複素入力電圧・複素負荷電圧

  • キャリブレーション不要
  • リアクタンスの符号がわかる
  • DDS が2台必要

ヘテロダイン系

[tech] アンテナアナライザの回路 ー ヘテロダインを使ったタイプ | Fri, Mar 4. 2016 - 氾濫原

  • より高い周波数を扱う場合に検討の余地あり
  • 回路はより複雑
  • DSPが必要

雑感

ダイオードディテクタを使う場合、現実的には後段にオペアンプによるバッファ回路を検出電圧分だけつける必要があり、部品数がかなり増加する。

AD8307 で検波する場合、ほかの部品は殆どいらずMCUなどのADCに接続できる。しかも精度が高い。アナログ部分が格段に少なくなるので設計しやすい。値段が高いのだけが問題。

AD8302 で検波する場合、リアクタンス符号がわかるのが嬉しい。しかし AD8302 はかなり高い。そしてDDSも2台必要。

作るなら

これまでを踏まえて、〜50MHz ぐらいまでを対象に、コスト的にそこそこで楽に作れてよさそうというのは AD8307 とブリッジを使うタイプだと思う。

コストをもう少しかけていいのなら、AD8302 + DDS2台 も十分に簡単な回路で作りやすそう。リアクタンスの符号まで知りたいならこれが一番簡単そうに思う。


リアクタンスの符号までわからなくても、現実的にはあまり問題にならないことのほうが多そう。アンテナの調整を目的とする場合リアクタンスは「同調しているかどうか」の判断に使うなら符号はいらないし、調整してリアクタンスが増えるか減るかでも符号を推測できる。

  1. トップ
  2. tech
  3. アンテナアナライザーの回路 ー まとめ

AD8302 (ログアンプ+位相検出器) を使った系です。

方向性結合器の出力を AD8302 に直接入れるタイプ

http://www.rigexpert.com/index?s=articles&f=aas

方向性結合器から進行波と反射波をとりだし、それを直接AD8302に入れるタイプのものです。

AD8302 にはログアンプであるとともに、2信号間の0〜180度の位相差の測定もできます。

位相差も測っているからリアクタンスも符号もわかると言いたいところですが、AD8302 の位相差は基準に対し0〜180度なので、この構成だと符号の区別はつきません。

AD8302 は AD8307 よりもさらに高価 (AD8302 はログアンプが2個と位相検出器が入っているので当然ですが) なので、リアクタンスの符号がわからないのはかなり残念な構成だと思います。正直、AD8302 を使って実装する価値はなさそうです。

計算

測定値として電圧反射係数 Γ の絶対値と位相角度 α がわかります。ということで反射係数の実部と虚部は簡単に求められます。

Γと伝送路インピーダンス・負荷インピーダンスの関係は


分母を有理化しつつ R + j X の形になるように (rectform()) していきます

ということで の形になったので R と X はそれぞれ

となります。計算上 X の符号は失われていませんが、そもそも最初の位相が正しかとれていないので符号がわかりません。

方向性結合器の出力の進行波側の位相を90度シフトしてから AD8302 に入れるタイプ

http://www.rigexpert.com/index?s=articles&f=aas

基準となる進行波の位相をフェーズシフターで90度進めることで、AD8302 の位相検出範囲を -90〜+90度にし、リアクタンス符号を計れるようにしたタイプです。

負荷インピーダンス自体は直接入れるタイプと同じように計算できます。こちらは符号が有効に出てきます。

広い周波数で正確にフェーズシフターを動かすのが難しいところだと思います。

抵抗ブリッジのリファレンス電圧と負荷電圧を計るタイプ

http://www.rigexpert.com/index?s=articles&f=aas

ブリッジのリファレンス複素電圧と、負荷の複素電圧を計るタイプです。AD8302 の片方には90度位相シフトした元の波形を入力し、位相検出範囲を -90〜+90度 にしています。

位相シフトした基準信号はDDSで作ります。つまりブリッジ入力用の信号源と、基準信号用の信号源とで DDS が2台必要です。しかし DDS なので広い周波数で正確な90度信号を作りだせます。

調整がいらないのが最大のメリットだと思います。

反射係数を直接測っておらず、基準電圧と負荷電圧を測っています。

E_{LOAD} と E_{REF} の絶対値と角度がわかっているので

電圧反射係数 Γ は

あとは上記の複素電圧反射係数から R と X を求める形でいけそうです。

  1. トップ
  2. tech
  3. アンテナアナライザの回路 ー 位相検出器を使ったタイプ

ヘテロダイン(周波数変換)を使ったタイプ

http://www.rigexpert.com/index?s=articles&f=aas

この方法の利点は信号を選択できることで、矩形波の高調波も信号源とできることだと思われます。つまり低い周波数しか発振できなくても、高調波を使うことで広い周波数を測定できます。

アンテナの入力に適当な信号を入力し、測定したい周波数 + f の周波数を出力に合成して、低い周波数 (中間周波数) f に測定したい周波数を変換します。この中間周波数にバンドパスフィルタをかければ目的信号を選択できます。

十分低い固定の周波数に変換されるので、実際の検波処理・位相差検出はADCとソフトウェア処理で行えます。

ダイレクトコンバージョンを使ったタイプ

http://www.rigexpert.com/index?s=articles&f=aas

ヘテロダインの一種ですが、目的周波数自体と、位相差90度の信号を出力に合成して、I/Q 信号として直接 0Hz にコンバートします。実際の検波処理・位相差検出はADCとソフトウェア処理で行います。

  1. トップ
  2. tech
  3. アンテナアナライザの回路 ー ヘテロダインを使ったタイプ