mcHF v0.7 TX/RX リレー化(失敗)

mcHF v0.7 の送受信切り替えをリレー化してみました。
Recommended Modifications にある RF-04/05/06-H-029 の改造です。

リレーモジュールを組んで、単体テストでリレー動くことを確認

基板に穴を開けて

面実装部品を取り除いた後、リレーを配線

リレー付けた結果
1.TUNEボタン押すとスピーカーから TUNE TONE の音が出るバンドが発生
2.7MHz帯以下は 5W 問題なく出るけど、10MHz帯以上は1Wも出ない。PA設定まわしてもほとんど上がらない。
3.10MHz帯以上は回り込みのせいか出力調整中にすぐ操作不能になる
とまぁ散々な結果となりました。

— 追記 —

リレーに接続する線をシールドタイプに変更するべく準備


配線をやり直してみました。
こちらの動作確認結果、やはり状況は変わらずといったところ。

諦めて、元にもどしました。

mcHF v0.7 問題点2

私の組み立てた mcHF v0.7 で発生している問題点ということです。

前の記事で 50Ω系アッテネータを組んだので、mcHF と SDR を接続して波形を見るべく、F1 + F3 + F5 + 電源ON でオールリセットしてキャリブレーションからやり直し。
Firmware は 2.9.16 を使用しています。

キャリブレーションで、IQ の設定をしますが、トランスミットのオフセット -12k のモードは手順通り完了。
CW IQ の調整をしようとオフセット OFF にして、SDRConsole の画面を見ると

まいったなぁ。という状況。CW IQ 設定はひとまず放置で、普通にサイン波をマイク入力して、出力がどうなっているか見てみようと、やってみたところ

USB モードのはずなのに両サイド電波出てますなぁ。と。これは知らない間にサイドバンドだけの正常な状態に戻ってました(;´・ω・)
これは、ソフトの問題と思われるのでいいとしますが、散々な状況のまま土曜日は終わってしまいました。

コア材に巻いたトランスに間違えがあるのか、終段 FET が悪いのかどうか。今のところいろんな事象が起こっているので、確認するのはまた後日ということで。

小出力無線機で使えるステップアッテネータを作ってみました

mcHF v0.7 はひとまず組み上げまで終りましたが、スペアナを持っていないので送信出力の具合をみることが出来ません。
SDR Console のスペアナ画面で波の出方くらいは見られるので、無線機出力を SDR に接続して SDR Console で見るためステップアッテネータを作ってみました。

無線機出力を見たいので 50Ω のアッテネータとして、それぞれ 1dB / 2dB / 3dB / 5dB / 10dB / 20dB の 6 段構成にしました。
抵抗の組み合わせは、表のように左が計算上求められる抵抗値、定本列はトロイダルコアの定本にチラッと載っている抵抗値、某キット列は qrpkit.com の抵抗値。
千石電商の通販で抵抗を探してみたところタクマンの3W(2W抵抗と同じ大きさ)抵抗で某キットの抵抗が揃えられました。

回路は各アッテネータをスイッチ切り替えの組み合わせで減衰量を決めます。

3/17に基板製作依頼をして3/22に入手。送ったガーバーファイルの .zip ファイルを間違えて、3mm ホールにシルク印刷があったり、抵抗番号のシルクが変だったりしますが見た目だけの問題なのでそのまま組んでみることに。

知っている方が見たら、あのキット完コピと言われる位に部品配置がそっくりさんです。KiCAD でパターン引いたら同じ形になってしまいました Hi
vna/J という Java 版 Vector Network Analyzer アプリと MFJ-225 のアンテナアナライザの組み合わせで減衰量を確認してみました。MFJ-225 は vna/J アプリケーションで miniVNA という機器を指定すれば認識します。測定範囲は最大 180MHz までなのですが今回の目的には十分です。

測定した結果、HF 帯 OK みたいなグラフとなりました。30MHz 以上で減衰量がバラツクのはスイッチの接点の加減ですかねぇ? 某キットはスライドスイッチを使っているので、スライドスイッチほうが性能良くなるかも知れません。

余った基板はシルクのミスプリなどもあるので、何かのタイミングで処分頒布したいと思います。

mcHF v0.7 問題点

一通り設定もして組みあがりましたが、問題点があります。

今のところ、21,24,28MHz 帯で出力を 5W にすると、液晶画面がバタつきます。回り込みでスイッチ操作がされた状態が連続します。出力を 3W 程度にすると収まります。

mcHF にパワー計・ダミーロードを接続して TUNE ボタンを押して電波を出したときに液晶画面に表示される SWR 値を見てみました。


