Đã được đăng vào 11/12/2019 @ 10:28
Đo khoảng cách bằng cảm biến siêu âm HC-SRF04
Tổng quan
Sóng siêu âm (Sonar) là một loại sóng cao tầng mà con người không thể nghe thấy được.
Tuy nhiên, ta có thể thấy được sự hiện diện của sóng siêu âm ở khắp mọi nơi trong tự nhiên.
Ở các loài động vật như dơi, cá heo … dùng sóng siêu âm để liên lạc với nhau, để săn mồi hay định vị trong không gian.
Xem thêm:
- Đo khoảng cách (cm-inch) với cảm biến siêu âm SR04T và Arduino
- Đo mức nước, mức nhiên liệu đang có trong bồn, bể chứa sử dụng cảm biến siêu âm SR04 và Arduino
Cảm biến siêu âm (HC – SRF04)
Các chân chức năng
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 của điện cao /thấp diễn ra. |
ECHO | Trạng thái ban dầ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 |
OUT | Không sử dụng |
Sơ đồ
Đo khoảng cách bằng cảm biến
Các linh kiện cần thiết
———————–
- Arduino Uno
- Cảm biến siêu âm (SRF-04)
———————-
Code
#define TRIG_PIN 3 #define ECHO_PIN 2 #define TIME_OUT 5000 float GetDistance() { long duration, distanceCm; digitalWrite(TRIG_PIN, LOW); delayMicroseconds(2); digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); duration = pulseIn(ECHO_PIN, HIGH, TIME_OUT); // convert to distance distanceCm = duration / 29.1 / 2; return distanceCm; } void setup() { Serial.begin(9600); pinMode(TRIG_PIN, OUTPUT); pinMode(ECHO_PIN, INPUT); } void loop() { long distance = GetDistance(); if (distance <= 0) { Serial.println("Echo time out !!"); } else { Serial.print("Distance to nearest obstacle (cm): "); Serial.println(distance); } delay(1000); }
Giải thích Code
duration = pulseIn(ECHO_PIN, HIGH, TIME_OUT);
Trong chương trình chúng ta cần chú ý hàm pulseIn
Hàm pulseIn có tác dụng trả về thời gian (tính bằng milisec) kể từ khi hàm này được gọi cho đến khi có tín hiệu tại PIN chỉ định trước, hay trả về 0 nếu không nhận được tín hiệu / quá thời gian timeout.
Các tham số:
ECHO_PIN: Pin chờ
HIGH: Giá trị chờ
TIME_OUT: Thời gian chờ tín hiệu, mặc định là 1s
distanceCm = duration / 29.1 / 2;
Ta biết thời gian âm thanh truyền trong không khí ở 20°C là 344 m/s.
Bằng quy tắc tam suất đơn giản ta có thể dễ dàng tính được sóng âm di chuyển 1 cm trong không khí sẽ mất 1000 / 344 * 100 ~= 29.1 ms.
Do thời gian được tính từ lúc phát tín hiệu tới khi sóng âm phản xạ lại, vì vậy ta chia đôi sẽ ra được quãng đường mà sóng âm đã đi.
Nguồn: arduinokit.vn
Để lại một bình luận