【パワーメーター2019】TeraTermのタイムスタンプ精度<1秒後に同期する>

左右トルク波形データ、別々のTeraTermログでのタイムスタンプ時刻が、mbedのタイマーとタイミングが合っているか基礎実験で確認してみました。

●本記事の方法では精度がでてましたが、
その後

 
 PC側の負荷によって、バッファ状況がかわってしまうことが判りました最悪数十msecずれてしまう場合が発生しているので
 同期信号もデータとして受信させて解決することにしました。

●方法

2個のマイコンNucleoL432KCを同期させるために、500msecに一回タイマーをリセットしてそのタイミングで、基準マイコンからDigitalOutしてスレーブマイコンがピン割り込みでエッジ検出した直後にタイマーリセットします。同期と言っても数μSEC程度のズレがでますが本測定が4msec周期なので、同期としては数μsecなら十分です。

①基準マイコンのPgm備忘録

#include “mbed.h”
Serial pc(USBTX,USBRX);
Ticker tick1;
Ticker tick2;
DigitalOut rst(PA_8,0);
Timer t1;
void flip1(){
pc.printf(“%d\n\r”,t1.read_us());
}
void flip2(){
rst=1;
wait_us(500);
rst=0;
t1.reset();
}int main() {
pc.baud(115200);
t1.start();tick1.attach_us(&flip1,1000);
tick2.attach_us(&flip2,500000);
while(1) {}
}

②スレーブマイコン側のPgm備忘録

#include “mbed.h”
Serial pc(USBTX,USBRX);
Ticker tick1;
InterruptIn rst(PA_8);
Timer t1;
void flip1(){
pc.printf(“%d\n\r”,t1.read_us());
}
void flip2(){
t1.reset();
}int main() {
pc.baud(115200);
rst.mode(PullDown);
t1.start();
tick1.attach_us(&flip1,1000);
rst.rise(&flip2);
while(1) {}
}

●測定結果
①スタートからmbedタイマーとのズレ
TeraTermタイムスタンプは、0~200msecまでは、mbedタイマーとは全く追随していないが、300msec以降は、次第に追随してくる


②TeraTermタイムスタンプで左右CHの同期ができるか検証
 右基準でスタートさせたのち、5秒遅れで左をスタートさせた場合、右基準で500msecに一回タイマーリセットをかけて、右から左へ同期信号をおくって、左もタイマーリセットをおこなう。その時点での両者のTeraTermタイムスタンプが一致すれば、タイムスタンプ値で両CHの同期が管理できるはず。

●結果
上記表をみると、左がスタートしてから500msecだとTeraTermタイムスタンプ間で4msecのズレが発生しているが、1秒後は、1msecのずれとなっているので、スタートしてから1秒以後で、右と左の同期は、TeraTermタイムスタンプを合わせれば、RとLの波形のズレなくタイミングを合わせること可能なことが判った。

●左クランク組立ほぼ完了
 お盆前に左右クランクでの波形比較までできそうです。
お盆中に風速計を完成させたいので、パワーメーターを
一段落させたいです。
 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です