GPSでタイムサーバーを作ろう。 その1

 このページは BLOG に記載したものをまとめたものです。

今回はGPS信号受信について書いてみたよ

先日QZSS衛星が打ち上げられ無事軌道に乗り、運用を開始しました。ただ QZSSについては対応するプログラムを書き直すまたは専用のものに載せ替えなければ受信出来ません。これが出来ればさらに性能あがるのでしょうね。現在1機のみですが、将来3機打ち上げて24時間利用できるようにするそうです。いつになるのかな~次の衛星打ち上げ時には最初のはダウンしちゃってました~とか有りそうです。

さて本題。

以前仕事でタクシー会社の無線機を改修した時に交換して出て来たGPS受信装置と処理機というものを数個頂いて来て色々実験をしてみることにしました。その記録です。

(注:写真はクリックすると 1280x960 ピクセルで開きます。ブラウザが縮小するかもしれません)

これが処理機(2台1組)
これが1台に集約されたもの

この処理機の機能は以下の通りです。

 中にはGPS受信装置が入っています。そのデータにして無線を通じてパケット送信し、その車の位置、空車、実車、危険信号などを同時に送出するものです。タクシー基地局ではこのデータを受信、復元し、配車係の端末に、現在地、実車、空車などをリアルタイムで表示するようになっています。

  基地局では膨大なデータベースが構築されていて、電話番号を入力するとその方の住所が表示されるようになっています。無い場合はその場でお聞きし次回利用時の参考住所となります。当然携帯も同じですただ携帯はちょっと事情が違いますのでそのときによって対応が変わります。

左の写真はデータ処理機は2台で一組で、片方にはGPS受信ユニットが入り、もう片方にはデータコンバーターが入っています。後期タイプになると1台ですべて入っています。それが右の写真にあるデータ処理機となります。 この処理機で2台分を一つにまとめたため取り付け時の余計なスペースを取らなくなりました。

内蔵されているGPS受信機も1台の方が遙かに感度が向上しており、GPSを補足するのに2分ほどで補足出来る様になりました。(現在の受信機はもっと高性能で、補足時間が短いです。)当時の技術としては最高のものだったと思われます。そしてこの中身を開けると基板とGPS受信機本体が現れます。非常に小さい物ですが、ここにGPSを受信するシステムが組み込まれている訳です。ここからの信号をデータとして送出します。実はここの部分でテキストデータなのでちょっとした工夫で、パソコンの通信画面で確認することが出来るんですね。ふたを開けると下の3枚の写真のようになっています。

1台タイプをあけました。
ねじをはずしてひっくり返すと
これがGPSユニット GN-7709 古野製

こんな感じになっています。使うのはこの鉄板に載っているGPS受信機本体で、後は基板に載っているリチュウムの電池かな。これは3V程あります。充電は出来ませんがこの電池がバックアップ専用。その他にアンテナに電源を供給するための5Vが必要となります。

次の写真はGPS受信機の本体内部です。受信機から出ているケーブルのアサインの確認をします。電源、バックアップ、アンテナ電源のアサインは確認できているので、ユニットからのデータ送出、1PPS出力ユニットへのデータ入力がどれかを確認しなくてはなりません。ブレットボードに回路を組んで試験をして行きます。

回路を組んでみました。

物が古いだけに参考文献はなかなかネット上ではみつかりません。形跡は沢山あったのですが。資料はみつかりませんでした。付いていた元の基板のパターンを見て解析をするしか無く、その結果でブレットボード上にて稼働テストしてみました。

GPSユニットの中です。
ブレットボードで試験
その結果で作ったボード

こんな感じでブレットボードにおいてテストしてみました。結果以下の通りでした。

+5V 本体電源
+5V アンテナ電源
+3V 本体RAMバックアップ
1PPS
衛星データ出力。

と言うような感じで、解析できましたので、次は回路構成。このGPSユニットの出力はTTLのNMEAなのでパソコンに取り込めるように、RS232Cに変換することにしました。それだけで表示するようです。RS232Cのデータ速度はFurunoのホームページやリンク後から辿ると 4800BPSらしいので、ならばと言うことで(一番右側の写真)作りました。こんな感じで評価基板が完成です。無理矢理押し込めた感じがなんともですが、これがまたきちんと動作してくれています。

今回作った評価ボードの回路図です。

 回路はとてもシンプルです。バックアップの電池ですが、電源を入れたままにしておのであれば、特に必要はありません。電源が落ちたときに、コールドスタートするだけで補足に時間が掛かるだけです。あればあったで、補足時間を短縮できますけど。
GPSユニットに入力するRXDは実際配線していません。端末からGPS受信機にコントロールコードを送信する事はまず無いのとコネクタに配線がありませんので省略しました。回路図では接続している図にはなっています。

 受信テストでは、最初アンテナを窓側においておいただけでした。さすがそのままだと、GPSの信号を拾ってくれず。窓からちょっと身を乗り出して屋根の上にぺたんとアンテナを張りつけてみると、どんどん受信してくれます。

 今までは話しと写真、本でしか見たことがない NMEA データを生で見ると結構感動します。こんなに小さくてもちゃんと仕事するんですね。GPS受信機から出る信号はTTLレベルなのでRS232Cへレベルコンバートします。その為に1個ICが乗っています。MAX232なんですが。それだけで十分動作してくれます。

ところで 1PPS、NMEA って何?

さっきから1PPS、NMEAって言う言葉が出てきます。

