코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2015-01-16 15:02:29
인간의 들을 수 있는 소리의 영역(가청영역)은 약 20~20000Hz 사이 이며, 이 가청영역의 주파수보다 더 높은 음을 초음파(Ultrasonic)라고 합니다.
강아지의 가청영역은 15~50000Hz이며, 돌고래의 경우 150~150,000Hz이니 인간이 듣지 못하는 소리를 동물들은 들을 수 있습니다.
초음파의 속도는 일반 공기중에서 약 340m/s이며, 파동의 성질인 확산, 흡수, 산란 등에 의해 감쇠하는 성질을 가지고 있습니다.
초음파 센서는 이미 로봇 청소기 같은 가전제품에서부터 자동차의 감지 센서, 초음파 탐지기 등 의료용, 산업용에 이르기까지 매우 다양한 분야에서 활용되고 있습니다.
이 예제에서 사용된 초음파 센서는 약 40KHz 정도의 주파수를 생성하며, 최대 4~5m정도까지의 거리를 측정할 수 있습니다.
거리측정을 위한 초음파 센서는 송신부와 수신부로 나뉘어져 있으며, 송신부에서 일정한 시간의 간격을 둔 짧은, 초음파 펄스를 방사하고, 대상물에 부딪혀 돌아온 에코 신호를 수신부에서 받아, 이에 대한 시간차를 기반으로 거리를 산출합니다.
이를 통해 장애물의 유무, 물체의 거리 또는 속도 등을 측정할 수 있습니다.
초음파를 발생시키는 원리는 피에조 부저가 소리나는 원리인 피에조효과(압전효과)와 같습니다.
초음파 센서의 송신부(Trig)에서 일정한 시간의 간격을 둔 짧은, 초음파 펄스를 방사하고, 대상물에 부딪혀 돌아온 에코 신호를 수신부(Echo)에서 받아, 이에 대한 시간차를 기반으로 거리를 산출합니다.
1cm를 이동하는데 걸리는 시간은 다음과 같이 구할 수 있습니다.
따라서, t = 2 * 0.01 / 340 = 58.824µs 로, 초음파가 1cm를 이동하는데 걸리는 시간은 약 29µs가 걸리며, 초음파가 반사된 물체와의 거리는 다음과 같이 구할 수 있습니다.
거리(cm) = duration (왕복에 걸린시간) / 29 / 2 (왕복)
NO | 부품명 | 수량 | 상세설명 |
1 | 오렌지 보드 | 1 | |
2 | 초음파 센서 | 1 | HC-SR04 |
3 | LED | 1 | LED(RED) |
4 | 330Ω 저항 | 1 | |
5 | 브레드 보드 | 1 | |
6 | 점퍼 케이블 | 8 |
부품명 | 오렌지 보드 | 초음파 센서 | LED |
파트 |
부품명 | 330Ω 저항 | 브레드 보드 | 점퍼 케이블 |
파트 |
1. 오렌지보드의 5V핀을 브레드보드의 +버스에 연결합니다.
2. 오렌지보드의 GND핀을 브레드보드의 -버스에 연결합니다.
3. 초음파센서를 그림과 같이 세로로 꽂습니다.
4. LED를 애노드(긴 단자)가 아래쪽으로 향하게하여 꽂습니다.
5. LED의 애노드에 330Ω 저항을 연결합니다.
6. 초음파센서의 Vcc단자를 +버스에 연결합니다.
7. 초음파센서의 Trig단자를 오렌지보드 8번핀에 연결합니다.
8. 초음파센서의 Echo단자를 오렌지보드 9번핀에 연결합니다.
9. 초음파센서의 Gnd단자를 -버스에 연결합니다.
10. LED 애노드와 연결된 저항을 오렌지보드 A0번핀에 연결합니다.
11. LED 캐소드(짧은)를 -버스에 연결합니다.
TIP pulseIn에서 In은 LN이 아닌 IN입니다.
trig핀과 echo핀
초음파센서에서는 2가지의 신호 제어핀이 있습니다. 바로 trig핀과 echo핀인데요.
두 역할을 확실히 이해한다면 코드를 읽기 좀 더 수월합니다.
trig핀은 초음파를 쏘는 역할을 하기 때문에 아두이노 입장에서는 출력의 역할을 하는 핀이고 그렇기 때문에 pinMode(trig,OUTPUT);을 선언합니다.
반대로 echo핀은 초음파를 받아들이는 역할이므로 pinMode(echo,INPUT);이 됩니다.
loop()에서는 처음에 trig, echo핀 모두 LOW신호를 줌으로써 아무 동작도 하지않는 초기화상태를 만듭니다.
그 후에 trig핀에 신호를 10us만큼 주게 되는데 이 신호는 초음파를 발사하는 신호가 아닙니다.
데이터시트를 확인하게 되면 trig핀에 10us만큼 신호가 들어가게 되면 그 다음에 8번의 초음파가 발사됩니다.
초음파를 쏘기 위한 사전 신호로 보시면 됩니다.
그 후에는 pulseIn()함수를 통해 초음파가 장애물에 부딪혀서 돌아온 왕복 시간을 측정하게 됩니다.
pulseIn()함수
pulseIn()함수는 특정 시간을 측정하기 위해 사용하는 함수 입니다.
pulseIn(3,HIGH)라면 3번핀이 HIGH신호를 유지하고 있는 동안의 시간을 측정하게됩니다.
LOW->HIGH로 바뀔때 시간측정을 시작하고 HIGH->LOW로 바뀌는 순간 시간 측정을 중지합니다.
위 코드에서는 unsigned long duration = pulseIn(echo, HIGH); 이기 때문에
echo핀이 HIGH신호를 유지하고 있는 동안의 시간을 측정하게 됩니다.
코드 실행
위 코드를 실행시키면 초음파로 거리를 측정하고 측정된 거리에 따라 10cm를 기준으로 10cm보다 적을 경우 LED를 켜고
10cm보다 멀면 LED를 끕니다.
초음파센서는 전방에 있는 장애물을 감지하여 거리값을 반환하는데 이 특성을 이용하여
손을 인식하면 자동으로 열리는 스마트 휴지통을 만들었습니다.
휴지통에 만지면서 열고 닫고가 찜찜할 때 초음파센서를 부착하면 자동으로 열리게 됩니다.
kocoafabeditor
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!