부품설명

자주 사용하는 부품들의 사용법에 대하여 알아봅니다.

초음파 거리 센서 사용하기

2014-08-05 16:35:54

개요

초음파 거리센서는 초음파를 대상에게 발사하여 반사되어 오는 반사파를 받을 때까지의 시간을 확인하여 거리를 측정하는 센서 입니다.


사진 출처 : DangerousPrototypes

초음파 거리센서를 이용해 거리측정을 하여 물체가 가까이 있을 경우 진동이 울리는 시각장애인들을 위한 장갑을 만들 수도 있고, 



사진 출처 : MCU on Eclipse

로봇에 부착하여 로봇이 물체에 충돌하지 않도록 움직임을 제어 할 수 있습니다.


이 컨텐츠에서는 초음파 거리 센서를 아두이노와 연결해 보고, 물체와의 거리를 측정 해보겠습니다.

 

 

 

 

 
 

 

초음파 거리 센서(링크)

  - 초음파는 사람의 귀로 들을 수 없는 주파수가 20Khz 이상의 음을 말합니다.
  - 초음파 거리 센서는 초음파를 보내고 받는 시간을 측정하여 거리를 재는 센서입니다.

 

 

부품 목록

NO 부품명 수량 상세설명
1 오렌지보드 1 아두이노
2 초음파 거리 센서 1 초음파 거리 센서
3 브레드보드 1 브레드보드
4 점퍼케이블 4 점퍼케이블

 

 

부품명 오렌지보드 초음파 거리 센서 브레드보드 점퍼케이블
파트 x1 x1 x1 x4


 

 

하드웨어 making

 

회로도

 

 

브레드보드 레이아웃

 

 

 

소프트웨어 coding

 

//초음파 센서의 핀번호를 설정한다.
int echoPin = 12;
int trigPin = 13;

void setup() {
	Serial.begin(9600);
	// trig를 출력모드로 설정, echo를 입력모드로 설정
	pinMode(trigPin, OUTPUT);
	pinMode(echoPin, INPUT);
}

void loop() {

	
	// 초음파를 보낸다. 다 보내면 echo가 HIGH 상태로 대기하게 된다.
    digitalWrite(trig, LOW);
    digitalWrite(echo, LOW);
    delayMicroseconds(2);
    digitalWrite(trig, HIGH);
    delayMicroseconds(10);
    digitalWrite(trig, LOW);

	
	// echoPin 이 HIGH를 유지한 시간을 저장 한다.
    unsigned long duration = pulseIn(echoPin, HIGH); 
	// HIGH 였을 때 시간(초음파가 보냈다가 다시 들어온 시간)을 가지고 거리를 계산 한다.
	float distance = ((float)(340 * duration) / 10000) / 2;  
	
	Serial.print(distance);
	Serial.println("cm");
	// 수정한 값을 출력
	delay(500);
}

 

 

 

소프트웨어 설명

 * 이 코드는 스케치를 사용하여 작성 / 업로드 합니다. 스케치에 대한 사용법은 링크를 참고하시기 바랍니다.

  duration = pulseIn(echoPin, HIGH); // echoPin 이 HIGH를 유지한 시간을 저장 한다.
  distance = ((float)(340 * duration) / 10000) / 2;  // HIGH 였을 때 시간(초음파가 보냈다가 다시 들어온 시간)을 가지고 거리를 계산 한다.

위의 코드를 이해하기 위해서는 초음파 센서의 원리 알아야 합니다.

간단하게 설명하면 trig이 HIGH 가 되면 초음파를 보내게 됩니다. 초음파를 다 보내면 echo가 HIGH상태를 유지하면서 되돌아오는 초음파를 받을 준비를 합니다.

초음파가 앞에 물질에 부딪혀 다시 돌아오면 echo가 LOW 로 바뀌게 됩니다. HIGH 에서 LOW로 바뀔 동안의 시간을 측정하여 duration에 저장합니다.
(pulseIn(pin, state)은 어느 pin에서 어떤 상태(state)로 얼마나 유지되고 있는지를 구합니다.)

초음파는 340m/s의 속도로 날라갑니다.(온도가 25도 일 때)
이 때 속도와 센서가 보낸 시간을 이용하여 거리를 구합니다.(왕복해서 오는 것이므로 결과를 2로 나눠줘야 합니다)

 

 

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

초음파 거리 센서, 아두이노, 오렌지보드