- ベストアンサー
ホール素子を用いた磁界の変化検出の不具合
- ホール素子を用いた磁界の変化検出回路が正常に作動しない
- N極を近づけると一定の挙動を繰り返し、S極を近づけた場合は正常に動作する
- 正常に作動させるための解決策を教えてください
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
出力がオープンドレインだったのはうかつでした。 間違いなく、No.2 の形の指摘が正解でしょう。 ちなみに、「プルアップ」とは、ホール素子の out と Arduinoの2pin の間に抵抗を入れることではありません。 せめて、ホール素子の資料は確認しましょう。 13.1 Typical Three-Wire Application Circuit にある回路とちゃんと比べてみましょう。
その他の回答 (3)
- 麻野 なぎ(@AsanoNagi)
- ベストアンサー率45% (763/1670)
> 最近入門したばかりで不勉強で申し訳ないのですが、あの図からコンデンサ関連の部 > 分を取り除いたような回路でいいのでしょうか? まず、やってみましょう。 ダメかもしれませんが。 でも、挙動は明らかに変わるはずです。
お礼
先ほどVDDと2PINの間に10kΩ抵抗を入れて試してみたところ、上手く作動しました! お二人の助言がなければ解決できなかったので、大変感謝しております。ありがとうございました。 解決の一番のきっかけになったので、AsanoNagiさんにベストアンサーをつけさせて頂きます。
- se223
- ベストアンサー率49% (49/100)
GNDには900Ωがなぜ必要なのか回路図がないのでわかりませんが。 US1881は出力がオープンドレインになっていると思いますが、2PINはプルアップされているのでしょうか? 10kΩ位でプルアップが必要です。 微妙に回路電流が流れていると、論理の0Vだけ確実に引っ張っていると考えられます。
お礼
ご回答ありがとうございます。 ご指摘を受けて考えてみたところ、900Ωの抵抗は必要ありませんね。ミスでした。 そこで、GNDはそのままGNDへ、ホール素子のOUTと2PINとの間に10kΩ抵抗を挟んでみましたが、それでも解決しませんでした。 10MΩでも試してみましたが、やはり同じでした。
- 麻野 なぎ(@AsanoNagi)
- ベストアンサー率45% (763/1670)
おそらく、プログラムのループの中で、不用意にゼロをセットしているからでしょう。 いずれにしても、まず、オシロスコープで ・ホール素子単独で ・ボードをつないだ状態で それぞれ出力を確認するが一番良いです。
お礼
すみません、返信はこちらからだったみたいですね。 ご回答ありがとうございます。
補足
ご回答ありがとうございます。 以下にプログラムを書いておきます。 ホール素子の値を代入する引数(val)を宣言する時にint val = 0 としていたのを int valのみにしてみましたが、状況は改善されませんでした。 手元にテスターはあるのですがオシロスコープはないので、ちょっと調べられません。。 #define hole 2 //ホール素子をPin2に接続 #define LED 11 //LEDをPin11に接続 int val; int old_val; void setup(){ Serial.begin(9200); pinMode(hole, INPUT); pinMode(LED, OUTPUT); } void loop(){ val = digitalRead(hole); //ホール素子の出力を取得 digitalWrite(LED, val); //ホール素子の出力に応じてLEDをON/OFF //ホール素子の出力が変化した時にPCに数値を送る if(val != old_val){ Serial.println(val); } old_val = val; }
お礼
すみません、一応資料は確認していたのですが、コンデンサ等は使ってなかったので13.1あたりは読み飛ばしてました。 最近入門したばかりで不勉強で申し訳ないのですが、あの図からコンデンサ関連の部分を取り除いたような回路でいいのでしょうか?