3.5MHz ~ 14MHz 帯は 1 ~ 1.2 程度に収まっています。


21Mhz 帯では SWR 2 程度の表示になりました(パワー計のSWR表示はもちろんことですが1です)。出力を上げたときに RF ボードからの回り込みで発生すると思われますが、
cpu 付近に銅箔テープを貼って GND に落としてみても改善なし。イコライザ設定でキレイな波になれば少しは改善するかもですが、SWR 上がる原因をつぶさないと駄目ですね。
パット思いつく対応策は思いつかないので、今のところお手上げです。ひとまず、21MHz 以上は 3W 程度に出力を抑えるよう設定値を変更しました。

mcHF v0.7 UHSDR キャリブレーション

mcHF v0.7 の調整です。

手順は Adjustment and Configuration Manual にあります。
詳細はこの手順を翻訳してやりました。

■液晶タッチスクリーンの調整
液晶画面を押したまま電源を入れるとタッチパネル調整モードに行けるので、クロスカーソルを押して調整。

■バイアス調整
電源と mcHF の間に電流計を入れて調整。うちとこの mcHF では 940mA になる設定となりました。

■送信電力の調整(5W)
パワー計とダミーロード接続して各バンド 5W 出力の調整をします。
21MHz,28Mhz など周波数の高いバンドで出力が低くなる Blog 記事などもみていましたが、今回すべてのバンドで 5W 出力できることを確認しました。

■送信電力の調整(フルパワー)
パワー計とダミーロード接続して各バンドフルパワー出力の調整をしますが、5W 出力に制限しました。

■液晶表示のパワーメーター調整
各バンド 5W 程度のところを指すように、設定を調整します。

■IQ調整(受信)
受信のIQ設定は AUTO に設定

■IQ調整(送信)
SDRConsole の画面を見ながら簡易調整です。直結するようなアダプタを作ればいいのですが、ダミーロード横に SDR のアンテナを置いての簡易な方法。

28MHz のスクショをサンプルにつけます。調整前、調整後です。これは、ちょっと勘所がわからないので本当にいいのか不安が残ります。

■周波数の調整
発信機はあるのですが、時間切れで未着手

という感じです。

mcHF v0.7 UHSDR(ver 2.9.13) ソフトウエアの日本対応

mcHF の組み立てを始めた時に Logic ボードの動作確認のため https://github.com/df8oe/UHSDR にある mcHF のファームウエアを raspberry pi にダウンロード・ビルドして動作確認を行いました。ただし、このソースをそのまま使用しますと日本のアマチュアバンドにない 5MHz帯などが設定されていたりするため問題があります。

基本的にこのソフトは設計者がイギリスの方なのでリージョン1のバンドプランで設定されています。これを日本のバンドプランにあわせたいところですが、特に 3.8MHz帯 は発射可能な周波数の範囲が細切れでこれをすべて反映させるのはソフトウエアの修正箇所が非常に多くなります。ここではもともと 5MHz 帯の設定を 3.8MHz 帯にずらした対応でやりたいと思います。

ソースのハードコピーを掲載してわかりやすくしたいところですが、git の diff 表示で我慢してください。

行の頭に(-)マイナスついている行は修正前のもので、削除されたもの
行の頭に(+)プラスがついている行は修正後のもので、追加されたもの

■電源 ON 時のファームウエアバージョン表示文字サイズを小さくする

diff --git a/mchf-eclipse/drivers/ui/ui_driver.c b/mchf-eclipse/drivers/ui/ui_driver.c
index 2f90ec7f..4109115a 100644
--- a/mchf-eclipse/drivers/ui/ui_driver.c
+++ b/mchf-eclipse/drivers/ui/ui_driver.c
@@ -5616,7 +5616,7 @@ void UiDriver_StartUpScreenInit()
 #endif

        snprintf(tx,100,"%s%s","UHSDR Vers. ",UiMenu_GetSystemInfo(&clr,INFO_FW_VERSION));
