質問: arduinoのアナログ入力にて光センサの電圧値を読み取ろうとしております。 CDSセルを使用していた時は、問題なく読み取れていたのですが、 NJL7502に光センサを変更しようとしたところ上手く読み取れなくなってしまいました。 NJL7502の抵抗値を測定したところ、 明るいときは60KΩ 暗いときは15MΩ となっております。 明るいときの値は読み取ってくれるですが、暗いときの電圧値が、0~1023を、 波打つような値となり、正常な値が読み取れません。 光センサから基盤まで配線の長さが15m程度あり、そこそこ長さがあるので、 その辺も影響していると思うのですが、この辺について同じような経験ある方いらっしゃらないでしょうか? 配線を短くすると読み取れるようにもなりましたが、距離が必要で...色々考えたのですが、また質問させていただきました。 また、抵抗値を読み取って出力できるようなマイコンとかないでしょうか?? よろしくお願いいたします。 すみませんもう一つのほうは削除いたしました。 電源供給といと添付図にどのようなものを追加したら良いのでしょうか?? すみませんがご教示頂ければ大変幸いです。 よろしくお願いいたします。![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/47f5dcde2d2aa5f23748c1a438719d71.jpeg)
回答: まず、電子回路の定石としては、抵抗値の測定というのは、既知の電流を流して発生する電圧を測定するものです。ありがちな、既知の抵抗と直列にして電源につなぐような回路では、電流Iは既知の抵抗を流れているものと同じですから、既知の抵抗Rと電源電圧V、測定された電圧Vrとすれは(V-Vr)/Rで求められて、つまり被測定抵抗はVr*Iで求まるわけで。 余程の用途が見込まれるなら専用の抵抗値測定回路を構成してもいいかもしれませんが、外付けの抵抗一本とADコンバータがあればざっとした測定は可能なのでわざわざハードに焼き込むことはないと思われます。 それと、常識のレベルでアナログ小信号の回路で15mの距離を引っ張るというのは相当に気を使う案件です。15mの線を引っ張って、その先に15MΩというのは事実上開放状態ですから、「アンテナ」というやつですね。テレビの放送がアナログの時代には、送信アンテナである東京タワーの直下で、蛍光灯に線を数メートルぶら下げたものが点灯した、と聞きます。そんなのがAD変換の入力に飛び込んだら...もちろん、普通の環境でそこまでのパワーがあるわけではありませんが、電灯線からの誘導などを考えればマイコンのAD変換の入力にさまざまな電磁波が影響を与えることは容易に想像出来るでしょう。(デジタル回路でも、12V振幅のRS-232Cで10mくらいまでしか保証してなかったような。) とりあえず60KΩのときにあなたの用途に十分なデータが取れるということなら、なにか簡単な増幅回路を入れてやれば動作は十分に安定するでしょう。ただし、増幅回路には電源が必要となりますから、センサー直近に別の電源を用意するか、それが出来なければ15mの配線を一本増やして電源を供給してやる、などの工夫が必要になるかと思います。もちろん、センサー直近でデジタル化してしまってから伝送すればノイズには強くなりますが、電源が必要という部分はあまり変わりませんね。 頑張れば、温度センサ等で使われるような2端子で電源供給とデジタル伝送をやってしまうような技術はありますけれど、汎用部品で組み上げるのはちょっと面倒かな、と思います。