2014年9月10日水曜日

475.5kHz帯のアンテナ考察その2

必要インダクタンスの当たりがついたので、こんどは実際のコイルの設計に入ります。

当たり前のことですが、コイルを巻くにはボビンが必要です。しかし一番ネックになるのが適切なボビンを探し当てることなのだろうと思います。

とりわけ136kHz帯ローディングコイル用のボビンを探すのは結構難儀ですが、475.5kHz帯ですとコンパクトにできそうです。ホームセンターあたりを中心にボビンになるようなものを探していくと、とあるホームセンターの中の100円ショップにこのようなものが。


お味噌を保存する透明な円筒型プラスチック容器です。中のサブコイル用の小さい容器あわせて消費税込みたったの216円ですよ!hi

外径は約12.5cmで若干テーパーかかっていますがわりとまっすぐで高さが11cm。ついでにバリオメーター用サブコイル用に小さめの円筒形容器。外径7.5cm、高さ4cmです。こいつで作ってみようと思います。

実際どのくらいの径のものを使ったほうが良いかというのは、良く言えば経験則的なものですが、わりと適当に選んでもコイル長が大体径の1倍から1.5倍に収まるように線材径と巻き方を考えればそんなに間違いはなさそうです。とはいっても極端に太かったり細かったりはNGですが。

器(ボビン)が決まってしまえばあとは計算しておのおののコイルの巻き数を割り出してしまえば設計は完了です(少々強引ですが^^;机上で緻密に完璧に計算しようとしてやる気が萎えるよりは良いと思うのです、こうしたアンテナの場合。)。

巻き数の割り出しには、自分で計算するのも面倒なので(従免の試験の時さんざん勉強しましたが^^;)こちらのサイトを使わせてもらっています。ここでメインコイルとサブコイルのパラメータ(コイル径、コイル長、巻き数)を入力するとおのおののインダクタンスとバリオメータにした場合のインダクタンスの可変範囲が自動計算されます。
コイル径は変わらないので、線材径があらかじめ分かっていれば所望のインダクタンスが得られるように巻き数とコイル長(=線材径 x 巻き数)をいろいろと変えながらブラウザ上でカットアンドトライをしていきます。

そういえば昔短波ラジオを作る時に受信周波数を決めるように同調コイルを巻き足したり解いたりした記憶がありますが、それと同じ感覚です。

前の稿で475.5kHz帯短縮バーチカル用ローディングコイルとして必要なインダクタンスは、傘2条タイプで約600μH、傘なし単純バーチカルタイプで1440μHと割り出されました。値がお互いややかけ離れているため同じ巻き数のコイルでカバーすることは可能ではありますが、同調取りが非常にクリティカルになるのと低いインダクタンスの時のコイル損失が大きくなるため、ここはメインコイルにタップを立てて切り替えするような仕様としました。

 で、その結果です。

 1mm径エナメル線を使い密巻きで

 ①12m傘なしタイプ
  メインコイル:コイル長11cm, 巻き数110回 ⇒ 1174μH
  サブコイル :コイル長3.5cm, 巻き数35回 ⇒ 98.9μH
  ・インダクタンス可変範囲:954~1483μH
 ②12m傘2条タイプ
  メインコイル:コイル長7cm, 巻き数70回 ⇒ 560μH
  サブコイル :①と同じ
  ・インダクタンス可変範囲:452~866μH

実際線材径は被覆部分の厚みもあるためその分巻き数はやや少なくなることも念頭においてサブコイルを2層巻きにし少しインダクタンスを増やしたほうが良さそうです。

そんなわけで475.5kHz帯アンテナ用のローディングコイルの大まかな設計が出来ました。

2014年9月9日火曜日

475.5kHz帯のアンテナ考察その1

旧ローカルで現在独自の視点でアマチュア無線を楽しんでおられるどよよん無線技士さんから「475.5KHzバンド開放・・・このバンドもアンテナ作りが課題だと思われます。」とコメントをいただいて、ふとアンテナのシミュレーションしておかないとなぁと思い立ったのでありました。

どうも475.5kHz帯は移動運用でないと電波の発射が実質困難になりそうなので、最初は136kHz帯の移動用アンテナ設備を流用するのが早道だろうと考えました。

