Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 27 | 28 |
Tags
- Edge Detector
- soc 설계
- hc-sr04
- Recursion
- Linked List
- pwm
- DHT11
- Algorithm
- dataflow modeling
- D Flip Flop
- verilog
- prescaling
- stop watch
- java
- ring counter
- KEYPAD
- Pspice
- FND
- test bench
- atmega 128a
- uart 통신
- structural modeling
- gpio
- LED
- behavioral modeling
- ATMEGA128A
- i2c 통신
- half adder
- vivado
- BASYS3
Archives
- Today
- Total
거북이처럼 천천히
Verilog RTL 설계(7월 24일 - 2, HC-SR04 기초) 본문
1. HC-SR04
- 초음파를 이용해 거리를 측정하는 센서 모듈
- HC-SR04의 data sheet를 활용하여 basys3간에 연결하여 HC-SR04측에서 측정한 거리 값을 받도록 설계해 보겠다.
- 이를 통해 FSM(Finite State Machine)에 대해서 공부를 하는 동시에 Data Sheet에 대한 읽는 능력을 향상하는 것을 목적으로 하고 있다.
- HC-SR04와 MCU 간에 회로 연결, 통신 과정 및 방법 등 차근차근 배워보도록 하겠다.
2. HC-SR04의 동작 원리
- HC-SR04의 동작 원리에 대해서 그림으로 표현하자면 다음과 표현 할 수 있다.
- 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개의 상태로 나누어 상태도를 그리면 다음과 같이 그릴 수 있다.
'RTL Design > Verilog RTL 설계' 카테고리의 다른 글
Verilog RTL 설계(7월 25일 - 1, Slack) (0) | 2024.07.25 |
---|---|
Verilog RTL 설계(7월 24일 - 3, HC-SR04 구현) (0) | 2024.07.25 |
Verilog RTL 설계(7월 23일 - 1, DHT 기초) (2) | 2024.07.24 |
Verilog RTL 설계(7월 22일 - 2, FSM 형식으로 Keypad 재구현) (2) | 2024.07.23 |
Verilog RTL 설계(7월 22일 - 1, 4X4 Matrix Keyboard - 1) (4) | 2024.07.23 |