APB-3の制御プログラムの改良
2016-06-25
直前記事では、APB-3の"素"の状態における周波数安定度を観察した様子をまとめました。そして、40分ほど放っておけばまずまず安定した測定ができることが判りました。ただ、周波数精度はあまり良くない様子で、10MHzをモデルとしたクロックとしてそもそも数百Hzの範囲で誤差が認められる上、室温に左右され易いといったことが判りました。まぁ、基準発振に普通の100MHzのクロックモジュールが採用されていますから、この程度の偏差・誤差は許容範囲内ではあります。
抜本的な改良は、このクロックモジュールの換装や安定した外部クロックの採用ということになります。さらに、もう少し大きなケースに基板のみを入れ、積極的な排熱を行って発振安定度を向上させるなどの工夫はできなくはないんですが、コンパクトでスマートな筐体は、狭っこい我が工作スペースにはまさにピッタリ・・・大規模なハード変更は遠慮したいところ
そこで、このクロック精度について同じ悩みを持つ方もいるんじゃないかとAPB-3の掲示板を検索すると、開発主である「ojisankoubou」こと小川一郎さんが、PC制御プログラム側で調整可能であると記されていました。これなら、昔取った杵柄よろしく自分でソフト改良できるかも・・・というわけで、このプログラム改良を計画しました。
PC制御プログラムは「C#」で組まれており、購入時添付のDVDにソース・プログラムと開発環境一式が入っています。一方、APB-3のwebページには、小川さんが改良されつつ進化した制御プログラムの実行ファイルがアップされていますが、これについては残念ながらソース・プログラムの提供はされていません。つまり、購入時の実行プログラム仕様に改良を加えることになります。
自分のAPB-3の使い方では特にスペアナモードで「dBm単位」の測定が多いんですが、これがDVDに入っている方・・・即ち購入時のプログラム仕様にはありません。こうなると、クロック周波数の調整ができても少々使い辛いことになりますから、この辺りも改良計画に加える必要があります。
上記より、改良は以下の手順で行うように考えました。
(1) 開発環境の準備
(2) 掲示板にある方法でクロックの調整が可能か確認
(3) 上手くいくようならスペアナモードを「dBm化」
(4) 最終的にクロック調整を動的に実施できるようにする
以下、APB-3の制御プログラムに手を入れていきます。お約束事として、著作権については小川さんのコメントを引用します。
// このプログラムは Ojisankoubou( OGAWA Ichiro ) が著作権を持っています。
// 個人の研究目的には、修正、改造など自由に使用できます。
// 発表される際は著作権表示部分を消さないようにしてください。
// このソフトウェアの全部もしくは一部を製品に組み込んだり販売したりするなどの
// 商業的利用はできません。
というわけで、以下のソース・プログラムの著作権は「Ojisankoubou( OGAWA Ichiro ) さん」に帰属しますのでご注意願います。また、どよよん無線技士こと当ブログ主も重ねて・・・この改造による不具合発生等につきましては一切責任を持ちませんので、ご自分の責任の下、お試し下さいませ
(1) 開発環境はMicrosoftの”Visual Studio”
プログラムのコンパイル環境は、無償化して久しいMicrosoft社の”Visual Studio”が使えそうです。早速無償版をダウンロードしてインストール・・・とこの辺りは無難に済ませることができました。昨今は「オープンソース」の潮流も落ち着き、プログラム開発環境に費用を掛けなくて済むことが多くなりましたが、Microsoftも遂に負けた・・・といったところですね。
初めてお目に掛かる開発環境はこんな感じです。

まぁ一般的なIDEですから、PIC開発など経験された方には親和性はあるでしょう。デバッグも直視的にできますから、かなり便利なツール・・・これが無料とは、笑いが止まんねぇだな
(2) クロック調整は掲示板通りでOK
クロックの微調整は小川さんの言う通り・・・って開発者が仰るわけですから当たり前ですが、「Apb3.cs」の627行目を弄ります。

この行の「100e6」がクロック周波数の100MHzを表しています。倍精度実数の変数に入れていることから、小数点以下に変分を入れて調整することになります。自分のAPB-3と部屋の温度(27.1℃)ではこのサンプルに書いた通り、「99.998810e6」という値で信号発生器モードで出力される信号がほぼ10.000000MHzとなりました。そして肝心のスペアナモードですが、SGから10.000000MHzを入力したらきちんと10.000000MHzで表示され、この変数の調整で上手くいくことが判りました。
(3) スペアナモードの「dBm化」は対処療法的
特に拘らなければいいんですが、高周波測定に限れば「dBm(@50Ω)」による表示がよく、この点を改良しました。

