초음파 센서 (SRF05와 SRF08)
초음파 센서 : 초음파를 이용하여 물체와의 거리를 측정하는 센서
원리 : 발신부에 10ms의 신호를 주어 발생시키고, 반사되어 되돌아온 초음파를 수신부가 수신할 때 두 신호의 시간 차를 측정하여 거리 계산
<SRF05 Datasheet>
<통신 과정>
- Trigger 핀으로 신호 전송 : 마이크로 컨트롤러를 통해 Trigger 핀에 10μs 이상의 HIGH 신호 전송
- 초음파 방출 : 센서가 초음파를 방출하고 Echo 핀을 LOW에서 HIGH로 변경
- 에코 신호 수신 : 초음파가 물체에 반사되어 돌아오면 Echo 핀의 HIGH 상태가 끝남
- 펄스 길이 측정 : Echo 핀의 HIGH 상태 지속 시간을 측정하여 거리를 계산
<SRF05 작동 순서도>
<ST와 SRF05 결선도>
-> SRF05의 측정 값을 실시간으로 보기 위해서 USB to TTL을 UART 통신을 통해서 STM32와 연결
<SRF05 코드 설명>
========================================================================================
<SRF08 Datasheet> => I2C 방식
<SRF08 작동 순서도>
<SRF08과 STM32 결선도>
-> SRF08의 측정 값을 실시간으로 보기 위해서 USB to TTL을 UART 통신을 통해서 STM32와 연결
< SRF08 명령>
SRF05와 다르게 SRF08은 I2C 통신을 통하여 SRF08의 내부 칩(레지스터)에 명령을 내려서 데이터를 얻을 수 있다.
<SRF08 코드 설명>
========================================================================================
<SRF05와 SRF08 실험을 통한 비교>
-통신 방식의 차이
-> 필자의 경우 실외 프로젝트를 진행할때 두 개의 센서 중 하나의 센서를 골라야했다.
-> 양쪽에 센서를 달아 동시에 두개를 제어해야 했기에, SRF08의 1 : 다수 통신으로 여러개의 장치를 동시에 제어하고, SCL이 High일 때만 선택적으로 데이터를 수신할 수 있는 I2C 방식이 적합하다고 판단해서 SRF08을 로봇의 비상 정지용으로 사용하였다.
-보정 값의 존재 여부
-> SRF05는 값이 들어올 때 튀는 경우가 종종 발생해 안정시키기 위해 평균 필터를 적용하여 보정을 해주었지만, SRF08은 측정 값이 튀지 않아 보정을 따로 해주지 않았다.
-> 실시간으로 쓰기에 SRF08이 적합하다고 판단하였다.