2016年3月23日水曜日

HP5334Bの3GHz!!! 対応(続の2)

 その後、注文していたプリアンプ(HPMA-0285)が届いた。
一応サイズはデータシートで確認していたが、実物は思っていたよりずっと小さかった。規格はオリジナルのMWA0204より帯域が少し狭く2.7GHz、NFが1dBほど悪い。全体のNFは初段で決まるからちょっと気になる。
取り付けるとこんな感じで、オリジナルよりかなり小さい。

 実際に周波数を計ってみると、若干感度が上がったようだが劇的な変化はない。下は80MHz位から-20dBm位まで計れるが2GHzあたりから急に感度が低下し3GHzだと10dBm位必要になる(前回の結果と違うが理由は不明。初段は無い方が特性が良いかも)。リミッターを付けないと6dB以上感度が上がることは確認したが外しておく勇気は無い。 なお入力から6dBのアッテネータを経て0.2V(ほぼ0dBm)のリミッターが入っており、入力換算で6dBm辺りから効くようであるが、周波数特性を含めて吟味する必要があろう。

 プリアンプを追加してもスレッショルドの調整は殆ど変わわなかった。試しに手持ちの12KΩをR320に入れてみると調整ボリュームを30度ほど左に戻す事になったが、敢えて入れる必要も無さそうだ。

 まあ、とりあえず3GHzが計れるから良いか(ウォームアップしていないので周波数は若干ズレてます)。ただ最終的には-20dBm/3GHzの感度が欲しいところだが基板が1.3GHzの設計でそれなりの部品しか使ってないだろうから、使い物になる安定した性能を発揮させるにはもう少し研究してみる必要があるだろう。

 もう少し特性の良いプリアンプやリミッターが入手出来たら入れ替えて試してみようと思う。

  ちなみに3GHzまで計れる仕様のHP53131A のオプション030に使ってあるプリアンプ(MSA-0986)は5.5GHz位まで伸びている。同じくらいのチップが欲しいところ。

2016年3月20日日曜日

HP5334Bの3GHz!!! 対応(続)

 ソフトの開発も一段落したので(というか足りない情報を補うために本を発注したので、それが届くまでの束の間に) 5334BのカウンタのCチャネル実装に取り組んた。その結果手持ちのSGの限界である3GHzまでカウントできる事が判った。


 先日、発注していたBNCコネクタが届いた(AMAZONで発注したら中国から)。パネルの裏側から取り付けられるものだ、そうしないと後で分解が面倒になる。具体的にはBNCメス-MCXオス変換アダプター20cmケーブル付きで、これを切って使用する。
 コネクタを取り付けられるようパネルの穴開けをやった。これで板金加工はOK。

なお、パネルを外すには同軸コネクタのナットを外す必要があり、9/16インチのレンチが必要。また、つまみを外すにはT-5のトルクスが必要で、さらにナットは5/15インチとあまりお なじみでないサイズの工具を揃える必要がある。
 9/16インチのレンチがホームセンターに無かったので14mmの(ディープ)ソケットレンチで無理に 外し、ナットに少しキズを付けてしまった。 5/15インチのナット回しは8ミリのソケットで代用した。


 次に半導体を追加する。ダイオードは通販で仕入れたHSMS-2812を2個ずつ対面に組み合わせリング状に組上げたものを2つ用意。これくらいの大きさになると半田の表面張力が部品の重さに勝つので押さえておかないとうまく組み上げられない(大きさは楊枝の頭と比べてみてください)。

 これをHP5334Bの基板に乗せて こうなった(ダイオードの取付け場所は黄色の円内。紫はプリスケーラ用ソケット)。

