Thứ Sáu, 6 tháng 10, 2023

Bài 34: Tìm hiểu Cảm biến Siêu âm HC-SR04 và Cách Sử dụng với Arduino

Tìm hiểu Cảm biến Siêu âm HC-SR04 và Cách Sử dụng với Arduino

1. Giới thiệu: Cảm biến Siêu âm HC-SR04 là gì?

Cảm biến siêu âm HC-SR04 là một module điện tử rất phổ biến được sử dụng để đo khoảng cách không tiếp xúc. Nó hoạt động dựa trên nguyên lý phát và thu sóng siêu âm (âm thanh có tần số cao hơn ngưỡng nghe của con người).

Kích thước và sóng cảm biến siêu âm HC-SR04

Module này thường được kết hợp với các bo mạch vi điều khiển như Arduino, Raspberry Pi, ESP8266/ESP32 để tạo ra các ứng dụng thực tế như:

  • Robot tự hành tránh vật cản.

  • Thiết bị đo khoảng cách cầm tay.

  • Hệ thống đo mực nước trong bồn chứa.

  • Cảm biến lùi cho xe mô hình.

2. Cấu tạo và Chân Kết nối

Nhìn bề ngoài, HC-SR04 có hai thành phần chính trông giống như cặp mắt:

  • Bộ phát (Transmitter - thường ký hiệu T): Phát ra một chùm sóng siêu âm ngắn khi được kích hoạt.

  • Bộ thu (Receiver - thường ký hiệu R): Lắng nghe và phát hiện sóng siêu âm phản xạ lại từ vật cản.

Ngoài ra, module có 4 chân kết nối chính:

  • VCC: Chân cấp nguồn dương (+5V DC).

  • Trig (Trigger): Chân kích hoạt. Gửi một xung tín hiệu ngắn đến chân này để yêu cầu cảm biến bắt đầu đo. Đây là chân Input đối với cảm biến (Output từ Arduino).

  • Echo: Chân phản hồi. Cảm biến sẽ tạo ra một xung tín hiệu trên chân này, độ dài của xung tỷ lệ thuận với thời gian sóng siêu âm di chuyển đi và về. Đây là chân Output từ cảm biến (Input đối với Arduino).

  • GND: Chân nối đất (0V).

Bên trong mạch: Module chứa các mạch điện tử để tạo sóng siêu âm, khuếch đại tín hiệu thu về và xử lý tín hiệu cơ bản, nhưng đối với người dùng cuối, chúng ta chỉ cần quan tâm đến 4 chân kết nối trên.

3. Nguyên lý Hoạt động (Cách đo khoảng cách)

HC-SR04 đo khoảng cách theo các bước sau:

  1. Kích hoạt (Trigger): Vi điều khiển (Arduino) gửi một xung tín hiệu HIGH (5V) ngắn (khoảng 10 micro giây - µs) đến chân Trig của cảm biến.

  2. Phát sóng: Ngay sau khi nhận xung kích hoạt, module HC-SR04 tự động phát ra một chùm 8 xung siêu âm ở tần số 40kHz từ bộ phát (T). Đồng thời, nó bắt đầu đưa chân Echo lên mức HIGH (5V).

  3. Chờ phản xạ: Sóng siêu âm di chuyển trong không khí với tốc độ xấp xỉ 340 mét/giây. Khi gặp vật cản, một phần sóng sẽ bị phản xạ lại về phía cảm biến.

  4. Nhận phản xạ (Echo): Khi bộ thu (R) nhận được sóng siêu âm phản xạ, nó ngay lập tức kéo chân Echo xuống mức LOW (0V).

  5. Đo thời gian: Vi điều khiển (Arduino) đo chính xác khoảng thời gian mà chân Echo ở trạng thái HIGH. Khoảng thời gian này (duration) chính là tổng thời gian sóng siêu âm bay từ cảm biến đến vật cản quay trở lại.

  6. Tính toán khoảng cách:

    • Vì thời gian đo được (duration) là thời gian cho cả quãng đường đi và về, nên thời gian cho một chiều (từ cảm biến đến vật) là duration / 2.

    • Biết tốc độ âm thanh trong không khí là khoảng 340 m/s, tương đương 0.034 cm/µs (centimet trên micro giây).

    • Khoảng cách = (Thời gian một chiều) x (Tốc độ âm thanh)

    • Khoảng cách (cm) = (duration / 2) * 0.034

    • Hoặc một công thức thường dùng (dựa trên 1 / (0.034 / 2) ≈ 58.8 hoặc cách tính gốc 1/(2*29.412) trong bài):

    • Khoảng cách (cm) = duration / 58.8 (Cách tính này thường được làm tròn và sử dụng trong code ví dụ, ví dụ duration / 2 / 29.412duration / 58.824).

