ラベル 弱電系工作 の投稿を表示しています。 すべての投稿を表示
ラベル 弱電系工作 の投稿を表示しています。 すべての投稿を表示

2021年8月8日日曜日

TDR測定治具の作製(続編)

これは2013年に書いた以下の記事の続編です。
伝送線路の特性インピーダンスの測定 その2(簡易TDR法)

ヤフオクでアナログ帯域4GHzのオシロ(Tektronix TDS7404B)を安価に落札できたため、これを活かすべく過去に作ったTDR治具の性能向上を行いました。前作はユニバーサル基板にリード部品を配置して、信号を取り出す端子も適当に処理していました。

今回はより高周波的センス(?)を反映して、接続部はSMA端子としました。また、表面実装部品を採用することで浮遊インピーダンスを小さくし、測定品質の向上を図りました。

↑2013年頃に作った基板


↑今回作った基板

基板は2層1.6mm厚で、中央にGNDプレーン付きコプレーナ導波路(50Ω)を配線したものを使用しました。電源のインピーダンスを極力小さくするため、レジストの上から銅箔テープを貼ってVccプレーンとし、下層のGNDプレーンとパスコンを形成しています。この銅箔面積で100pF程度の静電容量が得られました。さらに、低周波領域でのインピーダンスを下げるために追加のパスコンを多数配置しています。
アッテネータとディバイダには1005Mサイズの抵抗を使用して極力密に実装します。

回路図は以下のようになっています。
ワンゲートロジックのシュミットトリガインバータで矩形波の発振を行い、バッファ用のインバータを経由して抵抗パワーディバイダに接続されています。バッファ用インバータを無くして発振用インバータで直接アッテネータを駆動しても良いと思います。
DUTとMONITOR端子は50Ωで整合されており、50Ω終端可能なオシロに直結して使用できます。

↑回路図


NC7SZ14の電源電圧定格は1.65~5.5Vですが、電圧を高くするほどtr/tfが高速になります。つられてオーバーシュートも大きくなるため3.3~5.0Vくらいの範囲で使うのが良さそうです。
以下にMONITOR端子から出力される波形を示します。
DUT端子は50Ωで終端、オシロの入力インピーダンスは50Ω、アナログ帯域4GHzでの測定です。
Vcc = 5.0V時には10%程度のオーバーシュートが生じますが、割ときれいな立ち上がり波形です。オーバーシュートを無くすためにICの電源ピンのパスコンを色々変えてみたりアッテネータ定数を変えてみましたが劇的な改善は得られませんでした。-3dB帯域が5GHz程度の低インピーダンスプローブを使用し、IC出力端で測定しても同様のオーバーシュートが生じていたため、NC7SZ14の限界のような気がします。

↑Vcc = 3.3V時の立ち上がり特性

↑Vcc = 5.0V時の立ち上がり特性

↑オシロとの接続状態


DUT端子に物理長315mm(SMAコネクタ含む)の同軸ケーブルを接続し、終端状態を変えると以下のような波形がMONITOR端子から観測できます。
光速で信号が反射すれば (0.315*2) / (3*10^8) = 2.1ns 程度かかりますが、実測では3.2ns程度かかっているので波長短縮率が65%程度と計算できます。

50Ωで終端すると反射がきれいに消えており、同軸ケーブルの特性インピーダンスが50Ωであることも確認できます。

↑終端短絡

↑終端開放

↑終端50Ω


2013年に作った治具では立上り時間が遅く、また高速なオシロも所有していなかったため、このような短いケーブルのインピーダンス測定は困難でした。

今作では100mm程度から測定可能なため、基板上の伝送路のインピーダンス測定などにも活用できるかと思います。

Rise timeが100ps未満でオーバーシュートが小さいパルス源を用意すればさらなる性能向上(距離分解能の向上)が可能になります。

より優れたICが入手できれば追加で評価してみようと思います。


-------

以下はALLPCBで製造した1.6mm厚FR-4基板のインピーダンス測定結果です。上記315mmの同軸ケーブルの先にテストクーポンを接続し、50Ω終端にしています。

カーソルで囲まれた領域がDUTの伝送路区間です。
この部分の電圧値を50Ω終端時の電圧値と比較することでインピーダンスを算出できます。

