'photoresistor'에 해당되는 글 2건

  1. 2018.02.28 Hardware | Arduino 로 Photoresister 가지고 놀기 - 2
  2. 2017.06.25 Hardware | Arduino 로 Photoresister 가지고 놀기 - 1

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

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

|

1. Photoresistor

광원을 받으면 저항값이 바뀌는 소자가 photo-resistor 입니다.

다른 말로는 Light Dependent Resisor (LDR) 이라고도 합니다.


빛을 받으면 저항값이 내려가고, 어두워지면 저항값이 올라가는 반응을 이용합니다.



보통, 어두워지면 자동으로 전기가 켜지는 가로등에 많이 쓰이고 있죠.



저번에 했던 motion sensor 에, 이 photoresistor 를 추가하여 개조하기 위해 구입해 봅니다.


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




2. 구입 및 도착

AliExpress 에서 "GL5528" 로 검색하면 보편적인 Photoresistor 가 검색됩니다.


https://ko.aliexpress.com/item/20Pcs-Photo-Light-Sensitive-Resistor-Photoresistor-5528-GL5528/1852500725.html



무료배송이 행복합니다.


배송까지 약 2주정도 걸렸습니다.

요즈음은 대략 2주정도 걸리는군요.



실물은 이렇게 생겼습니다.



구글에서 보던 줄이 더 촘촘하고 긴 모듈을 상상했으나,

조금 간단한 제품입니다.




3. Layout

Pin 연결은 다음과 같습니다.

특이한건, 저항과 Photoresistor 연결점을 A0 로 한다는 것 정도 입니다.


 Photoresistor | 
-------------------------------
      +        |      A0
      +        |   220 ohm (1)
      -        |      GND
-------------------------------

  220 ohm (1)  | 
-------------------------------
      +        | Photoresistor
      -        |      GND
-------------------------------

 
    LED    | 
----------------------------------
     +     |     D8
     -     |  220 ohm (2) -->  GND
----------------------------------




4. Code

Source code 입니다.


//photoresistor A Style Tech.

int Pr = 0; // will be used for analog 0.
int PrValue = 0; // value of output
int Pr_Input = 10; // value of when light is on

void setup() {
  Serial.begin(9600); //start serial Monitor
  pinMode(8, OUTPUT); // pin 8 as output
}

void loop() {
  PrValue = analogRead(Pr);
  Serial.println(PrValue); //prints photoresistor value
  delay(100); // value updated every 0.1 second.

  if (PrValue < Pr_Input) {
    digitalWrite(8, HIGH);
  } else {
    digitalWrite(8, LOW); }
}




5. 구동

구동 잘 되네요.



IDE의 Serial Monitor 로 확인해본 결과 입니다.

10 이하의 값이 나오는 경우는 손으로 photoresistor 를 막아서 빛을 못받게 하는 상황입니다.

이때 LED 가 켜지죠.



잘 되쥬?



나름 재미 있네요.




FIN

이제 뭘하지?

And
prev | 1 | next