ちなみにこの部分の回路図はこうなっている。リミッターはわかりやすいがピークディテクタはダイオードの書き分けがよく分からない。また256分周できるディバイダを64分周で使っているのは良しとして、+接地で使うのにどんな意味があるんだろう。



 プリスケーラは秋月で買ったμPB1507GV(3GHzまで使える)をDIP変換基板及び連結ソケットに乗せてこんな感じ。連結ソケットは上下があり、細い方をソケットに挿すようにしないとソケットを壊してしまうので要注意。DIP変換基板は種類が多く迷うが、これは0.65mmピッチのP-08210という10個180円のもの。 取付場所は上の紫の円内。ここがソケットになっているのは将来アップグレード出来るようになのか。というのは発売当時の仕様は1.3GHz迄だが、今は3GHzまで使えるプリスケーラICが簡単に入手できるから。


 ソケットにプリスケーラを乗せてSGの出力を接続し周波数をチェックすると、Cチャネルは(2.8GHzあたりの)デタラメな周波数を表示してまともにカウントしてくれない。一方1GHzでは正しく表示する事もあり、1.5GHzを入れると3GHzを表示するが感度は悪い。オシロで見ると同じ周波数を入れてもレベルによってプリスケーラの出力周波数が変に上下する。不思議な現象だ。
 ただ、本体は64分周で3GHz位まで計る性能があることは分かった。

 さらにオシロで細かくチェックすると、3段あるプリアンプ(MWA0204)の最終段(U303)が死んでいることが判明。 適当な代替品は手持ちに無いし、回路図上最終段はパスしづらいので1段目のICを外して3段目に入れた。1段目はジャンパーを入れてパスさせている。
 そしてこうなった(ピンクの丸が1段目をパスさせるジャンパー。プリケーラICの上には電源のパスコンを追加してます)。
黄色の丸はピークディテクタのスレッショルド調整。部品を組み上げただけでは信号が無くてもランダムな数字を表示してしまうので、この可変抵抗を調整して無信号時にカウントしないように(ゲートランプが点滅しないように)する。
 なお、R320は未挿入になっている。この抵抗はスレッショルド調整の可変抵抗と並列に入り、可変抵抗の調整範囲を決める。この抵抗の値は工場で決めることになっている(標準的には10KΩ)。この値はプリアンプの発生するノイズによって決まるんだろうが、とりあえず抵抗を入れなくても大丈夫だった。プリアンプの初段を付けた後で状況を見て再考することにする。

  組み上げてSGを繋いで計ってみる。プリアンプICの特性も結構上まで伸びているしプリスケーラも3GHz対応だから不思議な事ではないが手持ちSGの限界である3GHzまで平気で計れた(0dBmにて)。素晴らしいね~、ヤフオクでこれを落とした甲斐があった。

よく考えてみると、ベースとなるカウンタはは100MHz以上まで計れるから、64分の1のプリスケーラを使えば6GHz以上10GHz位まで行ける可能性がある。あとはやる気の問題か。なおSGはこの時点では較正していないので少しズレてます。

 これまで使った部品は、
   ・パネル用BNCコネクタ  ¥514 (BNCメス-MCXオス アダプター+RG316 20cm )
   ・μPB1507GV         ¥400
   ・HSMS-2812        ¥320 (¥400/5個)
   ・DIP変換基板       ¥18 (¥180/10個)
   ・連結ソケット        ¥60
   ◎合計           ¥1312円
といったもんです。

 プリアンプが1段足りないので補充しないと・・・同じ部品は売ってないので代替できそうな部品を発注。
 ・・・(続の2)へ続く。

2016年3月6日日曜日

