Cảm biến

Tìm hiểu cảm biến siêu âm HC-SR04

6 phút đọc12/05/2024Nguyễn Minh Hoàng
Tìm hiểu cảm biến siêu âm HC-SR04

Nguyên lý hoạt động, cách kết nối và lập trình đo khoảng cách với Arduino cực kỳ chi tiết. Trong bài viết này, chúng ta sẽ cùng tìm hiểu chi tiết và ứng dụng thực tế trong robot.

Tìm hiểu cảm biến siêu âm HC-SR04

Nguyên lý hoạt động

HC-SR04 dùng sóng âm tần số 40 kHz để đo khoảng cách:

  1. Chân TRIG nhận xung 10µs → cảm biến phát 8 xung 40 kHz
  2. Sóng âm đi đến vật → phản xạ về
  3. Chân ECHO output HIGH trong suốt thời gian sóng đi và về
  4. Khoảng cách = (thời gian ECHO / 2) × tốc độ âm (343 m/s = 0.0343 cm/µs)

Công thức:

code
distance_cm = pulseIn(ECHO, HIGH) × 0.034 / 2

Thông số kỹ thuật

Thông sốGiá trị
Điện áp5V DC
Dòng tiêu thụ15 mA
Góc đo15°
Khoảng cách2cm – 400cm
Độ phân giải0.3cm
Tần số40 kHz

Kết nối với Arduino

HC-SR04Arduino Uno
VCC5V
GNDGND
TRIGPin 9
ECHOPin 10

Code đo khoảng cách cơ bản

cpp
const int TRIG = 9;
const int ECHO = 10;

void setup() {
  Serial.begin(9600);
  pinMode(TRIG, OUTPUT);
  pinMode(ECHO, INPUT);
}

float getDistance() {
  digitalWrite(TRIG, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG, LOW);

  long duration = pulseIn(ECHO, HIGH);
  float distance = duration * 0.034f / 2.0f;
  return distance;
}

void loop() {
  float d = getDistance();
  Serial.printf("Khoảng cách: %.1f cm\n", d);
  delay(200);
}

Code lấy trung bình nhiều lần để giảm nhiễu

cpp
float getDistanceAvg(int samples = 5) {
  float sum = 0;
  int valid = 0;
  for (int i = 0; i < samples; i++) {
    float d = getDistance();
    if (d >= 2.0f && d <= 400.0f) { // loại bỏ giá trị ngoài range
      sum += d;
      valid++;
    }
    delay(20);
  }
  return valid ? sum / valid : -1.0f;
}

Ứng dụng thực tế

  1. Robot tránh vật cản: khi khoảng cách < 20cm → dừng và rẽ
  2. Đo mực nước: gắn trên bình, tính chiều cao nước
  3. Cổng tự động: phát hiện người đứng trước
  4. Đỗ xe tự động: cảnh báo khoảng cách đến vật

Lưu ý quan trọng

  • Bề mặt mềm (vải, xốp) hấp thụ sóng âm → đọc không chính xác
  • Góc nghiêng > 15° so với bề mặt → tín hiệu phản xạ yếu
  • Nhiều HC-SR04 gần nhau có thể gây nhiễu lẫn nhau
  • Không hoạt động tốt trong môi trường nhiều tiếng ồn âm tần cao

Gợi ý dùng bài viết trong lớp học

Câu hỏi khởi động

  • Linh kiện/kỹ thuật trong bài giải quyết vấn đề gì trong robot thật?
  • Nếu nối sai nguồn hoặc đọc sai tín hiệu, robot sẽ biểu hiện như thế nào?
  • Có cách nào đo hoặc quan sát hiện tượng thay vì đoán lỗi không?

Hoạt động thực hành nhanh

  1. Giáo viên cho học viên xem linh kiện hoặc sơ đồ liên quan đến chủ đề Tìm hiểu cảm biến siêu âm HC-SR04.
  2. Học viên dự đoán chân nguồn, chân tín hiệu và dữ liệu đầu ra.
  3. Chạy code mẫu ở cấu hình an toàn, sau đó thay đổi một tham số.
  4. Mỗi nhóm ghi nhận lỗi gặp phải và cách kiểm tra theo thứ tự nguồn, GND, tín hiệu, code.

Checklist kỹ thuật

  • Luôn kiểm tra điện áp hoạt động trước khi nối với board điều khiển.
  • In dữ liệu ra Serial Monitor khi làm việc với cảm biến hoặc thuật toán.
  • Với motor/servo, cấp nguồn tải riêng và nối chung GND với board.
  • Ghi lại thông số đã calibration để lần sau không phải chỉnh lại từ đầu.

Câu hỏi ôn tập

  • Thông số nào quan trọng nhất khi chọn linh kiện này cho robot?
  • Lỗi nào dễ xảy ra nhất trong lớp học và cách phát hiện nhanh nhất là gì?
  • Có thể mở rộng kiến thức này thành dự án robot nào?

Tài nguyên tải về

Tải bản PDF của bài viết để in giáo án hoặc gửi trước cho học viên.

Tải PDF
Chia sẻ bài viết

Mục lục bài viết

Tác giả

N

Nguyễn Minh Hoàng

Kỹ sư điện tử & Lập trình viên

Thực hành với bộ kit robot

Tự tay lắp ráp và lập trình robot với bộ kit từ Học Lập Trình Robot!

Xem bộ kit