パワーメーター2019で使っている、これから使うものの割り込みタイマーの精度を全部測定してみました。(GPS基準でのズレ時間)
結論として、マイコン内蔵のクロックでADCなど時系列データ処理をしてもタイマー精度が悪いので他のCPUや計測器、PCと同期させるデータとしては使い勝手が悪いのと信頼性が劣ることが分かりました。ですので
信州MAKERSでは、パワーメーターの計測に使うCPUにはすべてTCXO1ppm以下のクロックの外部発振器をつけることにしました。
●計測方法(オシロとGPSモジュールがあればOKです)
青がGPSの1pps信号で、屋外に出したGPSから線を伸ばしてオシロに接続して立下りエッジでトリガーをかけます。黄色が測定対象のクロック波形で、1秒もしくは、整数倍で1秒になる周波数ならOKです。
最初にGPSと対象物エッジ間の時間を測定しておいて、時間をおいて観察します。、1ppm以下のTCXOだと3時間くらい測定しないと,msecの誤差がでてきません、一般のマイコン、電子機器などは、数ppmから数百ppmなので数分から30分以内で大きな誤差がでるので、すぐppmがわかります。PPMの基礎的解説ブログはこちらにあります。感謝
●結果
CPU/外部発振器 | SPEC/条件 | ppm(10^6百万分の一) |
RV-8803-C7 (多摩デバイスの 高精度RTCモジュール) |
1.5ppm以下(25℃±1.5ppm)
方形波出力では1Hzのみ温度補償が効いていて1024Hz,32.768Hzは温度補償が効いてないので、1Hz未満の測定では使えない。 |
0.63ppm
(19℃で3時間経過後にGPS1pps1信号エッジから6.8msecずれた) マルツでピッチ変換基板に実装されたものが980円で売ってます。 温度環境を25℃付近に管理すれば0.2ppmまでいくそうです。 |
Max DS3231SN
|
2ppm以下
Amazonで大量に販売していますが、ICに2種類あってDS3231SNとDS3231Mがあります。 特徴:上記RV-8803-C7では、方形波出力の温度補償が1Hzでしか効いてないのですが、DS3231SNは、32.768Hz自体に温度補償が効いているのでこれを基準周波数で分周するすべての周波数が高精度となるので使えます。稀な仕様ですので、
|
0.70ppm
※お値段200-300円でこの性能はうれしいですね。大量に買って、ICだけ取り出したほうがIC単体買うより安いです。
|
高性能マイコン NUCLEO F446REcortexM4 180MHzの高性能マイコンのクロック実力を測定しました |
RTC機能があるので水晶振動子をつければいいのですが、時計用途しか使えないので今回は、内部の割り込みタイマー(多分トリムしたCR型) 1%精度(10000ppm)とうたってます |
16ppm ※オシロでみてると毎秒ずれていくのがわかりました、15分で打ち切りしました。(15分で14.5msecずれた) |
極悪CPU
STM32F103C8T6 間違って10個も買ってしまったが、外部発振器で何とか使えるが内部発振器がないととんでもないデータがでてくる恐ろしいCPUです。 |
これは、ズレが大きすぎて測定不能です。オシロをスタートさせた瞬間から毎秒1ミリくらいずれて3分でオシロ画面からはみ出してしまいました。
単に、時間スケールが狂っているだけでなくエッジが振動しながらずれていくので個別の周期も相当ばらついているとおもわれます。よくもこんな酷いCPU作ったもんだと思います。 |
722ppm 右クランクと母艦用の2個測定しましたが、どれも1-3分で終わりでした。(3分で130msecずれました) これで計測したいたので怖くなりましたが、上記TCXOを外部発振器として使えば、TCXOの精度に近い値がでると思います。 |
●以後
ということで、今までのパワーメーターの基板を全部改造しなければならなくなったのでV2基板と呼ぶことにして、DS3231SNを発発振器としてメインで使っていきます。使う周波数は、2進の分周都合で
時間精度管理がきちんとできるシステムを再構築します。来年が本格的に実走行するので、しっかりとしたものを冬を間に作っていきます。