아두이노 기본실습 6 - CDS(Photoresistor) 광센서 조도센서 실험

포토레지스터(Photoresistor)는 일명 CDS센서라고도 불리우며 빛의 양을 측정하는 광센서로서 조도센서의 역할을 합니다. 빛에 따라 저항값이 변하며 빛을 받으면 내부 저항값이 감소하며 빛이 없으면 내부 저항값이 급격히 증가하는 특성을 보입니다.

CDS센서는 무극성소자로서 극성없이 사용가능하고 저항 1개와 결합하여 간단히 회로구성이 가능합니다. 빛의 양에 따라 수K옴에서 수십K옴사이로 변화합니다. 여기서는 CDS센서를 이용하여 조도가 낮아지면 LED가 점등하는 실험을 합니다.

일반적인 CDS센서는 아래와 같은 모습을 하고 있습니다.

아래는 CDS센서의 저항을 측정한 사진으로 빛을 충분히 받을 때는 1K대의 저항값을 나타내고 있습니다.

아래는 빛을 가렸을 때 저항값을 측정한 것으로 저항값이 급격히 증가하였음을 보여주고 있습니다.

아래는 결선도입니다. CDS센서와 10K옴 저항을 직렬로 연결한 후 CDS센서측에 5V를 연결하고 10K옴 저항측에 GND를 연결합니다. CDS센서와 10K옴 저항연결부는 아두이노 우노보드의 A2(아날로그핀 2)에 연결합니다.

회로에 대해 간단히 설명하면 CDS센서는 빛에 반응하는 가변 저항으로 보면 직렬로 연결된 10K저항사이에 저항값에 따른 0~5V 사이의 전압분배가 일어납니다. 전압은 저항값에 비례하므로 CDS센서가 빛을 받으면(CDS센서의 내부 저항값은 낮아집니다) A2에 입력되는 전압은 높아지고, CDS센서가 빛을 받지 못하면(CDS센서의 내부저항값은 높아집니다) A2에 입력되는 전압은 낮아지게 됩니다.

따라서 프로그램는에서는 A2에 입력되는 전압값을 불러와서 일정값(여기서는 2.5V)이하로 떨어지면(조도가 낮아지면) LED를 동작하게 합니다.

 

소스코드

아래는 소스코드입니다. 아두이노 IDE에 붙여넣기 하여 컴파일하고 업로드해봅니다.

// 아두이노 CDS 조도센서 실험
int photocellPin = 2;    //전압값을 읽어올 핀을 photocellPin = 2로 선언합니다.
int ledPin = 13;   //조도에 따라 온오프를 할 LED핀을 설정합니다. 여기서는 아두이노 우노보드상의 LED를 사용합니다.
int val = 0;       //val 변수를 선언하고 값을 0으로 초기화합니다.


void setup() { 
  pinMode(ledPin, OUTPUT);  //ledPin의 디지털IO를 출력으로 설정합니다.
} 

void loop() { 
  val = analogRead(photocellPin);    //센서의 값을 읽어옵니다.
  if(val<=512){      //512는 전압으로 약 2.5V에 해당하며 
    digitalWrite(ledPin, HIGH); //val 512(2.5V) 이하이면 LED가 점등합니다.
  }
  else{
    digitalWrite(ledPin, LOW);
  }
}