Tải bản đầy đủ (.pdf) (11 trang)

Hướng dẫn đầy đủ cho cảm biến siêu âm HCSR04 với Arduino IDE

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (713.01 KB, 11 trang )

Hướng dẫn đầy đủ cho cảm biến siêu âm HC-SR04 với
Arduino
Bài viết này là hướng dẫn về Cảm biến siêu âm HC-SR04. Chúng tơi sẽ giải thích cách
thức hoạt động, cho bạn thấy một số tính năng của nó và chia sẻ ví dụ về dự án Arduino
mà bạn có thể làm theo để tích hợp vào các dự án của mình. Chúng tơi cung cấp một sơ
đồ về cách nối dây cảm biến siêu âm và một bản phác thảo ví dụ với Arduino.

Mơ tả:__________
Cảm biến siêu âm HC-SR04 sử dụng sonar để xác định khoảng cách đến một vật thể.
Cảm biến này đọc từ 2cm đến 400cm (0,8inch đến 157inch) với độ chính xác 0,3cm
(0,1inch), tốt cho hầu hết các dự án sở thích. Ngồi ra, mơ-đun đặc biệt này đi kèm với
các mô-đun máy phát và máy thu siêu âm.
Hình ảnh sau đây cho thấy cảm biến siêu âm HC-SR04.

1/11


Hình ảnh tiếp theo cho thấy phía bên kia của cảm biến.

Tính năng
Dưới đây là danh sách một số tính năng và thông số kỹ thuật của cảm biến siêu âm HCSR04 — để biết thêm thông tin, bạn nên tham khảo bảng dữ liệu của cảm biến:
Nguồn điện: + 5V DC
Quiescent hiện tại: <2mA
Làm việc hiện tại: 15mA
Góc hiệu quả: <15 °
2/11


Khoảng cách: 2cm - 400 cm / 1 "- 13ft
Độ phân giải: 0.3 cm
Đo góc: 30 độ


Kích hoạt đầu vào Độ rộng xung: 10uS TTL xung
Tín hiệu đầu ra tiếng vang: Xung TTL tỷ lệ thuận với dải khoảng cách
Kích thước: 45mm x 20mm x 15mm

Nó hoạt động như thế nào?
Cảm biến siêu âm sử dụng sonar để xác định khoảng cách đến một vật thể. Đây là
những gì sẽ xảy ra:
1. Máy phát siêu âm (chân trig) phát ra âm thanh tần số cao (40 kHz).
2. Âm thanh truyền đi trong khơng khí. Nếu nó tìm thấy một đối tượng, nó sẽ bật trở lại
mơ-đun.
3. Máy thu siêu âm (chân tiếng vang) nhận âm thanh phản xạ (tiếng vang).

Thời gian giữa việc truyền và nhận tín hiệu cho phép chúng ta tính tốn khoảng cách đến
một vật thể. Điều này là có thể bởi vì chúng ta biết vận tốc của âm thanh trong khơng khí.
Đây là cơng thức:
distance to an object = ((speed of sound in the air)*time)/2

tốc độ âm thanh trong khơng khí ở 20ºC (68ºF) = 343m / s

HC-SR04 Sơ đồ chân cảm biến siêu âm

3/11


Đây là sơ đồ chân của Cảm biến siêu âm HC-SR04.
VCC

Cấp nguồn cho cảm biến (5V)

Trig


Kích hoạt pin đầu vào

Tiếng dội

Chân đầu ra tiếng vang

GND

GND thơng thường

Mua ở đâu?
Bạn có thể kiểm tra cảm biến siêu âm HC-SR04 trên Maker Advisor để tìm giá tốt nhất:
Cảm biến siêu âm HC-SR04

Arduino với cảm biến HC-SR04

4/11


Cảm biến này rất phổ biến trong số những người mày mị Arduino. Vì vậy, ở đây chúng
tơi cung cấp một ví dụ về cách sử dụng cảm biến siêu âm HC-SR04 với Arduino. Trong
dự án này, cảm biến siêu âm đọc và ghi khoảng cách đến một đối tượng trong màn hình
nối tiếp.
Mục tiêu của dự án này là giúp bạn hiểu cách thức hoạt động của cảm biến này. Sau đó,
bạn sẽ có thể sử dụng ví dụ này trong các dự án của riêng bạn.
Các bộ phận cần thiết
Dưới đây là danh sách các phần cần thiết để làm theo hướng dẫn tiếp theo:
Arduino UNO - đọc Bộ dụng cụ khởi động Arduino tốt nhất
Cảm biến siêu âm (HC-SR04)

Breadboard
Dây nhảy

Arduino với hệ thống dây cảm biến HC-SR04
Thực hiện theo sơ đồ tiếp theo để nối cảm biến siêu âm HC-SR04 với Arduino.

5/11


Bảng sau đây hiển thị các kết nối bạn cần thực hiện:
Cảm biến siêu âm HC-SR04

Arduino

VCC

5V

Trig

Chân 11

Tiếng dội

Chân 12

GND

GND



Tải mã sau lên Arduino IDE của bạn.

6/11


/*
* created by Rui Santos,

*

* Complete Guide for Ultrasonic Sensor HC-SR04

*
Ultrasonic sensor Pins:

VCC: +5VDC

Trig : Trigger (INPUT) - Pin11

Echo: Echo (OUTPUT) - Pin 12

GND: GND

*/



int trigPin = 11;
// Trigger


int echoPin = 12;
// Echo

long duration, cm, inches;



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;
// Divide by 29.1 or multiply by 0.0343

inches = (duration/2) / 74;

