초음파 센서 정확도 - cho-eumpa senseo jeonghwagdo

공지 목록

공지글

글 제목작성일

(8)

공지 졸업 작품 / 캡스톤 디자인 과외 및 지도해 드립니다.

2020. 4. 15.

공지 아두이노 프로젝트 의뢰 문의

2020. 4. 20.

(47)

공지 (공지) 블로그 앱(자료다운) 사용 방법 및 질의 방법

2020. 3. 24.

초음파 센서(HC-SR04)의 정밀도는?

이번에는 초음파 센서 HC-SR04에 대한 정밀도 테스트를 진행했습니다.

교육용으로 사용되는 아두이노에 사용하는 센서들의 정밀도가 얼마나 될지 궁굼했던 부분입니다.

테스트 결과는 몇가지 조건이 만족하여야만 의미 있는 거리가 측정이 되었습니다.

연직 수평으로 초음파의 방향과 벽면의 방향이 연직이어야 합니다.

연직이 아닌 경우 초음파의 난반사로 인하여 측정거리가 틀려지는 것으로 보이며

그 정도는 무시할 수 있을 정도의 수치는 아니었습니다.

아래 영상은 기본 세팅을 하고 자를 양쪽에 설치하여 장애물이 초음파의 방향과

최대한 연직이 되도록 테스트한 영상입니다.

5~30Cm 사이에 대한 측정을 하였으며 결과는 약 5mm미만의 오차가 발생하는 것으로 확인이 되었습니다.

구동 영상

//youtu.be/wwqRAtXSohY

초음파 센서(HC-SR04) 구동하기 기존 강좌

초음파센서로 거리측정

HC-SR04 초음파 센서

HC-SR04 초음파 센서는 아두이노의 기본 모듈로 초음파를 이용하여 장애물과의 거리를 측정하는 센서 입니다.

초음파 센서는 다음과 같이 생긴 모듈이며 전면에 눈과 같이 생긴 2개의 초음파 송수신부를 가지고 있습니다.

초음파 센서는 VCC와 TRIG, ECHO, GND핀을 가지고 있습니다.

VCC와 GND핀의 경우 아두이노의 5V와 GND에 연결하여 전원을 공급을 합니다.

주의할 점은 HC-SR04 초음파센서의 경우 5V의 전압에서만 구동을 합니다.

따라서 ESP8266과 같은 3.3V로 구동되는 MCU의 경우 전원 구성에 주의를 하셔야 합니다.

ESP8266의 3.3V에 초음파센서의 VCC를 연결하면 구동되지 않습니다.

(이를 보완한 HC-SR04P라는 3.3V에서도 구동이 가능한 초음파 센서 모듈도 있습니다.)

TRIG핀은 초음파을 송신하기 위한 신호를 아두이노가 초음파센서에 송신하는 핀입니다.

TRIG핀에서 신호를 받아 초음파센서가 초음파를 송신을 하면 초음파는 전면의 장애물에 반사가 되어 수신부에 인식이 됩니다. 수신부에 초음파가 인식이 되면 ECHO핀이 HIGH가 되며

아두이노에서 초음파 송신후 ECHO에서 HIGH가 인식 될때까지의 시간을 측정하여

시간을 소리의 속도(340m/s)를 이용하여 초음파가 거쳐온 거리를 알 수 있습니다.

예를 들면, TRIG핀에 송신 신호를 보내고 ECHO핀에 HIGH가 될때까지 소요된 시간이 10ms일 경우

이동 거리(m) = 속도(m/s) x 소요시간(s) 입니다.

이동 거리(m) = 340 m/sec x 0.010 sec = 3.4 m가 됩니다.

이를 단위를 환산하여 계산하면

이동거리(cm) = 34,000 cm/sec x 소요시간(micro seconds) / 1000,000

= 0.034 x 소요시간(micro seconds) 이며

장애물과의 거리는 이동거리의 1/2인 0.017 x 소요시간(micro seconds) 으로 계산할 수 있습니다.

