본문 바로가기
유용한정보모음

아두이노 Arduino 초음파 거리 센서 사용

by 유익한일상입니다 2020. 7. 27.
반응형
728x170

HC-SR04

초음파 센서는 초음파를 쏜 뒤 돌아오는 시간을 계산해 거리를 측정할 수 있는 센서입니다. 초음파 센서의 기본적인 정보와 사용법 그리고 프로그램 코딩을 말씀드리겠습니다.

초음파 센서

HC-SR04 초음파 센서

아두이노용 초음파 센서의 경우 'HC-SR04' 모듈을 많이 사용합니다. 흡사 스피커와 자동차 배기구 처럼 생겼습니다.

초음파는 인간이 들을 수 있는 최대 한계 범위를 넘느 주파수를 갖는 음압을 의미합니다. 사람이 들을 수 없는 고주파 영역의 음파를 말하며, 보통의 사람은 20KHZ 정도의 영역을 감지할 수 있고 그 이상의 영역의 경우 초음파 영역이라고 지칭합니다.

아두이노에서 사용하는 HC-SR04 초음파 센서는 40KHZ 영역대의 초음파를 방출하고 송신기 수신기 두개의 트랜스 듀스와 수신기에서 방출된 초음파가 물체에 반사돼 수신기에 다시 돌아오는 시간을 통해 거리를 계산합니다.

간단 원리

동작 전압 5V DC
동작 전류 15mA
측정 범위 2~400cm
오차 0.3cm
초음파 속도 340m/s
발생 초음파 약 40khz
effectual angle <15도

HC-SR04 센서 연결 방법

HC-SR04의 경우 다른 센서들과 같이 이용하지 않는 경우 연결은 비교적 간단합니다. 초음파 센서는 5V 전압에서 구동하며 센서의 VCC핀을 5V에 GND는 GND에 그대로 연결합니다. 송신부인 chirp 모듈에서 trig 핀은 아두이노 판 13번 핀에 연결하고 수신부인 echo 핀은 9번 핀에 연결합니다. 프로그램 코딩을 이 숫자로 쓸거라 여기 꽂았습니다. 편하신 숫자에 꼽고 코딩 내용을 바꾸시면 됩니다.

예시

HC-SR04의 간단 코딩 소스

 

int echo = 9; //echo port
int trig = 13; //trigger port
float cycletime;
float distance;
void setup() 
{

Seiral.begin(9600);

pinMode(echo, INPUT);
  pinMode(trig, OUTPUT); 
  } 
  void loop() 
  {
    digitalWrite(trig, HIGH); 
    delay(10); 
    digitalWrite(trig, LOW); 
    cycletime = pulseIn(echo, HIGH); 
    distance = ((340 * cycletime) / 10000) / 2; 

Serial.print(distance);

Serial.println("cm")

delay(100);//상황에 맞게 딜레이 조절

}

설명

HC-SR04 초음파 센서 는 아두이노 센서 이용 시 필요한 여러 라이브러리를 필요로 하지 않습니다. 주로 digitalWrite와 pinMode 명령어를 사용합니다. 그리고 pulseln 명령어를 사용해 임의로 거리를 측정하는 코딩을 하도록 하겠습니다. 딜레이는 임의로 100 값을 주겠습니다.

pinmode output, input : 초음파 센서 trig핀은 초음파를 내보내고 echo핀으로 다시 음파를 받기 때문에 이 설정을 합니다.

pulsln 함수는 핀번호, 상태의 형태로 돼있으며 핀 상태가 바뀌면 그때까지 경과한 값을 ms 단위로 반환해줍니다.

distance는 거리를 cm단위로 측정하기 위해 속도(340m/s)의 음파가 돌아오는 시간을 계산한 식입니다.

 

 

 

시리얼 모니터 

그리드형