아두이노프로세싱 프로그래밍

아두이노 초보자를 위한 “아두이노 코딩에 의한 조도센서 저항값 변동에 따른 LED ON OFF”

coding art 2017. 4. 10. 20:33
728x90


조도 센서는 빛의 밝기에 의해 저항 값이 조절 되는 일종의 반도체성 가변 저항으로 실제로 도시의 수많은 가로등 on OFF에 사용되는 센서이다.

그 저항 값은 실제 사용하는 곳에서 손가락으로 가린 상태에서 멀티메터로 저항 값을 측정하면 된다. 태양 빛을 정면으로 받을 때 70옴 수준에서 완전히 가렸을 때 60K옴의 값을 가진다.

아두이노에서 변동하는 빛의 밝기 하에서 조도센서의 저항 값을 알아내기 위해서는 앞 블로그에서 만들어 보았던 전압 측정 회로를 다음과 같이 배선을 수정할 필요가 있다.


즉 1K옴과 조도센서의 저항을 직렬로 합한 양단에 5V 전압을 가해준다. 이 값은 코딩 전에 멀티메터로 실측해서 입력하면 오차 보정에 더욱 좋다. 그대로 해도 문제는 없다.

아울러 이 1K옴 저항에 걸리는 전압을 측정하기 위해 아날로그 입력 A0에 연결 배선한다.

1K옴 저항은 가급적이면 정밀한 것을 고른다. 하지만 멀티메터가 있으면 실측값으로 설정하면 된다.

일단 코딩 완성이 확인 될 때까지는 시리얼로 출력해서 체크하도록 한다. 작동이 잘되면 마지막 FND 용 시리얼 출력만 남기고 모두 // 처리한다.

배선도에는 나타내지 않았지만 4쪽짜리 FND 를 사용하여 K옴 단위로 출력하면 조도 센서의 저항 값 변동을 읽기 쉽다.

조도 센서의 저항 값 6K옴을 분기점으로 하여 그 이상이면 어두워진다는 뜻이므로 청색 L

ED를 on 시킨다.

창가의 그늘 진 곳에서 조도 센서 저항 값 변동에 따른 LED on OFF를 동영상을 통해서 관찰해 보자.




cds_sensor_LED_01

float arduVolt = 5.0; //아두이노 전압 실측치
float r = 997.0; //1K옴 실측치
int ledPin = 11;
void setup() {
 Serial.begin(9600);
 pinMode(ledPin,OUTPUT);
}

void loop() {
 int analogV = analogRead(A0);//0-1023
// Serial.println(analogV);
 float V = arduVolt*analogV/(1023.0);//1K옴 저항 전압 환산
// Serial.print(V);
// Serial.println("Volt");
 float i = V/r;//1K옴 저항 전류 계산, 암페어
 float cdsV = arduVolt-V;//조도센서 전압 계산
 float cdsR = cdsV/i;//조도센서 저항 계산
 float cdsRk=cdsR/1000.0; //k옴으로 환산
 Serial.println(cdsRk,1);//시리얼 모니터 또는 FND출력
// Serial.println(":  Ohm");
 if( cdsR<6000) {       // 6K옴 이하면 on
    analogWrite(ledPin,0);//밝으면 끄기
 }
 else {
     analogWrite(ledPin,127);//어두우면 켜기
 }
 delay(5000);
}