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

“조도센서 저항값 변동에 따른 아두이노 LED ON OFF”

coding art 2018. 4. 3. 16:54
728x90

이 한권의 책으로 아두이노 엘렉트로닉스 코딩에서 시작하여 와이파이 코딩을 넘어 흥미로운 앱인벤터 코딩으로 넘어가보자. 특별한 컴퓨터 과학의 지식이 없어도 누구든지 코딩의 세계로 초대 받을 수 있습니다. 교보문고에서 판매 중입니다.


__________________________________________________________________________________________________________________________________

본문 시작


조도(Cds) 센서는 빛의 밝기에 의해 저항 값이 변동 되는 반도체성 가변 저항으로 실제로 도시의 가로등 on OFF 스위치로 사용되는 센서이다.

멀티메터로 측정해 본 조도 센서의 저항 값은 태양 빛을 정면으로 받을 때 70옴 수준에서 완전히 가렸을 때 60K옴의 값을 가진다.


아두이노 우노 보드를 사용하여 빛의 밝기가 변하는 환경에서 조도 센서의 저항 값을 알아내기 위해서는 그림과 같이 저항값을 알고 있는 저항과 조도 센서를 직렬로 연결 배선하고 5V 전압을 가해준다.

이 값들은 코딩 전에 멀티메터로 실측해서 입력하면 오차 보정에 더욱 좋다.

실측 결과 5V 전원은 4.8V, 1K옴 저항은 815옴으로 측정되었으므로 이 값을 코딩에 사용하기로 한다. 만약 멀티 메타가 없어서 측정이 어렵다면 오차가 있긴 하지만 그대로 사용해도 회로를 동작시키는 데엔 아무런 문제가 없다. 아울러 이 1K옴 저항에 걸리는 전압을 측정하기 위해 아날로그 입력 A0에 연결 배선한다.












코드 실행에 따라 시리얼 모니터에 출력되는 데이터 값을 관찰해 보자. 실측 값이 815옴인 1K옴 저항에 가해지는 전압이 0.9V 안팎이며 이로부터 옴의 법칙에 의해 계산된 조도 센서 저장 값이 3.7K옴 압밖이다. 6,000옴 즉 6.0K옴이 되어야 청색 LED 가 on이된다. 흐린 날 형광등이 켜진 사무실 환경이므로 손바닥으로 가리는 정도면 7.0 ∼ 9.0K옴이 출력되며 LED on 이 가능하다.


CDS_sensor_LED_01


float arduVolt = 4.9; //아두이노 전압 실측치
float r = 815; //1K옴 실측치
int ledPin = D2;
void setup() {
 Serial.begin(9600);
 pinMode(ledPin,OUTPUT);
 digitalWrite(ledPin, HIGH);
 delay(5000);
}

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