2014万年準備中のブログアマチュア無線とくに長波(136kHz)帯運用の実戦記とマイコンプログラミング、電子工作などを中心にイベント頒布情報(2020.2.7更新)技術的応談のポリシー(2018.5.23更新)2014年9月25日木曜日TX-136/500用マルチモードビーコンコントローラ2への一歩mbed環境から始めて8bitPICの18Fシリーズに移植したWSPRコード生成プログラムを、さらに一つ下のクラスである16F1シリーズに載せて動作させることに成功しました。4MHz動作ですが、浮動小数点などを使った重い計算は入っていないので速度的にはさほど問題はなさそうです。WSPR処理結果表示16F1847はプログラムメモリが14KB(8KW)、RAMが1KBと18ピン16Fシリーズ中最も大容量ですが惜しむらくは秋月や他のパーツ屋では扱っていません。そこで今回はRSオンラインで注文しました。1個215円ですが5個単位からの注文でした。Mini-V2にも将来使う予定です)。256B)にアセンブリ言語でプログラムしましたが、WSPR用にあらかじめPCで生成したWSPRコードをEEPROMに納めていたので、移動などによるGLや出力表示の変更がその場では不可能でした。このプログラムを組み込むことによって随時コードの書き換えが出来るので、FBなんじゃなかなぁとひとり悦に入ってますhiというわけで次はいままでのコントローラーの16F648Aを今回このプログラムを納めたPIC16F1847に換装して実戦投入したいと考えています。電子工作2014年9月21日日曜日PICにWSPRコード生成プログラムを移植(訂正あり)WSPRコード生成プログラムをmbed環境で組みましたが、今回これを基にして8bitPICにプログラムを移植しました。RAM1024B)をターゲットにしてMicrochip純正のXC8フリー版でコンパイルしました。コンパイルは通りましたがプログラムメモリが10%前後、RAMも22%程度と比較的大きなサイズになってしまいました。そこで遊びのRAMを極力減らす(1ビット情報をchar型1つに割り当てず、8ビット分をひとつのchar型に収めるなど)方向でソースを書きなおしました。プログラムメモリもRAM消費もぐっと減ってFBです。処理過程と結果はRS232C経由でPCに表示させてます。表示関係をコメントアウトとしてコンパイルするともっと減ってこんな感じに。これだけ減れば場合によっては16Fクラスでもいけるかもしれません。移動場所や送信出力の変更によるコード変更もこれでバッチリいけそうです。電子工作2014年9月17日水曜日mbedでWSPRコード生成mbedは対応ハードウエア(NucleoはCortex-M4搭載でも1,500円くらいで購入できる)さえあれば、PCに開発環境を苦労して構築することなく、プログラミングが容易に出来るクラウドな環境です。先日はDDSのコントロールを試してみましたが、今回はWSPRコード生成プログラムをmbed環境で構築してみました。1/2)3.インターリーブ処理4.同期シンボルとの併合となります。mbedにはCortex-M4のSTM32マイコンを搭載したNucleoボードを使いましたが、STlink/V2ドライバをインストールすると仮想comポート経由でPCとの通信が可能になるため、それぞれの処理結果をprintf()でターミナルソフトに表示させることが出来ます。処理結果をPC上で確認しながらコーディングが出来るのでとても便利です。Windowsで動作するWSPRエンコードソフトはいくつかありますが、中でも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ですが。器(ボビン)が決まってしまえばあとは計算しておのおののコイルの巻き数を割り出してしまえば設計は完了です(少々強引ですが^^;机上で緻密に完璧に計算しようとしてやる気が萎えるよりは良いと思うのです、こうしたアンテナの場合。巻き数の割り出しには、自分で計算するのも面倒なので(従免の試験の時さんざん勉強しましたが^^;)こちらのサイトを使わせてもらっています。ここでメインコイルとサブコイルのパラメータ(コイル径、コイル長、巻き数)を入力するとおのおののインダクタンスとバリオメータにした場合のインダクタンスの可変範囲が自動計算されます。巻き数)をいろいろと変えながらブラウザ上でカットアンドトライをしていきます。いえば昔短波ラジオを作る時に受信周波数を決めるように同調コイルを巻き足したり解いたりした記憶がありますが、それと同じ感覚です。前の稿で475.5kHz帯短縮バーチカル用ローディングコイルとして必要なインダクタンスは、傘2条タイプで約600μH、傘なし単純バーチカルタイプで1440μHと割り出されました。値がお互いややかけ離れているため同じ巻き数のコイルでカバーすることは可能ではありますが、同調取りが非常にクリティカルになるのと低いインダクタンスの時のコイル損失が大きくなるため、ここはメインコイルにタップを立てて切り替えするような仕様としました。:1と同じ・インダクタンス可変範囲:452~866μH実際線材径は被覆部分の厚みもあるためその分巻き数はやや少なくなることも念頭においてサブコイルを2層巻きにし少しインダクタンスを増やしたほうが良さそうです。そんなわけで475.5kHz帯アンテナ用のローディングコイルの大まかな設計が出来ました。電子工作2014年9月9日火曜日475.5kHz帯のアンテナ考察その1旧ローカルで現在独自の視点でアマチュア無線を楽しんでおられるどよよん無線技士さんから「475.5KHzバンド開放・・・このバンドもアンテナ作りが課題だと思われます。」とコメントをいただいて、ふとアンテナのシミュレーションしておかないとなぁと思い立ったのでありました。475.5kHz帯は移動運用でないと電波の発射が実質困難になりそうなので、最初は136kHz帯の移動用アンテナ設備を流用するのが早道だろうと考えました。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帯のものと比べるとはるかに小さなインダクタンスで共振出来、コイル線長も短く損失も小さくなっています。傘なしでも十分実用的に思えてしまいます。実際に作るとしたら両方に対応できるようにしてみたいと思います。週末久しぶりに移動運用考えていましたが、あいにくの雨模様...というわけで無理して出かけずに日曜日は工作の日にしました。JAでも何名かの方がこのキット(TX-500やTX-136)を購入されて組み立てておられますが、抵抗コンデンサ類はもちろんのこと半導体もファイナルのMOSFET除き表面実装部品を採用しそのすべてを自分でハンダ付けして実装しなくてはいけないタフなキットです。眼の調節障害が進んだ方には...hi金属ケースのパッケージの隙間にこれでもかというくらいパーツが詰め込まれています。パーツは2枚の基板と前後パネル、各パートの部品がひとつひとつ小分けされて丁寧にパックされています。組み立ては大きくメインボードとコントロールボードの2パートに別れています。それぞれパーツが数袋にパックされているので順番にひとつずつ浅めのトレー上に開封して実装します。パックを開け、同梱の小さな紙切れに印刷されたパーツリストにあわせてマーキングされたパーツをリスト順に並べます。Listを開き、リストのパーツ番号と同一のPCBにシルク印刷されたパーツ番号を探し出して該当するパーツが収まるパッケージをひとつずつ開封して一個一個ハンダ付けしていきます。一気に全部あけるよりも効率的で、間違いや紛失する確率もかなり少なくなります。ひとつの袋のパーツの実装が済んだら次のを開封して...というようにひとつひとつ慎重に進めるのがポイントです。表面実装部品の手ハンダの方法はいろいろあるようですが自分が行っている方法は、抵抗やコンデンサの場合片方の電極のランドに薄く予備ハンダを盛ってピンセットで部品を持ち、予備ハンダを盛ったランドに片方のみハンダ付けして部品を軽く上から押しながらもう一度鏝をあてて基板にくっつけ、それからもう片方のランドにハンダ付けします。無理に力がかかるとパーツを壊してしまいます。今回チップコンデンサ2つ割ってしまいました^^;なのでこの方法はあまりお勧めしません。上からピンポイントでパーツを押さえる道具があれば(YouTubeなどでも紹介されているようです)そちらを使ってハンダ付けするほうが良いです。上はメインボード実装途中経過です。半導体類が実装されていますがICなどピン数が多い半導体部品は、ハンダ付け前の位置決めと固定がポイントです。ICの向きは注意しないとせっかくうまくハンダ付けできても逆さに取り付けてしまったーなんてことがままあったりします。ハンダ付けしてしまうと取り外しが非常に困難です。基本的にはピン全体にハンダをたくさん盛って熱が冷めないうちに外し、ハンダ吸い取り線でハンダをきれいにふき取って基板に付着したフラックスを除去すると状態復帰するのですが、たいていは熱で一部ランドがはがれてしまいます。(自分も今回ひとつランドをはがしてしまいましたが、幸いなことにどこにもつながっていないピンのランドでした)しっかり向きを確認してピンとランドの位置を正確に合わせフラックスや細いマスキングテープなどで仮固定してから細い鏝と細いハンダで1ピンずつハンダ付けしていきます。AD9833のハンダ付けです。AD9833は10ピンMSOPという0.5mmピッチという過酷な(笑)サイズです。周りのチップ部品と比較してみてください。こればかりは小さすぎて1ピンずつハンダ付けするのは非常に困難なので(やるのであれば実体顕微鏡とペン型のハンダゴテがあると良いですね)、位置決め固定して一旦両サイドにハンダを大胆に盛ってからハンダ吸い取り線でふき取るという強引な?方法でハンダ付けします。そのあとふき取り残しでピン間ショートしていないかどうかルーペを使って丹念に確認しておきます。あとはトランスコイル類など大きな部品をサイトの完成写真を参考にしながらハンダ付けします。基準水晶発振器は基板に直付けにせず、別途14ピンICソケットを用意して不必要なピンをカットしてソケットをハンダ付けして発振器をソケットに差し込みます。将来TCXOに換装する予定なので、差し替えが容易にできるし高床になるので温度変化の影響も多少すくないかなと期待できそうです。最後は後面パネルを取り付けてファイナルのMOSFET2本をハンダ付けしメインボード実装完了となります。ここでちょっと休憩してから続いてコントロールボード実装に取り掛かります。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円前後で手軽に入手できます。今回はマルツで購入しました。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でも使えてソースが相互に利用できそうでなかなか良さそうに思えました。