-       nextY = UiLcdHy28_PrintTextCentered(ts.Layout->StartUpScreen_START.x, nextY + 8, 320, tx, Yellow, Black, 1);
+       nextY = UiLcdHy28_PrintTextCentered(ts.Layout->StartUpScreen_START.x, nextY + 8, 320, tx, Yellow, Black, 0);

        nextY = UiLcdHy28_PrintTextCentered(ts.Layout->StartUpScreen_START.x, nextY + 3, 320, "Firmware License: " UHSDR_LICENCE "\n
" UHSDR_REPO, White, Black, 0);

■バージョン番号に -JA を付与する

diff --git a/mchf-eclipse/src/uhsdr_version.h b/mchf-eclipse/src/uhsdr_version.h
index 63ba7176..e4eba8fe 100644
--- a/mchf-eclipse/src/uhsdr_version.h
+++ b/mchf-eclipse/src/uhsdr_version.h
@@ -28,7 +28,7 @@
 #endif

 // trailing characters are needed for identifying version and building date+time in binary
-#define            UHSDR_VERSION           "fwv-"UHSDR_VER_MAJOR"."UHSDR_VER_MINOR"."UHSDR_VER_RELEASE
+#define            UHSDR_VERSION           "fwv-"UHSDR_VER_MAJOR"."UHSDR_VER_MINOR"."UHSDR_VER_RELEASE"-JA"
 #define            UHSDR_BUILD_DAT         "fwt-"__DATE__ " - " __TIME__
 #define            UHSDR_LICENCE           "GNU GPLv3"
 #define     UHSDR_REPO              "github.com/df8oe/UHSDR"

■3.5MHz ,3.8MHz, 7MHz 帯のバンド変更

diff --git a/mchf-eclipse/hardware/uhsdr_board.h b/mchf-eclipse/hardware/uhsdr_board.h
index 6f73ee2b..eb2a0b3c 100644
--- a/mchf-eclipse/hardware/uhsdr_board.h
+++ b/mchf-eclipse/hardware/uhsdr_board.h
@@ -289,15 +289,15 @@ struct mchf_waterfall
 //
 #define        BAND_MODE_80                    0
 #define        BAND_FREQ_80                    3500*KHZ_MULT           // 3500 kHz
-#define        BAND_SIZE_80                    500*KHZ_MULT            // 500 kHz in size (Region 2)
+#define        BAND_SIZE_80                    75*KHZ_MULT             // 500 kHz in size (Region 2)
 //
 #define        BAND_MODE_60                    1
-#define        BAND_FREQ_60                    5250*KHZ_MULT           // 5250 kHz
-#define        BAND_SIZE_60                    200*KHZ_MULT            // 200 kHz in size to allow different allocations
+#define        BAND_FREQ_60                    3702*KHZ_MULT           // 5250 kHz
+#define        BAND_SIZE_60                    14*KHZ_MULT             // 200 kHz in size to allow different allocations
 //
 #define        BAND_MODE_40                    2
 #define        BAND_FREQ_40                    7000*KHZ_MULT           // 7000 kHz
-#define        BAND_SIZE_40                    300*KHZ_MULT            // 300 kHz in size (Region 2)
+#define        BAND_SIZE_40                    200*KHZ_MULT            // 300 kHz in size (Region 2)
 //
 #define        BAND_MODE_30                    3
 #define        BAND_FREQ_30                    10100*KHZ_MULT          // 10100 kHz

■LCD に表示するバンド名(60m を 79mに)、フィルター切り替え設定の修正

diff --git a/mchf-eclipse/drivers/ui/radio_management.c b/mchf-eclipse/drivers/ui/radio_management.c
index 745f26ff..904b0959 100644
--- a/mchf-eclipse/drivers/ui/radio_management.c
+++ b/mchf-eclipse/drivers/ui/radio_management.c
@@ -84,7 +84,7 @@ DialFrequency               df;
 const BandInfo bandInfo[] =
 {
     BandInfoGenerate(80,M,"80m") ,
-    BandInfoGenerate(60,M,"60m"),
+    BandInfoGenerate(60,M,"79m"),
     BandInfoGenerate(40,M,"40m"),
     BandInfoGenerate(30,M,"30m"),
     BandInfoGenerate(20,M,"20m"),
@@ -784,10 +784,11 @@ void RadioManagement_ChangeBandFilter(uchar band)
     case BAND_MODE_630:
     case BAND_MODE_160:
     case BAND_MODE_80:
+    case BAND_MODE_60:
         Board_SelectLpfBpf(0);
         break;

-    case BAND_MODE_60:
+    // case BAND_MODE_60:
     case BAND_MODE_40:
         Board_SelectLpfBpf(1);
         break;

——– 2018/3/9 追記開始
hardware/uhsdr_board.c のローパスフィルター切り替えについて補足します。 RF ボードで一生懸命トロイダルコアに線を巻いてフィルターを作りましたが、この回路を LTSpice で見ると以下のようになります。(クリックすると大きく表示されます)

カットオフ周波数はおおよそですが
・5MHz
・8Mhz
・17.5Mhz
・36MHz
の4つあります。5Mhz帯(60m)の設定を 3.8MHz帯に書き換えしたときは、このLPF設定も 5Mhz の LPF を使うようにしたほうがいいなということで、上記フィルター切り替えの変更をしています。書き換えない場合は 8Mhz のフィルターをとおるので別に壊れたりすることはありませんが、せっかく LPF をとおしているので、 5MHz のフィルターを通るようにしたほうが気分的にもいいです。

——– 2018/3/9 追記おわり

他にも修正するべきところは有ったりするかもしれませんが、ざっくりとこんなところで必要最小限の修正は可能かと思われます。git のリポジトリがしょっちゅう更新されますので、この修正はバージョン 2.9.13 の頃に適用できるものとして参照ください。

ひとまず、これをビルドして mcHF に書き込みます。

起動時のイニシャル画面に -JA 付きのバージョンが表示されます。また

メニュー画面の System Info に表示されるファームウエアバージョンでも -JA であることが確認できます。

mcHF v0.7 組み立て 4 (組み上げ完了)

mcHF v0.7 の組み立てです。今回は特に説明も不要かな。

RF ボードの TO-220 (レギュレータとMOSFET)をアルミケースに固定します。

3.2mm のドリルで穴あけして固定するだけです。



サイドパネルをつけてひとまず組みあがりであります。フロントシャーシが反ってますが 3D プリントのパネルを削れば改善すると思います。
これでハードウエアはひとまずできたということで、次の記事ではソフトウエアのほうに参りたいと思います。

mcHF v0.7 組み立て 3

前回の記事で LPF のフェライトコアに線をまいたところまで作りました。
これを基板につけようとしたところ半田ごての熱で線の皮膜が溶けないことがわかり、やむなく皮膜剥き作業をやってからの取り付けとなりました。最初はナイフで荒く削ってから紙やすりでしたが指が痛くなったので、途中からリューターの刃物併用で皮膜削るようにしました。地味に面倒くさかった。

Twitter に投稿した写真は↓のやつ。ただ、これ間違えると一発で線を切ってしまうのでご注意を。。。

LPF の取り付けが終わったら、アンテナジャック横のトランスを巻きます。 1:10 のトランスですが、1T 側が同軸ケーブルです。ひとまず同軸ケーブルの下ごしらえをした後に部品をつけてしまいます。

なんとかつきました。

ちょっと仮組みして、ラジオが受信できるか試してみました。ワイドバンドレシーバー用の小さなアンテナをつけて北京放送(中国国際放送)にチューニングしてみたところなんとか受信できました。時間帯的に生活ノイズまみれでの受信でしたが、比較用の BCL ラジオと大して差のない受信状況でいたのでひとまず OK とすることにしました。

スペクトル・ウォーターフォール表示の設定どこや?と Twitter でつぶやいたら、同じ大阪府下の OM さんにリプライいただいて Display メニューの設定を変更せよとのアドバイスをもらい試してみたところ、無事にスペクトルの表示、ウォーターフォールの表示もできるようになりました。

くみ上げ完成までの思いつくタスク
①アルミケースのサイドパネルのネジ位置があわない。
→ ケース本体も少し曲がり加減なので 3D プリントされた正面パネルを削るなりして、収まり良くなるかやってみる
②アルミケースに、TO-220 部品である電源レギュレータ・終段FET固定の穴あけと部品固定
③送信テストのための資材(SWR/パワー計/ダミーロード) がない
→ 買うなりして入手予定。
④ソフトウエアを日本のアマチュアバンド対応に修正する。これマージしてほしいけど、今のソースの書き方を見ると世界各国のバンドプラン対応が困難な感じなのでローカルで都度修正がいいかも
⑤スペアナは持っていないので、SDR のスペアナ画面でそれっぽい信号が出るかの簡易確認はする

ケース組上げが出来ないと先に進めないので、①最優先ですな。

mcHF v0.7 組み立て 2

前回の記事で、mcHF v0.7 の正面パネル組付けまでおわりましたが、RF ボードは未着手です。

送信部分の LPF で使うインダクタやトランスはコア材に手巻きしてつくります。

LPF 部分は amidon のコアに回路図に書いてある巻き数を巻きました。

トランスはメガネコアに線を巻くのですが、1個だけ回路図に巻き数の記載が無いのがあったので、資料を Google で検索してそれっぽい pdf を見つけました。
これで作業継続はできる予定ですが、LPF に線巻くだけで飽きたので日を改めて作業予定です。

mcHF v0.7 組み立て開始

mcHF v0.7 キットの組み立て開始です。

私が買ったのは CPU などは実装済みの基板でしたので、かなり楽させてもらっています。v0.7 キットには3枚ボードがあります。
・UI 操作パネルの基板
・logic マイコンのボード
・RF 電源と高周波関連のボード
です。
最初に STM32F4 のマイコンに書き込みできるところを確認したかったのロジックボードから着手しました。

ロジックボード自体はほとんど実装済みなので、液晶のヘッダをつけて書き込み確認実施です。ソースは
https://github.com/df8oe/UHSDR
にあります。ソフトウエアのビルドは Raspberry PI (Raspbean Stretch) で行いました。Windows でも可なのですが面倒だったので Build は Ubuntu でやっています。

$ sudo apt-get install gcc-arm-none-eabi
$ cd 作業用のディレクトリ
$ git clone https://github.com/df8oe/UHSDR.git
$ cd cd UHSDR/mchf-eclipse
$ make clean
$ make bootloader
-rwxr-xr-x 1 pi pi  30904  3月  3 14:15 bl-mchf.bin
-rw-r--r-- 1 pi pi  31213  3月  3 14:15 bl-mchf.dfu
-rwxr-xr-x 1 pi pi 374036  3月  3 14:15 bl-mchf.elf

Build が成功すると上記ファイル作成されるので、自分の PC に bl-mchf.dfu をダウンロードする。

$ make clean
$ make firmware

-rwxr-xr-x 1 pi pi  469524  3月  3 14:56 fw-mchf.bin
-rw-r--r-- 1 pi pi  469833  3月  3 14:56 fw-mchf.dfu
-rwxr-xr-x 1 pi pi 1974980  3月  3 14:56 fw-mchf.elf

Build が成功すると上記ファイル作成されるので、自分の PC に fw-mchf.dfu をダウンロードする。

STMicro のサイトから DFUSE をダウンロードしてインストール。
・mini USB コネクタ横の R243b をショートさせる(半田ブリッジは無理なのでメッキ線などをはんだ付けする)
・ロジックボードの P206 をショート
・P2a の2ピンを GND に落とす
・電源を入れる
と、STM32F4 は DFU モードで上がるので、DFUSE から書き込みができます。

Choose ボタンから bl-mchf.dfu を選択して Upgrade ボタンを押して書き込み
Choose ボタンから fw-mchf.dfu を選択して Upgrade ボタンを押して書き込み

でマイコンに書き込みできます。この時点で新しいブートローダとファームウエアがはいりましたので、以降のファームウエア更新などは、USB メモリを使った更新が可能になります。

・ロジックボードの P206 をオープンにする
・P2a の2ピンを GND に落としていたものを外す

で電源 OFF/ON するとマイコンが起動します。

ロジックボードだけの確認なので

エラーメッセージ出力されたのちに、通常の画面に遷移します。ここまできたらファームウエアの書き込みは問題ないです。
確認が終わったら mini USB コネクタ横ショートさせていた R243b をオープンに戻します。

次に RF , Logic , UI 基板を接続するヘッダピンをつけたり、回路を確認しなくても付けられるジャック類などをはんだ付けを実施しました。

RF ボードにはんだ付けする TO-220 の三端子レギュレーター、ファイナルの FET などは、放熱のためアルミケースと接触するように指示がありますのでそうします。ケースがヒートシンクになります。(ファイナルの FET はこの時点では、ねじ穴部分がドレインなのか、ソースなのか調べていないので実装しません)

本日最後にやったのは操作パネルのくみ上げ

UI(正面パネル)は、3D プリンタで印刷されたパネルと穴あけ加工済みのケース + UI 基板で構成されます。組み立ての順番は
・穴あけ済みアルミシャーシを下にして
・スピーカーのネットをつける
・3D プリントされた操作パネルをつける
・スピーカーを置く
・UI 基板をつける

スピーカーにUI基板を通そうとすると基板の穴あけ幅が狭くて上手く入らないと思いますが、思い切ってやっちゃいましょう。スピーカーの塗装は若干はがれますが、スピーカーは完全に固定されます。
UI 基板はアルミシャーシの横からスライドさせて入れるのでは入りません。基板の片側をアルミシャーシの基板用スライドレールに入れます。次にシャーシの反対側を手で曲げて基板をシャーシの基板用スライドレールに押し込みます。これで UI 部分は完成します。コツがつかめたら簡単ですが、地味に結構難しいです。

これ以降は、コアに線材巻いたりしないといけないので、回路図と見比べ必須となります。間違えないよう組んでいきたいと思います。