DUTの代わりに50Ω終端を取り付けると観測される電圧値は251.89mVでした。
例えばDUT Bでは伝送路区間で247.03mVになっています。
オシロの終端により反射波の振幅が1/2に低減(反射係数Γも1/2のように見える)するため実際の反射電圧は242.17mVとなります。
これより反射係数Γ = (242.17-251.89)/251.89 = -0.03858と求まります。
インピーダンスは、Zdut = Zo*(1+Γ)/(1-Γ) = 50*(1-0.03858)/(1+0.03858) = 46.28Ωとなります。
DUT Bの設計値は46.3Ωなのでほぼ設計値の値が得られています。

この試作では、W=1.27mm S=0.25mmで設計したGNDプレーン付きコプレーナ導波路(DUT A)が最も50Ωに近い特性となりました。
ただし、SMAコネクタ接続部分でインピーダンスが低下しているため、SMAコネクタのフットプリントは改善の余地ありです。
例えばセンターピンのフットプリント周辺のみSを大きくするなどの方法が考えられます。

↑DUT(インピーダンス測定用テストクーポン)


↑KiCadに付属するPCB Calculatorでの計算値

↑DUT A(設計値50Ω、実測値49.22Ω)


↑DUT B(設計値46.3Ω、実測値46.28Ω)


↑DUT C(設計値52.2Ω、実測値50.73Ω)


↑DUT D(設計値50Ω、実測値47.22Ω)

■参考資料

