Notice
Recent Posts
Recent Comments
Link
관리 메뉴

거북이처럼 천천히

Verilog RTL 설계(7월 24일 - 2, HC-SR04 기초) 본문

RTL Design/Verilog RTL 설계

Verilog RTL 설계(7월 24일 - 2, HC-SR04 기초)

유로 청년 2024. 7. 25. 08:05

1. HC-SR04 

  • 초음파를 이용해 거리를 측정하는 센서 모듈
  • HC-SR04의 data sheet를 활용하여 basys3간에 연결하여 HC-SR04측에서 측정한 거리 값을 받도록 설계해 보겠다.
  • 이를 통해 FSM(Finite State Machine)에 대해서 공부를 하는 동시에 Data Sheet에 대한 읽는 능력을 향상하는 것을 목적으로 하고 있다.
  • HC-SR04와 MCU 간에 회로 연결, 통신 과정 및 방법 등 차근차근 배워보도록 하겠다.

 

 

2. HC-SR04의 동작 원리

  • HC-SR04의 동작 원리에 대해서 그림으로 표현하자면 다음과 표현 할 수 있다.

The distance is measured through the ultrasonic waves emitted from the Seonseo module and reflected when they hit an object in front.

 

  • HC-SR04 센서 모듈이 다음과 같은 과정을 거쳐 거리를 측정하게 된다.
    - TX (Transmitter) : 초음파를 발사하는 부분
    - RX (Receiver) : 반사된 초음파를 받는 부분
    - TX 측에서 초음파를 발사하게 되면 발사된 초음파는 원뿔 형태로 나아가게 된다.
    - HC-SR04인 경우에는 15 ~ 30도 사이의 각도를 갖고, 초음파가 나아가게 된다.
    - 이렇게 발사된 초음파는 전방에 있는 사물에 부딪쳐 난반사하게 되며, 이렇게 반사된 초음파를
      RX 측에서 받게 된다.
    - 이렇게 TX 측에서 초음파가 발사한 시점부터 RX 측에서 받게 된 시점까지 시간을 계산한 뒤,
      초음파의 속도인 343m/s를 곱하여 HC-SR04와 사물과의 거리를 계산하게 된다.
  • 하지만, 주변 자기장, 습도, 전방에 위치한 물체의 표면에 따라 측정 값의 변화가 발생할 수 있다.
  • HC-SR04 센서 모듈인 경우, 유효 측정 거리가 2m 내이기 때문에 이를 고려하여 사용할 필요가 있다.

 

 

 

 

3. HC-SR04와 MCU와의 연결

  • 위 그림은 MCU와 HC-SR04의 연결 및 주고 받는 신호를 표현한 것이다.
  • MCU와 HC-SR04 간에 통신 과정은 다음과 같은 단계를 거치게 된다.
    1단계) MCU측에서 HC-SR04의 TRIG 단자에 10us 동안만 활성화된 Pulse Wave를 준다.
    2단계) HC-SR04 측에서는 해당 Pulse Wave를 받게 되면 주파수가 40kHz인 초음파 펄스 8개를
               TX (Transmitter)을 통해 쏴주게 된다.
    3단계) HC-SR04 측에서 초음파가 발사된 시점부터 물체에 반사된 초음파가 되돌아 오는데까지
               걸린 시간을 계산하게 된다.
    4단계) 3단계에서 계산한 걸린 시간을 MCU에게 걸린 시간동안 High-level인 Pulse wave를 준다.
    5단계) MCU는 해당 펄스파를 받고, 이를 계산하여 HC-SR04와 물체사이의 거리를 계산하게 된다.

 

 

 

 

4. MCU 측에서는 어떤 신호를 어떻게 주어야 하는가?

  • 위 그림은 MCU와 HC-SR04간에 주고 받는 데이터 신호를 그림으로 표현한 것이다.
  • MCU와 HC-SR04와의 통신 과정을 크게 4개의 상태로 나누어 볼 수 있다.
    - Input_Trigger : 10us 동안 활성화된 Trigger Pulse wave를 HC-SR04의 TRIG 단자에 전달한다.
    - Wait_For_Pulse : Echo Pulse의 Positive edge가 올 때까지 대기한다.
    - Calc_Echo_Pulse :  Counter를 통해 HC-SR04로부터 받은 Echo Pulse을 Positive edge ~ Negative edge
                                         까지를 Counting하여 시간을 계산한 후, 이를 토대로 거리 계산한다.
    - IDLE : Echo Pulse가 끝나는 동시에 다음 Trigger Pulse를 위해 잠시 대기상태에 들어간다.
  • 한 번 MCU와 HC-SR04간에 데이터를 주고 받는 과정은 대략 50ms 시간이 소요된다.
    S_IDLE (10ms) + Input_Trigger (10us) + Sonic_Burst (0.2ms) + Echo_Pulse (36ms, no Object Detected) 
     = total time (50ms)

 

 

 

 

5. State diagram

  • MCU와 HC-SR04와의 통신 과정을 4개의 상태로 나누어 상태도를 그리면 다음과 같이 그릴 수 있다.