Hardware | Arduino 로 Photoresister 가지고 놀기 - 2

|

1. 시작


Photoresistor 를 가지고 놀아 봤더랬습니다. (아래 글)


* Hardware | Arduino 로 Photoresister 가지고 놀기 - 1

http://chocoball.tistory.com/entry/Hardware-Arduino-Photoresister-1



다만, 위의 사진에서 보이듯 광원을 받는 센서부의 홈 갯수가 적어 보이는 것 같았습니다.

밑의 사진처럼 촘촘하면, 뭔가 더 예민하게 반응할 것 같았습니다.



이미 PIR motion sensor 에도 GL5528 을 가지고 적용해 봤으나 (아래 글),

완벽한 어둠이 있지 않으면 동작하지 않아, 적당한 어둠에도 동작하도록 하기 위해 위와 같이 촘촘한 센서를 찾아보게 됩니다.


* Hardware | HC-SR501 PIR motion sensor

http://chocoball.tistory.com/entry/Hardware-HCSR501-PIR-motion-sensor





2. 주문


AliExpress 를 뒤져 봅니다.

제가 GL5528을 구입할 때만 해도 다양한 센서를 한묶음으로 파는 경우를 못본것 같은데, 이제는 팔고 있네요.


* Photoresistor Kit 5Kindsx10pcs 5506 5516 5528 5537 5539 Light Dependent Resistor LDR Pack Photoresistor Package for Arduino

https://ko.aliexpress.com/item/Photoresistor-Kit-5Kindsx10pcs-5506-5516-5528-5537-5539-Light-Dependent-Resistor-LDR-Pack-Photoresistor-Package-for/32812625860.html




미리 이런게 있었더라면...

하면서 바로 주문을 넣습니다.


다양한 센서라 그런지, 다른 부품들보다는 다소 비싼 편 입니다. 한, 500원 정도 ?! :-)





3. 도착


한 2주 걸려서 도착했습니다. 알리에서 주문한 것 치곤 빠른 편 입니다.



스폰지 형태로 잘 포장되어 왔구요.



한뭉텅이로 왔구요.



각 부품이 10개씩 포장되어 들어 있구요.



네 그렇습니다.

이렇게 촘촘한 photoresistor 센서를 얻기 위해, 첫번째 시행착오를 거쳐 두번째 구매를 하게 된 것이죠.


다만, 각 센서의 감도 차이를 알고 싶어졌습니다.

물론 spec. 문서를 보면 나와 있습니다만, 주변의 빛의 세기에 따라 어떤 형태의 값들로 움직이는지 보고 싶었습니다.


또한 예전에 구입한 GL5528 이 다른 센서들과 비교하여,

PIR 센서에 적합한 센서를 찾기 위해 값을 비교해 보기로 합니다.





4. Layout


입력은 5V 이지만, 0~1023 레벨로 결과값을 받을 수 있게, 3.3V 를 AREF pin 에 연결합니다.

저도 이번에 AREF를 사용하면서 AREF 의 용도를 알게 되었습니다.


AREF 에 대해서는 따로 정리해 봤습니다.


* Hardware | Arduino 의 AREF pin 에 대해 알아보자

http://chocoball.tistory.com/entry/Hardware-Arduino-AREF-pin



아래는 구성도 입니다.



아래는 실제 배선 샷 입니다.



사진에는 마지막에 추가한 GL5528 이 없습니다.

이 테스트를 하기 전에 사진을 찍은 후, 자고 일어났더니 예전 GL5528 이 생각이 나, 추가하여 결과값을 추출하였습니다.



저항은 10k ohm 입니다.

이는 아래 사양서에서 볼 수 있듯이, 일반적인 낮의 100 lux 에서 대략 10k ohm 의 값을 가지기 때문입니다.






5. Sketch


원리는 다음과 같습니다.


V = IR


* case 1 : 10KΩ

  - 10KΩ + 10KΩ = 20KΩ

  - I = 5V / 20KΩ = 0.25mA

  - 0.25mA * 10KΩ = 2.5V

  - 5V - 2.5V = 2.5V --> analog input


* case 2 : 30KΩ

  - 30KΩ + 10KΩ = 40KΩ

  - I = 5V / 40KΩ = 0.125mA

  - 0.125mA * 30KΩ = 3.75V

  - 5V - 3.75V = 1.25V --> analog input