現在の136kHz帯移動用アンテナは、12mのグラスファイバーポールに2mm径の園芸用アルミ線を垂直に這わせて、頂上部から10m2条(または7m含めた3条)同アルミ線を斜めに下ろす傘型の短縮バーチカルアンテナで、バリオメーターを内蔵させたローディングコイル(約5~7mH連続可変)に、アース板(90cm x 60cmの0.3mm厚ガルバリウム鋼板10枚)と絶縁型インピーダンス変換トランスを使って整合させています。

ローディングコイル抜きにすると共振周波数は2MHz台なので、136kHz帯、475.5kHz帯、1.8/1.9MHz帯はエレメントはそのままにローディングコイルだけ交換すればよかろうというなんとも安直な結論になっていますhi

というわけで、MMANAを立ち上げて12m2条傘型短縮バーチカルと傘なしの単純なバーチカルをシミュレートして475.5kHzにおけるローディングコイルの必要インダクタンスを求めてみました。


No1は傘2条タイプで必要インダクタンスは626μH、コイルのQ値を300と仮定すると入力抵抗は6.8Ωでゲインは-12.43dBiという結果でした。

No2は傘を取って単純に12mバーチカルとした場合で、必要インダクタンスが1440μH、入力抵抗が14.6Ω(Q=300)、ゲインが-17.33dBiと算出されました。

136kHz帯のものと比べるとはるかに小さなインダクタンスで共振出来、コイル線長も短く損失も小さくなっています。傘なしでも十分実用的に思えてしまいます。

実際に作るとしたら両方に対応できるようにしてみたいと思います。

つづく。

2014年9月8日月曜日

JUMA TX-500組み立て記

週末久しぶりに移動運用考えていましたが、あいにくの雨模様...

というわけで無理して出かけずに日曜日は工作の日にしました。

今回のターゲットは先月フィンランドから届いた475.5kHz帯用CW送信機JUMA TX-500キット。JAでも何名かの方がこのキット(TX-500やTX-136)を購入されて組み立てておられますが、抵抗コンデンサ類はもちろんのこと半導体もファイナルのMOSFET除き表面実装部品を採用しそのすべてを自分でハンダ付けして実装しなくてはいけないタフなキットです。

とくに眼の調節障害が進んだ方には...hi



金属ケースのパッケージの隙間にこれでもかというくらいパーツが詰め込まれています。

パーツは2枚の基板と前後パネル、各パートの部品がひとつひとつ小分けされて丁寧にパックされています。


組み立ては大きくメインボードとコントロールボードの2パートに別れています。それぞれパーツが数袋にパックされているので順番にひとつずつ浅めのトレー上に開封して実装します。


パックを開け、同梱の小さな紙切れに印刷されたパーツリストにあわせてマーキングされたパーツをリスト順に並べます。JUMAのTechnical Kit InfoページにあるParts Listを開き、リストのパーツ番号と同一のPCBにシルク印刷されたパーツ番号を探し出して該当するパーツが収まるパッケージをひとつずつ開封して一個一個ハンダ付けしていきます。一気に全部あけるよりも効率的で、間違いや紛失する確率もかなり少なくなります。

ひとつの袋のパーツの実装が済んだら次のを開封して...というようにひとつひとつ慎重に進めるのがポイントです。

表面実装部品の手ハンダの方法はいろいろあるようですが自分が行っている方法は、抵抗やコンデンサの場合片方の電極のランドに薄く予備ハンダを盛ってピンセットで部品を持ち、予備ハンダを盛ったランドに片方のみハンダ付けして部品を軽く上から押しながらもう一度鏝をあてて基板にくっつけ、それからもう片方のランドにハンダ付けします。ただ無理に力がかかるとパーツを壊してしまいます。今回チップコンデンサ2つ割ってしまいました^^;

なのでこの方法はあまりお勧めしません。上からピンポイントでパーツを押さえる道具があれば(YouTubeなどでも紹介されているようです)そちらを使ってハンダ付けするほうが良いです。


上はメインボード実装途中経過です。

すでに半導体類が実装されていますがICなどピン数が多い半導体部品は、ハンダ付け前の位置決めと固定がポイントです。とくにICの向きは注意しないとせっかくうまくハンダ付けできても逆さに取り付けてしまったーなんてことがままあったりします。いったんハンダ付けしてしまうと取り外しが非常に困難です。基本的にはピン全体にハンダをたくさん盛って熱が冷めないうちに外し、ハンダ吸い取り線でハンダをきれいにふき取って基板に付着したフラックスを除去すると状態復帰するのですが、たいていは熱で一部ランドがはがれてしまいます。(自分も今回ひとつランドをはがしてしまいましたが、幸いなことにどこにもつながっていないピンのランドでした)