1PPSとは
GPS受信機からはデータのほかにタイミングバルスを送出してくれる物があります。このタイミングパルスが1秒間に1回出るんです。これを 1PPS と呼んでいます。NMEAの受信タイミングでも正確さは出せますが1PPSの信号を使うと遙かに精度が向上します。 (1PPS = 1 Palus Per Second)
そしてこの 1PPS 出力は、GPS衛星を3個以上補足しないと出力されません。俗に三角点測定法っい言うのがありますがまさしくあの原理で3個以上衛星が受信出来れば正確さも増します。当然位置情報もですね。なので3個以上で無ければ出力されないようになっています。

 これを分周を掛け10MHzのクロックを作り測定器に入力するとやはり精度が増します。用途はいろいろですね。

NMEAとは
詳細は別ページを見て下さい。→NMEAのまとめ

色々修正記事です。

いくつか修正点がございましたのでここで訂正させて頂きます。

UNITは先般実験に利用しました、GN-77(GN-7709)です。いくつか不明の点が出てきました。9ピンコネクタの仕様が未だ判明しない部分があります。また先日掲示したピンの配列がまったく違う事が解りました。後で説明するソフトで判明致しました。まだ判明していないピンが3本もありなかなか解らない状況です。写真は今回新たに撮り直しました。この写真からも使用していないピンが数本ある事が解るのではないでしょうか。

1
多分RXD
2
TXD
3
GND
4
+5V
5
Flash Memory Back UP +3.3V
6
NC
1PPS
7
+5V ANT Power
8
NC
不明
9
NC
不明

 1と8/9は今後調査致します。6番の1PPSが解ったのは、TAC32と言うソフトを使った時に、前回のピン配列だと、1PPSの信号が入ってこない事が解りました。テスターで調べると、2番のデータ出力と同じ間隔で何か出力されていることがわかりましたので、ここに1PPSの出力としてDCD/DCRに入力するとソフトが反応してきましたので1PPSと判明しました。

そして組み込み

 今回はバラックでは無く本格的にケースに組み込みをしました。この組み込みに使ったのが最初に紹介したちょっと古めのGPS受信機です。松下電工製ですが、チップは古野のチップを使っています。またケーブルの色使いは同じのようです。

松下電工のGPSユニット
チップは古野でした。

 ただ、この手の受信機についてまったく資料が無く手探りでした。ネットにももう存在すらしていませんでした。しかし幸いにも付属の基板が付いていましたので、パターンを追って電源やバックアップなどは辛うじて確認出来ました。

 なんだかんだと言いながら、ケースに収めてみました。そして電源投入で信号と1PPS信号を取り出す作業に入ります。この基板は古いだけに受信に2分~3分ほどGPSの取得に時間が掛かりました。ちょっと辛いのですが一度電源を入れたらバックアップで色々保持しますので、問題ない様です。データについては通常の NMEAのデータとなり実験していた基板と同じデータの送出となっていました。これを元にして製作したのが次の下の写真です。

ケースに入れました。
GPSのユニットは232Cの裏に。

GPSの出力は前回製作したものと同様で、TTLレベルで送出されるため、レベルコンバーターMAX232を仲介しています。回路的には前回の物と同じです。

いろいろ余計な穴が開いていますが、別の製作に使っていたケースを流用しました。(既に使わなくなったので)。裏にはBNCのコネクタをつけていますが、アンテナ側のコネクタが今無いので保留のままとしています。MAX232が乗っている基板の裏面に先ほどのGPS受信機がセットされています。ある程度実験が終わっていますので、1PPS の正信号と負信号を作り、RS232CのDCDに切り替えスイッチで乗せる改造をします。 電源は5Vのスイッチング電源を使いますので今回は 7805 は使用しません。スイッチング電源はノイズ発生源でもあるのでフィルターは必須です。無線をしなければそのままでも良いんですが、無いとHF帯が結構使えないくらいノイズってしまうときがあります。

正信号
負信号

 感じで基板をもう一層増やしました。LED は反転か非反転出力か表示させているだけなので、意味はありません。1本接続されていない線もありますが予備で出しているだけで、出力は同じ物が出ています。ICの横にあるスライドスイッチで、反転非反転を切り替えています。ICはSN74LS00N を使用し、NANDゲートを INV にして使用しています。 SN74LS04N を使えばいいじゃん。って実は手持ちがこの時無かったんです。74LS04を使えばもっとスッキリした配線になります。

 ただ、1PPS二回路を追加して行きますと、ICの持っている遅延特性で何マイクロセカンドオーダーですが、ずれて行きますのであまりおすすめはいたしません。

今回のバージョンの回路図です。

 

さて、最初に作った実験用バラックですがこちらもきちんとケースに収めました。

ケース内部
フロントパネル
リヤパネル

 という感じに仕上がっております。ただ一部ブッシングが無くてそのまま電線を入れて居ますが、そのうち納めたいと思います。こちらは当時のままでそのままケースに納めてしまった感がありありです。リヤパネルのコネクタはRS232Cの他にGPS専用のアンテナコネクタをそのまま出しています。

今回使用する予定のサーバーはIBMのXseries 306。メモリーが1024MB HDD SATAの80GB/150GB が組み込まれていて既に FreeBSD 6.3 が走っています。sambaが走っていますので通常はローカルのファイルサーバーとして使用しています。これ以外に何も仕事をしていないので今回はこいつにタイムサーバーとしての役目を負ってもらう予定です。

履歴
2017/07/16 回路図訂正