概要
フォトレジスタ (photoresistor) とは、入射する光の強度が増加すると電気抵抗が低下する電子部品である。 光依存性抵抗 (light-dependent resistor, LDR) や 光導電体 (photoconductor) 、フォトセル(photocell)とも呼ばれる。
フォトレジスタは、高抵抗の半導体でできている。 充分に周波数の高い光が素子に入ると、半導体に吸収された光子のエネルギーにより束縛電子が伝導帯に飛び込む。 結果として生じる自由電子(と対になるホール)によって電流が流れ、電気抵抗が低くなる。
光電素子には、内因性・外因性のどちらもある。 内因性の素子では価電子帯にだけ存在する電子がバンドギャップを越えなければならず、その励起に相当する以上のエネルギーを持つ光子が必要になる。 外因性の素子には伝導帯に近い基底状態エネルギーを持つ不純物が加えられているので電子が遠くまで飛ばなくてもよく、エネルギーの低い(波長が長い、周波数が低い)光子でも充分に機能する。
半導体に真性半導体を用いるイントリンシック形と、n形やp形半導体を用いるエキシトリンシック形がある。 エキシトリンシック形は、エネルギーギャップよりも小さいエネルギーの光で電子を励起できるので、より長い波長領域に感度があるという特徴がある。フォトレジスタにはいろいろなタイプがある。 カメラの露出計、時計付きラジオ、セキュリティ警報器や街灯などの身近な製品では、安価な CdS セルが使われていた。 コンプレッサー等のエフェクターやアナログシンセサイザーにおいて、LEDと組み合わせてアナログフォトカプラとして使われている。 一方で、赤外線天文学や赤外分光法では、遠赤外線の検出に適している Ge:Cu 光導電体が使われている。このプロジェクトでは、
ラズベリー・パイとフォトレジスタ、リレーなどを接続して、街灯の自動制御する。周囲環境の光強度が弱い時、リレークロージャして、LED点灯する。周囲環境の光強度が強い時、リレーディスコネクトして、LED消灯する。
必要なパッツ
フォトレジスタ x1
|
|
Pi3ボード x1
|
|
LED x1
|
|
リレー x1
|
|
10KΩ抵抗 x1
|
|
1KΩ抵抗 x1
|
|
ジャンプワイヤー若干
|
|
ブレッドボード x1
|
|
A/Dコンバータ(MCP2008やMCP3204)x1
|
ラズパイについて
Raspberry Pi(ラズベリー パイ)は、ARMプロセッサを搭載したシングルボードコンピュータ。イギリスのラズベリーパイ財団によって開発されている。
日本ではラズパイとも呼ばれる。Raspberry Pi はデジタル入出力はできるのが、 アナログ入力ができない。ラズベリーパイにアナログ電圧を入力するのため、A/Dコンバータが必要。このプロジェクトではMCP3008又は MCP3204を使用して、フォトレジスタからの電圧信号をデジタルに変更して、ラズパイに入力して、ラズパイをデジタル信号によって、リレーのクロージャ又はディスコネクトを制御する。
配線図(MCP3008を使用の場合):
配線図(MCP3204を使用の場合):
ソフトウエアのインストール
(1)ラズパイのPythonのインストールと設定が必要。まず、PythonとGPIOライブラリをインストールする:
1)以下のコマンドでソースを更新する:
sudo apt-get update
2)以下のコマンドでpythonをインストールする:
sudo apt-get install python-dev
3)以下のコマンドでpython-pip(python-pipはpython管理用ツール)をインストールする:
sudo apt-get install python-pip
4)以下のコマンドでrpi.gpioをインストール(pipツール使用)する:
sudo pip install rpi.gpio
(2)以下のコマンドで正確にインストールかどうか確認する:
sudo python
(3)コードの編集
1)以下のコマンドで任意のパス(例/home/pi/)でraspi-adc-photoファイルを新規作成する:
sudo touch raspi-adc-photo.py
2)以下のコマンド(nanoエディターを使用)を作動して、raspi-adc-photo.pyファイルを開けて、編集する:
sudo nano raspi-adc-photo.py
3)以下の内容をraspi-adc-photo.pyファイルにコーピーする
import time #importing the time module import os #importing the os module import RPi.GPIO as GPIO #importing the RPi.GPIO module GPIO.cleanup() #clean up at the end of your script GPIO.setmode(GPIO.BCM) #to specify whilch pin numbering system #read SPI data from MCP3008(or MCP3204) chip,8 possible adc's (0 thru 7) def readadc(adcnum, clockpin, mosipin, misopin, cspin): if ((adcnum > 7) or (adcnum < 0)): return -1 GPIO.output(cspin, True) GPIO.output(clockpin, False) # start clock low GPIO.output(cspin, False) # bring CS low commandout = adcnum commandout |= 0x18 # start bit + single-ended bit commandout <<= 3 # we only need to send 5 bits here for i in range(5): if (commandout & 0x80): GPIO.output(mosipin, True) else: GPIO.output(mosipin, False) commandout <<= 1 GPIO.output(clockpin, True) GPIO.output(clockpin, False) adcout = 0 # read in one empty bit, one null bit and 10 ADC bits for i in range(12): GPIO.output(clockpin, True) GPIO.output(clockpin, False) adcout <<= 1 if (GPIO.input(misopin)): adcout |= 0x1 GPIO.output(cspin, True) adcout >>= 1 # first bit is 'null' so drop it return adcout # change these as desired - they're the pins connected from the # SPI port on the ADC to the Cobbler SPICLK = 11 SPIMISO = 9 SPIMOSI = 10 SPICS = 8 # set up the SPI interface pins GPIO.setup(SPIMOSI, GPIO.OUT) GPIO.setup(SPIMISO, GPIO.IN) GPIO.setup(SPICLK, GPIO.OUT) GPIO.setup(SPICS, GPIO.OUT) #relay port to the cobbler Relay_pin = 26 #set up the relay port GPIO.setup(Relay_pin,GPIO.OUT) #disable the gpio warning information GPIO.setwarnings(False) # photoresistor connected to adc #0 photo_ch = 0; #last_read = 0 # this keeps track of the last potentiometer value #tolerance = 5 # to keep from being jittery we'll only change # volume when the pot has moved more than 5 'counts' print"______________________________________________________________________" while True: photo_value = readadc(photo_ch, SPICLK, SPIMOSI, SPIMISO, SPICS) if(photo_value<=300): print "It`s dark,turn on the light" GPIO.output(Relay_pin,True) else: print "dawn,turn off the light" GPIO.output(Relay_pin,False) print "photo_value=", photo_value time.sleep(0.5) #GPIO.cleanup()
4)キーボードのCtrl+Xを押して、Yを入力して、raspi-adc-photo.pyファイルを保存する
(5)以下のコマンドを作動して、結果を確認する
sudo python ./raspi-adc-photo.py
手でセンサーを遮ると、リレーがクロージャして、LEDを点灯する。懐中電灯などセンサーを照れると、リレーがディスコネクトして、LED消灯する。
DownLoad Url osoyoo.com