しっかり向きを確認してピンとランドの位置を正確に合わせフラックスや細いマスキングテープなどで仮固定してから細い鏝と細いハンダで1ピンずつハンダ付けしていきます。

ピッチが比較的広いICであれば直接ハンダ付けも問題ないのですが、ここで一番難しいのはDDS IC AD9833のハンダ付けです。


AD9833は10ピンMSOPという0.5mmピッチという過酷な(笑)サイズです。周りのチップ部品と比較してみてください。

こればかりは小さすぎて1ピンずつハンダ付けするのは非常に困難なので(やるのであれば実体顕微鏡とペン型のハンダゴテがあると良いですね)、位置決め固定して一旦両サイドにハンダを大胆に盛ってからハンダ吸い取り線でふき取るという強引な?方法でハンダ付けします。そのあとふき取り残しでピン間ショートしていないかどうかルーペを使って丹念に確認しておきます。

あとはトランスコイル類など大きな部品をサイトの完成写真を参考にしながらハンダ付けします。基準水晶発振器は基板に直付けにせず、別途14ピンICソケットを用意して不必要なピンをカットしてソケットをハンダ付けして発振器をソケットに差し込みます。将来TCXOに換装する予定なので、差し替えが容易にできるし高床になるので温度変化の影響も多少すくないかなと期待できそうです。

最後は後面パネルを取り付けてファイナルのMOSFET2本をハンダ付けしメインボード実装完了となります。


ここでちょっと休憩してから続いてコントロールボード実装に取り掛かります。


メインボードと同じように小袋をひとつずつ開封してハンダ付けしていきますが、第2のヤマであるMCU dsPIC30F6014A-30 I/PFというTQFP 80ピン 0.65mmピッチの大物を迎え撃たねばなりません(笑)。

このような多数ピンの表面実装ICのハンダ付けにはここのサイトの方法で行うときれいに確実に取り付けられます。

基板はハンダメッキされていないのでランドにハンダを薄く盛ります。ハンダからでた余分なフラックスは除去液で取り除いておきます。

dsPICを正しい位置に基板に固定してから足とランドにフラックスを含ませた綿棒で丹念にフラックスを塗っていきます。そうしてからランドに接触しているICのピンに細い鏝先を必要以上に押し付けず適度に一本一本当てていくだけです。追加のハンダは必要ありません。


こんな感じできれいに実装することができました。(右隣のICはそのままハンダ付けしたので仕上がりがあまりきれいではありませんね^^;;)

あとはプッシュスイッチやLCD、ブザーなどを取り付け、前面パネルを装着してコントロールボードが完成です。


 メインボードとコントロールボードをつなぐものは2本のフラットケーブルですが、ケーブルとコネクタも自分で取り付けなくてはいけません。サイトにケーブルの完成図が載っているので写真のとおりに加工します。コネクタはハンダ付けは必要なく、コネクタにケーブルを挟んでバイスで圧着するような感じで取り付けできます。

あとは金属ケースにパネルをねじ止めして、加工した2本のフラットケーブルでボード間を接続しケースに収めます。ここまで約8時間かかりました。


ハンダくず等取り除いて最終確認し早速電源ON。


ダミーロードをつないで送信テスト。最大パワーは表示上は61Wですが、オシロスコープで出力を計測すると電源電圧13.8Vで52.0Vrmsとなり測定上は54W出力でした。消費電流は4.8Aで効率は81.5%と高効率です。

このキットを出しているJUMAは近々軽量HF用1kWリニアアンプキットを販売する予定とのことですが、コンパクトで高効率のパワーユニットが得意なのでしょう。デザインも洗練されててお気に入りです。


最後に先に製作して交信実績のあるTX-136とツーショット。

こうして重ねてみるとパネルの色が微妙に違うことに気がつきます。

使い込んだから?(笑)

電源ボタンの色はもともと緑のはずがTX-136のときはなぜか赤色でした。

ともあれこれでとりあえず来年の475.5kHzバンド開放の準備が大きく進みました。

ローディングコイルが巻ければひとまず完了です。

あとは運用場所かなぁ...

2014年9月5日金曜日

mbedお試し

マイコンといえばPICばかり扱ってきましたが、他のも弄ってみようと少し前からARM系のマイコンボードを購入していました。そのなかでもmbed対応のマイコンボードで、STMicroelectronics社のSTM32マイコンボードNucleoは秋月やそのほかでも1500円前後で手軽に入手できます。今回はマルツで購入しました。

