2025/01/08(WED) 【後方排気】シフトポジションインジケーターJ
あけましておめでとうございます。
実は年明け1週間
リフレッシュ休暇を頂いているため
1/13までお休みです。すんません。
基本、寝正月なんですが。。。
ドラマの一気見とかしてます。
あ、静岡に行って、朝ラーとかさわやかに行ったりもしたけどね

で、
シフトポジションです。
結局、ノイズ除去の回路を組んでも変わりなかったところまで。
なので、
プログラムでどうにかしなくちゃいけないってことで
フォト

マジメにパソコンつないでデバッグします。
まぁシリアル経由でパソコンにログ出力しちゃうと
違う動きになっちゃう可能性が大なんだけど
パソコンでログださないと
正常にプログラムが動いているかわからないからね。

まずは、タコメーターの機能を一旦止めます。
イグニッションの処理が入るとわけわからなくなるので。
スピードを拾うために磁力センサで割込みを拾います。
センサのところを磁石が通過すると電圧が上がるので
それを拾うように設定します。

 attachInterrupt(PIN_SPEED, fnSpeedISR, RISING) ;

fnSpeedISR()関数が、割込みで呼ばれる関数。
ここにログを仕組んでみると
そもそもで、タイヤを回してみると
センサが通過するだけで、3回くらい割込みが発生する。
つまりチャダリングしているので、
タイマを貼ってDelayを入れてみたけど
なかなか改善されないので、
センサの位置をちょっと離してみたら
いい感じになった。
まぁDelayの処理は残しておこう。

ちなみにDelayの時間は
200km/hでタイヤが回った時の間隔にしてみた。
それより短かったら割込みが入らないように。
途中計算を省くと、
前輪は110/70-17なのでタイヤの外周は

 1840.344945(mm) = 0.001840345(km)

200km/hの時は

 (0.001840345/200)(H) = 33126.20901(μsec)

でタイヤは1周しているので
33126μsecのタイマーを張って割込みのオンオフを制御します。
200km/h以上で走ったら拾えなくなっちゃうけど
まぁ200km/h出ないし出さないからいいかな?

ここまでできたので
エンジン掛けて動かしてみると
やはりノイズを拾う。
エンジンを回すと顕著にノイズを拾う。
試しに、割込み発生時に入力ピンの状態を拾ってみたら
これね

 digitalRead(PIN_SPEED)

ピンはオフ状態だった。。。。。。
ピンがオンになった時の割込み関数なのに。。。
つまりノイズで惑わされているのは
センサ入力じゃなくて
マイコンの方なのかな?
よくはわからんが
これで、ノイズなのか?
センサ入力なのか?は区別はつきそう。
でも、センサ入力でピンがオンの時に
ノイズを拾った場合は除去できそうもない。
速度の前回値とあまりにも差がある場合は
ノイズをして扱えば大丈夫かな?
こういうのなんとかフィルターと言ったような。。。忘れた。
とりあえずは差分が大きい場合は弾くとしてみるかな?

ということで、
今度こそいけるかな?
走らない状態では、
ノイズを拾わなくなったので
よさげであるが、寒いので実走試験はまた今度。。。