Phát sóng trên cảm biến siêu âm HC-SR04

Ví dụ: Nếu Arduino đo được duration là 588 µs, thì khoảng cách là: 588 / 58.8 = 10 cm.

4. Thông số Kỹ thuật

  • Điện áp hoạt động: 5V DC

  • Dòng điện tiêu thụ (hoạt động): ~15mA

  • Dòng điện chờ: < 2mA

  • Tần số siêu âm: 40 kHz

  • Phạm vi đo: Khoảng 2 cm đến 400 cm (4 mét)

  • Độ chính xác: Khoảng 3 mm (trong điều kiện lý tưởng)

  • Góc đo hiệu quả: Khoảng 15 độ (cảm biến nhạy nhất với vật cản trực diện)

  • Tín hiệu kích hoạt (Trig): Xung HIGH 10µs

  • Tín hiệu phản hồi (Echo): Xung HIGH, độ rộng tỷ lệ với khoảng cách (mức 0V - 5V)

  • Kích thước: Tương đối nhỏ gọn.

5. Sơ đồ Kết nối với Arduino Uno

Kết nối rất đơn giản:

Chân HC-SR04Kết nối tới Chân Arduino UnoChức năng
VCC5VCấp nguồn
TrigDigital Pin 8 (Ví dụ)Gửi xung kích hoạt
EchoDigital Pin 7 (Ví dụ)Nhận xung phản hồi
GNDGNDNối đất (Mass)

Sơ đồ mạch cảm biến siêu âm HC-SR04

6. Code Arduino Tham khảo

Đây là đoạn code mẫu để đọc khoảng cách từ HC-SR04 và hiển thị lên Serial Monitor của Arduino IDE:

// Định nghĩa các chân kết nối với HC-SR04
const int trigPin = 8; // Chân Trig của HC-SR04 nối với Pin 8 Arduino
const int echoPin = 7; // Chân Echo của HC-SR04 nối với Pin 7 Arduino
// Biến để lưu trữ thời gian và khoảng cách
long duration; // Thời gian (micro giây) chân Echo ở mức HIGH
int distance; // Khoảng cách tính được (cm)
void setup() {
// Khởi động giao tiếp Serial để hiển thị kết quả lên máy tính
Serial.begin(9600); // Tốc độ 9600 baud
// Cấu hình chân Trig là OUTPUT (Arduino gửi tín hiệu đi)
pinMode(trigPin, OUTPUT);
// Cấu hình chân Echo là INPUT (Arduino nhận tín hiệu về)
pinMode(echoPin, INPUT);
Serial.println("HC-SR04 Khoi dong xong. Bat dau do...");
}
void loop() {
// --- Bước 1: Tạo xung kích hoạt (Trigger Pulse) ---
// Đảm bảo chân Trig đang ở mức LOW
digitalWrite(trigPin, LOW);
delayMicroseconds(2); // Chờ 2 micro giây
// Đưa chân Trig lên mức HIGH trong 10 micro giây để kích hoạt
digitalWrite(trigPin, HIGH);
delayMicroseconds(10); // Độ rộng xung trigger là 10µs
digitalWrite(trigPin, LOW); // Tắt chân Trig
// --- Bước 2: Đọc thời gian phản hồi (Echo Pulse) ---
// Hàm pulseIn() sẽ đo thời gian (µs) chân Echo ở mức HIGH.
// Nó sẽ chờ cho đến khi chân Echo lên HIGH, bắt đầu đếm thời gian,
// và dừng đếm khi chân Echo xuống LOW.
duration = pulseIn(echoPin, HIGH);
// --- Bước 3: Tính toán khoảng cách ---
// Sử dụng công thức: Khoảng cách (cm) = Thời gian (µs) / 2 / 29.412
// Chia cho 2 vì duration là thời gian cho cả đi và về
// 29.412 là hằng số chuyển đổi (micro giây trên centimet)
distance = duration / 2 / 29.412;
// Hoặc dùng công thức gần đúng: distance = duration / 58.8;
// --- Bước 4: Hiển thị kết quả ---
Serial.print("Khoang cach: ");
Serial.print(distance);
Serial.println(" cm");
// Đợi một chút trước khi thực hiện lần đo tiếp theo
delay(200); // Ví dụ: đợi 200 mili giây
}