モノはST Nucleo F401REで、ARM Cortex-M4 84MHz Flash 512KB SRAM 96KBと上位モデルになります。

mbedはPC自体に開発環境を置かずに、ブラウザ上でコードを記述したりコンパイルして実行ファイルをダウンロードし、Drag&Dropでマイコンボードに転送して即実行できるという非常に便利な環境になっています。

しばらくボードはそのままになっていましたが、G+つながりでにわかに流行りだした(笑)ので自分も乗っかってみたという次第です。

スタートは比較的容易です。

mbedのサイトでユーザー登録してログインし、右上のCompilerをクリックすると開発画面が別タブで出てきます。mbedマイコンボードのUSB端子からPCにつなぐとドライバーがインストールされ(モノによっては(Nucleoの一部など)ファームウエア更新が必要。ですがサイトに手順が載っています)USB大容量記憶装置(ドライブ)として認識されます。PCで認識されたドライブを開いて中にあるmbed.htmをダブルクリックするとmbed開発環境がマイコンボードを認識してくれます。後々別のmbed対応ボードの追加も可能です。

開発に当たってライブラリやサンプルプログラム、公開されたほかの人のプログラムもインポート可能でチュートリアルも充実しており、開発効率は良いと考えます。

そこで早速、基本のLチカとDDS版Lチカ(笑)やってみました。


mbed.hという基本のインクルードファイルを導入し、PICで記述したDDSへのシリアル送信部分と周波数設定関数はほぼそのまま、出力ポートの設定のみであっさりとコンパイル通りました。(変数の型についてWarningでましたが)

コンパイルが通ると自動的に実行ファイル(*.binファイル)がダウンロードされるのでマイコンボードのドライブにファイルをDrag&Dropすれば、転送されて即実行されます。


 NucleoからBB上のAD9834のモジュールに通信ラインを接続して電源を入れ、設定周波数どおりのDDS信号が出ました。

言語がC++なので多少修正は必要かもしれませんが、今までのPICのプログラムソースが使えそうです。また逆にmbedで開発した資産もPICでも使えてソースが相互に利用できそうでなかなか良さそうに思えました。

Cortex-M4搭載なのでDSPも簡単に使えたらいいなぁ...←欲張りhi

2014年8月30日土曜日

WSPRコード生成手順を探る(訂正あり)

Weak Signal Propagation Reporter ; WSPRはK1JT Joe Taylor氏が開発した低電力ビーコン送受信プログラムで、数Hz帯域幅でSNR-28dBの信号までデコード可能な136kHz帯でもよく使われるデジタルモードのひとつです。

WSPRコードの生成はPCのソフトで行いますが、PCをつかわず送信機単体か外部コントローラーのPIC内で生成できないものか模索中です。

幸いなことにWSPRのソースコードは公開されておりユーザーマニュアルにWSPRコード生成の概要が記されていますが、ソースコードやマニュアルを見ても拘束長?畳み込み?などなど素人の自分には最初なんのこっちゃわかりませんでした。

ネットで手がかりを探った結果、G4JNT Andy Talbot氏のサイトにWSPRコーディングに関する具体的な手順の解説を見つけました。あと、前方誤り訂正(Forward Error Correction ; FEC)も少し勉強してようやくつかんできました。

備忘録としてソースコードを読んで解説を訳しながらまとめてみることにします。

1.送出キャラクタの圧縮
基本様式は、コールサイン(原則6文字)、グリッドローケータ(4文字)、送出電力(2文字)の計12文字(=12バイト=96ビット)ですが、これらをまとめて50ビットに圧縮します。

1)コールサイン部の数値化
 ①文字の種類と対応する番号
  数字、アルファベット、スペース記号を0から36の数値に割り当てます。
 i)数字(0~9)⇒ 0~9
 ii)アルファベット(A~Z) ⇒ 10~35
 iii)スペース記号 ⇒ 36

 ②注意点
  コールサインの1文字目はスペースを含め全キャラクタ使用可能
  コールサインの2文字目はスペース記号のみ使用不可
  コールサインの3文字目は数字以外使用不可
  サフィックス(4~6文字目)はいずれも数字は使用不可

 ③ユニーク数
  37 x 36 x 10 x 27 x 27 x 27 = 262177560 < 268435456 = 2^28 = 28ビット

 ④各数値化キャラクタをCh1~Ch6とすると、数値化コールサインNは、
  N = ((((Ch1 x 36 + Ch2) x 10 + Ch3) x 27 + (Ch4 - 10)) x 27 + (Ch5 - 10)) x 27 + (Ch6  - 10)

