2014年9月25日木曜日

TX-136/500用マルチモードビーコンコントローラ2への一歩

mbed環境から始めて8bitPICの18Fシリーズに移植したWSPRコード生成プログラムを、さらに一つ下のクラスである16F1シリーズに載せて動作させることに成功しました。

4MHz動作ですが、浮動小数点などを使った重い計算は入っていないので速度的にはさほど問題はなさそうです。

右のICが18ピン16Fシリーズ最上位PICの16F1847 3.3V動作
右がTera term上に表示されたPIC WSPR処理結果表示
16F1847はプログラムメモリが14KB(8KW)、RAMが1KBと18ピン16Fシリーズ中最も大容量ですが惜しむらくは秋月や他のパーツ屋では扱っていません。そこで今回はRSオンラインで注文しました。1個215円ですが5個単位からの注文でした。また他にもDigi-KeyやChip One Stopでも扱っているようなのでそれほど入手は難しくないようです(Keyer Mini-V2にも将来使う予定です)。

TX136用のビーコンコントローラは16F648A(4KW, 256B)にアセンブリ言語でプログラムしましたが、WSPR用にあらかじめPCで生成したWSPRコードをEEPROMに納めていたので、移動などによるGLや出力表示の変更がその場では不可能でした。このプログラムを組み込むことによって随時コードの書き換えが出来るので、FBなんじゃなかなぁとひとり悦に入ってますhi

というわけで次はいままでのコントローラーの16F648Aを今回このプログラムを納めたPIC16F1847に換装して実戦投入したいと考えています。(他の部分を改めてCで書きなおさないといけませんが^^;)

2014年9月21日日曜日

PICにWSPRコード生成プログラムを移植(訂正あり)

WSPRコード生成プログラムをmbed環境で組みましたが、今回これを基にして8bitPICにプログラムを移植しました。

PIC18F26K22にレベル変換IC ADM3202の組み合わせでPCと接続
Nucleoに使われているARMプロセッサにくらべてPICはプログラムメモリもRAMも小さいため、とりあえず28ピンPIC18Fシリーズで最強な(笑)18F26K22(プログラムメモリ64KB, RAM1024B)をターゲットにしてMicrochip純正のXC8フリー版でコンパイルしました。コンパイルは通りましたがプログラムメモリが10%前後、RAMも22%程度と比較的大きなサイズになってしまいました。

そこで遊びのRAMを極力減らす(1ビット情報をchar型1つに割り当てず、8ビット分をひとつのchar型に収めるなど)方向でソースを書きなおしました。


プログラムメモリもRAM消費もぐっと減ってFBです。
処理過程と結果はRS232C経由でPCに表示させてます。(中央がPIC Windowsの間違い 右がNucleo 下がPICで生成した結果)

真ん中のコマンドプロンプト内はGENWSPR.EXE 右はmbedによる処理結果
PICによるWSPRコード生成結果をTeraTerm上で表示

表示関係をコメントアウトとしてコンパイルするともっと減ってこんな感じに。


これだけ減れば場合によっては16Fクラスでもいけるかもしれません。

移動場所や送信出力の変更によるコード変更もこれでバッチリいけそうです。

2014年9月17日水曜日

mbedでWSPRコード生成

mbedは対応ハードウエア(NucleoはCortex-M4搭載でも1,500円くらいで購入できる)さえあれば、PCに開発環境を苦労して構築することなく、プログラミングが容易に出来るクラウドな環境です。

先日はDDSのコントロールを試してみましたが、今回はWSPRコード生成プログラムをmbed環境で構築してみました。

PCに繋がるのはUSBケーブル1本のみ 持ち運びに便利でどこでも開発可 hi

WSPRエンコード手順は前の投稿で検証しましたが、流れとしては

    1.文字列の数値化(コールサイン、グリッドローケータ+電力)
    2.数値の畳み込み符号化(k = 32, r = 1/2)
    3.インターリーブ処理
    4.同期シンボルとの併合

となります。

mbedにはCortex-M4のSTM32マイコンを搭載したNucleoボードを使いましたが、STlink/V2ドライバをインストールすると仮想comポート経由でPCとの通信が可能になるため、それぞれの処理結果をprintf()でターミナルソフトに表示させることが出来ます。

処理結果をPC上で確認しながらコーディングが出来るのでとても便利です。

Windowsで動作するWSPRエンコードソフトはいくつかありますが、中でもGENWSPR.EXEは処理過程が表示されるので、これを平行して立ち上げて比較しながらコーディングの修正ができて大きくどつぼに嵌らず一応完成にたどり着きました。

中央はGENWSPR.EXEの処理結果 右が作成したプログラムの結果をターミナルで表示
インターリーブ処理の訳と理解が不十分で少し悩みましたが、他で公開されているソースコードを参考にしながら修正できました。

8ビットPICやTX-136/500で使われているdsPICの16ビットPICにも使えるようにしていきたいと思います。

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