Mạch cảm biến lùi đỗ xe ô tô / Car Reverse Parking Sensor Circuit

Giới thiệu

Mạch cảm biến lùi đỗ xe ô tô là một hệ thống điện tử giúp phát hiện khoảng cách giữa xe và các vật thể xung quanh khi lùi. Hệ thống này cung cấp thông tin qua âm thanh hoặc hiển thị, giúp tài xế tránh va chạm.

Dưới đây là hướng dẫn thiết kế và nguyên lý hoạt động cơ bản của một mạch cảm biến lùi đỗ xe ô tô:

 

Thành phần chính

  1. Cảm biến siêu âm (Ultrasonic Sensor):

    • HC-SR04 là cảm biến phổ biến để đo khoảng cách.
    • Hoạt động bằng cách phát ra sóng siêu âm và đo thời gian sóng phản xạ trở lại.
  2. Vi điều khiển (Microcontroller):

    • Arduino Uno, Nano hoặc bất kỳ vi điều khiển nào khác có thể xử lý tín hiệu từ cảm biến và điều khiển đầu ra.
  3. Buzzer:

    • Cung cấp cảnh báo âm thanh khi khoảng cách giảm.

Nguyên lý hoạt động

  • Cảm biến siêu âm:

    • Khi lùi xe, cảm biến phát sóng siêu âm qua chân Trig.
    • Sóng va vào vật cản và phản xạ trở lại.
    • Cảm biến nhận sóng qua chân Echo và đo thời gian giữa lúc phát và nhận.
    • Dựa vào thời gian, tính toán khoảng cách theo công thức:
  • Buzzer:

    • Khi khoảng cách nhỏ hơn giá trị ngưỡng (ví dụ: 20cm), buzzer kêu báo hiệu.
  • Hiển thị (tùy chọn):

    • Khoảng cách hiển thị lên màn hình để cung cấp thông tin trực quan.

Yêu cầu phần cứng

STT Thành phần SL
1 Arduino Uno R3 ATmega328 or Arduino Uno R3 ATmega328 SMD 1
2 USB Cable Type A to B 1
3 HC-SR04 Cảm Biến Siêu Âm 1
4 Còi Báo Động 42x16mm 3000Hz 3-24VDC 1
5 Jumper Wires / Dây cắm test board

Sơ đồ mạch

Bảng kết nối

Arduino  HC-SR04 Buzzer 
GND GND GND
5V Vcc  
D6 Echo  
D7 Trig  
D13   Positive (+)

Arduino Code

#define trigPin 7
#define echoPin 6
#define buzzer 13

void setup() {
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT); // chân trig phát tín hiệu
  pinMode(echoPin, INPUT);  // chân echo nhận tín hiệu
  pinMode(buzzer, OUTPUT);  // chân điều khiển buzzer
}

void loop() {
  unsigned long duration; // biến lưu thời gian phản hồi
  float distance;         // biến lưu khoảng cách

  // Phát xung từ chân trig
  digitalWrite(trigPin, LOW); 
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH); 
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  // Đo thời gian xung HIGH từ chân echo
  duration = pulseIn(echoPin, HIGH);

  // Tính khoảng cách (cm)
  // Công thức: Distance = (Time x Speed of Sound) / 2
  // Tốc độ âm thanh = 343 m/s = 0.0343 cm/µs
  distance = (duration * 0.0343) / 2;

  // Xử lý theo khoảng cách
  if (distance > 0 && distance < 10) {
    Buzzer(100); // Phát âm thanh ngắn hơn khi khoảng cách rất gần
  } 
  else if (distance >= 10 && distance < 20) {
    Buzzer(200); // Phát âm thanh dài hơn khi khoảng cách xa hơn
  } 
  else if (distance >= 50 || distance <= 0) {
    Serial.println("Ngoài phạm vi"); // Ngoài khoảng đo của cảm biến
  } 
  else {
    Serial.print("Khoảng cách: ");
    Serial.print(distance);
    Serial.println(" cm");
  }

  delay(200); // Trễ trước khi đọc tiếp
}

// Hàm điều khiển buzzer
void Buzzer(int delayTime) {
  for (int i = 0; i < 3; i++) {
    digitalWrite(buzzer, HIGH);
    delay(delayTime);
    digitalWrite(buzzer, LOW);
    delay(delayTime);
  }
}

Nhận xét

Mới hơn Cũ hơn