아두이노(Arduino) 기초 센서 4편 - 초음파 거리센서
애드라이프의 아두이노 모든 포스팅 리스트를 보고 싶으신 분은 공지를 읽어주세요.
안녕하세요. 애드라이프입니다.
이번엔 초음파를 이용한 거리측정 센서를 가지고 포스팅하겠습니다.
저는 개인적으로 이 센서의 생김새가 옛날 오디오 처럼 생겨서 좋아하는 센서입니다.
초음파 거리센서(HC-SR04) ▼
인가전압 : +5V
주파수 : 40khz
최대측정거리 : 3M
최소측정거리 : 3cm
<측정거리는 반사체의 재질과 주변환경에 영향에 따라 조금 차이가 있을 수 있습니다.>
어떻나요? 옛날 오디오 모양처럼 생겼죠?
실제로 초음파을 이용하여 거리를 측정하는것은 주변에 많이 쓰이고 있습니다.
자동차의 거리감지 센서나 선박의 충돌방지센서 등이 대표적이라 할 수 있죠.
(박쥐나 돌고래 같은 동물들도 초음파을 사용하죠.)
그럼 어떤 원리로 거리를 측정하는 걸까요?
간단한 그림으로 그려봤습니다만...그림실력은 장담 못합니다.
저와 같은 수.알.못을 위한 설명이 있어야 겠죠?
그림에서 음속은 340m/s라고 되어있습니다.
1초에 340m이동한다는 소리입니다.
즉 1m =100cm = 1초/340 = 2.9ms 임으로
1m이동하는데 2.9ms가 걸린다는 해석이 나옵니다.
그럼 1cm = 29μs가 되겠죠?
이 수치를 기준으로 구하고자 하는 거리를 계산하면 됩니다.
거리를 계산하는 법도 알았으니 회로를 봐볼까요?
이번 포스팅은 프로그램 자체가 응용이라고 할 수 있기 때문에 회로가
아두이노와 초음파 거리센서만으로 구성되어있습니다.
그럼 바로 프로그램으로 넘어가겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | int echoPin = 3; //초음파 거리센서의 Echo핀을 디지털포트 3번에 연결 int trigPin = 2; //초음파 거리센서의 Trig핀을 디지털포트 2번에 연결 void setup() { Serial.begin(9600); //통신속도 9600 pinMode(trigPin, OUTPUT); //디지털포트 2번을 OUPUT으로 설정 pinMode(echoPin, INPUT); //디지털포트 3번을 INPUT으로 설정 } void loop() { digitalWrite(trigPin, LOW); //초음파을 발생시키는 코드입니다. digitalWrite(echoPin, LOW); delayMicroseconds(2); //마이크로세컨드 단위의 딜레이 digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); unsigned long duration = pulseIn(echoPin, HIGH); //echoPin의 HIGH신호가 지속되는 시간을 마이크로세크단위로 반환합니다. float distance = ((float)(340 * duration) / 10000) / 2; //duration(초음파가 발생되고 물체에 반사되어 돌아오는 시간)/2*음속(cm/s) Serial.print(distance); //시리얼 모니터에 거리값을 cm로 출력 Serial.println("cm"); delay(500); } | cs |
프로그램의 전체적은 흐름은 주석을 참고해 주세요.
프로그램에서 처음으로 나온 함수가 있습니다.
자세한 내용은 위 링크를 클릭하시면 볼수 있습니다. ▲
간단히 설명하면 PinNumber에 설정된 Pin의 상태가 HIGH 또는 LOW인지를 체크하는 함수입니다.
이 함수를 이용하여 초음파가 발생되고 나서 물체에 반사되어
다시 돌아오는 시간을 마이크로 단위로 반환 받을 수 있습니다.
주의 해야 할 점은 10마이크로 초부터 3분까지의 펄스신호에 반응한다는 것입니다.
실제 프로그램을 업로드하여 시리얼 모니터에 출력되는 값을 확인하면서 포스팅을 끝내겠습니다.
여러분들도 초음파센서에서 물체를 가까이 또는 멀리 하면서 거리를 측정해 보세요.
단, 철사나 실 같은 초음파가 반사되지 않는 물질을 사용할 경우에는 제대로 측정 되지 않을 수 있습니다.
지금까지 아두이노(Arduino) 기초 센서 4편 - 초음파 거리센서 포스팅이였습니다.
계속해서 도움되는 포스팅으로 찾아뵙겠습니다.
by 애드라이프
'아두이노 > 아두이노 기초' 카테고리의 다른 글
아두이노(Arduino) 기초 센서 6편 적외선거리센서(2Y0A21) (2) | 2018.11.16 |
---|---|
아두이노(Arduino) 기초 센서 5편 - 압력센서와 휨센서 (2) | 2018.11.15 |
아두이노(Arduino) 기초 센서 3.5편 - 소리감지 센서 (0) | 2018.11.06 |
아두이노(Arduino) 기초 센서 3편 - 화재감지, 기울기감지, 진동감지 센서 (0) | 2018.11.06 |
아두이노(Arduino) 기초 센서 2편 - 온습도 센서(DHT11) (0) | 2018.11.06 |