回路を作る技術はまだないので、秋月のAD9851モジュールを購入し使用。
http://akizukidenshi.com/catalog/g/gM-09945/
接続図はこちらを参照してください。
サンプルスケッチは10KHzを出力するプログラムでした。スペクトラムアナライザーで計測したところ、出力は-16dBmでした。10dBmのアッテネータを取り付けているため、実質-6dBm出力と思われます。スペック上の出力はサイン波10MHzが1Vp-pとのことですので、dBmを以下の計算式より求めます。
正弦波実効値Vrms = Vp-p / (2√2)
電力P(mW) = Vrms^2/R x 1000 (R=負荷)
レベルP(dBm) = 10 x Log(P(mW))
となるので
正弦波実効値Vrms = 1 / (2√2) = 0.353 Vrms
電力P(mW) = 0.353^2/200 x 1000 = 0.623045 mW (モジュールの負荷は200Ω)
レベルP(dBm) = 10 x Log(0.623045) = -2.05 dBm
となります。
計測値では-6dBmでしたので、4dBmほどロスしているようです。スペクトラムアナライザーが50ΩでDDSモジュールの負荷が50Ωですのでインピーダンス不整合が理由かと思われます。他サイトで50Ωと200Ωのリターンロスが4.437dBmとのことでしたので、ほぼ理論値かと思います。
今後、ネットワークアナライザのような機能を作成してみたいので周波数を掃引させてみます。スケッチのloop部分を以下のように書き換えました。100kHzずつ10msで書き換えます。
#include <EF_AD9850.h> //BitData - D8, CLK - D9, FQUP - D10, REST - D11 EF_AD9850 AD9850(9, 10, 11, 8); void setup() { AD9850.init(); AD9850.reset(); AD9850.wr_serial(0x01, 10000); //10KHz } void loop() { for(int Freq_sweep = 0; Freq_sweep <=400; Freq_sweep++){ AD9850.wr_serial(0x01, Freq_sweep*100000); delay(10); } delay(10000); }
掃引する動画はこちら
このDDSは40MHz位までの発信が可能とのことです。これを局発としてネットワークアナライザでいう反射測定を行える機能を実装していきたいと思います。
0 件のコメント:
コメントを投稿