Trang chủ Liên hệ

Hướng dẫn Lắp Cảm Biến Siêu Âm SRF04 Và Arduino Uno |VDO00011

Nguyễn Chí 14/05/2024

Hướng dẫn Lắp Cảm Biến Siêu Âm SRF04 Và Arduino Uno

 

Cảm biến siêu âm HC-SR04 (Ultrasonic Sensor) được sử dụng rất phổ biến để xác định khoảng cách vì giá thành rẻ và khá chính xác. Cảm biến này sử dụng sóng siêu âm và có thể đo khoảng cách trong khoảng từ 2 đến 300 cm. Dưới đây là nguyên lý hoạt động của cảm biến:

  1. Nguyên lý hoạt động:

    • Để đo khoảng cách, ta sẽ phát một xung rất ngắn (khoảng 5 micro giây) từ chân Trig.
    • Sau đó, cảm biến siêu âm sẽ tạo ra một 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 micro giây/cm (106 / (340*100)).
    • Khi đã tính được thời gian, ta sẽ chia cho 29,412 để nhận được khoảng cách.
  2. Các chân chức năng của cảm biến HC-SR04:

    • VCC: Cấp nguồn cho cảm biến (5V) hoặc 3.3V ở cảm biến 3V3.
    • TRIGGER: Chân phát sóng âm. Là chu kỳ của điện cao/thấp diễn ra.
    • ECHO: Trạng thái ban đầu là 0V, khi có tín hiệu trả về sẽ là 5V và sau đó trở về 0V.
    • GND: Nối cực âm của mạch.
  3. Sơ đồ kết nối:

    • Bạn cần một board Arduino Uno, cảm biến khoảng cách SRF04, dây buss đực cái.
    • Dưới đây là một ví dụ về mã lập trình để đo khoảng cách sử dụng cảm biến HC-SR04:
CODE MẪU
/*
 * Kết nối:
            HCSR04                          Arduino
            VCC                               5V
            GND                               GND
            TRIG                              8
            ECHO                              7

   Nạp code mở Serial Monitor chọn No line ending, baud 9600.
 */
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);
}

 

 

 

Bài viết liên quan