プロが教えるわが家の防犯対策術!

Arduinoでプログラミングをしています。いろいろなプログラミングをしてきたのですが割り込み処理をした時だけエンジンの点火ノイズが乗ります。入力線にシールド線を使用したりアルミ箔で包んでみたりもしたのですが一向に効果がありません。ノイズがノイズだけにタコメーターのプログラムではセンサーをつながなくても作動するのですが他のプログラムでは障害となっております。どなたか知恵を貸してください。

質問者からの補足コメント

  • うーん・・・

    arduino の近くで点火回路を作動させるとその点火数と同じ信号が入ります。同じ入力を割り込みではなくdigitalreadで読み込むと全くノイズが乗りません。これは割り込み特有の作用かと思います。そこで質問したのです。回路とかプログラム以前の問題かとかと思い質問したのです。
    割り込みという特殊な入力に固有の問題化と。

      補足日時:2019/02/06 10:21
  • へこむわー

    あのですね、イグニッションノイズは連続して出ているのです、ちなみにテストでは一分間に630回の点火信号を出しているのです。その630回をすべて拾っているんです。割り込みの入力はarduinoでは二つの入力ピンだけ許されていますよね、ですから私は「割り込み」とは特別な入力方法なのかと思い質問したのです。タイミングライトはその信号を拾って光るのですが、簡単な構造で拾っています。ある方がイグニッションノイズはマルコーニの無線と同じ構造だからセンサーがなくてもデバイスそのものだけでも反応するときが有るとおっしゃっておりました。信号はパソコンのモニターで確認しているのですがきっちり630rpmと出ています。タコメーターなら正確でいいのですが、私は別なものを作成したいのです。

      補足日時:2019/02/06 13:40
  • うーん・・・

    私もうまく言えないのですが、割り込みでプログラムを書くとセンサーコードを繋げなくてもarduinoは反応してしまいます。それもきれいにイグニッションと同期して。試しに反応が遅いけれどもdigitalreadによるプログラムだと同じ入力ピンでも反応しないのです、センサーを繋げない限り。プラグコードの上にのっけても反応しません。しかし、割り込みでないと正確な信号が得られないので困っているのです。割り込みの時はセンサーを繋げなくても、入力ピンに針金を入れただけでもそれがアンテナになってきれいな信号が入ってしまいます。ちなみに、エンジンをかけると近所迷惑なのでフライスにフルトラ点火の装置を作成してテストしています。フライスにはデジタル回転計をつけているので正確な点火数がわかるのです。実際のエンジンだとポイント点火なのできたないノイズになります。

    No.3の回答に寄せられた補足コメントです。 補足日時:2019/02/06 16:13

A 回答 (5件)

■in_Port_Low(↓)で割り込みだったら


Pull_Up抵抗を外付けして入力インピを下げてみたら…1KΩではどうかな?
    • good
    • 0
この回答へのお礼

とりあえず1.5kΩが手持ちにあったのでそれを入力ピンに繋いでかなり収まりました。後はアルミケースを購入して入れてみます。ホールセンサーがlowの信号なので
10kΩでプルアップしました。マイコン初心者なので助かりました、ありがとうございました。

お礼日時:2019/02/07 21:43

問題を取り違えていなかったようで安心しました。



やはり入力ピンのインピーダンスが高くてノイズによりピンの電圧が暴れているようですね。
デジタルリードはその命令を実行した瞬間だけしか読み込みませんが、割り込み検知は常に信号の変化を監視しています。
この違いで捕まえきれなかったのでしょう。
ソフトによるバウンス除去なんかしていたらそれでフィルタされて絶対に捕まえられません。

ピンにプルアップ(プルダウン)抵抗やバイパスコンデンサなどでノイズに対するインピーダンスを下げるのが基本でしょう。
イグニッションノイズ相手ならフォトカプラくらい使うのは商用では当たり前です。
電源ラインが揺れていることも考えられます。
これ以上の具体策は回路図やセンサーの情報が無いと何とも・・・
    • good
    • 0
この回答へのお礼

とりあえず1.5kΩが手持ちにあったのでそれを入力ピンに繋いでかなり収まりました。後はアルミケースを購入して入れてみます。ホールセンサーがlowの信号なので
10kΩでプルアップしました。マイコン初心者なので助かりました、ありがとうございました。

お礼日時:2019/02/07 21:44

「割り込み入力ピンをデジタルリードしてもノイズ信号らしきものは見られなかったので、入力ピンにノイズは入ってきていないと思う。

しかしイグニッションノイズによって、意図せず割り込みは発生してしまう。」

こう言いたかったと思ったのですが、私が読み間違えているのでしょうか?

割り込みピンに割り込み条件となるレベルの電圧なり電圧変化なりが発生すると割り込みが実行されます。意図せず割り込みが発生するならピンにノイズによる電圧が発生しているのです。
「ノイズによって入力ピンに割り込みトリガとなる電圧は発生していない」とどのように確信したのでしょうか?
「デジタルリードしたけど出てこなかった」に対してそれは「出てこなかった」ではなく「見つけられなかった」の間違いではないかと申し上げたかったのですが。
この回答への補足あり
    • good
    • 0

割り込みだろうがdigitalreadだろうが入力ピンの状態を機械として言われたままに読み込みます。


これも予測ですが、digitalreadでノイズが乗らないんじゃなく、乗ったタイミングで読めていないだけ、つまり検証方法でもミスっているのではないかと思えます。
本当にノイズが入力ピンに乗っているのならハード的な問題です。
digitalreadで乗らないと言い切るならそれを検証したコードくらい提示できるはずですよね。
イグニッションノイズなんてほんの一瞬なんですからそうそう捕まえられるものじゃないですよ。
    • good
    • 0

回路もプログラムも無いんじゃ、まず本当にノイズによる誤動作なのかそれすら信用できません。


心から助言を求めるなら、今はできる限りの情報をどうやって示せばいいかに注力すべきかと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!