티스토리 뷰
const int ledPin = 13;
const int sensorPin = 0;
void setup()
{
pinMode(ledPin, OUTPUT);
}
void loop()
{
int rate = analogRead(sensorPin);
digitalWrite(ledPin, HIGH);
delay(rate);
digitalWrite(ledPin, LOW);
delay(rate);
}
LDR (Light Dependent Resistor) 조명 감지 센서에 의해 깜빡임 간격을 결정한다.
아날로그 센서인 LDR을 아두이노의 Analog 0번에 연결하고 const int sensorPin = 0; 으로 코드를 작성한다.
LDR 밝기에 따라 13번 핀에 연결된 LED의 깜빡임 간격이 결정되는 코드이다.
조도센서 (CDS, LDR, 포토 레지스터)
조도센서는 센서라고 부르지만 극성이 존재하지 않는 일종의 가변저항이라고 할 수 있다.
CDS 센서는 저항의 수치가 자연계 신호인 빛으로 받아서 빛의 양에 따라 가변적으로 센서값이 달라지는
광도전효과를 이용한 반도체 포토센서이고 이로 인해 전압차로 조도를 구분할 수 있다.
CDS라고 불리는 이유는 Cds Photoresistor를 만드는 주 재료가 카드뮴(Cd)과 황(S)의 화합물인
황화카드뮴(CdS)이기 때문이다. 포토셀(PhotoCell)이라고도 많이 불린다.
빛의 양에 따라 저항의 크기가 변함, 빛의 양이 커지면 저항값이 작아진다.
조도센서는 단순히 주변이 어둡다, 밝다를 상대적으로 비교할 수 있는 정도의 수치만 제공한다고 생각하면 편하다.
밝으면 거의 1kΩ, 어두우면 거의 50kΩ의 값을 가진다.
빛의 양에 따라 저항이 일정하게 변하는 것이 아니라 급작스럽게 변한다.
때문에 아두이노에서 사용할 때 10kΩ정도의 저항을 사용한다면
저항의 변화를 완만하게 해주어서 급작스러운 저항의 변화를 보완해줄 수 있다.
센서 값인 아날로그 신호를 디지털 신호로 바꿔서 쓴다.
조도센서의 빛의 양에 따라 저항 값과 전류량의 차이
빛의 양에 따라 저항의 크기가 변한다.
아두이노 아날로그 입력 핀에 빛 센서를 연결하면 빛의 양에 따라서 전압 값이 변화한다.
빛의 양이 커지면 (밝으면) 저항 값이 작아지고, 저항값이 작아지면 전류가 많이 흐르게 된다.
빛의 양이 작아지면 (어두우면) 저항 값이 커지고, 저항값이 커지면 전류가 적게 흐르게 된다.
주위가 밝아지면 CdS 저항이 줄어들어 Ananlog Input 핀에 높은 전압이 들어가고
주위가 아두워지면 CdS 저항이 커지게 되므로 Analog Input 핀에 낮은 전압이 들어간다.
빛의 양에 따라 저항이 일정하게 변하는 것이 아니라 급작스럽게 변한다.
때문에 아두이노를 사용할 때 10kΩ정도의 저항을 사용한다면 저항의 변화를 완만하게 하여 변화를 보완할 수 있다.
저항을 10kΩ을 쓰는이유가 저항의 변화를 완만하게 하기 위해서 사용한다.
실제로 10kΩ을 가지고있지 않아서 1.8kΩ으로 실험을 한 결과 약간의 불빛만이 존재하는 어두운 상황에서
700 언저리 값이 출력되고 아주 밝은 빛을 비추면 100 이하로 떨어져서 값의 변화가 큰 것을 확인할 수 있었다.
3kΩ을 직렬로 3개 연결해서 측정해 본 결과 위와 같은 상황에서 350 언저리의 값이 출력되는 것을 확인했다.
조도센서의 특성에 대해서 실습할 때는 조금 작은 저항을 사용해도 되지만
조도센서에서 입력된 측정값을 가지고 센서의 출력 범위를 정할 경우에는 10kΩ 정도의 저항을 쓰면 좋을 것 같다.
(보드작업 된 조도센서를 사용해보면 알 수 있다)
책에서는 4.7kΩ의 저항을 사용했다.
하지만 저항 값은 중요하지 않다는 것을 알 수 있다. 1k부터 10k사이의 어느 값이나 사용해도 된다.
LDR의 밝기 레벨에 따라 아날로그 핀 0의 전압 레벨이 변경된다.
CDS 센서가 저항이기 때문에 빛의 양이 많은 경우 저항 수치가 매우 작아져서 과전류가 흐를 수 있다.
조도를 측정하려면 풀업 회로를 사용하고 풀업 저항 사용시에는 조도센서의 저항값에 따라 전압 분배가 일어난다.
주변이 밝을수록 측정되는 전압의 크기는 작아진다.
조도센서는 무극성 소자라서 극성을 따질 필요는 없지만
아날로그 신호를 받아오기 때문에 아날로그 핀을 사용해야 한다.
'임베디드 > 아두이노' 카테고리의 다른 글
아두이노 map함수, constrain함수 (1) | 2024.04.30 |
---|---|
[library] 시간관련 헤더파일 - Time.h, Timealarms.h, RTC.h (0) | 2019.08.28 |