
明るさセンサーの使い方を知りたいです
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記事はこちら!
コメント
コメント一覧 (2件)
せでぃあさん、こんにちはー!
前回の記事で明るさセンサー出てきて、気になってました。
抵抗が関係してるんですね!すごく分かりやすくて勉強になりました。
久々に電気回路見てなんだかワクワクしました。勉強になる記事、ありがとうございました。
ぽむさん、コメントありがとうございます(^^)
明るさセンサーに興味をもっていただき、ありがとうございます!
抵抗を使った分圧回路が重要なんですよ(^^♪
こちらこそコメントをいただき、大変励みになります(*^^*)
ありがとうございました!