Bạn đã bao giờ nghe về Cảm Biến Siêu âm HC-SR04 (Ultrasonic Sensor) chưa? Đây là một loại cảm biến rất phổ biến và được sử dụng rộng rãi để xác định khoảng cách. Đặc điểm nổi bật của cảm biến HC-SR04 là giá rẻ và độ chính xác cao. Cảm biến này sử dụng sóng siêu âm và có thể đo khoảng cách từ 2 đến 300cm, với độ chính xác phụ thuộc vào cách lập trình.
Nguyên lý hoạt động của Cảm Biến Siêu âm HC-SR04
Cảm biến siêu âm HC-SR04 sử dụng nguyên lý phản xạ sóng siêu âm. Nó gồm hai module: một module phát ra sóng siêu âm và một module thu sóng siêu âm phản xạ về. Ban đầu, cảm biến sẽ phát ra một sóng siêu âm với tần số 40kHz. Nếu có chướng ngại vật trên đường đi, sóng siêu âm sẽ được phản xạ lại và tác động lên module thu sóng. Bằng cách đo thời gian từ lúc phát đến lúc nhận sóng, ta có thể tính được khoảng cách từ cảm biến đến chướng ngại vật.
Công thức tính khoảng cách là:
Khoảng cách = (thời gian * vận tốc âm thanh (340 m/s)) / 2
Thông số kỹ thuật Cảm Biến Siêu âm HC-SR04
- Điện áp: 5V DC
- Dòng hoạt động: < 2mA
- Mức cao: 5V
- Mức thấp: 0V
- Góc tối đa: 15 độ
- Khoảng cách: 2cm – 450cm (4.5m)
- Độ chính xác: 3mm
Điều khiển Cảm Biến Siêu âm HC-SR04 bằng Arduino
Để điều khiển Cảm Biến Siêu âm HC-SR04 bằng Arduino, bạn có thể sử dụng code sau:
/*
* 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);
}