12345

1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890

1

int trigPin =13;

2

int echoPin =12;

3

4

voidsetup()

5

{

6

Serial.begin(9600);

7

pinMode(trigPin, OUTPUT);

8

pinMode(echoPin, INPUT);

9

}

10

11

voidloop()

12

{

13

long duration, distance;

14

digitalWrite(trigPin, LOW);

15

delayMicroseconds(2);

16

digitalWrite(trigPin, HIGH);

17

delayMicroseconds(10);

18

digitalWrite(trigPin, LOW);

19

duration = pulseIn(echoPin,HIGH);

20

distance = duration * 17/1000;

21

Serial.print(distance);

22

Serial.println("CM");

23

delay(100);

24

}

관련자료 : hc_sr04 , code_1

HC-SR04 초음파 센서 GPIO 1개 핀으로 사용하기

초음파 센서 HC-SR04의 경우 총 4개의 핀을 가지고 있으며 VCC, TRIG, ECHO, GND입니다.

VCC와 GND는 전원을 공급하게 되며 TRIG에서 초음파 측정 신호를 보내면 초음파 센서는 초음파를 송신하게 되며 이 송신된 초음파가 장애물에 반사되어 다시 수신부로 돌아오는 시간을 측정하여 장애물의 거리를 측정하게 됩니다.

초음파의 속도는 340 m/s 이므로 이를 이용하면 장애물 과의 거리를 측정할 수 있습니다.

보통 초음파 센서를 사용하기 위해서는 이렇게 4개의 핀을 사용하여 구동을 하지만 이를 3개의 핀으로 구동을 할 수도 있습니다.

TRIG핀과 ECHO핀을 묶어 아두이노 핀의 상태를 OUTPUT으로 설정 후 신호를 보내게 되면 이는 초음파 센서의 TRIG핀이 인식하여 초음파를 송신 하게 되며

아두이노는 초음파 송신 이후 바로 핀의 상태를 INPUT으로 변경을 하여 송신된 초음파가 수신되는 시간을 측정하면 됩니다.

이와 같은 방법은 하나의 아두이노에 여러개의 초음파센서를 구동해야 할 경우 매우 유용하게 사용할 수 있습니다.

다음 예는 TRIG핀과 ECHO핀을 하나의 아두이노 핀으로 제어하는 예입니다.

12345

1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890

1

int trigPin =13;

2

int echoPin =13;

3

4

voidsetup()

5

{

6

Serial.begin(9600);

7

}

8

9

voidloop()

10

{

11

long duration, distance;

12

pinMode(trigPin, OUTPUT);

13

digitalWrite(trigPin, LOW);

14

delayMicroseconds(2);

15

digitalWrite(trigPin, HIGH);

16

delayMicroseconds(10);

17

digitalWrite(trigPin, LOW);

18

pinMode(echoPin, INPUT);

19

duration = pulseIn(echoPin,HIGH);

20

distance = duration * 17/1000;

21

Serial.print(distance);

22

Serial.println("CM");

23

delay(100);

24

}

결과는 2개의 GPIO를 사용한 경우와 동일하게 거리가 측정됨을 알 수 있습니다.

관련자료 : hc_sr04 , code_2

HC-SR04P 초음파 센서 사용하기

HC-SR04는 5V에서 구동이 되는 초음파 센서 입니다.

아두이노의 경우 5V로 구동이 되는 모델이 대부분이지만 다른 MCU의 경우 3.3V로 구동되는 MCU들도 많이 있습니다. 그 대표적인 예가 ESP8266 및 STM32의 MCU들 입니다.

이들의 MCU도 대부분 USB로 전원을 공급받아 레귤레이터로 3.3V로 감압하여 MCU에 전원을 공급하기에 대부분 5V를 얻는데 어려움이 없습니다.

하지만 일부 프로젝트의 경우나 아두이노에도 3.3V로 구동이 되는 모델의 경우 배터리를 이용하여 구동하는 경우가 있으며 보통 리듐이온이나 리듐폴리머 배터리를 사용을 하게 됩니다.