・ Tiny TDR | Hackaday.io (https://hackaday.io/project/164165-tiny-tdr)

・アナログ・センスで正しい電子回路計測 (https://shop.cqpub.co.jp/hanbai/books/42/42031.html)


-------
2021/8/9追試:

パルスがLow→Highに遷移する際には、NC7SZ14のPin5(Vcc)とPin4(Y)が導通するわけですが、よりインピーダンスの低いGNDプレーンに直接Pin5を接続したほうが特性が改善するのでは?と思い実験してみました。
Pin5をGNDプレーンに接続するため、Pin3はには負の電圧を供給してやる必要があります。
また、バッファ用のインバータを外して発振用インバータの信号を直接アッテネータに入力してパルスを取り出してみましたが、スルーレートの低下はなく十分な立ち上がり時間が得られています。

↑NC7SZ14のピン配置

↑回路図

↑部品実装の様子

↑Vcc = -5.0V時の立ち上がり波形

正電圧版と比較すると、
・立ち上がり時間:247ps → 227ps
・オーバーシュート:10.2% → 7.8%
と若干の改善が見られました。
数を見てるわけではないのでICの特性ばらつきの可能性もありますが・・・。
インバータを1段にしたことで立ち上がり前のフロアの揺れが消えています。
なかなか良い感じだと思います。

市販されているTDR測定用のパルス源には更に高性能なものが存在します。
例えば PICOTEST社の J2151A PerfectPulse® Fast Edge Signal Generator など。
立ち上がり時間が 32ps でオーバーシュートの発生が生じないことを謳い文句にしています。
この製品も出力電圧が0 ~ -500mVとなっており、内部で負電源を生成しているようです。どのような構成になっているのか気になりますね・・・。

比較的安価に高速なパルスを得る方法としては、10Gbps SFP+用のレーザドライバICを使うというものがあります。MAX3798はレーザ変調用信号に 26ps (typ) という非常に高速なtr/tfを実現しており、これを活用してTDR sampler/pulse generatorを構築するプロジェクトがHackaday.ioに投稿されています。なかなか興味深いのでぜひ覗いてみてください。


~おわり~


2020年7月23日木曜日

10MHz GPSDOの作製

ご無沙汰しております。金魚です。元気でやっています。

久々に実用的な電子工作(?)をやったので紹介したいと思います。今回は計測器の周波数基準器として使われるGPSDOを作製しました。
GPSDO(GPS Disciplined Oscillator)とは、GPS/GNSS測位時に得られる正確な1PPSパルスを用いて、内蔵した発振器の周波数を常時補正しながら動作する周波数基準器を指します。eBay, Aliexpressなどで探すと1万~2万円程度で完成品が購入できますが、ダブルオーブン式のOCXOを持っているので自作してみることにしました。


以前投稿した「OCXOの安定度測定」という記事で、PPS信号を使用してフリーラン状態のOCXOの周波数安定性を評価しました。1週間フリーランさせた場合に20mHz程度の変動がありそうだなーという結果が得られました。10MHzにおける20mHzというのは2ppbの誤差に相当します。温度補償水晶発振器(TCXO)の精度が1ppm程度なので、それに比べると正直十分すぎる精度なのですが、やはり限界を突き詰めたい・・・というロマン(沼)があるので、取り敢えず作ってみたという感じです。
なお、周波数基準器(他の測定器にも言えるが)の沼は深いので注意したほうが良いです。高精度な機器を手に入れると、その機器の精度が気になりはじめて更に高精度なものを・・さらにさらに高精度なものを・・・と、気づけば散財しがちです。究極を求めるのは楽しくて色々と学べることもあるので良いのですが、程々のところで妥協しておくのがコツです。幸いなことに、GPSモジュールから出力される1PPS信号は常時校正されているので、長期的な精度に関しては安心(諦め?)ができます。

さて、作製したGPSDOのざっくりした仕様は次のとおりです。
  • 出力周波数:10MHz±2mHz, ±0.2ppb
  • 出力数:3CH(CH間及び筐体アースとは絶縁)
  • 出力波形/レベル:正弦波/約240mVrms(50Ω終端時)
  • 内蔵発振器:TCO-6920N(EPSON TOYOCOM製)
  • 周波数測定分解能:±1mHz(測定時間1000sec)
  • 周波数制御分解能:約0.2mHz(DAC分解能とOCXO感度より算出)
  • 電源:AC100V / 約8W(OCXOオーブン温度安定後)
  • UI:16x2行キャラクタLCD、LED3灯(LOCK、1PPS、アラーム)、ロータリエンコーダ
  • 通信I/F:USB接続(UART通信、筐体アースとは絶縁)
  • 主要機能:周波数測定結果表示、DACレジスタ値表示・設定、GPS衛星捕捉状態表示、NMEAデータ出力、日時・周波数・内部温度ログデータ出力、PPSサウンド出力他


【完成写真】
先に完成写真と動作の様子を載せておきます。文字のレタリングを手抜きしているのがバレバレですが、売り物ではないのでヨシとします(笑)

普段はファンクションジェネレータの上に乗っけて通電状態にしています。
LCDの表示内容は左上から順に、現在の周波数、ゲート時間(10sec単位)、UTC時刻、位置特定品質、使用衛星数です。ロータリエンコーダにはプッシュスイッチが内蔵されており、押すごとに表示内容および設定項目が変わります。

背面です。白色マーカが活躍。



【作製の様子】
(以下、写真だらけの見づらい内容ですがご了承ください・・・)
①筐体検討
まずは主要な大柄部品を並べて、筐体サイズの検討から行います。
少し窮屈ですが、タカチのアルミケースYM-180に収まりそうな感じなので、これで行くことにします。
YM-180の底面サイズにダンボールを切り抜き・・・

部品を乗せてみる。なんとか収まりそう。

②パネルデザイン・部品配置検討
ケースや足りない部材やらを秋月で発注して、パネルデザイン・部品配置の検討に入ります。BNCコネクタやLCD、ACインレットなどは内部の部品と干渉しがちなので、実際のケースを手にとって確認しておくと安心です。なお、この段階ではロータリエンコーダではなくボタン3つを使用する予定でしたが、良さげなパネル取り付けのボタンが見つからずに途中でロータリエンコーダに変更しました。また、USB-UARTの取り付けを考慮できておらず、後々基板をカットすることになります・・・。
配置がおおよそ決まったら、CADツールに入力し、実寸サイズで印刷しておくと後の加工で役に立ちます。
部品同士が干渉しないように注意

背面加工図(USB-UARTが抜けてる)

前面加工図

③ケース加工
ケースに実寸サイズで印刷した図面を糊付けし、穴あけなどをやっていきます。
ハンドニブラを持っていないので、角穴はドリル + ヤスリで仕上げていきます。
オートセンターポンチ(SK11製AP-10)を購入したので使ってみましたが、最弱の設定でもパワーが有りすぎてケースが歪みました。柔らかいアルミケースにはもう少し優しいポンチを使うべきでした。
このような工作において、ケース加工が一番面倒ですね。特に表面パネルは失敗すると目立つので気を使うし、思った通りの寸法で仕上がらなくて部品が収まらなかったり・・・単に自分がヘタクソなだけなんですが、3Dプリンタをうまく活用して楽したいところでもあります。
オートセンターポンチが強すぎた・・・

角穴はドリルで輪郭を穴あけ→ニッパーでつなげてヤスリで仕上げる

良い感じに加工できた

④回路設計・部品実装・配線作業
やっとThe 電子工作という感じのフェーズに入ります。
今回は、制御MCUとして使い慣れているAVRマイコンを使用しました。アナログ回路についてはよく分かっていないので、雰囲気+LTspiceを活用して設計していきます。OCXOの制御端子に与える電圧精度・安定性が出力周波数精度にもろに影響するため、GNDのとり方や基準電圧IC、分圧抵抗には気を使います。
参考までに回路図を添付しておきます。動作の保証はありませんので、真似される際にはご注意願います。
回路図

処理部基板

出力バッファ基板(この上に処理部基板がスタックされる)

クリティカルなVC生成部は、OCXO基板の裏側に実装しました。少々雑な仕上がりですが、OCXOのGND端子直近にベタGNDを確保できるため、配線抵抗による誤差要因を排除でき安定動作が期待できます。

絶縁ヨシ!

配線完了後の様子

⑤ソフトウェア実装
次は楽しいソフトウェアの実装です。
ドライバ層からコーディングしていき、マイコンのペリフェラルが意図通りに動作すること、周辺部品(LCD、I2C-DAC、I2C温度センサ、スイッチ、LED類)が動作することを確認していきます。
Timer1のインプットキャプチャのトリガを1PPS信号にしておくと、ソフトウェアの遅延やデッドタイムなしに周波数計測が可能となります。
なお、10MHz信号を直接AVRでカウントする際には注意点があります。Timer1のカウンタクロック入力は、AVRの動作クロックで同期化(2段D-FF)されているため、AVRの動作周波数を20MHz以上にしないと取りこぼしが発生し正しい計測ができません。推奨としてはカウンタクロック * 2.5倍以上とされているため、今回は25MHzでAVRを動作させています。
最大動作周波数20MHzに対して25%ほどオーバークロックしていることになりますが、この程度なら問題なく動作します(といっても定格範囲外なので、半導体プロセスのばらつきによりFmaxが低い個体にあたった場合はオーバークロック耐性が劣る場合もあるかと思います。使用する石で必要なペリフェラル機能が動作することを確認の上採用ください。過去の実験では30MHz程度までなら問題なく動作していました。趣味の世界なので動きゃOKですが、量産品ではもちろんNGです(笑))
肝心なOCXOの周波数制御ですが、ゲートタイム1000secで周波数測定を行い、10MHz±1mHz以上の誤差が生じた場合は、DACレジスタを1LSBずつ調整する動作となっています。この方式では、目標周波数に到達するまでにかなりの時間がかかりますが、予め調整用VRで目標値付近に追い込んだあとに、DACレジスタ初期値を適切に与えてやればすぐに収束します。
LOCK表示灯は、10MHz±2mHz以内の場合に点灯するようにしています。ALM表示灯は、PPS信号が出力されない or 衛星補足数が3基未満の場合に点灯します。ソフトウェア機能については追加・改善の余地ありです・・・。
ソースコードは以下で公開しています。

マイコンリソースの割り当て状況。

基準電圧IC + I2C-DACの動作確認

DACレジスタを1LSBづつ変化させたときのVC電圧変化
200μVステップ(≒0.2mHz)で周波数制御できる

⑥完成&評価
以上で作製は完了です。USB-UART経由でログが出力されるので、約3日間の周波数変動を取得してみました。エアコンの風がもろに当たる環境なので、外出・帰宅時に内部温度が10℃以上急変する場面がありますが、出力周波数は±2mHz以内の変動に収まっています。想像していた以上に安定しているようです。(周波数カウント処理で±1mHzのカウント誤差が生じるため、厳密には±3mHzと考えるべきかな?)
これからも継続的にログを取得し、1年を通してどのような変化があるのか観察していきたいと思います。
10MHz 3CH出力波形(終端開放時)

約3日間の動作ログ



【まとめ】
GPSDOの自作にあたって、VC生成部の温度特性に悩まされて基準電圧ICをTL431からREF192Fに変更したり、簡易恒温槽で評価したりと色々試しましたが、最終的にはそこそこ高精度な物に仕上げることができました。適当に作った割に周波数が安定しているのは、EPSON TOYOCOM製のTCO-6920Nが優秀なおかげと思います・・・。回路やソフトはまだまだ改善の余地があると思いますが、現状の機能・性能で取り敢えずは満足しているので、追々Updateしていく予定です。面白いネタがあれば投稿します。
1PPSが出力できるGPSモジュールも、Aliexpressで600円程度で購入できるようになりました。これで常時校正された10E-13程度(1PPS信号の短期精度は、大気中の伝播経路の状態変化やモジュール内部クロックに依存する揺らぎが存在するため、長期平均化が必要)のタイミングが手に入るわけですから、GPS衛星とそれを支える技術には感謝しかありません。今回のように周波数基準器として使うなり、時計にするなり、多拠点で精密にタイミング同期を取るなり、速度計を作るなり、インテリアとして飾るなり・・・応用は無限大です。
また、GPS衛星から送られてくる電波(L1信号:1575.4MHz)は波長が短く、アンテナも小型に作ることができます。右旋円偏波のため、通常のダイポールアンテナではなく、QFHアンテナが適しています。付属のパッチアンテナに飽きたらアンテナ自作にチャレンジしてみるのもアリです。なかなか思うような特性にならずイライラ(?)しますが、高度約2万kmの衛星から送られてくるGPS電波に思いを馳せながら針金細工をするのも良いものです。

試作した1575.4MHz用QFHアンテナ

自作のQFHアンテナで受信を試みている様子


【参考資料】

【2021/6/5追記】
出力信号のスペクトラムを見てみました。
同一レベルに設定したRIGOL DG1022Zと比較すると、本機の出力は60~80MHzがもっこりしておりあまり綺麗ではありませんね。おそらく分配用の回路が発振気味だと思うのでそのうち作り直そうと思います・・・。


【2021/6/14追記】
測定条件(スペアナの設定)が誤っていたため正しいスプリアスが測定できていませんでした。総務省が打ち出している測定条件に従って再測定してみました。上段がGPSDO、下段がDG1022Zです。
(https://www.tele.soumu.go.jp/resource/j/others/spurious/files/sanko003.pdf)


RBW=10kHz / VBW=10kHz / ピーク検波

■GPSDO
基本波:0.5dBm
第2高調波:-35.0dBm (-35.5dBc)
第3高調波:-44.5dBm (-45.0dBc)
第4高調波:-60.9dBm (-61.4dBc)

■DG1022Z
基本波:0.5dBm
第2高調波:-49.8dBm (-50.3dBc)
第3高調波:-71.2dBm (-71.7dBc)
第4高調波:-72.9dBm (-73.4dBc)

【2022/5/1追記】
久しぶりに点検兼ねて分解してみたところ、分配器入力配線のGND接続が行われていないことが発覚しました・・・。配線を修正し、半田面側にシールドを追加すると60~80MHzに出ていたもっこりしたスペクトラムは消滅しました。また、このもっこりスペクトラムの犯人はマイコンからの放射ノイズでした。マイコンをリセット状態に維持しておくと、修正前でもモッコリが消滅します。
せっかく分解したので基準電圧ICを REF192F → AD780AN にアップデートし、OCXOのVC端子に入力されるノイズが少なくなるようにオペアンプ周辺の定数・フィルタも見直しました。修正前に比べて rms ノイズが約1/2に低減しました。

分配基板の裏面のGND強化&シールド追加

スペクトラム再測定結果。高調波のレベルは殆ど変化していないが、モッコリが消滅した。

更にマイコン基板と分配基板の間に銅箔シールドを挿入し、マイコン基板の電源ラインへのフェライトビーズ挿入など地味な対策をすると100MHz以降のノイズレベルがぐっと下がりました。

マイコン基板 - 分配基板間のシールド(雑・・)

シールド・フェライトビーズ挿入後。
デジタル回路由来の高調波が抑制されている。


おまけ:
GND修正前後のクロックジッタの比較結果。
GPSDOから出力される10MHzの信号をオシロに入力し、トリガ位置から1ms後のジッタを測定した結果です。修正前は明らかに大きすぎるジッタが重畳していました。マイコンをリセット状態に維持するとジッタが収まるため、マイコン基板のGND配線経由で分配器にノイズが回り込んでいたものと思います。
今回作製したGPSDOは、分配基板の真上にデジタル回路が鎮座しており、出力ノイズ(≒ジッタ)を小さくするという観点ではNGな設計でした。次作(あるのか?)では、予めOCXO単体でのジッタ性能を測定して限界を見極めた上で、部品レイアウトにより性能が低下しないように注意したいと思います。

GND接続修正前

GND接続修正後


おわり