Giới thiệu
Trong tự động hóa hiện đại, nhiều khi bạn nhận thấy rằng hầu hết mọi ô tô đều có cảm biến đỗ xe lùi để quan sát mọi chướng ngại vật cản đường. Và, nếu bạn quan tâm đến robot và ngành công nghiệp ô tô, bạn đã hiểu rằng điều này là do cảm biến được nối dây trong robot, thường được biết đến với cái tên 'cảm biến siêu âm'. Về cơ bản, cảm biến siêu âm giúp phát hiện các tín hiệu xung hoặc sóng có cường độ cao mà con người không nghe được. Như chúng ta biết con người có thể nghe được dải tần từ 20Hz đến 20KHz. Cảm biến siêu âm có thể quan sát số đọc nhiều hơn phạm vi này. Bây giờ, trong hướng dẫn này, chúng ta sẽ tạo một "Mạch cảm biến đỗ xe lùi ô tô".
Cảm biến siêu âm hoạt động như thế nào?
Cảm biến siêu âm ước tính khoảng cách của vật thể bằng cách tạo ra sóng siêu âm. Sau đó, nó biến những sóng âm thanh không nghe được đó thành tín hiệu điện. Do đó, cảm biến bao gồm hai phần tử là bộ phát và bộ thu. Máy phát phát ra sóng bằng tinh thể áp điện. Trong khi máy thu đối diện với sóng âm đó. Công thức đo khoảng cách thường được đưa ra là D=1/2 T*C.
Yêu cầu phần cứng
No | Components | Qty |
---|---|---|
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 | – |
Circuit Diagram
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 sẽ phát tín hiệu
pinMode(echoPin, INPUT); // chân echo sẽ nhận tín hiệu
pinMode(buzzer, OUTPUT);
}
void loop() {
unsigned long duration; // biến đo thời gian
int distance; // biến lưu khoảng cách
digitalWrite(trigPin, LOW); // tắt chân trig
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); // phát xung từ chân trig
delayMicroseconds(10); // xung có độ dài 10 microSeconds
digitalWrite(trigPin, LOW); // tắt chân trig
/* Tính toán thời gian */
// Đo độ rộng xung HIGH ở chân echo.
duration = pulseIn(echoPin, HIGH);
// Tính khoảng cách đến vật.
distance = (duration / 2) / 29.1;
if (distance < 10)
{
Buzzer();//dưới 10cm thì còi sẽ phát ra tiếng bíp
}
if (distance < 20)
{
Buzzer1();//dưới 20cm thì còi sẽ phát ra tiếng bíp
}
if (distance >= 50 || distance <= 0)
{
Serial.println("Ngoài phạm vi");
}
else {
Serial.print(distance);
Serial.println(" cm");
}
delay(200);
}
void Buzzer()
{
for (int a = 0; a < 3; a++)
{
digitalWrite(buzzer, HIGH);
delay(100);
digitalWrite(buzzer, LOW);
delay(100);
}
}
void Buzzer1()
{
for (int a = 0; a < 3; a++)
{
digitalWrite(buzzer, HIGH);
delay(150);
digitalWrite(buzzer, LOW);
delay(150);
}
}
Nhận xét