Or you want a quick look: Tổng quan
Trong bài viết này, chúng ta sẽ tìm hiểu về cảm biến chuyển động PIR và làm thế nào để có thể sử dụng được loại cảm biến này. Qua các bước hướng dẫn, các bạn có thể hiểu được cách thức hoạt động của cảm biến chuyển động PIR và cách kết nối cảm biến với Arduino để tạo ra một mạch ứng dụng cụ thể.
Tổng quan
Cảm biến chuyển động PIR (Passive InfaRed Sensor) hay cảm biến hồng ngoại thụ động là một thiết bị điện tử đo ánh sáng hồng ngoại (IR) phát ra từ các vật thể trong khu vực quan sát được. Cảm biến này gọi là thụ động vì nó không dùng nguồn nhiệt tự phát (làm nguồn tích cực, hay chủ động) mà chỉ phụ thuộc vào các nguồn thân nhiệt, đó là thân nhiệt của các thực thể khác, như con người, con vật…
Mọi vật thể, với nhiệt độ bề mặt lớn hơn nhiệt độ không tuyệt đối (-2730C) phát ra nhiệt dưới dạng bức xạ hồng ngoại. Con người không thể nhìn thấy bức xạ này vì các bức xạ ở bước sóng hồng ngoại. Nhưng cảm biến PIR phát hiện các bức xạ này và chuyển hóa nó chúng thành tín hiệu điện thích hợp.
Cảm biến chuyển động PIR HC – SR501
Cảm biến HC-SR501 là một cảm biến có thể phát hiện chuyển động của con người (hoặc động vật). Nó được sử dụng rộng rãi để phát hiện sự hiện diện của con người trong nhiều ứng dụng (tự động bật tắt đèn, đóng mở cửa, kích hoạt hoặc tắt thang cuốn, phát hiện trộm ….).
Cấu tạo
Cảm biến chuyển động HC-SR501 có 3 chân:
- Chân GND: Chân nối đất
- Chân Vcc: Chân nguồn 5V
- Chân Output: Chân ngõ ra, chân này ở mức thấp khi không phát hiện chuyển động và ở mức cao khi phát hiện chuyển động. Chân này được kết nối với chân ngõ vào của Arduino.
Trên đỉnh của board cảm biến, có một loại ống kính đặc biệt gọi là lăng kính Fresnel che phủ cảm biến nhiệt điện (pyroelectronic sensor). Nhiệm vụ của lăng kính Fresnel là tập trung tất cả các bức xạ hồng ngoại vào cảm biến nhiệt điện.
Nếu nhìn vào mặt sau của board cảm biến PIR, bạn sẽ thấy toàn bộ mạch được đặt ở đây. Bộ não của mô-đun cảm biến PIR là IC phát hiện chuyển động BISS0001. Gần IC này, chúng ta có hai chiết áp, một để điều chỉnh độ nhạy của cảm biến để giới hạn khoảng cách bắt xa gần và cái còn lại để điều chỉnh thời gian tín hiệu đầu ra duy trì ở mức cao khi phát hiện đối tượng. Thời gian này có thể được điều chỉnh từ 0,3 giây lên đến 5 phút.
Thông số kỹ thuật
- Điện áp hoạt động: 5V ~ 12V DC ( khuyên dùng: 5V)
- Dòng điện tiêu thụ: 65mA
- Điện áp đầu ra: mức cao 3,3V, mức thấp 0V
- Thời gian trễ: Điều chỉnh (0,3 giây ~ 18 giây)
- Phạm vi cảm ứng: góc quyét < 100° và xa 7m
- Nhiệt độ hoạt động: -20°C ~ +80°C
- Kích thước mạch: 32 * 24mm, lỗ vít 28mm, đường kính vít 2 mm, nắp cảm ứng (đường kính): 23mm
Hoạt động của cảm biến PIR
Cảm biến HC-SR501 phát hiện chuyển động dựa trên sự thay đổi bức xạ hồng ngoại từ vật thể chuyển động. Để được cảm biến HC-SR501 phát hiện, đối tượng phải đáp ứng hai điều kiện:
- Đang chuyển động hoặc đang lay động
- Đang phát ra tia hồng ngoại
Nếu một vật thể đang di chuyển nhưng KHÔNG phát ra tia hồng ngoại (ví dụ: robot hoặc xe đồ chơi), nó sẽ không được cảm biến phát hiện.
Nếu một đối tượng đang phát ra tia hồng ngoại nhưng KHÔNG di chuyển (ví dụ: một người đứng yên mà không di chuyển), nó sẽ không được cảm biến phát hiện.
Con người và động vật phát ra tia hồng ngoại một cách tự nhiên. Do đó, cảm biến có thể phát hiện chuyển động của con người và động vật.
Chúng ta dựa vào trạng thái chân OUTPUT của cảm biến để xác định cảm biến có phát hiện đối tượng hay không.
Khi KHÔNG có người (hoặc động vật) di chuyển trong phạm vi được phát hiện của cảm biến, chân OUTPUT của cảm biến ở mức THẤP.
Khi có con người (hoặc động vật) di chuyển vào phạm vi được phát hiện của cảm biến, chân OUTPUT của cảm biến thay đổi từ THẤP lên CAO (phát hiện chuyển động).
Khi có con người (hoặc động vật) đi ra khỏi phạm vi được phát hiện của cảm biến, chân OUTPUT của cảm biến thay đổi từ CAO sang THẤP (không phát hiện chuyển động).
Mạch ứng dụng dùng cảm biến PIR
Chúng ta cùng thực hiện một mạch ứng dụng nhỏ bằng cách sử dụng Arduino và cảm biến PIR. Trong mạch ứng dụng này, cảm biến PIR phát hiện bất kỳ chuyển động nào phía trước nó và gửi tín hiệu đến Arduino. Khi phát hiện đội tượng đang di chuyển, Arduino sẽ kích hoạt Relay mở đèn.
Mạch này rất đơn giản, mục đích là đưa ra ý tưởng về cách giao tiếp giữa cảm biến PIR với Arduino và cách chúng ta có thể sử dụng dữ liệu từ cảm biến PIR và điều khiển các thiết bị đầu ra khác hoặc tải như module GSM, còi,….
Linh kiện cần thiết
- Arduino UNO
- Cảm biến HC-SR501
- Module Rơ-le 5V
- Breadboard
- Dây nối
- Nguồn điện
Sơ đồ mạch
Mạch cảm biến chuyển động PIR sử dụng Arduino rất đơn giản. Kết nối chân Vcc và GND của cảm biến tương ứng với + 5V và GND. Sau đó kết nối chân Output của cảm biến PIR với chân số 2 của Arduino. Mô-đun rơ-le được kết nối với chân số 3 của Arduino.
Code
int sensorPin = 2; // Chân 2 của Arduino kết nối với cảm biến
int pirState = LOW; //Bắt đầu không có báo động
int val = 0;
int relayPin = 3; //Chân 3 của Arduino kết nối với rơ-le
void setup() {
pinMode(sensorPin, INPUT);
pinMode(relayPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
val = digitalRead(sensorPin); // đọc giá trị ngõ vào
if (val == HIGH) { // kiểm tra ngõ vào có ở mức CAO không
digitalWrite(relayPin, HIGH); // bật rơ-le
delay(150);
if (pirState == LOW) {
Serial.println(“Phat hien chuyen dong!”);
pirState = HIGH;
}
} else {
digitalWrite(relayPin, LOW); // tắt rơ-le
delay(150);
if (pirState == HIGH) {
Serial.println(“Khong phat hien chuyen dong!”);
pirState = LOW;
}
}
}
Hoạt động của mạch rất đơn giản. Khi hệ thống được cấp nguồn, Arduino sẽ chờ cảm biến PIR được cân chỉnh. Thời gian cân chỉnh khoảng 10 giây và trong thời gian này, không nên có chuyển động nào trước cảm biến PIR.
Sau khi hiệu chỉnh, cảm biến PIR sẽ sẵn sàng phát hiện bất kỳ chuyển động nào phía trước nó. Nếu cảm biến PIR phát hiện bất kỳ chuyển động nào, chân Output của nó, được kết nối với chân 2 của Arduino sẽ lên mức CAO.
Arduino sẽ phát hiện tín hiệu mức CAO này và kích hoạt rơ-le mở đèn.