'광량센서'에 해당되는 글 1건

  1. 2015.05.28 광량 센서를 이용한 아두이노 아날로그 실험

 CdS 광전도 셀(CdS photoconductive cell) 또는 CdS셀은 황화카드뮴을 주성분으로 하는 광전도 소자로, 빛의 양에 따라 저항값이 변하는 일종의 가변 저항으로 생각할 수 있다. 빛의 양에 따라 내부 저항값이 변하는 특성이 있으므로 광 가변 저항기라고도 불리는데, 조사되는 빛의 양이 클수록 저항값이 낮아지지만 입사광이 거의 없으면 거의 절연체에 가까워질 정도로 저항값이 커지게 된다. 따라서 광량에 의해서 개폐되는 전기적인 스위치로도 생각할 수 있으며 회로도 스위치의 그것과 동일하게 제작되었다.


[그림 1] Cds 관전도 셀의 외형

 회로 구성은 택스위치와 동일하게 CdS셀의 한 핀에 아날로그 핀을 연결하고 다른 핀은 GND와 직결하면 된다. 단, 이 경우 아날로그 핀의 내부 풀업저항을 이용해야 하므로 다음과 같이 설정해야 한다. (만약 A0에 센서가 연결되어 있다면)

pinMode(A0, INPUT_PULLUP);

센서 주변에 조사광이 많다면 (주위가 밝다면) CdS셀의 저항이 0에 가까워지므로 아날로그 핀은 GND에 연결이 되므로 0에 가까운 값이 읽혀질 것이다. 반대로 센서 주위가 어둡다면 저항이 커지므로 내부 풀업 저항에 의해서 1023에 가까운 값이 읽혀질 것이다. 즉, 밝을수록 더 작은 값이 읽혀지게 된다.

첫 번째 예제

 첫 번째 예제로 Cds센서의 한 쪽 다리를 A0에 연결하고 다른 핀은 GND에 연결한 후 내부 풀업 저항을 연결한다. 그런 후 아날로그 값을 읽어서 시리얼 터미널에 그 값을 출력하는 간단한 프로그램을 작성해보도록 하겠다.

void setup() {
   pinMode(A0, INPUT_PULLUP);
   Serial.begin(115200);
}
void loop() {
   Serial.println(analogRead(A0));
   delay(100);//1초에 약 10번 정도 출력한다.
}


두 번째 예제

 이번에는 주변이 밝으면 내장 LED가 꺼지고 어느 정도 어두워지면 LED가 켜지는 프로그램을 작성해 보자.

#define TH 100

void setup() {
   pinMode(A0, INPUT_PULLUP);
   pinMode(13, OUTPUT);
}
void loop() {
   if ( analogRead(A0) > TH ) {
       digitalWrite(13, HIGH);
   } else {
       digitalWrite(13, LOW);
   }
}


여기서 상수 TH는 경계값으로서 이 값 이상이면 충분히 어둡다고 판단하여 LED를 켜게 된다. 이 값 이하이면 LED는 꺼진다.




Posted by 살레시오
,