Mac OS X上で汎用javaアプリ(.jar)を作るヒント

 前にも書いたようにMac OS XのJAVAには大きな断絶があり、今日のJAVAの開発を困難にしている。OS X 10.6以前(JAVA6まで)のJAVAはAppleによってOS Xと一体にサポートされ、ツールや資料も手厚く提供されてきた。
 OS X 10.7以降はOracleがJAVA7以降を提供するようになり、Appleから提供されていた資料やツールが非推奨化・旧態化するとともに消滅しつつあり、一方新しい情報は出てこなくなったきた。
 そんな中、ユーザの交流サイト等が細々と情報を提供している現状である。

 そもそもOS XはLinuxマシンである。しかしローカライズ機能等を使ってLinuxの素顔は隠され、Macintoshとして見えるようになっている。Linuxとしての顔を見るためにはコマンドラインで扱う必要がある。開発はXCodeというGUIのツールを使うとうまく行くようになっているようだが、アップデートが早く、手持ちMacに合う古いXCodeには必要な追加ツールが手に入らない。

 本題に話を戻すと、OS Xでのアプリの起動方法は次の、
    a)アプリをダブルクリックして起動
    b)アプリのエイリアスをダブルクリックして起動
    c)ドックアイコンをダブルクリックして起動
    d)アプリにドキュメントファイルをドロップして起動
    e)アプリのエイリアスにドキュメントファイルをドロップして起動
    f)ドックアイコンにドキュメントファイルをドロップして起動
等であり、つまり3つの対象に対して、1)それをダブルクリックしてアプリを起動するか、2)それにドキュメントファイルをドロップしてアプリを起動する。
 1)や2)のアプリの起動はOS Xのバンドルというやり方に従って比較適容易に実現できる。一方2)でドロップされたファイル(名)の受け取りでは、起動前に発生したOpenDocumentイベントが起動後のアプリに伝わり、アプリ側でそのイベントを受け取って処理する事が求められる。これはJAVAの範疇外であり、専用に用意された特別のライブラリを使うか、あるいはイベントを受け取れる別の言語で処理してJAVAに渡すことになる。

 専用のライブラリとしてApplicationというクラスがAppleで(今はライブラリの奥底に)用意されていて呪文を唱えると使えるが、古い性かJAVA8ではファイル名の取り込みは機能しなかった。 そうすると、(shellはAppleイベントを扱えないため)イベントを受け取れる筈のObjective-CやPython、Qt、AppleScript、Automater等で挑戦するしかないか。もっと調べないと・・・。



 そんな起動方法の問題とは別に、同じGUIでもWindowsとMacintoshでは流儀に違いがあるため、個別の対応が必要な部分がある。
1)メニューバーの付け方
2)クローズのやり方
3)Aboutメニュー、Helpメニューの場所
4)ショートカット(ALT)キー
5)アクセラレータ(META)キー
等々。

このためネット上の多くの文献を参考にしたが、特に次の資料は有用でした。

○ seraphyの日記
  ・Pure JavaでMacOSX対応のアプリケーションを作る方法
  ・JAVAアプリをMac OS X用にApplication Bundle化する

Developing an OSX Application in Java

Make Your Swing App Go Native, Part 1, 2, 3

まあ、今後ともボチボチ開発していきます。とりあえずMacらしくOpenDocumentを実現したい。


その後・・・
 環境がないので検証出来ないが、OS X 10.8 Mountain Lionで導入されたGateKeeperというツールで怪しいアプリの実行がブロックされるらしいことが分かった。JAVAの場合Bundleの中にJREを組み込まないと引っかかるらしいが、そうすると配布モジュールが大きくなる(圧縮前のDMG形式は10MBが最低なので、ある程度の大きさは覚悟しないといけないが)。
 もちろんGeteKeeperの設定変更やCTRLを押しながらの起動で回避できるらしいから、とりあえずマニュアルを編集することで回避しよう。

○ 情報源→ I am running Mountain Lion (OS X 10.8) or later and Gatekeeper is blocking an app from launching. What is going on?

その後・・・
 OS X のApplicationクラスの使い方が、ネットに流れている情報は不十分でサンプルプログラムをそのまま使ってもExceptionを起こして機能しない。OS XのJAVAはクソだから捨てた方が良いなんてアドバイスもネットに流れている。
 一、二週間ほど格闘してみて、少し面倒だがListenerやHandler等を纏めないで個々に別クラスとして作成するとうまく行った。たぶんこれで行けるだろう・・・か。