(「SpeanaView.cs」の1088行付近)
測定された電力はソースコードのように計算されて表示されますが、元々のロジックではdB表示です。これを「dBm単位」にアジャストすればいいわけですから、まずはdB表示とdBm表示の差を「最新版の実行ファイル」で確認しました。
その差「-4.5」のようです。-40dB以下は測定値があまり安定しなかったため目視で確認しましたが同様のようです。この状態で他の改良を進めている途中、ちょっと気付いてSGの出力で同様に調べてみると、もう少し小さい「-4.3」でピッタリと値が合うことが判り、今のところ「電力単位の我が家基準」たるSGとの親和性で「-4.3」を採用しました。
次にスペアナ表示画面の左上に表示される「MAG」の所に単位としての「dBm」を追加・・・これは簡単でした。単に「dBm」でもよかったんですが、まぁこれでOKとしています。

(「SpeanaView.cs」の134行目)
結構上手くいったぜ・・・と思っていられたのも束の間、スペアナモードで重宝する「カーソル間のデルタ表示」が上手くありません。そこで、ちょっと無理矢理なソース修正。

(「FreqResponseGraphForm.cs」の623行付近)
これは、カーソルモードと思しきフラグを使って「⊿」の場合は固定的に「dB」となるよう強制していますが、スペアナモードのみであり問題ないでしょう。
これらのプログラム修正により「dBm化」させた画面イメージを以下に。ちょっと巫山戯て画面左上表示のプログラム名も換えています
これで、最新の実行ファイルと同等な表示になりました。

(4) 真打ちのクロック補正はテキストファイルで実現
クロック補正ができることが判り、さらにスペアナモードのdBm表示が整ったことから、クロックの調整が動的にできるよう検討しました。当初は画面への入力フィールドの追加で考えましたが、かなり手を入れないと無理・・・ということで、テキストファイルに設定した値を拾ってそれを使って補正を行うようにしました。

(「Apb3.cs」の58行付近)
これは、実行ファイルと同じフォルダ内に「clockfreq.txt」というファイルを用意し、そこにMHz単位の周波数を記入しておけば、各モードの測定開始時に補正されるようになります。但し、コメントにあるように「ファイルがない」という場合のエラー処理は入れていません、悪しからず。
ファイルの内容は実にシンプル。

小数点以下6桁まで(つまりHz単位まで)の補正値で十分に補正されます。また、ズレてきてしまったらファイル内容を書き換えて測定を一旦停止⇒再開すればその値で補正されます。まずまず便利ですよ
以上、随分長い記事になってしまいましたが、どなたかの参考になれば幸いです。
修正 2016.06.26>
dBm化の補正値について再度確認したら、我が家のSGとの差は-4.2ではなく-4.3の方が合っていました。関連部分を修正。
なお、この改良は「10MHz」で調整しているため、APB-3の周波数特性(当該周波数での感度)により0.x dBの差異は生じます。
修正 2016.06.26>
dBm化した後の画面イメージがありませんでしたね・・・追加しました。
抜本的な改良は、このクロックモジュールの換装や安定した外部クロックの採用ということになります。さらに、もう少し大きなケースに基板のみを入れ、積極的な排熱を行って発振安定度を向上させるなどの工夫はできなくはないんですが、コンパクトでスマートな筐体は、狭っこい我が工作スペースにはまさにピッタリ・・・大規模なハード変更は遠慮したいところ

そこで、このクロック精度について同じ悩みを持つ方もいるんじゃないかとAPB-3の掲示板を検索すると、開発主である「ojisankoubou」こと小川一郎さんが、PC制御プログラム側で調整可能であると記されていました。これなら、昔取った杵柄よろしく自分でソフト改良できるかも・・・というわけで、このプログラム改良を計画しました。
PC制御プログラムは「C#」で組まれており、購入時添付のDVDにソース・プログラムと開発環境一式が入っています。一方、APB-3のwebページには、小川さんが改良されつつ進化した制御プログラムの実行ファイルがアップされていますが、これについては残念ながらソース・プログラムの提供はされていません。つまり、購入時の実行プログラム仕様に改良を加えることになります。
自分のAPB-3の使い方では特にスペアナモードで「dBm単位」の測定が多いんですが、これがDVDに入っている方・・・即ち購入時のプログラム仕様にはありません。こうなると、クロック周波数の調整ができても少々使い辛いことになりますから、この辺りも改良計画に加える必要があります。
上記より、改良は以下の手順で行うように考えました。
(1) 開発環境の準備
(2) 掲示板にある方法でクロックの調整が可能か確認
(3) 上手くいくようならスペアナモードを「dBm化」
(4) 最終的にクロック調整を動的に実施できるようにする
以下、APB-3の制御プログラムに手を入れていきます。お約束事として、著作権については小川さんのコメントを引用します。
// このプログラムは Ojisankoubou( OGAWA Ichiro ) が著作権を持っています。
// 個人の研究目的には、修正、改造など自由に使用できます。
// 発表される際は著作権表示部分を消さないようにしてください。
// このソフトウェアの全部もしくは一部を製品に組み込んだり販売したりするなどの
// 商業的利用はできません。
というわけで、以下のソース・プログラムの著作権は「Ojisankoubou( OGAWA Ichiro ) さん」に帰属しますのでご注意願います。また、どよよん無線技士こと当ブログ主も重ねて・・・この改造による不具合発生等につきましては一切責任を持ちませんので、ご自分の責任の下、お試し下さいませ

