【PowerMeter2020】システムデバッグで上死点センサ再デバッグ<エッジタイミングは大変>

パワーメーターシステムからの出力をBlueToothでスマホでログしてリアルタイムグラフで表示する開発してます。パワーメーター用に使っているスマホは、昔の京セラ TOTQUE G01なので、CPUはMSM8928(1.4GHz)クアッドコア
であまり処理能力はないのですが、これで、リアルタイムが出るためのProcessing Androide modeのプログラムで何とか
リアルタイムでペダリングのグラフを表示できるところまで開発が進んできてます。

●上死点エッジが時々不規則になる

青線が上死点センサからのエッジ信号です。オンが左上死点オフが右上死点です。
時々抜けたり、余計にエッジがはいってます。これがあると積分計算が狂うので
パワー値が大きく飛んでしまいます。時間精度はパワー計算上は重要です。

●上死点エッジデータに解析
上死点データの発生からグラフまでは多くの処理を経過してグラフになります。
1SETP:上死点センサは、9軸IMU LSM9DS1の磁気センサのMgxを使ってます。
  クランクペダル軸穴に仕込んだ磁石を7cm離れた磁気センサで、磁界強度を測定します。抜けているグラフを見ると

この抜け現象の値を解析してプログラムのアルゴリズムと合わせ作業します。

要するに、ピーク位置の磁界強度の正負だけ判定して
左右クランクの区別をしてます。
対応するイレギュラー条件は
1:チャタリング(センサのアナログばらつき、クランクの動きのばらつき)
2:上死点での停止(ずっとエッジ判定を繰り返してしまう)
3:速い動きで次のデータがはいってくる。

 

//=====================magValue+Direction UP=LEFT=====================================
if (dif*dif_1<0 && magValue[i%5]>0.3 )//zero cross +Direction dif<0 $$ zero cross
{
n++;
if(teu-teu_1>150 && abs(teu_1-tef_1)<3000 )
{
go_up=1;
go=0;
led14=0;Fallflag=0;
//pc.printf(“%4.3f,%4.3f,%d,%d,%d,%d,%d,%d\n\r”,dif,magValue[i%5],go_up,go_fall,tef,tef_1,teu,teu_1);
}
wait_ms(10);
teu_1=teu;
go=1;
go_up=0;
wait_ms(10);
}
else
{
go_up=0;
Upflag=0;
led14=1;
}

このプログラムで、重要なのは、if文でピーク検出してから、そのピークがイレギュラピークでないかどうか判定するif文を下にいれてある点です。当初は、全ての分岐条件を一つのif文につっこんでいたのですが、これだとピーク検出の現象自体が検知できないので、アルゴリズムを考えるためにパラメータが足りなくて、袋小路にはいってしまいました。
そこで、チャタリングや逆転良し悪しにかかわらずエッジを検出した後で
本物かどうか検出するアルゴリズムに変更しました。

1回目のif文

if (dif*dif_1<0 && magValue[i%5]>0.3 )//zero cross +Direction dif<0 $$ zero cross

微分値の前後値を掛け算して正負がになった時&&その時に磁界強度>0.3
左クランクは正なので>0.3 右クランクは負なので<-0.3です。
2回目のif文

if(teu-teu_1>150 && abs(teu_1-tef_1)<3000 )

右上死点がでてから左上死点がでるまでの間隔が150msec以上あいてないとエッジ認識しない、これでチャタリングは全てキャンセルしました。
上死点でクランクを止めた場合ずっとエッジ検出がでますのでこれを防止するために
右のエッジがでてから左のエッジがでの時間が3秒以上かかったら回転してないので

エッジをださないという判定をしてます。

●対策
プログラムでは、磁界強度の微分値の前後で正負変化があった瞬間をピークとして検出してます。微分変化だけだとノイズを拾ってしまうので、磁界強度の値でスレッシュホールーダ値を設けてます。当初は、0.9mTだったのですが、エッジの不規則ばらつき対策で最終的に0.3mTまで落として対策しました。磁界変化というアナログ変化を追っているので初回のイニシャライズ時でのアベレージのばらつきなどがあるので絶対値でスレシュホールド値をきめているとこれからもトラブルがありそうですが、今回は、この現象を備忘録しておくことで次回類似した現象がでたときの資料として残しておきます。

●エッジのバグをクリアして、ローラ台で踏んでみると
一応青いタイミング信号は無事にでてるのですが、黒線の右クランクトルク線がでなくなりました。これは、右クランク基板の異常ということで、ばらして修理になりました。

 

●以後
  システム全体が見えるようになるとあちこちで不具合が見えてきますので、もぐらたたきがしばらく続きそうです。

 

コメントを残す

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