// Divide by 74 or multiply by 0.0135

Serial.print(inches);

Serial.print("in, ");

Serial.print(cm);

Serial.print("cm");

Serial.println();

delay(250);

}


Mã hoạt động như thế nào

7/11


Đầu tiên, bạn tạo các biến cho trigger và echo pin được gọi là trigPin và echoPin, tương
ứng. Chân kích hoạt được kết nối với Chân 11 kỹ thuật số và chân dội âm được kết nối
với Chân 12:
int trigPin = 11; 

int echoPin = 12;

Bạn cũng tạo ba biến kiểu dài: thời lượng và inch. Biến thời lượng tiết kiệm thời gian

giữa phát xạ và nhận tín hiệu. Biến cm sẽ tiết kiệm khoảng cách tính bằng centimet và
biến inch sẽ tiết kiệm khoảng cách tính bằng inch.
long duration, cm, inches;

Trong setup(), khởi tạo cổng nối tiếp với tốc độ truyền 9600 và đặt chân kích hoạt làm
OUTPUT và chân echo làm INPUT.
//Serial Port begin

Serial.begin (9600);

//Define inputs and outputs

pinMode(trigPin, OUTPUT);

pinMode(echoPin, INPUT);

Trong loop(), kích hoạt cảm biến bằng cách gửi xung CAO là 10 micro giây. Tuy nhiên,
trước đó, hãy đưa ra một xung THẤP ngắn để đảm bảo bạn sẽ có được xung CAO sạch :
digitalWrite(trigPin, LOW);

delayMicroseconds(5);

digitalWrite(trigPin, HIGH);

delayMicroseconds(10);

digitalWrite(trigPin, LOW);

Chúng ta sử dụng hàm pulseIn() để lấy thời gian truyền sóng âm:
duration = pulseIn(echoPin, HIGH);


Hàm pulseIn() đọc xung CAO hoặc THẤP trên chân. Nó chấp nhận làm đối số chân và
trạng thái của xung (CAO hoặc THẤP). Nó trả về độ dài của xung tính bằng micro giây.
Độ dài xung tương ứng với thời gian cần thiết để di chuyển đến vật thể cộng với thời gian
di chuyển trên đường trở về.
Sau đó, chúng tơi tính tốn khoảng cách đến một vật thể, có tính đến tốc độ âm thanh.
distance = (traveltime/2) x speed of sound

The speed of sound is: 343m/s = 0.0343 cm/uS = 1/29.1 cm/uS

Or in inches: 13503.9in/s = 0.0135in/uS = 1/74in/uS

Chúng ta cần chia thời gian di chuyển cho 2 vì chúng ta phải xem xét rằng sóng đã được
gửi đi, chạm vào vật thể và sau đó quay trở lại cảm biến.
cm = (duration/2) / 29.1;

inches = (duration/2) / 74;
8/11


Cuối cùng, chúng tơi in kết quả trong Màn hình nối tiếp:
Serial.print(inches);

Serial.print("in, ");

Serial.print(cm);

Serial.print("cm");

Serial.println();


Mã nguồn với Thư viện NewPing
Bạn cũng có thể sử dụng thư viện Newping. Tải xuống thư viện tại đây.
Sau khi cài đặt thư viện Newping, bạn có thể tải lên mã được cung cấp bên dưới.
/*
* Posted on

* created by />
*/
#include <NewPing.h>



#define TRIGGER_PIN 11

#define ECHO_PIN 12

#define MAX_DISTANCE 200

// NewPing setup of pins and maximum distance

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);



void setup() {

Serial.begin(9600);

}




void loop() {

delay(50);

unsigned int distance = sonar.ping_cm();

Serial.print(distance);

Serial.println("cm");

}


Xem mã thô

Mã hoạt động như thế nào
Lấy khoảng cách đến một đối tượng bằng thư viện NewPing đơn giản hơn nhiều.
Bạn bắt đầu bằng cách bao gồm thư viện Newping:
#include <NewPing.h>

Sau đó, xác định cị súng và chân tiếng vang. Chân kích hoạt được kết nối với Chân kỹ
thuật số Arduino 11 và tiếng vang với Chân 12. Bạn cũng cần định nghĩa biến
MAX_DISTANCE để có thể sử dụng thư viện.

9/11



#define TRIGGER_PIN 11

#define ECHO_PIN 12

#define MAX_DISTANCE 200

Sau đó, bạn tạo một phiên bản NewPing được gọi là sonar:
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

Trong setup(), bạn khởi tạo giao tiếp nối tiếp nối tiếp với tốc độ truyền 9600.
Serial.begin(9600);

Cuối cùng, trong loop(), bạn chỉ cần sử dụng phương thức ping_cm() trên đối tượng
sonar để có được khoảng cách tính bằng centimet.
unsigned int distance = sonar.ping_cm();

Nếu bạn muốn lấy khoảng cách tính bằng inch, bạn có thể sử dụng sonar.ping_in() để
thay thế.

Cuộc biểu tình

Tải mã lên bảng Arduino của bạn. Sau đó, mở Serial Monitor với tốc độ truyền 115200.

Khoảng cách đến đối tượng gần nhất được in trong cửa sổ Serial Monitor.
10/11


Tổng kết
Trong bài đăng này, chúng tôi đã chỉ cho bạn cách cảm biến siêu âm HC-SR04 hoạt động
và cách bạn có thể sử dụng nó với bảng Arduino. Ví dụ về dự án, bạn có thể xây dựng

Cảm biến đỗ xe với đèn LED và còi.
.

11/11



×