
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
問題を取り違えていなかったようで安心しました。
やはり入力ピンのインピーダンスが高くてノイズによりピンの電圧が暴れているようですね。
デジタルリードはその命令を実行した瞬間だけしか読み込みませんが、割り込み検知は常に信号の変化を監視しています。
この違いで捕まえきれなかったのでしょう。
ソフトによるバウンス除去なんかしていたらそれでフィルタされて絶対に捕まえられません。
ピンにプルアップ(プルダウン)抵抗やバイパスコンデンサなどでノイズに対するインピーダンスを下げるのが基本でしょう。
イグニッションノイズ相手ならフォトカプラくらい使うのは商用では当たり前です。
電源ラインが揺れていることも考えられます。
これ以上の具体策は回路図やセンサーの情報が無いと何とも・・・
この回答へのお礼
お礼日時:2019/02/07 21:44
とりあえず1.5kΩが手持ちにあったのでそれを入力ピンに繋いでかなり収まりました。後はアルミケースを購入して入れてみます。ホールセンサーがlowの信号なので
10kΩでプルアップしました。マイコン初心者なので助かりました、ありがとうございました。
No.3
- 回答日時:
「割り込み入力ピンをデジタルリードしてもノイズ信号らしきものは見られなかったので、入力ピンにノイズは入ってきていないと思う。
しかしイグニッションノイズによって、意図せず割り込みは発生してしまう。」こう言いたかったと思ったのですが、私が読み間違えているのでしょうか?
割り込みピンに割り込み条件となるレベルの電圧なり電圧変化なりが発生すると割り込みが実行されます。意図せず割り込みが発生するならピンにノイズによる電圧が発生しているのです。
「ノイズによって入力ピンに割り込みトリガとなる電圧は発生していない」とどのように確信したのでしょうか?
「デジタルリードしたけど出てこなかった」に対してそれは「出てこなかった」ではなく「見つけられなかった」の間違いではないかと申し上げたかったのですが。
No.2
- 回答日時:
割り込みだろうがdigitalreadだろうが入力ピンの状態を機械として言われたままに読み込みます。
これも予測ですが、digitalreadでノイズが乗らないんじゃなく、乗ったタイミングで読めていないだけ、つまり検証方法でもミスっているのではないかと思えます。
本当にノイズが入力ピンに乗っているのならハード的な問題です。
digitalreadで乗らないと言い切るならそれを検証したコードくらい提示できるはずですよね。
イグニッションノイズなんてほんの一瞬なんですからそうそう捕まえられるものじゃないですよ。
No.1
- 回答日時:
回路もプログラムも無いんじゃ、まず本当にノイズによる誤動作なのかそれすら信用できません。
心から助言を求めるなら、今はできる限りの情報をどうやって示せばいいかに注力すべきかと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行中の変数の中身をイミディ...
-
セレクトボックスを非表示にし...
-
c言語 16進数の2進数への変換
-
JSONで文字列が長い時
-
実行時エラー 3020の対策
-
Infoseek地図の住所検索をホー...
-
ACCESS テキストボックスを隙...
-
Application.ScreenUpdating = ...
-
[C#] string name = new ..
-
Pythonでコンソールをクリアす...
-
プルダウンメニューがプルアップに
-
[python] 文字列を変数名として...
-
16進の10進変換について
-
セレクトメニューで2つの項目...
-
複数列を持ったリストボックス...
-
Perlで複数の値を返す良い方法...
-
Perl でワードファイルのヘッダ...
-
メモリをアドレスを直接指定し...
-
数値かどうかの判定方法
-
シェルスクリプトで、空白(ス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6で、長い時間かかる処理...
-
実行中の変数の中身をイミディ...
-
UWSC SLCTBOXもしくはSELECTに...
-
C言語のflagの使い方が分かりま...
-
Pythonでこのプログラミングを...
-
c言語のプログラミングの問題で...
-
SetDlgItemInt( ) c++
-
.NTEで書き込み中にProgressBar...
-
初回起動のみ判別したい
-
処理終了後、他のページへジャ...
-
arduino の割り込み処理について
-
IIS7.0でPerlのCGIにてバックグ...
-
VBAのCallステートメントについて
-
C#でDataFridViewの行をすべて...
-
処理をした後にとばしたい場所...
-
問題作成のWebアプリの作り方を...
-
いくつかの条件に不一致の処理
-
JSONで文字列が長い時
-
Application.ScreenUpdating = ...
-
formで特定のinputを送信しない...
おすすめ情報
arduino の近くで点火回路を作動させるとその点火数と同じ信号が入ります。同じ入力を割り込みではなくdigitalreadで読み込むと全くノイズが乗りません。これは割り込み特有の作用かと思います。そこで質問したのです。回路とかプログラム以前の問題かとかと思い質問したのです。
割り込みという特殊な入力に固有の問題化と。
あのですね、イグニッションノイズは連続して出ているのです、ちなみにテストでは一分間に630回の点火信号を出しているのです。その630回をすべて拾っているんです。割り込みの入力はarduinoでは二つの入力ピンだけ許されていますよね、ですから私は「割り込み」とは特別な入力方法なのかと思い質問したのです。タイミングライトはその信号を拾って光るのですが、簡単な構造で拾っています。ある方がイグニッションノイズはマルコーニの無線と同じ構造だからセンサーがなくてもデバイスそのものだけでも反応するときが有るとおっしゃっておりました。信号はパソコンのモニターで確認しているのですがきっちり630rpmと出ています。タコメーターなら正確でいいのですが、私は別なものを作成したいのです。
私もうまく言えないのですが、割り込みでプログラムを書くとセンサーコードを繋げなくてもarduinoは反応してしまいます。それもきれいにイグニッションと同期して。試しに反応が遅いけれどもdigitalreadによるプログラムだと同じ入力ピンでも反応しないのです、センサーを繋げない限り。プラグコードの上にのっけても反応しません。しかし、割り込みでないと正確な信号が得られないので困っているのです。割り込みの時はセンサーを繋げなくても、入力ピンに針金を入れただけでもそれがアンテナになってきれいな信号が入ってしまいます。ちなみに、エンジンをかけると近所迷惑なのでフライスにフルトラ点火の装置を作成してテストしています。フライスにはデジタル回転計をつけているので正確な点火数がわかるのです。実際のエンジンだとポイント点火なのできたないノイズになります。