#3_Cảm biến siêu âm HC-SR04

Cảm biến siêu âm HC-SR04

Cảm biến siêu âm HC-SR04 là nội dung tiếp theo ta cùng tìm hiểu trong chuyên mục “STM32 và ngoại vi“. Ta sẽ tạo xung 10μs (theo datasheet) gửi ra ngoại vi và đo độ rộng xung trả về, từ đó tính ra được giá trị của khoảng cách.

———————————

Cùng xem bài viết bên dưới.

Cảm biến siêu âm HC-SR04

Ta bắt đầu bằng việc tải và xem datasheet của nó, tải pdf ở cuối phần A. Từ datasheet ta có thể đọc được cách thức ngoại vi hoạt động và thông số nguồn, độ phân giải khi đo khoảng cách…

Để cảm biến hoạt động, cần tạo 1 xung có độ rộng 10µs gửi đến ngoại vi qua chân TRIG. Sau đó đọc độ rộng xung được trả về qua chân ECHO. Dùng “equation 1” ta sẽ tính được khoảng cách bằng công thức vật lý S = v*t với v là vận tốc âm thanh (340 m/s).

Cảm biến siêu âm hc-sr04
Các xung cần truyền và nhận (TRIG và ECHO) (click để phóng to)
Do sử dụng siêu âm để đo khoảng cách, nên khi có nhiều vật thể ở gần có thể đo lẫn từ vật thể này sang vật thể kia, trong datasheet có lưu ý về góc đo hiệu quả (Effectual Angle < 15°).

Trước khi tìm hiểu về ngoại vi này cần nắm được Input capture mode, bạn xem lại bài viết “#4.2_PWM Input | STM32 cơ bản“.

Bạn có thể tải datasheet HC-SR04 ở google hoặc ngay bên dưới.

Thực hành trên STM32cubeIDE

Cấu hình chân

Kết nối phần cứng như hình vẽ, chân PE7 và PE9 theo thứ tự là chân TRIG và ECHO của cảm biến siêu âm HC-SR04

Cảm biến siêu âm hc-sr04
Sơ đồ kết nối cảm biến siêu âm HC-SR04

Tiếp theo là thiết lập cubeMX, như phần Input capture trước đó và lưu ý thêm phần tham số để tạo hàm delay(µs). Hệ số PRE_S và APB2 timer clock lần lượt là 100-1 và 100MHz, PRE_A để ở giá trị tối đa (0xffff -1).

Thiết lập và kết nối của các chân lúc này đã xong. 1 số lưu ý:

  • Nguồn VCC sử dụng theo datasheet là 5V
  • Lưu ý phần APB2 timer clock và PRE_S để tạo hàm delay(μs)

Lập trình cảm biến siêu âm HC-SR04

Phần lập trình rất ngắn gọn, mình viết sẵn vào thư viện để dễ dàng sử dụng vào các Project lớn.

– Hàm delay(µs) hoạt động bằng cách là đếm từ 0 → “time” mong muốn với tần số 1MHz, khi hoàn thành sẽ reset lại bộ đếm.
– Hàm nhận xung ECHO đọc giá trị bộ đếm hiện tại, ở đây ta đọc theo sườn lên và sườn xuống. Khi đọc xong giá trị sườn lên, ta chuyển chế độ đọc sườn xuống (FALLING) để đọc giá trị sườn xuống, rồi trừ 2 giá trị, sẽ được độ rộng xung ECHO.

Hàm while(1) là gọi và nhận giá trị khoảng cách.

Cảm biến siêu âm HC-SR04
Hàm while(1)

Và đây là kết quả debug:

STM32 và ngoại vi
Kết quả debug (click để phóng to)

Phần cứng và code

Phần cứng sử dụng STM32F411, HC-SR04. Phần mềm sử dụng là stm32cubeIDE. File code ví dụ các bạn tải về bên dưới, phần cứng tại Shoppe.


Ta vừa tìm hiểu về ngoại vi Cảm biến siêu âm HC-SR04 trong chuyên mục STM32 và ngoại vi. Bài viết tiếp theo sẽ là Joystick KY-023. Cho bạn nào chưa biết, nó hoạt động như nút di chuyển trên tay game PS nhá :).

Mong rằng chuyên mục này sẽ giúp nhiều bạn tiếp cận hơn với dòng vi điều khiển STM32.

Các bài viết khác cùng chuyên mục trong “STM32 và ngoại vi“.

Các chuyên mục khác:

Bạn có thắc mắc gì trong bài viết không?

Đánh giá và để lại bình luận bên dưới nhá.

5/5 - (1 bình chọn)

Similar Posts

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *