0
0
Lập trình
NM

Hướng dẫn kết nối cảm biến siêu âm HC-SR04 với Arduino Uno32

Đăng vào 3 tuần trước

• 5 phút đọc

Hướng dẫn kết nối cảm biến siêu âm HC-SR04 với Arduino Uno32

Kết nối cảm biến siêu âm như HC-SR04 với Arduino Uno (hoặc bất kỳ bo mạch tương tự nào) là một dự án cơ bản cho các lập trình viên. Quá trình này cho Arduino Uno32 giống hệt như Arduino Uno thông thường, vì chức năng chân và mức điện áp đều giống nhau.

Mục lục

  1. Cách hoạt động của cảm biến siêu âm HC-SR04
  2. Các thành phần cần thiết
  3. Sơ đồ kết nối và đấu dây
  4. Mã Arduino
  5. Cách thức hoạt động của mã
  6. Khắc phục sự cố thường gặp
  7. Mẹo hiệu suất
  8. Thực hành tốt nhất
  9. Câu hỏi thường gặp

1. Cách hoạt động của cảm biến siêu âm HC-SR04

Cảm biến HC-SR04 có bốn chân:

  • VCC: Nguồn (5V)
  • Trig: Chân đầu vào kích hoạt
  • Echo: Chân đầu ra phản hồi
  • GND: Đất

Cảm biến hoạt động theo cách sau:

  1. Gửi một xung HIGH ngắn 10µs đến chân Trig.
  2. Cảm biến phát ra một chùm siêu âm (8 xung có tần số 40kHz).
  3. Cảm biến sau đó thiết lập chân Echo thành HIGH.
  4. Chân Echo giữ HIGH cho đến khi chùm siêu âm phản hồi lại và được phát hiện.
  5. Bạn đo thời gian mà chân Echo ở trạng thái HIGH. Thời gian càng dài, khoảng cách càng xa.

Bạn sau đó tính toán khoảng cách bằng cách sử dụng tốc độ âm thanh.

2. Các thành phần cần thiết

  • Arduino Uno (hoặc Uno32)
  • Cảm biến siêu âm HC-SR04
  • Breadboard và dây nối

3. Sơ đồ kết nối và đấu dây

Kết nối các thành phần như sau:

Lưu ý quan trọng về điện áp (đối với các bo mạch 3.3V):

  • Mô-đun HC-SR04 tiêu chuẩn được thiết kế để hoạt động ở 5V. Chân Echo xuất tín hiệu 5V.
  • Các chân kỹ thuật số của Arduino Uno có thể chịu được 5V, nghĩa là bạn có thể kết nối chân Echo trực tiếp với chân 10.
  • Nếu bạn sử dụng bo mạch 3.3V (như ESP32 hoặc Arduino Due), bạn phải sử dụng một bộ chia điện áp (ví dụ, hai điện trở: 1kΩ và 2kΩ) trên chân Echo để giảm tín hiệu 5V xuống 3.3V và tránh làm hỏng vi điều khiển. Điều này không cần thiết cho Arduino Uno.

4. Mã Arduino

Dưới đây là mã cơ bản để đọc khoảng cách và in ra Serial Monitor.

cpp Copy
// Định nghĩa chân cho cảm biến
const int trigPin = 9;
const int echoPin = 10;

// Định nghĩa biến
long duration;
int distance;

void setup() {
  pinMode(trigPin, OUTPUT); // Thiết lập trigPin là OUTPUT
  pinMode(echoPin, INPUT);  // Thiết lập echoPin là INPUT
  Serial.begin(9600);       // Bắt đầu giao tiếp serial
}

