적외선 센서란 / 인체감지 모션 센서 / PIR 센서 / 프레넬 원리

메이커 2018-09-17 (월) 00:35 1년전 7587  

적외선을 복사하는 물체의 움직임에 반응하는 센서를 수동형 적외선 동작 감지 센서 (PIR) 혹은 인체감지 모션 센서라고 합니다. 


PIR 센서란?


일반적으로 초음파 거리센서, 적외선 거리센서 등은 (초)음파 및 적외선 등을 방사하고 돌아오는 것을 측정해야 했습니다. 이를 능동형 적외선 센서라고 합니다. 본 글에서 설명할 수동형 적외선 센서는 방출하지 않고, 사물에서 나오는 열에 수동적으로 반응하는 센서를 말합니다. 


자신의 절대 온도에 비례해서 방출하는 측체 복사 (black-body radiation)를 사용하는 PIR 센서는 다음과 같은 모습입니다. 


4eb8db95a0a4ce915caee4aba559ad37_1537111 4eb8db95a0a4ce915caee4aba559ad37_1537111 4eb8db95a0a4ce915caee4aba559ad37_1537111

 


한번쯤은 보았을만한 센서로 현관문, 화장실 등 움직임에 대해 반응하고 불을 켜는 등의 애플리케이션에 주로 사용됩니다. 


프레넬 렌즈의 원리란?


크고 좋은 볼록렌즈를 만들기 위해서 프랑스의 과학자인 프레넬이 고안한 렌즈로, 등대에서 사용되는 큰 볼록렌즈를 저렴하게 만들기 위해서 만들어졌다고 합니다. 

4eb8db95a0a4ce915caee4aba559ad37_1537111

이러한 원리를 이용해서 인체감지 모션센서에는 모자이크 모양의 커버가 있습니다. 

4eb8db95a0a4ce915caee4aba559ad37_1537111
4eb8db95a0a4ce915caee4aba559ad37_1537111
4eb8db95a0a4ce915caee4aba559ad37_1537111


PIR 인체감지 모션센서 추천


아두이노와 연결해서 사용할 수 있는 PIR 센서로는 다음과 같은 센서를 추천합니다. 


https://goo.gl/3UXHpG

 

아두이노와 연결하는 방법은 다음과 같습니다. 


4eb8db95a0a4ce915caee4aba559ad37_1537112


# 아두이노 소스코드


 int ledPin = 13;                // choose the pin for the LED

int inputPin = 2;               // choose the input pin (for PIR sensor)

int pirState = LOW;             // we start, assuming no motion detected

int val = 0;                    // variable for reading the pin status

 

void setup() {

  pinMode(ledPin, OUTPUT);      // declare LED as output

  pinMode(inputPin, INPUT);     // declare sensor as input

 

  Serial.begin(9600);

}

 

void loop(){

  val = digitalRead(inputPin);  // read input value

  if (val == HIGH) {            // check if the input is HIGH

    digitalWrite(ledPin, HIGH);  // turn LED ON

    if (pirState == LOW) {

      // we have just turned on

      Serial.println("Motion detected!");

      // We only want to print on the output change, not state

      pirState = HIGH;

    }

  } else {

    digitalWrite(ledPin, LOW); // turn LED OFF

    if (pirState == HIGH){

      // we have just turned of

      Serial.println("Motion ended!");

      // We only want to print on the output change, not state

      pirState = LOW;

    }

  }

}


 

 

▶아래 플러스 친구 버튼을 통해 다양한 정보와 교제 자료 및 이벤트등의 소식을 받아보실 수 있습니다.




모바일 버전으로 보기