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