光センサー(照度センサー)完全ガイド:原理・種類・単位・Arduino実装例
光センサー (照度センサー) とは?
光センサー (照度センサー)
画像出典: Flickr
光センサーは、光の強さ (照度) を電気信号に変換 するデバイスです。スマホの画面自動調光、街灯の自動点灯、カメラの露出制御、植物育成管理、ソーラーパネル追尾など、身近なところから産業まで幅広く使われています。
光の単位を理解する
センサー選定・仕様理解には、光の単位知識が不可欠です。
ルーメン (lm, Lumen) - 光束
光源から放出される 可視光の総量。
光度 (カンデラ) × 立体角 (ステラジアン) = ルーメン。
例: 20 cd で全方向 (4π sr) に放射 → 20 × 4π ≈ 251 lm
カンデラ (cd, Candela) - 光度
特定方向への 光の強さ (指向性)。人眼の分光感度特性 (V(λ)) で重み付けされた SI 基本単位。
懐中電灯比較等の「明るさ」には不向き (配光角度依存大)。
ルクス (lx, Lux) - 照度
単位面積 (1 m²) あたりに入射する 光束 (lm/m²)。
「ある面がどれだけ照らされているか」を表し、照明設計・センサー仕様で最も実用的。
例: 晴天屋外 ≈ 100,000 lx、オフィス ≈ 500 lx、満月 ≈ 0.1 lx
光センサーの検出原理・デバイス種類
1. フォトレジスタ (CdSセル, 光依存抵抗 LDR)
光が当たると 抵抗値が減少 する半導体デバイス (硫化カドミウム等)。
• メリット: 安価、簡単な分圧回路で電圧出力可能、広いダイナミックレンジ
• デメリット: 応答速度遅い (ms〜数十ms)、温度依存性大、Cd含有でRoHS対応品選定必要
• 用途: 明暗判定、簡易照度計、自動点灯
2. フォトダイオード (PD)
PN接合に光が入射 → 電子正孔対生成 → 光電流 (逆方向電流) が流れる。
• 短絡電流 ∝ 照度 (リニアリティ良好)
• 高速応答 (ns〜μs)、低ノイズ、広ダイナミックレンジ
• 太陽電池も大面積フォトダイオードの一種
• 用途: 精密照度計、光通信受光、医療・計測
3. フォトトランジスタ
フォトダイオード + トランジスタ増幅一体化。ベースに光電流 → コレクタ電流増幅。
• 感度高い (電流利得 hFE 倍)
• 低照度検出にはフォトダイオード優位 (暗電流増幅されず)
• 用途: 遮光検出、エンコーダ、リモコン受光
光センサー モジュールの一般的特徴
- 優れた安定性・リニアリティ
- 出力インターフェース: 電圧出力 (0〜VCC) / I2C / SPI / RS485
- 広測定範囲: 0.1 lx 〜 100,000 lx 以上 (製品による)
- IP66 防塵防水 (屋外用モジュール)
- TVS/ESD 保護内蔵
用途別活用例
| 分野 | 用途例 |
|---|---|
| セキュリティ | レーザー+光センサーで不可視ビームフェンス、侵入検知 |
| 自動車 | オートライト (トンネル/夜間自動点灯)、雨滴センサー |
| コンシューマー | スマホ/タブレット 画面自動輝度調整、カメラ露出制御 |
| 街路灯 | 人/車検知連動点灯、調光制御で省エネ |
| 医療 | パルスオキシメータ (SpO2)、心拍モニタ (反射/透過光) |
| 農業/園芸 | 日射量連動スプリンクラー、植物工場光環境制御 |
| ソーラー | 太陽追尾 (デュアルアクシス)、発電量予測、パネル汚れ検知 |
Arduino + フォトレジスタ (CdS) で 明暗検知 LED 制御
必要な部品
- Arduino Uno (または互換)
- フォトレジスタ (CdS) ×1
- LED ×2 (色違い推奨)
- 抵抗: 1kΩ ×1 (CdS分圧用), 470Ω ×2 (LED電流制限)
- ブレッドボード、ジャンパーワイヤ
フォトレジスタ (CdSセル)
配線手順 (8ステップ)
Arduino 光センサー回路図 (出典: Arduino.cc)
- CdS の片足を 5V、もう片足を 1kΩ 抵抗経由で GND に接続 (分圧回路)
- CdS と 1kΩ の接続点 (分圧中点) を アナログピン A1 に接続
- LED アノード (長い足) を 470Ω 抵抗経由で デジタルピン 3 に接続 (×2個、別ピンでも可)
- LED カソード (短い足) を GND に接続
- Arduino GND をブレッドボード GND レールに接続
- USBケーブルで PC と接続
- Arduino IDE でスケッチ書き込み
- 電源投入 (USB給電でOK)
動作原理・閾値判定
Arduino の analogRead(A1) で 0〜1023 の値を取得。
閾値 150 (約 0.73V) を境に:
- 値 < 150 (暗い) → LED ON (digitalWrite HIGH)
- 値 ≥ 150 (明るい) → LED OFF (digitalWrite LOW)
※ 閾値は環境・CdS個体差で調整必要。シリアルプロッタで実測値確認推奨。
Arduino サンプルコード
Arduino サンプルコード (出典: Arduino.cc)
const int sensorPin = A1;
const int ledPin = 3;
const int threshold = 150;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(sensorPin);
Serial.println(sensorValue);
if (sensorValue < threshold) {
digitalWrite(ledPin, HIGH); // 暗い → LED点灯
} else {
digitalWrite(ledPin, LOW); // 明るい → LED消灯
}
delay(100);
}
動作確認方法
- 部屋を暗くする (LEDが点灯することを確認)
- 手で CdS を覆う → LED 点灯
- 手を離す → LED 消灯
- シリアルモニタ/プロッタで値の変化を観察
発展: 高精度照度計へのステップアップ
- BH1750 (I2C):校正済みルクス値直接取得、ログ記録に最適
- TSL2591 / TSL2561 (I2C):広ダイナミックレンジ (188μlx〜88klx)、人眼補正フィルタ内蔵
- VEML7700 (I2C):超小型、低消費、16bit分解能
- これらはライブラリ (Adafruit_BH1750, Adafruit_TSL2591等) で簡単利用可能
まとめ
光センサーは「光を電気信号に変える」シンプルながら奥深いデバイス。CdS で基本を学び、用途に合わせてフォトダイオード・専用照度ICへステップアップするのが王道です。Arduino での実装例を参考に、自動照明・環境モニタ・植物育成など、アイデアを形にしてみてください。ご相談はお気軽にどうぞ。
産業技術
- ArduinoをNMEA-0183に接続するステップバイステップガイド
- ArduinoでModbusをマスターする:ステップバイステップガイド
- Arduino UNOでIRセンサープロジェクトを構築 - シンプルガイド
- Arduinoでロータリーエンコーダをマスター: 仕組みとステップバイステップ統合ガイド
- PIRモーションセンサー: 動作原理とArduino連携ガイド
- DS18B20 1-Wire防水温度センサ徹底解説:ピン配列・仕様・Arduino活用・用途例
- カラーセンサー:仕組みと主要応用
- Arduinoセンサー:種類、応用、実世界プロジェクト
- 環境光センサー:機能、設計、主要アプリケーション
- 光学センサー:基礎、種類、実用的なアプリケーション
- C# Queue完全ガイド:Enqueue、Dequeue、FIFO操作の実例解説