Cách sử dụng code:

  1. Kết nối phần cứng như sơ đồ ở Mục 5.

  2. Mở Arduino IDE, dán code này vào.

  3. Kết nối Arduino với máy tính qua cáp USB.

  4. Chọn đúng Board (Arduino Uno) và Port trong menu Tools.

  5. Nhấn nút Upload để nạp code.

  6. Mở Serial Monitor (biểu tượng kính lúp hoặc Tools -> Serial Monitor). Đảm bảo tốc độ baud là 9600.

  7. Bạn sẽ thấy khoảng cách đo được hiển thị liên tục. Hãy thử đưa tay hoặc một vật cản trước cảm biến để xem giá trị thay đổi.

7. Ưu và Nhược điểm của HC-SR04

Ưu điểm:

  • Giá thành rẻ: Rất dễ tiếp cận cho các dự án cá nhân và giáo dục.

  • Dễ sử dụng: Kết nối đơn giản, code điều khiển không phức tạp.

  • Phổ biến: Có nhiều tài liệu hướng dẫn, ví dụ và thư viện hỗ trợ từ cộng đồng.

  • Phạm vi đo khá: Từ vài cm đến vài mét, phù hợp nhiều ứng dụng cơ bản.

  • Không bị ảnh hưởng bởi màu sắc, ánh sáng: Hoạt động tốt trong bóng tối hoặc với các vật thể trong suốt (miễn là chúng phản xạ âm thanh).

Nhược điểm:

  • Góc đo hẹp (hình nón): Chỉ phát hiện tốt vật cản trong một góc nhất định phía trước, khó phát hiện vật quá nhỏ hoặc ở rìa vùng quét.

  • Bị ảnh hưởng bởi bề mặt vật liệu: Các vật liệu mềm, xốp (như vải, bông) hấp thụ sóng siêu âm tốt, làm giảm khoảng cách đo hoặc không đo được.

  • Khoảng cách tối thiểu: Không đo được khoảng cách quá gần (thường dưới 2cm).

  • Ảnh hưởng bởi môi trường: Nhiệt độ, độ ẩm không khí có thể ảnh hưởng nhẹ đến tốc độ âm thanh, gây sai số nhỏ. Gió mạnh cũng có thể ảnh hưởng.

  • Nhiễu âm thanh: Tiếng ồn siêu âm từ các nguồn khác có thể gây nhiễu. Nhiều cảm biến HC-SR04 đặt gần nhau có thể nhiễu lẫn nhau nếu không được quản lý thời gian phát xung cẩn thận.

  • Tốc độ đo giới hạn: Cần có khoảng nghỉ giữa các lần đo để tránh tín hiệu cũ gây nhiễu cho lần đo mới.

8. Một số Ứng dụng Thực tế

  • Robot tránh vật cản: Giúp robot tự động dừng hoặc đổi hướng khi gặp chướng ngại vật.

  • Thước đo điện tử: Tạo ra thiết bị đo khoảng cách nhanh chóng.

  • Hệ thống cảnh báo khoảng cách: Ví dụ: cảnh báo khi xe lùi quá gần tường.

  • Đo mực chất lỏng: Đo khoảng cách từ cảm biến đến bề mặt chất lỏng trong bồn chứa (cần lưu ý khả năng phản xạ của bề mặt chất lỏng).

  • Phát hiện người/vật đi qua: Kích hoạt một hành động (bật đèn, chuông báo) khi có vật đi vào vùng quét.

9. Mua Cảm biến HC-SR04 ở đâu?

Cảm biến HC-SR04 rất phổ biến và có giá thành rẻ. Bạn có thể dễ dàng tìm mua tại:

  • Các cửa hàng linh kiện điện tử trong nước.

  • Các trang thương mại điện tử như Shopee, Lazada, Tiki,...

  • Các nhà cung cấp linh kiện quốc tế như AliExpress, Banggood,...

Kết luận

Cảm biến siêu âm HC-SR04 là một lựa chọn tuyệt vời cho những người mới bắt đầu tìm hiểu về cảm biến và các dự án IoT/robotics cơ bản. Với chi phí thấp, cách sử dụng đơn giản và nhiều tài liệu hỗ trợ, nó mở ra nhiều khả năng sáng tạo cho các dự án điện tử của bạn.

Bạn có thể thử mô phỏng hoạt động của cảm biến này với Arduino trên Wokwi tại đây: https://wokwi.com/projects/377910366347889665



Không có nhận xét nào:

Đăng nhận xét