プログラム

間違ってるかもしれないプログラム 雑談
間違ってるかもしれないプログラム

最近、プログラムを作る作業になんとか活力が湧いてきたのでステップメータでの低回転のメータゆらぎの抑える方法を検討してみた。遅いとお叱りを受けるかもしれませんが苦手意識のものはなかなかうまくいかないんですよね。いろいろ同時進行してるのが悪いのでしょうが・・クセは直らず。

最初に考えたタコメータロジックが良くなかったというのがあります。
これは相当後になって気が付くのですが、昔、シフトアップインジケータを作り損ねた時の話です。当時はなぜ失敗したのか理由がよく分かりませんでした。一般的なタコメータはRPM(revolution per minute)で表示されるように○○秒とかのゲート時間を作成し、その間の信号をカウントするといった方式を普通に採用していました。ただし、これだと周波数が低い場合、ゲート時間を長くしないと精度がとれません。ここに気付くのに時間がかかったと言うわけです。後で調べてみるとそのための方式が別に存在していました。
トラ技(切り抜き記事)(PDF文書)

回転数はパルス間隔から求めるレシプロカル方式を採用すれば今までのことが解決するのではないかということです。ただし、このレシプロカル方式をソフトで対応させるには当方の能力では不足しているようです。

やっていくそばから忘れていくというもうどうしようもない状態です。
手法として正しいかどうかは実際の結果をみて判断しますが当方のRZRでは判断できないのでフロントーサさんのRZRに協力してもらいます。5月の連休にまたゼロヨン大会に出るでしょうからそれまでにテストを実施してもらう予定です。
私も出たいのですが、未だ体力が全然戻りません。
TDLでの強化歩行練習も膝に痛みが出てきたので急遽行われたのです。

1)3000rpm以下では割り込み速度を遅くして変化を緩慢にしてゆらぎを抑えてみる。
  3000rpmを超えると、通常の割り込み設定に戻しています
  →条件分岐でTimer2の設定を変更する

前の調整時はよく分からなすぎて、全体がクロノメトリック風になってしまったことがありましたがその方法も部分的に良いかなと考えてはいます。
   
2)3000rmp以下では値を数回バッファーに一旦取り込み平均値を出力させる
  →割り込みハンドラ内で計測値をバッファに保存し、平均を計算する処理を追加。
   メインループ内で計算された平均値を使用します。

どれが正解かよく分かりませんが、プログラムは改良中なので机上のテスト後、近日中に自分のRZRで確認してから、フロントーサさんには渡す予定です。しばらくかかります。

コメント