본문 바로가기

Arduino/[2] Arduino Module

[Arduino Module] #12. 적외선 장애물 감지 센서

728x90
반응형

적외선 감지 센서의 원리

적외선 LED에서 적외선을 보내게 되고, 물체에 닿아 반사되는 빛은 포토 트랜지스터에서 감지하게 된다.

 

적외선 장애물 감지 센서는 앞에 장애물이 놓이게 되면 센서에서 보낸 적외선이 장애물에 반사되어 수신부에 들어가게 되고, 이를 통해 센서가 장애물을 인식하게 된다. 10cm 부근에서 최대의 전압값을 갖다가 거리가 멀어질수록 다시 전압이 감소하는 형태를 띠고 있다.

모듈 설명

적외선 감지 센서의 사용

다음 회로도에 따라 아두이노를 연결한다. 이때 LED는 꼭 쓸 필요는 없다.

출처: https://blog.naver.com/dokkosam/221217789589

해당 회로도는 오류가 있으니 아래 설명에 맞춰 회로를 연결한다.

 

적외선 장애물 감지 센서의 경우 모듈에 붙어 있는 가변저항 조절을 통해 감도를 조절할 수 있다.

아래 사진 빨간박스 안의 LED를 확인하면서 십자드라이버를 사용하여 감도를 조절한다.

 

감도조절을 하다보면 아래의 LED의 상태가 변하는 지점이 있으며 (꺼짐 → 켜짐 or 켜짐 → 꺼짐) 변하는 지점 부근에서 테스트를 통해 장애물을 인식하는 지점을 쉽게 찾을 수 있다.

 

적외선 장애물 감지 센서의 경우 왼쪽에서부터 'GND핀, VCC핀, 데이터핀'으로 아두이노 보드에 연결한다.

이때 EN핀은 연결하 지 않도록 한다.

// 적외선 장애물 감지 센서는 적외선을 이용해서 앞에 장애물이 있는지 확인하는 센서입니다.
// 적외선 장애물 감지 센서는 디지털 3번 핀으로 설정합니다.
int infrared  = 12;
// LED는 디지털 6번핀으로 설정합니다.
int led = 13;

// 실행시 가장 먼저 호출되는 함수이며, 최초 1회만 실행됩니다.
// 변수를 선언하거나 초기화를 위한 코드를 포함합니다.
void setup() {
  // 적외선 장애물 감지 센서 핀을 INPUT으로 설정합니다.
  pinMode(infrared, INPUT);
  // LED 핀을 OUTPUT으로 설정합니다.
  pinMode(led, OUTPUT);

  // 적외선 장애물 감지 센서의 상태를 확인하기 위하여 시리얼 통신의 속도를 설정합니다.
  Serial.begin(9600);
}

// setup() 함수가 호출된 이후, loop() 함수가 호출되며,
// 블록 안의 코드를 무한히 반복 실행됩니다.
void loop() {
  // 적외선 감지 센서 부터 센서값을 읽습니다.
  // 감지되면 0, 감지되지 않으면 1이 나옵니다.
  int state = digitalRead(infrared);

  // 측정된 센서값을 시리얼 모니터에 출력합니다.
  Serial.print("Infrared = ");
  Serial.println(state);

  delay(1000);
  // 측정된 센서값이 0(감지)면 아래 블록을 실행합니다.
  if(state == 0){
    // LED를 켜지도록 합니다.
    digitalWrite(led, HIGH);
    // 경보 메세지를 시리얼 모니터에 출력합니다.
    Serial.println("Warning");
  }

  /// 측정된 센서값이 0 이외(감지되지 않음) 이면 아래 블록을 실행합니다.
  else{
    // LED를 꺼지도록 합니다.
    digitalWrite(led, LOW);
    // 안전 메세지를 시리얼 모니터에 출력합니다.
    Serial.println("Safe");
  }
}
728x90
반응형
댓글