福井のマルツエレックさんからRV-8803-C7が到着したので早速時間精度の測定を始めました。
●方法
①GPS基準でDRV-8803-C7の時間誤差を測定する
GPSの1PPSアナログ出力は身近で最も精度がよい時刻タイミングです。オシロのトリガーをGPS1pps信号にして、RV-8803-C7の1Hz方形波出力もオシロにいれます。
両信号の差を10msec以内にすれば、オシロの時間精度が20ppmでも誤差は、10msecx20ppm=0.2usec程度ですので、msecオーダーの精度の測定ならオシロでも大丈夫です。
どのくらいの時間で誤差がどのくらいになるかの計算表です。
年差時計は、0.1-0.2ppmでないと年差時計になりませんが、民生用電子機器では、このレベルになる機器は稀にしかありませんので、今回RV-8803がどこまで年差時計に肉薄できるかが楽しみです。
●準備
①マルツRV-8033-C7ボード
多摩デバイス社のRV-8033-C7を電子工作しやすいように2.5ピッチ基板に載せてプルアップ抵抗なども基板内につけてあってI2C接続が簡単にdきるようになってます。
➁I2C接続して1Hz方形波出力に設定
デフォルトでは、32.768KHzですので、1Hz設定にI2C接続して
変更します。1Hz接続しないと温度補正された波形がでてこないと書いてありましたので、1024Hzはどうなのか、多摩デバイスへ問い合わせしてます。mbed NucleoL432KCでプログラムを作って設定変更しました。
I2Cアドレス:0x64
変更するレジスタアドレス:ExtensionRegister 0x0D
1Hz設定値:00001000b=0x80
mbedのI2Cの使い方は簡単な説明でできます。「mbed I2Cマスター」
https://os.mbed.com/users/okini3939/notebook/I2C_jp/
I2Cstartして、連続書き込みで2バイト(レジスタアドレス0x0Dとデータ0x80)してI2CstopでOKです。
#include “mbed.h” I2C rv8803(p9,p10);//LPC 1768 sda,scl Serial pc(USBTX, USBRX); // tx, rx int main() { pc.baud(115200); pc.printf(“Start I2C\n\r”); char cmd[2]; int acc; //Start condition //rv8803.start(); // Continuous Send address 64h ExtensionRegisterAddr=0x0d data=1Hz=0x08 cmd[0]=0x0d;//Extension register addr cmd[1]=0x08;//data 1Hz=0000 1000b=0x08 acc=rv8803.write(0x64,cmd,2); pc.printf(“acc1=%d\n\r”,acc); //Stop condition rv8803.stop(); } |
●測定中
GPSは、屋外にださないと衛星4個以上にならないのでシリアル線を長くして、窓の外にとりつけて時間精度を完璧にして開始しました。
事前に窓際で3時間ほどやった時は、0.7ppmほどの精度がでてました。
●以後
精度はスペック以内ででそうですが、パワーメーターのクランクに実用的に組み込むのにRV8803でなければいけないのか、DS3231NSの精度も図ってどこまででるかを確認してからパワーメーター基板のバージョンアップをします。