2)グリッドローケータ部と送出電力部の数値化
 ①文字の種類と対応する番号
 i)数字(0~9)⇒ 0~9
 ii)アルファベット(A~R) ⇒ 0~17

 ②グリッドローケータ部の数値化
  ユニーク数は、
  AA00~RR99 ⇒ 18 x 18 x 10 x 10 = 32400通り < 32768 = 2^15 = 15ビット

 各数値化キャラクタをLoc1~Loc4とすると、数値化グリッドローケータM1は、
 M1 = (179 - (Loc1 x 10 + Loc3)) x 180 + Loc2 x 10 + Loc4
 (余談:素直にM1 = (((Loc1 x 18) + Loc2) x 18 + Loc3) x 10 +Loc4にしなかったのはなぜなのでしょう?^^;)

 ③送出電力部と数値化グリッドローケータ部の組み合わせ
 電力値Pwr(dBm) = 0~60 (ただし、一桁目が0,3,7のみソフトで認識されます)

 数値化グリッドローケータと電力部の組み合わせ値Mは、
 M = M1 x 128 + Pwr + 64
 で、最大値が4124287 < 4194304 = 2^22 = 22ビット となります。
 (余談:最後の「+ 64」は、拡張用の予備部分なのかもしれませんが未確認)

これで数値化コールサイン部と数値化グリッドローケータ・電力部で
 N28ビット + M22ビット = 50ビット
に圧縮されました。

2.1バイト値1元配列化
 後の前方誤り訂正処理(FEC)を行うため、圧縮した50ビットを1バイト値の1元配列として割り当てます。 FECに入力するデータの大きさは拘束長32、レート1/2から50 + 32 - 1 = 81ビットになります。したがって11バイト = 88ビットの器が必要になります。
 その器に上から数値化コールサインNと数値化グリッドローケータ・電力Mを隙間無く入れ、残りの器(7番目の3ビット目以降)はすべて0とします。

3.FECエンコード
 32ビット長のシフトレジスタを2つ用意して、データの最初のバイトのMSBから1ビットとりだして、各々のシフトレジスタを右に1シフトさせてからLSBに格納します。そして、一つ目のシフトレジスタと0xF2D05351とのANDをとり、ビット間のXORをとった結果を別のレジスタに格納。もうひとつのシフトレジスタと0xE4613C47とのANDをとって同様にビット間のXORをとった結果をレジスタに格納。この操作を81回繰り返すことによって162ビットのコードが生成されます。

4.インターリーブ
 無線による信号伝送においてランダムエラーとバーストエラーに対してFECはランダムエラーには強いが、バーストエラーにはあまり強くないのでインターリーブを施します。
ビットの並びをある法則によってシャッフルして隣同士のビットを離すことによりバーストエラーに対抗する手法です。
 WSPRの場合は、162ビットのコードに順番にビットに番号を振って、その番号を8ビットであらわしてビットの並びを逆さにして並び替えます。
まず符号なし8ビット整数0から255まで順番にビット並びを反転します。
たとえば、"1"なら、b00000001 ⇒ b10000000 = "128"
     "18"なら、b00010010 ⇒ b01001000 = "72"
並び替えられた番号順にビットを並び替えます。
ビット並びを反転した整数が162未満の場合、その整数の番号の位置にFEC処理したコードを順番に1対1で割り当てていきます。
これをコード数である162回繰り返します。
 これで162ビットのデータシンボルが生成完了です。

5.同期シンボルとの連結
 最後にあらかじめ求められた擬似ランダム同期シンボルとデータシンボルを連結して1シンボル2ビット(4階調)の最終送出データが完成します。
 
 【162ビット同期シンボル】

1 1 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 1 0 0 1 0 1 1 1 1 0 0 0
0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 1 1 0 0 1 1 0 1 0 0 0 1
1 0 1 0 0 0 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 1 0 0 0 1
1 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1
0 1 0 0 0 1 1 1 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 1 1 0
1 0 1 1 0 0 0 1 1 0 0 0

 最終送出データシンボル(n) = 同期シンボル(n) + データシンボル(n) x 2

間違っているところがあるかもしれないので逐一修正しますが、この手順をCでコーディングしてみようと考えています。