2024/01/07(SUN) なんとなくタコメータを作る流れA
引き続き
タコメータやってます。
課題は以下の通り
@NSR50はどうやら1回転に2点火らしい
Aイグニッションの信号のチャダリング対策

@の方は、簡単!
回転数rpmを計算する時に÷2すればいい
Aの対策は。。。
回路を見直すか、ソフトを見直すか?
オシロをみるかぎりだと
まぁ悪くはないんだけどね
フォト

ただ、マイコン的というかソフト的に
これを拾おうと思うと難しい。。。
いろいろ手があるんだけど

1番目に考えたのが、デジタル入力の割込みで拾う方法
この方法だと、チャダリングを全部拾い過ぎて
全然ダメだった

2番目に考えたのが、カウンタタスクを立ち上げて
定期的にカウントする方法
単純に1msの周期を作ってカウントしてみると
全然、カウントできてない
フォト

上段:サンプリング時間500ms
中断:カウント数
下段:回転数rpm

その後、いろいろとdelayの時間を変更したりとか
割込みの判定を厳しくしてみたりとか
いろいろしたがなかなかうまくいかず。。。

結局、メインループにて200μsec間隔で
入力ピンを状態を読み込むというプログラムにいきつき
やっと、チャダリング対策が出来たのでした
フォト

タコメータもこのとおり、ほぼ一致。
フォト


アイドリングで数値が合っても
高回転だと数値が追いつかなかったり
いろいろ悩んだ。。。
関数テーブル作って、画期的なロジック書いても
ダメダメだった時のダメージはデカかったw
でも
最後は、数値が合ってよかった。
ちょっとプログラム的に
スマートじゃないのが気に入らないけど
そこは見直すかも。。。
てか、
そもそもタコメータを作るのが目的じゃないんだけどね。
もうちょいプログラムは試行錯誤するかも。