Title
아두이노 강좌
2017.02.24 14:34

[아두이노 강좌] 09. 광센서로 조도 측정하기

조회 수 324 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

본 게시글에서는 아날로그 입력을 사용하여 어떻게 광도를 측정하는지 알아보도록 하겠습니다. 이전 강좌 8번에 서 사용된 회로를 응용하겠습니다.

 

목적


  • 아두이노를 Uno 와 아두이노 상의 LED를 레지스터를 이용하여 제어할 수 있다.
  • 아두이노로 LED의 밝기및 색상을 조절할수 있게 된다
  • 아날로그와 반대되는 개념을 알수있다.
  • 조도센서의 기능을 알수있다.

준비물


ArduinoUno_r2_front450px-300x210.jpg Arduino Uno R2

 

저항 220옴.jpg 저항

 

400 빵판.jpg 브레드 보드

 

21.아두이노 CDS 조도 포토 셀 센서.PNG조도 센서

 

 

 

레드 엘이디.png LED

 

 

 

Moniter


 

1.jpg

 

Fritzing


본 게시글에서 사용하는 브레드보드 레이아웃은 강좌 8에서 사용하였던 레이아웃과 동일합니다. 다만 포텐셔미터 대신 LDR과 1K오옴 저항이 사용됩니다.

2.jpg

포센셔미터를 제거하고 아래와 같이 포토셀과 저항을 셋업하십시오.

3.jpg

 

포토셀


포토셀은 LDR(Light Dependent Resistor)라고 불리며 그 이름대로 빛의 세기에 따라 저항값이 달라지는 소자입니다. 실험에 사용되는 포토셀은 어둠속에서 50K오옴 밝은 빛에서 500k오옴을 가지는 저항입니다. 계속적으로 변하는 저항을 아두이노의 아날로그 입력에서 측정하려면 전압으로 바꾸어 주어야 합니다. 가장 간단한 방법은 포토셀을 고정된 값을 가진 저항과 결합하는 방법입니다.

4.png

저항과 포토셀을 합쳐 놓으면 일종의 포센셔미터처럼 동작합니다. 빛이 매우 밝으면 고정값 저항에 비했을 때 포토셀의 저항이 매우 낮아 지고, 이는 마치 포텐셔미터를 최대치로 돌렸을 때와 동일한 효과를 냅니다.

포토셀이 어두운 곳에 있을 경우 저항은 고정값 저항보다 커지게 되고 이는 포센셔미터가 그라운드로 향하는 것과 동일한 효과를 내게 됩니다.

아래에 있는 스케치를 아두이노에 업로드하고 포토셀을 어둡게 하거나 밝게 하여 보십시오.

 

Code


밝기에 따라서 8개의 LED를 켜는 코드입니다. 강좌 8에서 사용한 코드도 작동하긴 하지만, 8개의 LED를 모두 켜기 위해서 필요한 밝기의 정도는 아직 모릅니다. 이것은 고정된 저항값때문인데 그래서 포토셀 저항이 얼마나 떨어지는지 상관없이 그것을 오프셋하기 위한 1k오옴의 고정저항이 있다는 사실에 대한 보충작업을 해줄 필요가 있습니다.

아래는 강좌 8에서 사용된 코드를 약간 수정한 버전입니다.

  1. int lightPin = 0;
  2. int latchPin = 5;
  3. int clockPin = 6;
  4. int dataPin = 4;
  5.  
  6. int leds = 0;
  7.  
  8. void setup()
  9. {
  10. pinMode(latchPin, OUTPUT);
  11. pinMode(dataPin, OUTPUT);
  12. pinMode(clockPin, OUTPUT);
  13. }
  14.  
  15. void loop()
  16. {
  17. int reading = analogRead(lightPin);
  18. int numLEDSLit = reading / 57; //1023 / 9 / 2
  19. if (numLEDSLit > 8) numLEDSLit = 8;
  20. leds = 0;
  21. for (int i = 0; i < numLEDSLit; i++)
  22. {
  23. bitSet(leds, i);
  24. }
  25. updateShiftRegister();
  26. }
  27.  
  28. void updateShiftRegister()
  29. {
  30. digitalWrite(latchPin, LOW);
  31. shiftOut(dataPin, clockPin, LSBFIRST, leds);
  32. digitalWrite(latchPin, HIGH);
  33. }

 

가장 먼저, 기존의 potPin은 lightPin으로 이름이 바뀌었습니다. 포텐셔미터 대신 포토셀이 사용되니까요.

그 다음으로는 얼마나 많은 LED가 켜지는지를 계산하는 부분이 바뀌었습니다.

  1. int numLEDSLit = reading / 57; // all LEDs lit at 1k

기존에 114로 나누는 부분을 114의 절반인 57로 나누도록 바꾸었습니다. 이것은 1K오옴 저항을 고려하여 이렇게 변경한 것입니다. 만약 포토셀이 고정저항과 같이 1K오옴의 저항을 가진다면 아날로그 입력값은 1023/2 = 511이 될 것이며 57로 나누면 9구간이 떨어지게 됩니다. 이 수식은 모든 LED를 켤수 있게 합니다.


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
14 아두이노 강좌 아두이노란 무엇 일까요??? file 귀욤둥이 2017.02.20 106
13 아두이노 강좌 [아두이노 강좌] 13. 아두이노를 사용하여 DC모터 제어하기 file 귀욤둥이 2017.03.01 578
12 아두이노 강좌 [아두이노 강좌] 12. LCD에 온도 및 조도 표시하기 file 귀욤둥이 2017.02.24 599
11 아두이노 강좌 [아두이노 강좌] 11. LCD 디스플레이 연결하기 file 귀욤둥이 2017.02.24 752
10 아두이노 강좌 [아두이노 강좌] 10. 소리 만들어 음악 연주하기 file 귀욤둥이 2017.02.24 672
» 아두이노 강좌 [아두이노 강좌] 09. 광센서로 조도 측정하기 file 귀욤둥이 2017.02.24 324
8 아두이노 강좌 [아두이노 강좌] 08. 가변저항을 이용하여 아날로그 입력으로 LED 밝기 조절하기 file 귀욤둥이 2017.02.24 714
7 아두이노 강좌 [아두이노 강좌] 07. 버튼을 이용하여 RGB LED 색상 제어하기 file 귀욤둥이 2017.02.23 823
6 아두이노 강좌 [아두이노 강좌] 06. 푸쉬버튼을 이용한 디지털 입력하기 file 귀욤둥이 2017.02.23 409
5 아두이노 강좌 [아두이노 강좌] 05. PC상에서 Serial Monitor로 LED 제어하기 file 귀욤둥이 2017.02.23 340
4 아두이노 강좌 [아두이노 강좌] 04. 쉬프트 레지스터를 이용한 LED제어 file 귀욤둥이 2017.02.21 369
3 아두이노 강좌 [아두이노 강좌] 03. RGB LED 색깔 변경하기 file 귀욤둥이 2017.02.21 219
2 아두이노 강좌 [아두이노 강좌] 02. LED 밝기 변경하기 file 귀욤둥이 2017.02.21 180
1 아두이노 강좌 [아두이노 강좌] 01. LED 깜빡이기 file 귀욤둥이 2017.02.20 153
Board Pagination Prev 1 Next
/ 1