STM32 정리

초음파 센서 (SRF05와 SRF08)

dawon-project 2025. 1. 10. 15:38

초음파 센서 : 초음파를 이용하여 물체와의 거리를 측정하는 센서

원리 : 발신부에 10ms의 신호를 주어 발생시키고, 반사되어 되돌아온 초음파를 수신부가 수신할 때 두 신호의 시간 차를 측정하여 거리 계산

<SRF05 Datasheet>

<통신 과정>

  1. Trigger 핀으로 신호 전송 : 마이크로 컨트롤러를 통해  Trigger 핀에 10μs 이상의 HIGH 신호 전송
  2. 초음파 방출 : 센서가 초음파를 방출하고 Echo 핀을 LOW에서 HIGH로 변경
  3. 에코 신호 수신 : 초음파가 물체에 반사되어 돌아오면 Echo 핀의 HIGH 상태가 끝남
  4. 펄스 길이 측정 : Echo 핀의 HIGH 상태 지속 시간을 측정하여 거리를 계산

<SRF05 작동 순서도>

<ST와 SRF05 결선도>

-> SRF05의 측정 값을 실시간으로 보기 위해서 USB to TTL을 UART 통신을 통해서 STM32와 연결

<SRF05 코드 설명>

012
SRF05 코드

 

srf05.zip
8.69MB

 

========================================================================================

 

<SRF08 Datasheet>  => I2C 방식

<SRF08 작동 순서도>

 

<SRF08과 STM32 결선도>

-> SRF08의 측정 값을 실시간으로 보기 위해서 USB to TTL을 UART 통신을 통해서 STM32와 연결

 

< SRF08 명령>

SRF05와 다르게 SRF08은 I2C 통신을 통하여 SRF08의 내부 칩(레지스터)에 명령을 내려서 데이터를 얻을 수 있다.

 

<SRF08 코드 설명>

 

01234
SRF08 (2).PDF
0.32MB

 

srf08.zip
9.39MB

 

========================================================================================

 

<SRF05와 SRF08 실험을 통한 비교>

012

 

-통신 방식의 차이
 -> 필자의 경우 실외 프로젝트를 진행할때 두 개의 센서 중 하나의 센서를 골라야했다. 

  -> 양쪽에 센서를 달아 동시에 두개를 제어해야 했기에, SRF08의 1 : 다수 통신으로 여러개의 장치를 동시에 제어하고, SCL이 High일 때만 선택적으로 데이터를 수신할 수 있는 I2C 방식이 적합하다고 판단해서 SRF08을 로봇의 비상 정지용으로 사용하였다.

-보정 값의 존재 여부

 -> SRF05는 값이 들어올 때 튀는 경우가 종종 발생해 안정시키기 위해 평균 필터를 적용하여 보정을 해주었지만, SRF08은 측정 값이 튀지 않아 보정을 따로 해주지 않았다.

 -> 실시간으로 쓰기에 SRF08이 적합하다고 판단하였다.