이 경우 배터리의 전압은 3.7V로 MCU구동에는 문제가 없지만 초음파 센서 HC-SR04의 경우에는 구동이 되지를 않습니다.

이러한 점을 보완하여 3V~5.5V까지의 구동전압을 가진 모델이 HC-SR04P 초음파 센서 입니다.

이 센서는 모양은 기존 HC-SR04센서와 거의 비슷하지만 전면에 크리스탈의 유무로 간단히 두 센서를 구분할 수 있습니다.

두 센서의 형상을 보면 거의 비슷하지만 좌측의 HC-SR04P센서는 전면의 크리스탈이 없는 것을 알 수 있습니다.

가격은 두 센서가 거의 비슷하기에 구지 HC-SR04를 구매하기 보다 전압의 폭이 넓은 HC-SR04P를 구매하는 것이 좋을 것 같은 생각이 듭니다.

하지만 HC-SR04P의 경우 제가 테스트 한 바로는 1개의 GPIO를 이용한 구동이 되지를 않습니다.

HC-SR04P모듈을 사용하고 1개의 GPIO로 제어하는 구동을 하면 아래와 같이 거리 측정이 되질 않습니다.

아마도 송신 신호를 보내기 위한 TRIG핀이 신호를 보낸 이 후 ECHO의 핀의 구동을 막는 것이 아닌가 싶습니다.

그래서 아래와 같이 송신 신호에 저항을 연결해 ECHO의 신호를 저해하지 않도록 테스트 해 보았습니다.

저항은 10k옴을 사용하였습니다.

결과 다음과 같이 정상적으로 구동되는 것을 확인하였습니다.

또한 이 모듈(HC-SR04P)의 경우 전원을 5V가 아닌 3.3V에 연결하여도 정상적인 결과가 나옴을 확인하였습니다.

초음파 센서(HC-SR04)의 정밀도는?

이번에는 초음파 센서 HC-SR04에 대한 정밀도 테스트를 진행했습니다.

교육용으로 사용되는 아두이노에 사용하는 센서들의 정밀도가 얼마나 될지 궁굼했던 부분입니다.

테스트 결과는 몇가지 조건이 만족하여야만 의미 있는 거리가 측정이 되었습니다.

연직 수평으로 초음파의 방향과 벽면의 방향이 연직이어야 합니다.

연직이 아닌 경우 초음파의 난반사로 인하여 측정거리가 틀려지는 것으로 보이며

그 정도는 무시할 수 있을 정도의 수치는 아니었습니다.

아래 영상은 기본 세팅을 하고 자를 양쪽에 설치하여 장애물이 초음파의 방향과

최대한 연직이 되도록 테스트한 영상입니다.

5~30Cm 사이에 대한 측정을 하였으며 결과는 약 5mm미만의 오차가 발생하는 것으로 확인이 되었습니다.

//youtu.be/wwqRAtXSohY

강좌에 사용한 부속

아두이노 우노 R3 보드 호환보드 CH340

//mecha.kr/WtE8Kz

아두이노 우노, 메가 USB 전원,통신 케이블 50cm

//mecha.kr/ihRs0m

브레드보드 830핀 포인트 / Breadboard 830pin MB-102 / MB102

//mecha.kr/AQev78

40핀 커넥터 M-M (Male - Male) 10, 20, 30 cm 점퍼케이블 / 점퍼선

//mecha.kr/KP02

HC-SR04+ 초음파 거리 센서 / 3.3V,5V 호환

//mecha.kr/dz3K5c

1/4W 막대저항 키트 10개씩 50종류 1옴~1M옴

//mecha.kr/7FIvGM

l 아두이노 기본 키트

아두이노를 공부하기 위한 추천하는 기본 키트입니다.

처음봐, 아두이노 종결 키트 (중급편)

//mecha.kr/fkm5g1

CODE : KP14

Toplist

최신 우편물

태그