Sử dụng cảm biến khoảng cách HC-SR04

Xin chào, hôm nay mình sẽ giới thiệu về cách sử dụng cảm biến khoảng cách HC-SR04.

1. Nội dung

Bài viết này sẽ trình bày 2 nội dung chính là:

  • Tìm hiểu nguyên lý hoạt động của HC-SR04.
  • Cách sử dụng với Arduino.

2. Phần cứng

3. Giới thiệu cảm biến đo khoảng cách HC-SR04

Cảm biến khoảng cách siêu âm HC-SR04 được sử dụng rất phổ biến để xác định khoảng cách vì RẺ và CHÍNH XÁC. Cảm biến sử dụng sóng siêu âm và có thể đo khoảng cách trong khoảng từ 2 -> 300 cm, với độ chính xác gần như chỉ phụ thuộc vào cách lập trình.

Cảm biến HC-SR04 có 4 chân là: Vcc, Trig, Echo, GND.

Vcc 5V
Trig Một chân Digital output
Echo Một chân Digital input
GND GND

Sơ đồ nối chân giữa HC-SR04 và Arduino

Nguyên lý hoạt động

Để đo khoảng cách, ta sẽ phát 1 xung rất ngắn (5 microSeconds - ú) từ chân Trig. Sau đó, cảm biến sẽ tạo ra 1 xung HIGH ở chân Echo cho đến khi nhận lại được sóng phản xạ ở pin này. Chiều rộng của xung sẽ bằng với thời gian sóng siêu âm được phát từ cảm biển và quay trở lại. 

Tốc độ của âm thanh trong không khí là 340 m/s (hằng số vật lý), tương đương với 29,412 microSeconds/cm (106 / (340*100)). Khi đã tính được thời gian, ta sẽ chia cho 29,412 để nhận được khoảng cách.

4. Lắp mạch

5. Lập trình

const int trig = 8;     // chân trig của HC-SR04
const int echo = 7;     // chân echo của HC-SR04

void setup()
{
    Serial.begin(9600);     // giao tiếp Serial với baudrate 9600
    pinMode(trig,OUTPUT);   // chân trig sẽ phát tín hiệu
    pinMode(echo,INPUT);    // chân echo sẽ nhận tín hiệu
}

void loop()
{
    unsigned long duration; // biến đo thời gian
    int distance;           // biến lưu khoảng cách
    
    /* Phát xung từ chân trig */
    digitalWrite(trig,0);   // tắt chân trig
    delayMicroseconds(2);
    digitalWrite(trig,1);   // phát xung từ chân trig
    delayMicroseconds(5);   // xung có độ dài 5 microSeconds
    digitalWrite(trig,0);   // tắt chân trig
    
    /* Tính toán thời gian */
    // Đo độ rộng xung HIGH ở chân echo. 
    duration = pulseIn(echo,HIGH);  
    // Tính khoảng cách đến vật.
    distance = int(duration/2/29.412);
    
    /* In kết quả ra Serial Monitor */
    Serial.print(distance);
    Serial.println("cm");
    delay(200);
}

Giải thích

- duration = pulseIn(echo,1);

Hàm pulseIn() được dùng để đo độ rộng của xung, các bạn có thể xem thêm tại link sau: http://arduino.vn/reference/pulsein. Duration sẽ bằng độ dài xung HIGH ở chân echo (tính theo micro giây).

- distance = int(duration/2/29.412);

Thời gian sóng truyền từ cảm biến đến vật sẽ bằng duration/2, sau đó ta chia tiếp cho 29,412 để tính khoảng cách.

6. Lời kết

Hãy ứng dụng vào thực tế nhé. Chúc các bạn thành công!

Trên kBOT - Wifi Robot, cảm biến này đã được tác giả sử dụng để làm radar đo khoảng cách phía sau đuôi đấy. Với cảm biến siêu âm bạn cũng có thể dùng để đếm sản phẩm hoặc cảm biển khoảng cách cầm tay,...

lên
29 thành viên đã đánh giá bài viết này hữu ích.
Hướng dẫn sử dụng các loại module

Nếu bạn đang muốn thực hiện hóa ý tưởng của mình mà không biết dùng loại module nào? Hãy tham khảo các module trong danh sách sau

Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Điều khiển tốc độ Motor DC

Chào các bạn, bài viết này sẽ hướng dẫn các bạn cách ứng dụng Transistor Diode để điều khiển động cơ DC, rơ le.

lên
34 thành viên đã đánh giá bài viết này hữu ích.

Infrared remote control (điều khiển bằng hồng ngoại) với Arduino

[UPDATE] Arduino IDE 1.5x có bổ sung thêm 1 thư viện IRremote, thư viện này trùng tên với thư viện IRremote chúng ta dùng trong bài viết này (cùng tác giả) nên bạn nào dùng IDE 1.5x sẽ không upload được code. Để khắc phục, chúng ta chỉ cần xóa đi thư viện IRremote có sẵn của Arduino.

Xin chào các bạn, hôm nay mình sẽ giới thiệu về cách sử dụng Remote TV để điều khiển các thiết bị điện tử với sự giúp đỡ của Arduino.

NỘI DUNG CHÍNH

  • Đọc tín hiệu từ Remote.
  • Điều khiển TV với Arduino.
lên
50 thành viên đã đánh giá bài viết này hữu ích.