본문으로 바로가기

  아두이노(Arduino) 기초 센서 6편 적외선 거리센서  


애드라이프의 아두이노 모든 포스팅 리스트를 보고 싶으신 분은 공지 읽어주세요.



안녕하세요. 애드라이프입니다.

이번에 포스팅하려는 센서서는 적외선 거리센서입니다.

이전 포스팅중에 거리관련된 센서를 포스팅한적이 있는데

초음파센서였습니다. 초음파센서는 말 그대로 음파(소리)를 이용해 거리를 측정하는 방식이고

이번 적외선 센서는 빛을 이용해 거리를 측정하는 센서가 되겠습니다.


바로 센서 실물을 확인 하겠습니다. ▼(2Y0A21)

아두이노 적외선 거리센서




적외선 센서의 원리는 송신부에서 보내는 적외선이 물체에 반사되어

수신부로 들어올때의 반사각에 대한 차이로 거리를 측정합니다.

정확한 원리는 아래 링크를 참고해주세요.


적외선센서의 원리(링크)


센서를 사용하기 전에 센서에 대한 Datasheet를 확인하고 넘어가겠습니다.

아래표에서 입력전압과 거리에 따른 Vout을 꼭 확인하세요.▼

아두이노 적외선 거리센서 데이터 시트


아래 발췌내용은 디지털 방식 센서의 출력과 아날로그 방식의 출력을 나타냅니다. ▼

아두이노 적외선 거리센서 데이터 시트

저희는 아날로그 방식 센서 측정방법을 사용할 예정이기때문에 아래 그래프의 정보를 참고하시면 됩니다.

그래프의 특성을 간단히 설명하면 0~10cm 사이의 전압은 거리에 따른 비례방식으로 전압이 나타나지 않습니다.

그래서 신뢰도가 떨어지는 것이죠. 80cm 이상에서는 거의 변화가 없어 무의미 하죠.


하지만 이론적인 수치를 그래프로 그려놓은 것이기 때문에 실제 측정되는 수치와 다를 수 있습니다.

주변환경과 센서상태에 따라 측정수치는 크게 달라질 수 있습니다.

이제 회로도를 구성해 살펴보도록 하겠습니다.

아두이노 적외선 거리센서

아두이노 우노 보드에 바로 적외선 거리센서만 연결하면 준비는 끝입니다.


그럼 프로그램을 살펴 보겠습니다.▼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int pinNum = A0;                        //적외선거리센서의 데이터단을 아두이노 아날로그 A0핀에 연결
float distance = 0.0;                   //실제 거리를 저장할 변수를 Float형으로 선언
 
void setup() {
  Serial.begin(9600);                  //통신속도 9600
  pinMode (pinNum, INPUT);              //A0핀을 INPUT으로 역할 설정
}
void loop() {
  int data = analogRead(pinNum);        // A0핀에 입력된 적외선 거리센서의 값 (0~1023)을 data에 저장
  int volt = map(data, 0102305000); //거리계산이 용의하게 data의 범위를 조정
  distance = (22.5/(volt-0.1696))*1000;    //거리계산
  Serial.print(" 거리센서 LOW 데이터 : ");Serial.print(data);
  Serial.print(" LOW 데이터 범위조정 : ");Serial.print(volt);
  Serial.print(" 측정거리 : ");Serial.print(distance);Serial.print("cm");
  Serial.println();
  delay(100); 
}
cs

프로그램의 전체적인 흐름은 주석을 확인해주세요.


위 프로그램을 업로드 하여 시리얼 모니터에 출력되는 

결과를 확인 하면서 이번 포스팅을 끝내겠습니다.

점차 거리를 멀리하며 출력되는 결과를 캡쳐한 것입니다.


지금까지 아두이노(Arduino) 기초 적외선거리센서(2Y0A21)에 대한 포스팅이였습니다.

계속해서 도움되는 포스팅으로 찾아뵙겠습니다.

by 애드라이프