この記事は、最近PPS(Pulse Per Second)信号なるものを使うことになり、右も左も分からないまま、あれこれ調べたものを自分なりにまとめたものです。同じような人に向けて書いています。
PPS信号とはなにか
PPS信号の説明と、その作られ方について。
まずは全体像
PPSとは、1秒間に1発だけでる非常に正確なパルス波です。たとえば、以下は、Adafruit Ultimate GPSというGPSモジュールの、PPS出力を取得したものです(Raspberry Pi のGPIO経由で入力信号を連続的に取得…デジタル入力ですがまぁ感じだけ掴んで下さい)。
この例の場合は、パルス波というより、1秒間に100ms、つまりデューティ比10%の矩形波ですが、とにかく1秒間に正確な1発、というのが味噌です。
ここでいう「正確」とは、立ち上がりが急峻で、(立ち上がり位置など)揺らぎが少ないということです(参考「Pulse-per-second signal - Wikipedia」)。よって、1秒間隔が、us、ns、なんんならpsの単位で正確です…が、これはモジュールに依存するのはもちろんですし、またPPS信号をどう使うかにもよります。何発ものPPS信号を平均化することによって精度を上げる、等。使い方次第です。
PPS信号の作られ方
そんな信号がどうやって作られるかというと、その大元は原子時計です。ここの説明はなんとも難しいのですが、トランジスタ技術2016年2月号にある今江理人さんの説明を借ります。
...原子は, 外部との間で熱や電磁波(エネルギ)をやり取りすると、その状態、たとえば電子のスピンの方向や軌道が変わります. このとき, 取りうる状態が離散的なので, ある状態から別の状態へ変化する際取りうる状態間のエネルギ差も離散的になります. (トランジスタ技術, 2016年2月号, P.48, 今江理人)
うーん、ですね。定性的には高校物理でもやっている話なので、イメージを掴む程度に、なんとか受け入れます。原子のエネルギー状態は離散的→よって、ある状態から別の状態に遷移するのにかかる時間も離散的→その時間は原子固有→その性質を使えば時計になる、という感じでしょうか。
実際、現在1秒の定義には、セシウム原子のエネルギー遷移周波数が用いられています。したがって、正確な時間を測るにはセシウム発振器があれば最高ということになりますが、これはまぁちょっと庶民に手が出るようなものではありません。若干精度は落ちますが、ルビジウム発振器モジュールであれば、数十万円のものもあるそうです。
いずれにせよ庶民には縁遠いものですが、そのような高価な原子時計を積んだ衛星が宇宙を飛んでおり、我々はその信号を利用することができます。GPSですね。安いものなら千いくらで手に入るようなGPSモジュールから、そのような高精度のPPS出力を得ることができます。実際に得られるPPS出力の精度は、GPSモジュールに依存しますが(そもそもPPS出力がないものもある)、それでもus単位の正確さはあるでしょう。
PPSはなにに使えるか
ここまで、PPS信号が非常に正確であること、また私たちは安価なGPSモジュールにより手軽に利用できることを述べました。しかし、PPS信号は単なるパルス波に過ぎないとも言えます。NMEAのように、シリアル通信してテキストで種々の情報がわかるような、便利なものではありません。情報量はLOWとHIGHだけの電気信号なのです。それは何に使えるでしょうか。
一言で言うと、「基準」です。PPSを基準信号として使うことで、精度を上げることが期待されます。
具体的な例をあげると、たとえば、NTPの補正に使うことができます。PPS信号を取り込むことで、より正確な時刻を得ることができます(参考記事…「GPSのPPS信号を使った Stratum-1 NTPサーバの作り方 | Nyanchew's Digital Life - ja1」実際にRaspberry Piで、us単位の精度のNTPサーバーを構築された人)。
他には、計測の基準信号として使うことが考えられます。たとえば2箇所で同時に計測を開始したい時、GPSモジュールから出力するPPS信号をAD変換のトリガにすれば、同時に計測を開始することができるでしょう。
ややマニアックですが、なにかしらのために基準信号を求める人にとっては、たいへん勝手の良いものだと思います。
PPS信号を使える製品は
さて、では実際にPPS信号を使える製品、つまりPPS出力のあるものはなんでしょうか。前述したGPSモジュールや、NTPサーバーといった製品に、PPS出力があることが多いです。特に安価かつ手軽なのはGPSモジュールでしょう。
私が使ったことがあるから、という理由で、AdafruitのUltimate GPSを紹介します。実際に使ってみた記事は「Raspberry Pi にGPSモジュールをつけてStratum 0で時刻同期(スタンドアロン)」です。PPS用のピンをたてれば、手軽に3.3V、10%Dutyの矩形波が得られます。
あと、PPSはその性質上1Hzなわけですが、1Hzではないものが出力できるものとして、u-bloxシリーズに注目しています。u-bloxでは、time pulseと表現され、専用のPCソフトを用いて、シリアル通信で簡単に周波数を設定できるようです。
このあたりの情報は「(改訂版)高精度10MHzの出力ができそうなGPS受信モジュール: セッピーナの趣味の天文計算」をたいへん参考にさせていただきました。また、トラ技2016年2月号では、NEO6M-ANT-3Pより10KPPSを引き出す実例があります。
トラ技2016年2月号は、GPSモジュールを使ってあれこれしたい人にとっては非常に素晴らしい号でした。見るたびに中古価格が微妙に上がっているので、興味のある人は買っておいたほうがよいと思います。1年間分のCDはとても高いですし。
CQ出版には、DRMフリーな電子書籍ストアもあるんですけどねー…「Tech Village 書庫&販売 - エレクトロニクス分野の電子書籍販売サイト / CQ出版株式会社」肝心のトラ技がまだないんです。Interfaceがいつのまにか販売されるようになったので、早くトラ技も売って欲しいですね(ついでに「DRMフリーの電子書籍ストア」)。
price表記のないお高そうなGPSモジュールだと、10MPPSが出力可なんてのもありました。IRIGタイムコードも出たり。でもPPSを柔軟に変更できる点で、安価なu-bloxのほうが私には嬉しいな。
コメント