【明るさセンサー】CdSセルの仕組みと分圧回路の作り方|Arduino
明るさセンサーの使い方を知りたいです
ArduinoLESSON4記事にて、明るさセンサー(CdSセル)を用いた周りの明るさに応じたLEDを点灯させる配線と、動作プログラミングを紹介しています。
上記紹介記事では、センサーが取得した明るさ度合いをアナログ入力値としてArduinoに取り込むことで、プログラム上で明るさを数値化して扱いました。
本記事は、明るさセンサー(CdSセル)についてこれから使ってみたい方、使ったことがあるけど仕組みや回路の作り方について理解を深めたい方に向けた解説記事となっています。
回路図や配線図を使ってわかりやすく説明します
✅電験三種合格者
✅プライム企業に勤める電気・機械設計エンジニア
✅子供と一緒に電子工作を作り、2作品で発明くふう展受賞経験あり
✅本ブログにてArduinoスクラッチプログラミングLESSON記事投稿中
✅YouTubeチャンネル「せでぃあブログちゃんねる」運営中
- 明るさセンサー(CdSセル)の仕組み
- 分圧回路の考え方
- 回路の作り方(Arduino実用例)
最低限の電子機器が含まれるキットはこちらです。
【おすすめ】モーターやLCDディスプレイ等を含むお買い得キットはこちら!
ドットディスプレイなど、さらにいろいろな電子機器に触れてみたいかたはこちら!
【初心者におすすめ】スターターキットの中身については、こちらの記事で詳しく説明しています。
明るさセンサー(CdSセル)の仕組み
明るさセンサー(CdSセル)とは?
CdSセルとは、材料に硫化カドミウムが使用されている素子のことです。
光がセルに当たることで、内部の抵抗値が小さくなるという特性を持っています。
素子には極性はありませんので、どちら側に配線接続してもOKです
明るさに対する抵抗値の変化特性について
上記特性表により、赤帯の間が明るさ値(lux:ルクス)に対する、おおよその抵抗値になります。
明るさ値(横軸:lux)が多くなる=明るくなるにつれて、赤帯が下方に下がっている=抵抗値が低くなる特性であることがわかります。
どれくらい抵抗値が変化するのか
上記がキットに付属するCDに収録されているCdSセルのスペックデータシートの一部になります。
ここでは暗い状態で2MΩ、明るい状態(10lux)で18-50kΩであることが記載されています。
この10ルクスの差で40~100倍もの大きな抵抗値差が生じる特性であることがわかります。
分圧回路の考え方
ここからは、明るさセンサー(CdSセル)が明るさに応じて抵抗値が変わる特性の利用方法を説明します。
分圧回路の考え方を利用してArduinoにその変動値をアナログ入力値として与えるのですが、その考え方の部分について解説します。
Arduinoのアナログ入力の考え方
アナログ入力ソケットにかかる電圧変化を利用
ArduinoUnoR3ではA0~A5のアナログ入力ソケットにかかる電圧「0V~5V」の範囲をアナログ入力値「0~1023」の値として識別することができます。
アナログ入力機能を使用するには、明るさセンサ検出値等の変化内容を0~5Vの電圧変化に変換してアナログ入力ソケットに取り込む必要があります。
明るさセンサの検出値をアナログ入力値に変換する
明るさセンサー(CdSセル)では、分圧回路を用いて明るさ検出値を電圧に変換してArduinoに入力します。
明るさ検出値が大きい(明るい側)のときに、アナログ入力電圧値は5Vに近づきます。
アナログ入力値は電圧0V入力のとき0で、5V入力のとき最大値1023となります。
分圧回路が必要な理由
先に説明したように、Arduinoのアナログ入力は入力電圧の変動「0~5V」を利用します。
しかしながらCdSは電気を発生させない素子のため、直接Arduinoのアナログ入力ソケットに接続しても電圧変動させることができません。
その対策として、抵抗値が変更する特性を利用した電圧配分の変動を利用した回路=分圧回路の構築を行います。
この時点ではまだ分圧回路のイメージが沸かないと思いますが、この後で詳しく説明するので安心してください
直列接続回路の考え方がイメージしやすい
上記が電源ラインにランプを直列つなぎしたときと、並列つなぎしたときの回路例になります。
直列回路が、3つのランプで電源電圧である5Vを分け合っているのに対し、並列回路はすべてのランプに対して電源電圧5Vがかかります。
直列回路の3つのランプそれぞれにかかる電圧って、どのようなルールで決まるのか?
答えは、抵抗値の大きさ(全体の抵抗値からみた割合)に応じて振り分けされます。
分圧回路の解説
先に説明したように、抵抗が直列つなぎされると、それぞれにかかる電圧は抵抗値の割合に応じて分配されます。
抵抗側にかかる電圧が、Arduinoアナログソケットに入力される電圧値となります。
その電圧値の計算式は上図に記載の通りとなります。
明るさセンサー(CdSセル)の抵抗値が明るさに応じて変動するため、上記式により抵抗に流れる電圧値が変動します。
この電圧変動幅をアナログ入力値としてArduinoに入力します。
Arduinoに入力される電圧の算出方法
明るさ0ルクス(2000kΩ)の時の抵抗にかかる電圧
明るさ100ルクス(3kΩ)の時の抵抗にかかる電圧
上記の計算結果により暗いとき~明るいときの電圧変動幅は「0.03~3.9V」となり、電源電圧5Vに近い電圧変動幅がとれるということがわかります。
回路の作り方(Arduino実用例)
明るさセンサ(CdSセル)の出力をアナログ入力する回路図
上記回路図が分圧回路による、Arduinoアナログ入力ソケットへの電圧入力回路になります。
Arduinoと接続する配線としては「5V」「GND」「A0」の3本になります。
Arduinoとの配線図
先ほどの回路図を、配線図に落とし込むと上記配線図となります。
これで明るさセンサ(CdSセル)の出力をアナログ入力する配線は完了となります。
まとめ
- CdSセルは明るさに応じて抵抗値が変動する
- 明るさ検出値を電圧値に変換して、Arduinoに認識させる
- 分圧回路を構築することで、明るさに応じてArduinoに入力する電圧を変動させられる
最後まで読んでいただき、ありがとうございました
Arduinoの初心者向け入門書の紹介はこちらです!
明るさセンサを用いたArduinoプログラミングLESSON記事はこちら!
コメント
コメント一覧 (6件)
せでぃあさん、こんにちはー!
前回の記事で明るさセンサー出てきて、気になってました。
抵抗が関係してるんですね!すごく分かりやすくて勉強になりました。
久々に電気回路見てなんだかワクワクしました。勉強になる記事、ありがとうございました。
ぽむさん、コメントありがとうございます(^^)
明るさセンサーに興味をもっていただき、ありがとうございます!
抵抗を使った分圧回路が重要なんですよ(^^♪
こちらこそコメントをいただき、大変励みになります(*^^*)
ありがとうございました!
せでぃあさん、はじめまして、オトンといいます。
当方、分圧回路という言葉も初めて知ったような超初心者シニアです。
せでぃあさんの投稿で電気への興味と同時に課題も湧いてきました。
一つお教えください。上記抵抗Ryの抵抗値10kΩはどのように導かれたのでしょうか? 突然出てきた値なので。
せでぃあさんの投稿は2年前のようなので、このメールに気が付いて頂ければ幸いです。
オトンさん初めまして、コメントありがとうございます!
CdSセルに接続する分圧抵抗選定の考え方についてご説明させていただきます。
考え方としてCdSの抵抗値=接続する分圧抵抗値のときに、Arduinoアナログ入力ピンにかかる電圧が入力電圧の半分である2.5Vとなります。
つまり狙った電圧変動の明るさの中央値に応じてRyで決めています。
今回使用するCdSセルのデータシート(仕様書)記載の値やグラフから仕様値を確認します。
・検出明るさに応じたCdSセル抵抗値:20ルクスで約10~30kΩ
・10kΩをCdSセルに換算すると約20~70ルクス
ろうそくの明かりが約15ルクス、街頭下の明るさが100ルクスと言われているので、10kΩを接続しておけば20~70ルクスを中央値として敏感に明るさを捉えることができます。
このようにして抵抗値10kΩを設定しました。
完全な暗闇0ルクスのときのCdS抵抗値は2MΩですので、接続した抵抗器10kΩには0.005Vしか流れず暗さの検出はバッチリできます。
あとは明るさ検出側ですが、データシートでは100ルクスまでしかグラフ表示がありませんが4~8kΩです。
Cdsセルの抵抗値が限りなく0に近づいたとき、アナログ入力電圧が最大値5Vに近づきます。
あとは確認する環境の明るさに応じて、値の変動が敏感すぎれば抵抗値を大きいものに変更されるといいと思います。
まとめると「データシートを見て検出明るさ=電圧変動の中央値を決める」「使ってみて必要に応じて抵抗値を調節する」という手順になります。
説明下手で恐縮ですが、オトンさんのお悩みの解決につながりますと幸いです。
せでぃあさん、早速の返信ありがとうございます。
抵抗値の変化特性グラフにヒントがありそうかな?と思いましたが、
論理の必要性がわかって、大変勉強になりました。
ご丁寧な解説にかかわらず、理解は途上ですので、これからじっくりと
読み直して理解したいと思います。
ありがとうございました。
オトンさん、ご返信いただきありがとうございます!
そう言っていただけますと励みになります。
CdSセルと同様に分圧回路を用いる機器として、サーミスタというものがあります。
サーミスタは温度によって抵抗値が変わる特性があることから、分圧回路を用いてアナログ入力電圧を計算式に当てはめて温度を算出することができる機器です。
LESSON22の記事にて紹介していますので、CdSセル回路を体験されたあとで参照されると面白いと思います(#^^#)
サーミスタを使ったLESSON記事はこちらになります。
https://cediablog.com/arduino-thermistor-lesson22/
今後ともよろしくお願いいたします。