(1) 開発環境はMicrosoftの”Visual Studio”
プログラムのコンパイル環境は、無償化して久しいMicrosoft社の”Visual Studio”が使えそうです。早速無償版をダウンロードしてインストール・・・とこの辺りは無難に済ませることができました。昨今は「オープンソース」の潮流も落ち着き、プログラム開発環境に費用を掛けなくて済むことが多くなりましたが、Microsoftも遂に負けた・・・といったところですね。
初めてお目に掛かる開発環境はこんな感じです。

まぁ一般的なIDEですから、PIC開発など経験された方には親和性はあるでしょう。デバッグも直視的にできますから、かなり便利なツール・・・これが無料とは、笑いが止まんねぇだな

(2) クロック調整は掲示板通りでOK
クロックの微調整は小川さんの言う通り・・・って開発者が仰るわけですから当たり前ですが、「Apb3.cs」の627行目を弄ります。

この行の「100e6」がクロック周波数の100MHzを表しています。倍精度実数の変数に入れていることから、小数点以下に変分を入れて調整することになります。自分のAPB-3と部屋の温度(27.1℃)ではこのサンプルに書いた通り、「99.998810e6」という値で信号発生器モードで出力される信号がほぼ10.000000MHzとなりました。そして肝心のスペアナモードですが、SGから10.000000MHzを入力したらきちんと10.000000MHzで表示され、この変数の調整で上手くいくことが判りました。
(3) スペアナモードの「dBm化」は対処療法的
特に拘らなければいいんですが、高周波測定に限れば「dBm(@50Ω)」による表示がよく、この点を改良しました。

(「SpeanaView.cs」の1088行付近)
測定された電力はソースコードのように計算されて表示されますが、元々のロジックではdB表示です。これを「dBm単位」にアジャストすればいいわけですから、まずはdB表示とdBm表示の差を「最新版の実行ファイル」で確認しました。
APB-3 信号発生器 | 表示単位 | |
dB | dBm | |
0dB | -10.38 | -14.88 |
-10dB | -20.39 | -24.89 |
-20dB | -30.39 | -34.89 |
-30dB | -40.39 | -44.89 |
その差「-4.5」のようです。-40dB以下は測定値があまり安定しなかったため目視で確認しましたが同様のようです。この状態で他の改良を進めている途中、ちょっと気付いてSGの出力で同様に調べてみると、もう少し小さい「-4.3」でピッタリと値が合うことが判り、今のところ「電力単位の我が家基準」たるSGとの親和性で「-4.3」を採用しました。
次にスペアナ表示画面の左上に表示される「MAG」の所に単位としての「dBm」を追加・・・これは簡単でした。単に「dBm」でもよかったんですが、まぁこれでOKとしています。

(「SpeanaView.cs」の134行目)
結構上手くいったぜ・・・と思っていられたのも束の間、スペアナモードで重宝する「カーソル間のデルタ表示」が上手くありません。そこで、ちょっと無理矢理なソース修正。

(「FreqResponseGraphForm.cs」の623行付近)
これは、カーソルモードと思しきフラグを使って「⊿」の場合は固定的に「dB」となるよう強制していますが、スペアナモードのみであり問題ないでしょう。
これらのプログラム修正により「dBm化」させた画面イメージを以下に。ちょっと巫山戯て画面左上表示のプログラム名も換えています


(4) 真打ちのクロック補正はテキストファイルで実現
クロック補正ができることが判り、さらにスペアナモードのdBm表示が整ったことから、クロックの調整が動的にできるよう検討しました。当初は画面への入力フィールドの追加で考えましたが、かなり手を入れないと無理・・・ということで、テキストファイルに設定した値を拾ってそれを使って補正を行うようにしました。

(「Apb3.cs」の58行付近)
これは、実行ファイルと同じフォルダ内に「clockfreq.txt」というファイルを用意し、そこにMHz単位の周波数を記入しておけば、各モードの測定開始時に補正されるようになります。但し、コメントにあるように「ファイルがない」という場合のエラー処理は入れていません、悪しからず。
ファイルの内容は実にシンプル。

小数点以下6桁まで(つまりHz単位まで)の補正値で十分に補正されます。また、ズレてきてしまったらファイル内容を書き換えて測定を一旦停止⇒再開すればその値で補正されます。まずまず便利ですよ

以上、随分長い記事になってしまいましたが、どなたかの参考になれば幸いです。
修正 2016.06.26>
dBm化の補正値について再度確認したら、我が家のSGとの差は-4.2ではなく-4.3の方が合っていました。関連部分を修正。
なお、この改良は「10MHz」で調整しているため、APB-3の周波数特性(当該周波数での感度)により0.x dBの差異は生じます。
修正 2016.06.26>
dBm化した後の画面イメージがありませんでしたね・・・追加しました。
- 関連記事
-
- APB-3のスペアナモードの周波数特性補正
- APB-3の周波数特性
- APB-3の制御プログラムの改良
- APB-3の周波数安定度など
- APB-3が壊れた・・・直した