[매드정] 아두이노 강좌 - 17. 초음파 센서 동작

안녕하세요~ 매드 입니다.

지난주 개인 사정으로 진행을 못해서 주중에 한다고 한게 어느세 금요일이 되어 버렸네요.
ㅡ,.ㅡ;

어.. 어쨋든 주중이라고 생각하고 강좌를 시작해 보겠습니다!~

이번 시간에는 거리를 측정할 수 있는 '초음파 센서' 에 대해서 알아보도록 하겠습니다.


17-1. 초음파란?

< 출처 : 구글 사진 >

이야.. 제가 이래서 인터넷과 구글을 사랑합니다. 찾으면 없는게 없어요 >.<

저희가 사용할 초음파센서도 위와 같은 HC-SR04 라는 모델인데요. 설명이 아주 잘 나와있네요~
초음파 Sender 에서 초음파가 나가서 물체를 통해 반사되어 돌아오는 것을 초음파 Receiver에서 받아 거리를 측정하게 됩니다.

어떻게요?

초음파의 속도를 시간으로 체크해서 알아내는 것이죠. 이게 무슨 소리냐하면 일종의 박쥐와 같은 기능인데요. 소리를 내서 물체로부터 반사되어 돌아오는 시간을 측정하면 거리를 알 수 있다는 것입니다.

그러면 소리의 속도를 알아야겠죠?

소리의 속도는 상온의 공기 중에서 약 340m/s 입니다.

1초라는 시간이 지나면 340m 이동한 것이구요. 0.5초는 340/2 = 170m 가 되겠죠!

따라서 초음파 Sender에서 초음파 소리는 낸 다음 시간을 측정하고 측정한 시간을 340m/s와 곱해주면 거리를 알 수 있는 것입니다.

측정거리 = ( 340m/s * 측정시간(s) ) / 2

그런데 왜 나누기 2를 하냐구요?~ 왜냐하면 물체에서 반사되어 돌아오기 때문에 왕복하는 거리를 제외하기 때문이죠!

간단하죠?

< 출처 : 구글 사진 >

이런 초음파가 무엇이냐하면 음파의 종류 중에 하나 인데요. 사람이 귀로 들을 수 있는 소리(주파수 영역)을 가청주파수 라고 합니다.

사람마다 편차는 있지만 대략 16hz에서 20000hz 까지를 가청주파수라고 생각하면 될 것 같네요. 이 범위를 벗어나는 소리는?? 사람은 들을 수 없습니다.

그래서 박쥐라던가 기타 여러 진동으로부터 발생되는 소리를 들을 수 없는 것이죠.

상식이니 알아두면 좋을 것 같네요~ >.<


17-2. 초음파 센서 회로

< 출처 : 구글 사진 >

초음파 센서 회로를 보면 위와 같이 되어 있네요~ 전원부에 5V와 GND를 연결하고 Trig는 아두이노의 7번포트, Echo는 아두이노 8번 포트에 연결하면 됩니다. 정리하면

아두이노    초음파센서
5V            VCC
GND         GND
7pin         Trig(Sender)
8pin         Echo(Receiver)


17-3. 펌웨어 코드

void setup()
{
  Serial.begin(9600);
  pinMode(7,OUTPUT); // 센서 Trig 핀
  pinMode(8,INPUT); // 센서 Echo 핀
}

void loop()
{
  long duration, cm;

  digitalWrite(7,HIGH); // 센서에 Trig 신호 입력
  delayMicroseconds(10); // 10us 정도 유지
  digitalWrite(7,LOW); // Trig 신호 off

  duration = pulseIn(8,HIGH); // Echo pin: HIGH->Low 간격을 측정
  cm = microsecondsToCentimeters(duration); // 거리(cm)로 변환

  Serial.print(cm);
  Serial.print("cm");
  Serial.println();

  delay(500); // 0.5초 대기 후 다시 측정
}

long microsecondsToCentimeters(long microseconds)
{
  return microseconds / 29 / 2;
}



이번주 주말 강좌에서는 요즘에 핫하게 떠오르는 심박센서에 대해서 알아보도록 하겠습니다. 흐흐흐... 동영상 강좌를 재밌게하고 싶은데 쉽지가 않네요 ㅠㅠ

요즘 라즈베리파이도 하고 있는데 시간되면 그것도 겸사겸사 해보겠습니다~

그럼 수고하셨구요!

다음주에 뵐께요~ >.<

댓글 쓰기

0 댓글