* case 3 : 100KΩ

  - 100KΩ + 10KΩ = 110KΩ

  - I = 5V / 110KΩ = 0.045mA

  - 0.045mA * 100KΩ = 4.54V

  - 5V - 4.54V = 0.54V --> analog input


less light --> more resistance --> less analog input

more light --> less resistance --> more analog input


결론은,

많은 광량일 경우는 높은 치수를, 즉 낮은 저항 수치를 가지고,

적은 광량일 경우는 낮은 치수를, 즉 높은 저항 수치를 가지고 서로의 성능을 비교하는 과정입니다.


지금까지의 과정과 아래 소스는 다음 blog 를 참조하였습니다.


* Photo resistors, in depth

https://piandmore.wordpress.com/2016/10/14/photo-resistors-in-depth/


예전에 구입한 GL5528 를 A5 에 추가 연결하였으므로, 소스에서도 입력과 출력에 대해 A5 를 추가하였습니다.


////////////////////////////////////////////////////////////////////////////////////
//
//                               PI and more
//                      Photo resistors in depth
//
// https://piandmore.wordpress.com/2016/10/14/photo-resistors-in-depth/
//
////////////////////////////////////////////////////////////////////////////////////
//
// The number of steps after which the header is repeated
//
#define STEPCOUNT 10
//
// The current step count
//
byte step = STEPCOUNT;

void setup() {
  //
  // Setup serial
  //
  Serial.begin(115200);
  Serial.println("Ready");
  //
  // Set the reference for measuring the analog signals
  // For some reason I got incorrect readings without connecting
  // the 3.3v (on my Arduino Nano) to AREF and setting this
  // reference
  analogReference(EXTERNAL);
  //
  // Setup all analog inputs. We are using 5 which is the maximum
  // for the Nano on which I tested.
  //
  pinMode(A0,INPUT);
  pinMode(A1,INPUT);
  pinMode(A2,INPUT);
  pinMode(A3,INPUT);
  pinMode(A4,INPUT);
  pinMode(A5,INPUT);
}

void loop() {
  //
  // Increase our counter
  //
  step++;
  //
  // If we are over our STEPCOUNT then we repeat the header
  //
  if (step>STEPCOUNT) {
    //
    // The reference to the different photo resistors
    // GL5506, GL5516, GL5528, GL5537 and GL 5539
    //
    Serial.println("* 5506  5516  5528  5537  5539  GL5528");
    step = 0;
  }
  //
  // Print all analog values to serial
  //
  Serial.print("  ");
  Serial.print(analogRead(A0));
  Serial.print("   ");
  Serial.print(analogRead(A1));
  Serial.print("   ");
  Serial.print(analogRead(A2));
  Serial.print("   ");
  Serial.print(analogRead(A3));
  Serial.print("   ");
  Serial.print(analogRead(A4));
  Serial.print("   ");
  Serial.print(analogRead(A5));
  Serial.println();
  delay(250);
}


위의 sketch 를 실행시키면 다음과 같이 "Serial Monitor" 를 통해서 값을 확인할 수 있습니다.







6. 결과


제조사의 사양서는 찾을 수 없었지만, 5506 부터 나와있는 사양 테이블은 아래와 같습니다.

그래프를 보면 결과값과 비슷하게 나온것 같습니다.



강한 불빛인 휴대폰 플레쉬부터, 거실 불 하나만의 광량, 손으로 그늘을 만들고,

마지막에 손으로 가리는 순간들의 값을 EXCEL 정리해 봤습니다.


* EXCEL

photoresistor_record_20180225.xlsx


숫자로만 보면 들쑥날쑥 하여 알아보기 힘듭니다.

아래의 그래프로 그려봤습니다.



EXCEL 숫자만 보면, 과연 순서대로 나열해서 했나 싶을 정도로 들쑥날쑥 합니다만,

그래프로 그리면 확실히 그 경향을 알 수 있습니다.




FIN


예전에 구입한 GL5528 (녹색) 은, 이번에 구입한 5528 (회색) 과 확연한 값의 차이를 나타냅니다.

오히려 5537 (노랑) 과 더 비슷해 보이는군요.


위의 결과를 가지고 생각해 보면, photoresistor 를 직접 사용하기 전에는 측정을 통하여 사용처에 맞는 센서를 골라야 하겠군요.


And