2017/04/28 PCソフト修正+本文に加筆
2017/04/27 新規作成

法人向けのETC専用カード

はじめに

商用電源(100V)は扱いを誤ると感電します

最近では、正確さを謳う時計は電波時計が主流になっています。

一方、一昔前は商用電源の周波数から時間情報を取得する時計がありまして、意外と正確に動作していたとの話を聞きます。

そこで、商用電源の周波数はどのくらい正確なのか見てみたくなりました。

測定は商用電源の周波数をPCで観測する方法にしてみました。

周波数を扱うマイコン部とPCの接続はシリアルポートを使用します。


注意

もし何らかの損害が発生しても当方は一切責任を負いませんので、あくまでも自己責任でお願いします。


ハードウェア製作

回路図

メイン基板の回路図(クリックで拡大)

PICは12F629、12F675、12F683のいづれでも構いません。

商用電源のパルスをフォトカプラ経由でマイコンに入力します。

マイコンは50Hz/60Hzの周波数を1Hz(1PPS)に変換するだけのものです。

これらの回路はシリアルポートから電源を取りますので、特に外部電源は必要ありません。

ACトランスは要らなくなったトランス式のACアダプタを改造し、整流回路を外して純粋なトランスだけ使用しています。


ソフトウェア

マイコンのファームウェア

まず電源が入ると、簡易周波数カウンタモードになって50Hzと60Hzを自動判別します。

その後はPICに50または60パルスが入力されるたびにPCへ1パルスを通知します。

PIC12F629,675,683用ソースとHexファイル
freqconv.zip 4.7Kbytes

PC用のソフトウェア

1PPSの信号をシリアルポートのDSRピンから読み込みます。

Windowsには高分解能パフォーマンスカウンタというものがありまして、これを利用して精度の高い計測を行います。

計測している間はソフトと同じ場所にログファイルを出力します。

ログは下記のように項目をカンマで区切ったCSV形式で出力します。

2017/04/27 13:28:52,8:20:00,+10

1つ目の項目はその時点の日時、2つ目は計測時間、3つ目はその時点の誤差です。

Windows用の計測ソフト
最新 FreqMon101.zip 7.4Kbytes
FreqMon.zip 7.4Kbytes


動作確認

PC用のソフトを立ち上げ、File → PortOpen でシリアルポートを接続します。

回路の動きが問題なければ下図のようになると思います。


AC Frequency
商用電源の周波数

Elapsed time
計測時間

1PPS width
1PPS信号の幅

Total Difference
計測開始時からの誤差

重要なのは Total Difference の項目です。

商用電源の周波数は、短期的に見ると多少の誤差があります。

しかし電力会社が周波数を調整していて、長期的に見ると誤差がとても少なくなるようです。

これは、計測を始めたころはTotal Differenceが大きな値になっていますが、数時間たつと小さな値に落ち着いてくることから分かります。

当方の実験では6時間ほど経過すると+50usec未満の誤差で落ち着きました。

1日の誤差が+50usecですと、時計を作った場合は単純計算で54年間に1秒ズレるというかなり精度の高いものになりそうです。


高分解能パフォーマンスカウンタについて

Windowsの高分解能パフォーマンスカウンタは何を基準にしているのか調べてみても、Webでははっきりした情報がありませんでした。

そこで1秒当たりにどれだけカウントアップしているか見てみると、私のPCでは1秒に25,000,000回となっていました。

Webでは2.xGHzや3.xGHzなどのCPUクロックではないかとの推測もあるものの、どうやら上の結果を見ると(少なくとも私の環境では)違いました。

25Mならマザーボードの原発かもしれません。
でも最近のマザーボードは分かりませんが、原発は14.31818MHzだったような記憶もあるので結局は良く分からない状況です。

それはともかく高分解能パフォーマンスカウンタの値は符号あり64bit変数で取得し、これがいつオーバフローするのか計算すると、PCを立ち上げてから約1万年後です。

1秒ごとに25,000,000回もカウントアップされていくのにオーバフローするのが1万年後ですから、どれだけ64bit変数ってデカいのかと(汗


最後に

100Vの電圧を扱いますので、接続には十分注意してください。

当サイト内の検索