[FREERTOS] F103RB-SR04 초음파센서

seopppio·2024년 11월 12일

FreeRTOS

목록 보기
14/14

SR04 작동 원리


TRIG 핀에서 10마이크로 시간동안 High로 신호를 주면
울트라사운드 모듈에서 8개의 신호를 보낸다.
다 쏘고 나면, Echo를 High로 바꾸고, 8개의 초음파가 다 돌아오면 End로 바꾼다
이 High부터 End까지의 시간을 구해서 거리를 계산하는 방식

Configuration - GPIO


PA9 -> ECHO, GPIO INPUT
PA8 -> TRIG, GPIO OUTPUT

필자가 사용하는 SR04 센서는 ECHO에서 5V 출력을 내는데 STM32는 3.3V에서 작동된다. 때문에 저항으로 전원 분배해서 ECHO에 INPUT을 넣어줘야 정상 작동한다.

Configuration - Timer

STM32의 HAL은 마이크로 시간 단위를 구성하는 방식이 없다
-> 내부 타이머 클럭 조정해야함


해당 공식에 맞게 Prescalor 조정하면 1us 만들 수 있다

counter period를 크게 잡은 이유는, 타이머가 최대로 카운터하게 해서, 오버플로우 안 일어나게 하기 위해서

마이크로를 계산하는 코드용 타이머와 SR04의 ECHO신호의 길이를 계산하는 타이머 총 2개 필요하다. 세팅은 두 타이머 동일

1마이크로 코드

SR04_Read 코드, UART 출력

Mian 코드 While 문

SR04는 한 번 변환 이후에 최소 60ms 시간을 기다려줘야한다. Hal_Delay로 넉넉하게 0.1(100ms)초 기다려줬다

작동 결과

업로드중..
초음파센서 가깝게 물건을 두고, 서서히 멀리 떨어뜨린 결과.

0개의 댓글