2021年6月29日火曜日

GPSDOの製作 その1_GPS受信機

  
 過日このブログにアップした「
いまさらのGPS受信機」でも述べているように、GPSとは Global Positioning System または Global Positioning Satellite すなわち衛星測位システムのことです。

 今地球の周りには左図のようにたくさんの衛星が回っています。
 これらの衛星には、超高性能の原子発振器(セシウムなど)が搭載され、なおかつ、その精度は地上局より制御・維持されており、高確度かつ高精度の時刻情報を有し、発信しています。

 衛星から発信される信号は主に位置の測定に用いられますが、今回はこの信号を受信して、正確無比の周波数標準を作ろうというものです。
 この仕組みを GPSDOGPS Disciplined Oscillator)と称しています、GPSに同期した発振器とでも言いましょうか、、、、

 ということで、GPS受信機がまず必要ですが、今回は先のブログで取り上げたものとは別のものを入手しました、とはいっても受信用チップは NEO-6M で同様です。(右写真は購入時のサンプル画像)

 NEO-6M はかなり過去のものですから、現状ではNEO-7、NEO-8 がベターですが、GPSDO 用ですので、ebey の中華最安値品?(大きいほうのワンコイン)としました。

 入手まで約一か月かかりましたが、無事到着し、チェックをしましたが不動品でした。中華最安値品?ではよくあることなので少しも騒がず詳細を調べてみました。
 
結果は
・5V → 3.3V 3端子レギュレータが不良
・メモリバックアップ用スーパーキャパシタ不良
・デフォルトの設定がおかしい

 で、修理・改良です。

・不良の3端子レギュレータを除去、レギュレータのIN・OUTを配線でショートし+3.3V仕様に改造

・スーパーキャパシタは除去して、CR2032(Li3V) 電池を代わりに取り付けます。(極性に注意、+極側に逆流防止ダイオードを入れる)

・アンテナのコネクタを除去し、同軸ケーブルを取り付け
・基準パルスの出力は NEO-6M チップの3番ピン(受信パルス表示LEDへの配線)

 右写真は 修理・改良済みのGPS受信機を秋月のユニバーサル基板に取り付けたところです。

 この改良受信機は+3.3V仕様になっていますので要注意です。右側の黒いICは受信機とパソコンをRS232Cで接続するためのインターフェースです。






 左がその回路図で、ELMさんによるCMOSインバータを使った簡易版です。
 このIC(例えば74HC04)の電源には+5Vを供給して 3.3V → 5Vのレベルコンバータの役割もさせています


 この段階で受信機としてのチェックです。
 上は u-center というPCソフトで、受信できた衛星の様子を見てみたものです。天空に11個の衛星を捉えていることがわかります。最低でも4個あれば受信データは有効に使えるようですから、この結果なら十分でしょう。

 次いで、左のu-center の config 画面から、出力パルスをDuty50%の10kHZとなるように設定します。














 受信機の出力をオシロスコープで観察してみました、確かにきれいな10kHZが出力されています。
 出力レベルはP-Pで3.16VありますのでTTLでの信号処理は問題ないでしょう。

 左写真は仕上げ用のケースに受信機を仮付けしてみたものです。ケースは過日、縁日のフリーマーケットで入手した古いWOWWOWのチューナです。

 写真の下側に見えるように、電源トランスから2系統の+5Vが得られ、LEDなども使えそうです。電源ラインをレギュレータ出力のところでカットしておけば、基本はRF用途ですので、全体がベタアースのようになっていてベターです。ただ電源容量が少し心配ですが、これは後程考えましょう。

 ということで次回はいよいよ その2_制御回路 です。

2021年6月21日月曜日

HP53181Aカウンター用7seg LEDモニタの製作

 

 過日のブログに周波数カウンター HP-53181A ジャンク蘇生す!」をアップしましたが、その折に古いジャンクゆえに、表示文字が暗くて読みにくい、、、、と記しました。

 左写真でわかるように数値を読み取るのに大変苦労します、というわけで、これも過日のブログ(TM1640は使える)にヒントを得て、より明るく、より大きな文字を表示する7seg LEDモニタなるものを思いつき、製作してみました。
 左写真の上にのせてあるのがそれです。
 HP-53181A 周波数カウンターは幸いなことに周波数の値を、裏面パネルにあるRS232Cコネクタから常時アウトプットさせることが出来ますので、この信号をCPU(ATmega8)で拾い、TM1460を使って、16桁の数字を7seg LEDに表示させればいいのです。

 右図がCPU(ATmega8)周りの回路図です。ATmega8は小型化のためにDIPではなく、TQFPタイプのものを使用しました、プログラム開発にはもちろんarduino IDEを使いました。

 ・カウンタ本体との接続は9ピンコネクタで行いました。(図中右上)
 ・データは3番ピンのTxDから採り、トランジスタで反転・レベル合わせをしています。
 ・4番ピンと6番ピンは結線
 ・この回路には電源(+5V)が必要なのでカウンター内で9番ピンへ+5Vを出力できるように改造しました。これは禁じ手です!!!真似しないでください。

 次いで、表示部の回路を示します。

 










 この部分はすべて手配線を行いましたので大変でしたが配線材には0.26mmのUEW線を使いましたので多少助かっています。

 右写真にそれらを示します。
 上半分は表示部分、右下は密になっている配線部分の様子、左下は9ピンRS232CコネクタとCPU(ATmega8)です。

 表示部とCPU(ATmega8)部は40~50cmの距離を4本のワイヤーで接続しています。

 左写真はカウンタに接続したところです、CPU(ATmega8)部がいささかだらしないですが、そのうち気の利いたデザインを考えましょう。
 比較に置いた10円玉と比べて、随分コンパクトに収まりました。

 そしてコントロールソフトです。






 おおよそはコメントでわかると思いますが、
  ・TM1640.h はライブラリ
  ・TM1640 module(12,13) はI2Cのピン指定
  ・module.setupDisplay(true,3) はディスプレイの輝度指定
 です。

 このように簡単なスケッチで16桁の7seg LEDモニタがうまく動いたのには驚きでした。