Nội Dung Bài Viết
Cảm biến biến siêu âm làm việc như thế nào?
Cảm biến siêu âm sử dụng âm thanh để xác định khoảng cách giữa cảm biến và đối tượng gần nhất trong đường dẫn của nó. Làm thế nào để cảm biến siêu âm làm điều này? Cảm biến siêu âm cơ bản là cảm biến âm thanh, nhưng chúng hoạt động ở tần số trên thính giác của con người.
Cảm biến sẽ phát ra sóng âm ở tần số cụ thể. Sau đó nó lắng nghe sóng âm cụ thể đó thoát ra khỏi vật thể và quay trở lại (Hình trên). Cảm biến theo dõi thời gian giữa việc gửi sóng âm và sóng âm thanh trở lại. Nếu bạn biết cái gì đó đi với vận tốc báo nhiều và thời gian đi thì bạn sẽ tính được khoảng cách với công thức: d = t/v
Các cảm biến siêu âm có dạng hình nón, góc của nón này thay đổi theo khoảng cách. Hình trên cho thấy mối quan hệ này. Khả năng phát hiện đối tượng của cảm biến cũng phụ thuộc vào hướng đối tượng đến cảm biến. Nếu một vật không có bề mặt phẳng với cảm biến thì có thể sóng âm thanh sẽ bật ra khỏi vật thể và không quay trở lại cảm biến.
Cảm biến khoảng cách HC-SR04
Cảm biến khoảng cách siêu âm HC-SR04 được sử dụng rất phổ biến để xác định khoảng cách vì RẺ và CHÍNH XÁC. Cảm biến sử dụng sóng siêu âm và có thể đo khoảng cách trong khoảng từ 2 -> 300 cm, với độ chính xác gần như chỉ phụ thuộc vào cách lập trình.
Sơ đồ chân HC-SR04
HC-SR04 gồm: VCC, Trig, Echo, GND. Trong đó:
VCC –> Nguồn cung cấp (thường +5V)
Trig –> chân digital (OUTPUT), đây là chân sẽ phát tín hiệu từ cảm biến.
Echo –> chân digital (INPUT), đây là chân sẽ nhận lại tín hiệu được phản xạ từ vật cản.
GND —> GND
Cách thức đo khoảng cách HC-SR04
Để đo khoảng cách, ta sẽ phát 1 xung rất ngắn (5 microSeconds – ú) từ chân Trig. Sau đó, cảm biến sẽ tạo ra 1 xung HIGH ở chân Echo đế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í trong điều kiện phòng là 330 m/s (hằng số vật lý), tương đương với 29,1 microSeconds/cm (106 / (330*100)). Khi đã tính được thời gian, ta sẽ chia cho 29,1 để nhận được khoảng cách.
Kết nối HC-SR04 với Arduino
Sơ đồ kết nối chân
HC-SR04 | Arduino |
VCC | 5V |
Trig | D11 |
Echo | D12 |
GND | GND |
Sơ đồ dây vẽ trên Fritzing
Chương trình Arduino
Trong chương trình có dùng hàm pulseIn() để đo độ rộng của xung.
distance = t/v = int((duration/2)/29.1). Thời gian duration ta đo được là thời gian sóng đi từ HC-SR04 đến vật và từ vật về HC-SR04. Vì vậy, thời gian ta cần là duration/2.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | /* Ultrasonic Sensor HC-SR04 * Ultrasonic sensor Pins: VCC: +5VDC Trig : Trigger (INPUT) - Pin11 Echo: Echo (OUTPUT) - Pin 12 GND: GND */ int trigPin = 11; //Trig - green Jumper int echoPin = 12; //Echo - yellow Jumper long duration, cm; void setup() { //Serial Port begin Serial.begin (9600); //Define inputs and outputs pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); } void loop() { // The sensor is triggered by a HIGH pulse of 10 or more microseconds. // Give a short LOW pulse beforehand to ensure a clean HIGH pulse: digitalWrite(trigPin, LOW); delayMicroseconds(5); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Read the signal from the sensor: a HIGH pulse whose // duration is the time (in microseconds) from the sending // of the ping to the reception of its echo off of an object. pinMode(echoPin, INPUT); duration = pulseIn(echoPin, HIGH); // convert the time into a distance cm = (duration/2) / 29.1; Serial.print(cm); Serial.print("cm"); Serial.println(); delay(250); } |
Chương trình Arduino với thư viện NewPing
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | /* * created by http://playground.arduino.cc/Code/NewPing */ #include <NewPing.h> #define TRIGGER_PIN 11 #define ECHO_PIN 12 #define MAX_DISTANCE 200 NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance. void setup() { Serial.begin(9600); } void loop() { delay(50); unsigned int uS = sonar.ping_cm(); Serial.print(uS); Serial.println("cm"); } |
Các bạn đọc khoảng cách từ cảm biến khoảng cách HC-SR04 bằng 2 chương trình trên, rồi so sánh kết quả nhé.
Download file
Source code
Library + Datasheet
Bài viết các bạn có thể tham khảo:
- Cảm biến dò line – IR Line tracking sensor
- Hướng dẫn đọc cảm biến mưa với Arduino – Rain Sensor
- Cảm biến ánh sáng quang điện trở (LDR)