エントリー

GPS時計についての考え方

  • 2010/12/03 16:47
  • カテゴリー:make:

 ちょうど1年前に作ったGPS時計は,私にしてはソースの公開をしたこともあり,「作ってみたよ」と言う反響を頂く事があります。

 先日メールを頂戴した方は,どうしたら正確なGPS時計を作る事が出来るのか,という問題について悩んでらっしゃるとありました。

 貴重な情報なのでご紹介したいのですが,世の中にGPSモジュールを使って時計を作っている方はいても,1PPSのパルスを使って正確な時計を作っている方は,この方が知る限りいらっしゃらないのだそうです。つまり,GPSモジュールから出てくるメッセージの時刻情報を,そのまま表示しているだけということでしょう。

 この方法では,特にGT-720Fというモジュールを使った場合には,私が昨年悩んだのと同じように,大きな表示誤差を含んでしまいます。最悪で1秒の誤差(というよりここまでずれれば表示ミス)になるため,もはや時計と呼んではいけないレベルです。

 原因は,GT-720Fの時刻情報が,1/10秒以下を.999としてくる場合があることでした。例えば34秒という時刻を,33.999と1/1000秒前の時刻で送ってくることがあり,これを小数点以下省略で表示すると,1秒ずれてしまうわけですね。もっとも,次の更新で正しい時刻表示がなされますが,更新周期が1秒だったりすると,まるまる1秒ずれたままになります。

 34.500とか34.600だと0.5秒,0.6秒ずれるように考えがちですが,この.500や.600は書略されてしまうので,どちらも34秒と表示されます。よって,表示時刻と現実の時刻との間には,ズレはないことになります。

 ということは,現実の時刻が34秒の時に,33秒と表示されることがないようにすれば,表示誤差は更新周期以内に抑えられます。この考え方から,私は33.999は34と見なす,と言う仕組みを入れ込んだのです。

 実際,GT-720Fは33.999だけではなく,33.950という時刻も送ってくることがありますので,1/100秒を四捨五入することで,この問題を回避しています。

 これも,時刻情報の更新周期が1秒だったりすると成り立ちません。GT-720Fはツールを使って更新周期を0.1秒に出来ますから,1秒に10回時刻情報が出てきます。

 これだと,小数点から上の桁が,1/10秒以上ずれることは基本的には発生しません。例外は先程から書いているように,.999に近いところで起こる表示の誤差です。

 33.900なら,次の更新で34.000になりますから,小数点以下を表示しない方法でも誤差は1/10秒以下です。しかし,33.999なら,次に更新されるのは34.100付近ですので,33.900付近の前回の更新から34.100付近の更新まで,下手をすると0.2秒ほどの誤差を作ってしまいます。

 これを,0.950以上は1.000とするという処理で,1/10秒という最小分解能以下の誤差になるようしたのが,今回のミソだというわけです。

 結果として,出来上がったGPS時計が,GPS衛星が原子時計を搭載して,しかも相対性理論まで使って正確な時刻をもっていながら,それらをふいにしてしまうほど大きな1/10秒の誤差を含むという時計に仕上がってしまったわけです。これでいいのか?という疑問は,当然のことです。

 ・・・私自身のおさらいはこのくらいにして,この頂いたご意見を読んで思った事を書くことにします。直接のお返事としてもよかったのですが,このGPS時計について私がどんな考えでいるのかを,公開してもよいと考えました。


 現在,個人レベルで現実的に手に入れられる時計で正確なものは,電源同期式の時計か,電波時計だろうと私個人は思っています。

 ご存じのように前者にはAC専用,後者には電波を受信出来る環境であることという制約があり,これは実生活で無視できるほど軽い制約ではありません。GPS時計にはその欠点を補う事を目指して作ってみたので,精度として「ばれない程度」ならそれで目的達成としました。

 といいますのも,1/100や1/1000秒の精度は,どうせ表示に至るまでの間で狂ってしまいますから,追い込むことにそれほど意味がありません。

 ただし,過去に書いたように,1秒近くずれることは論外としても,電波時計と並べて目視でずれているのが分かるくらいの差があると,時計としてもはや成り立っていません。

 これを根本解決するには,1PPSのパルスが出てくるモジュールを使い,しかもこのパルスの少し前に,パルスが出るときの時刻(つまり未来の時刻)を吐き出してくれていることが必要です。

 GT-720Fにはあいにくこんな機能はなく,どうしたって「過去」の時刻しか届きません。手前味噌ですが,1PPSを利用出来ないモジュールを使ったGPS時計として,私の作ったGPS時計はよく検討されて,上手く動いているGPS時計ではないかと思っています。

 GPS時計のメリットは,誤差の蓄積がないことです。水晶発振子を使った電波時計は,校正直後の精度は高くとも,その後は水晶発振子の精度で誤差が蓄積するため,校正後の経過時間が大きくなれば,絶対時刻との間にズレがどんどん大きくなってしまうわけです。

 電源同期式の場合は,発電所や変電所で作られた高精度な50Hzもしくは60Hzを分周して1秒を作るので誤差蓄積はありませんが,あくまで24時間での管理ですので,ある瞬間では大きな誤差を含んでいる可能性があります。

 GPS時計というのは,GPS衛星からの時刻情報ですので,基本的にどの瞬間も同じ精度の時刻情報を得ることが出来ます。これがGPS時計の最大のメリットではないかと,私は思っています。

 ですので,GPS時計を作るということは,この「いつでも同じ程度に正確」という点を生かしたものであるべきだと思いますし,それゆえ精度を衛星に搭載された原子時計レベルにすることまでは必要ないと考えています。

 そうなるとおのずと設計の仕方が見えてきて,表示が実際の時刻とどれくらい狂っているかを,きちんと実用上問題のない程度であるかどうかを含めて把握して,それ以上のズレにならないことを保証することに力点を置くことになります。

 この力点に向かって進めて,結局私は1/10秒の精度を常に保証する時計を作りました。これが自作の醍醐味です。本当に正確なGPS時計が欲しければ,市販のGPSロガーを数千円で買うのが一番なのですから。

 さらにその醍醐味は,より高精度なものを作ろうと思案することにもあるでしょう。しかし残念ながら,1PPSが取り出せないGT-720Fでは,もう無理だと当時は考えました。だって,衛星の時計と同期したパルスが出てこないんだから,どうしようもないじゃないですか。

 ・・・ん,まてよ,もう1つGT-720Fを使ったらどうだろう,いや1つと言わず,10個くらい同時に動かして,時刻の情報の多数決や平均など,統計的手法でデータの処理を行うと誤差が薄まらないか。うーん,やってみる価値はありそうだなあ。でもいくらかかるんだろ。

 こんな風に,いろいろなアイデアを出しては実験できることが,自作のおもしろさ,なんですね。

ページ移動

ユーティリティ

2026年01月

- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

検索

エントリー検索フォーム
キーワード

ユーザー

新着画像

過去ログ

Feed