void loop() {
  // Xóa điều kiện trigPin
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);

  // Thiết lập trigPin HIGH trong 10 microseconds
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  // Đọc echoPin, trả về thời gian sóng âm di chuyển trong microseconds
  duration = pulseIn(echoPin, HIGH);

  // Tính toán khoảng cách
  // Tốc độ sóng âm chia cho 2 (đi và về)
  distance = duration * 0.034 / 2;

  // In khoảng cách lên Serial Monitor
  Serial.print("Khoảng cách: ");
  Serial.print(distance);
  Serial.println(" cm");

  delay(500); // Thêm độ trễ giữa các lần đọc để ổn định
}

5. Cách thức hoạt động của mã

1. Khởi tạo (setup):

  • Chân trigPin được thiết lập là OUTPUT vì Arduino gửi tín hiệu kích hoạt.
  • Chân echoPin được thiết lập là INPUT vì Arduino lắng nghe tín hiệu trả về.
  • Giao tiếp Serial được bắt đầu để hiển thị kết quả.

2. Thực hiện phép đo (loop):

  • Xóa kích hoạt: Chân trigPin được thiết lập LOW để đảm bảo xung sạch.
  • Gửi xung: Chân trigPin được thiết lập HIGH trong đúng 10 microseconds, báo cho cảm biến phát ra sóng âm.
  • Lắng nghe phản hồi: Hàm pulseIn() được sử dụng để chờ cho chân echoPin lên HIGH và đo thời gian nó ở trạng thái HIGH. Thời gian này được lưu trong biến duration.
  • Tính toán khoảng cách: Khoảng cách được tính bằng công thức dựa trên tốc độ âm thanh (~340 m/s, hoặc 0.034 cm/µs). Chúng ta chia cho 2 vì sóng âm đã đi đến vật thể và quay lại.

6. Khắc phục sự cố thường gặp

Số liệu lớn kỳ lạ (ví dụ: 0 cm hoặc 500 cm):

  • Điều này thường có nghĩa là cảm biến không phát hiện được gì hoặc phản hồi bị bỏ lỡ. Kiểm tra dây nối của bạn, đặc biệt là kết nối GND.
  • Đảm bảo bạn đang đo trong một căn phòng đủ ánh sáng. Cảm biến HC-SR04 có thể không chính xác khi ánh sáng mặt trời trực tiếp hoặc với các vật mềm, hấp thụ âm thanh.

Đọc số 0 liên tục:

Bạn có thể đã hoán đổi các chân Trig và Echo. Kiểm tra lại kết nối của bạn.

Đọc không nhất quán:

  • Thêm một độ trễ nhỏ (delay(50)) giữa các lần đọc để cho cảm biến ổn định.
  • Đảm bảo vật thể nằm trong khoảng cách cảm biến (thường là 2cm - 400cm).

7. Mẹo hiệu suất

  • Thêm độ trễ: Thêm độ trễ giữa các phép đo để cho cảm biến ổn định và chính xác hơn.
  • Kiểm tra nguồn: Đảm bảo nguồn điện đủ cho cảm biến hoạt động tốt nhất.
  • Lựa chọn vật liệu: Sử dụng vật liệu phản xạ âm thanh tốt để cải thiện độ chính xác.

8. Thực hành tốt nhất

  • Đấu dây cẩn thận: Đảm bảo tất cả các kết nối đều chắc chắn để tránh bất kỳ sự cố nào trong quá trình đo.
  • Sử dụng analog: Cân nhắc sử dụng cảm biến analog nếu cần độ chính xác cao hơn cho các ứng dụng cụ thể.

9. Câu hỏi thường gặp

Cảm biến siêu âm có thể đo được khoảng cách tối đa bao xa?

Cảm biến HC-SR04 có thể đo khoảng cách tối đa khoảng 4m.

Có những cảm biến siêu âm nào khác có thể sử dụng không?

Có, bạn có thể sử dụng cảm biến siêu âm như JSN-SR04T cho khoảng cách xa hơn và độ chính xác cao hơn.

Bằng cách làm theo các bước trên, bạn sẽ có thể kết nối thành công cảm biến siêu âm với Arduino Uno, và bắt đầu các dự án thú vị của riêng bạn.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào