2024/01/07(SUN) | なんとなくタコメータを作る流れA |
---|---|
引き続き
タコメータやってます。 課題は以下の通り @NSR50はどうやら1回転に2点火らしい Aイグニッションの信号のチャダリング対策 @の方は、簡単! 回転数rpmを計算する時に÷2すればいい Aの対策は。。。 回路を見直すか、ソフトを見直すか? オシロをみるかぎりだと まぁ悪くはないんだけどね ![]() ただ、マイコン的というかソフト的に これを拾おうと思うと難しい。。。 いろいろ手があるんだけど 1番目に考えたのが、デジタル入力の割込みで拾う方法 この方法だと、チャダリングを全部拾い過ぎて 全然ダメだった 2番目に考えたのが、カウンタタスクを立ち上げて 定期的にカウントする方法 単純に1msの周期を作ってカウントしてみると 全然、カウントできてない ![]() 上段:サンプリング時間500ms 中断:カウント数 下段:回転数rpm その後、いろいろとdelayの時間を変更したりとか 割込みの判定を厳しくしてみたりとか いろいろしたがなかなかうまくいかず。。。 結局、メインループにて200μsec間隔で 入力ピンを状態を読み込むというプログラムにいきつき やっと、チャダリング対策が出来たのでした ![]() タコメータもこのとおり、ほぼ一致。 ![]() アイドリングで数値が合っても 高回転だと数値が追いつかなかったり いろいろ悩んだ。。。 関数テーブル作って、画期的なロジック書いても ダメダメだった時のダメージはデカかったw でも 最後は、数値が合ってよかった。 ちょっとプログラム的に スマートじゃないのが気に入らないけど そこは見直すかも。。。 てか、 そもそもタコメータを作るのが目的じゃないんだけどね。 もうちょいプログラムは試行錯誤するかも。 |