JJ1WKN Log

自作や移動運用関連のログです。

Tanukino FRMS もどき その2

2012-11-10 | 無線機
その2です。

Y軸のdB表示を少し変更しました。
トラ技DDS本によると、ログアンプAD8307の出力を12ビットA/D変換で3.3V電源の場合

P[dbm} = (3300*AD/4096)-2000)/25

とのことなので、Arduinoでは10ビットA/D変換5V電源とすると、

P[dbm} = (5000*AD/1024)-2000)/25

となります。
傾きは25mV/dBとのことで、AD8307の5番ピンにつけたVRで傾きを調整できるようですが、校正する環境が無いので5番ピンはNCとしてデフォルトの25mV/dBを信じることにします。

A/D変換値は0~1023なので-80dBm~+120dBmの計算となります。
トラ技DDSの出力は最大4dBm程度なので+10dBmくらいまで測定できれば十分です。
+10dBmではログアンプの出力は2.25V程度ですので、Arduino側のA/D変換のリファレンスを2.56Vにしました。
2.56Vは+22.4dBmなのでグラフは-80dBm~+20dBmまでの目盛にしました。

とりあえず、Y軸の表示だけ変更しました。


実際は周波数を上げるにつれてDDSの出力が下がってくるので、フィルタなどの測定をする場合は、スルーさせたときの値で補正する必要があるということです。
とは入っても、SSB用のフィルタなどは数kHzの間を測定すれば十分なので、実用上は問題なさそうです。
また、dBmの絶対値もかなり怪しいですが、目安になればいいでしょう。

Tanukino FRMS もどき その1

2012-11-09 | Tanukino
DDSを利用してFRMSもどきを作ろうと検討しています。

DDSの選択肢としては、秋月DDS、トラ技DDS、AitendoDDSがありますが、Tanukino側のスケッチはシリアルでPCから入力した周波数をDDSに設定して、ログアンプの出力をA/D変換してPCへ出力するだけなので、後回しです。

主な処理はPC側になるのですが、Rubyの勉強を兼ねて一番面倒なグラフ描きのソフトを先に作ろうと思います。
ご本家のFRMSはリアルタイムで画面に結果が表示されますが、どの道ハードコピーを取って画面を保存するので、画面表示は止めて、bmpファイルに出力するだけにしました。
グラフは「お.寒.い.電.子.工.作...」さんのブログを参考にしました。

ユーザインタフェースはGUIは面倒なので昔ながらのCUIにしました。
こんなかんじでスキャン開始、終了周波数やステップ周波数を入力します。
大昔のPC-8001のBASICでのプログラムと基本的に変わりませんが、今時は正規表現が使えるので、文字列処理が簡単です。
ファイルは一気に全行配列に読めるので、処理も簡単です。


デフォルト値はこれも昔ながらのiniファイルを読み書きしますので、毎回設定する必要はありません。


Tanukino側のスケッチはこれからなので、テスト用にA/D変換値としてランダムな値をセットして結果をCSVファイルに出力しました。
例としてスキャンステップは100kHzにしましたが、実際には細かくします。


ここまでくれば、後は表計算ソフトでグラフは描けるのですが、毎回設定が面倒なのでグラフをbmpファイルへ出力するプログラムを作りました。
この例ではデータ数が少ないのでガクガクの折れ線グラフです。
dBのY軸の目盛は適当というかイメージです。
とりあえずA/D変換値をY軸一杯に振っているだけです。