Trong cuộc sống hiện đại ngày nay, cảm biến là một loại thiết bị được sử dụng khá rộng rãi và phổ biến. Có thể bạn cũng đã từng một lần nghe đến cảm biến hay sensor rồi đúng không nào? Vậy trong bài học hôm nya, chúng ta sẽ cùng nhau tìm hiểu về một số loại cảm biến cũng như cấu tạo và chức năng của chúng. Oke bắt đầu thôi nào.
Trong một môi trường nào đó xung quang chúng ta, đều có những quá trình hay trạng thái vật lý, hóa học nào đó đang diễn ra. Vậy đối tượng chúng ta cần khảo sát, đo đạc chính là những trạng thái, quá trình đó. Khi này, chúng ta sẽ dùng đến một thiết bị điện tử gọi là "cảm biến" để biến các thông số độ ẩm, nhiệt độ, chuyển động,...thành các tín hiệu điện. Lúc này các tín hiệu điện sẽ được xử lý đưa về dạng các thông số định tính và có biểu thị được các thông số ban đầu.
Thông thường thì người ta sẽ đặt cảm biến trong một cái vỏ bảo vệ tạo thành một đầu đo, đầu thu. Đi kèm với đó thường sẽ có luôn các mạch điện xử lý tín hiệu, gom chung người ta gọi là "cảm biến"
Lúc này, các đầu đo sẽ tiếp nhận các đại lượng cần đo từ môi trường và các mạch điện sẽ xử lý tín hiệu và chúng ta sẽ dùng các thông số đã đo được để điều khiển các động cơ, thiết bị output khác.
Có rất nhiều loại cảm biến khác nhau nhưng về tổng quan thì ta có thể chia chúng làm 2 loại như sau:
Cảm biến vật lý: ánh sáng, gia tốc, hồng ngoại, âm thanh, nhiệt độ, áp suất,...
Cảm biến hóa học: độ ẩm, ion, pH, khí gas,...
Trong các bài toán điều khiển hay các dự án lớn trong công nghiệp hiện đại thì cảm biến đóng vai trò vô cùng quan trọng:
Giúp con người đo đã được nhiều loại thông số vật lý, hóa học,...
Cảm nhận được các tín hiệu vào, ra nhằm tăng sự hiệu quả trong khâu điều khiển, vận hành.
Cảm nhận riêng biệt, giới hạn được những đại lượng cần đo.
Thực ra nếu các bạn có để ý thì xung quanh mình có rất nhiều thứ đang dùng đến cảm biến, điển hình như các cánh cửa tự động ở siêu thị, vỗ tay tắt đèn, hệ thống báo cháy, nhiệt kế điện tử,...
Cảm biến nhiệt độ được sử dụng rộng rãi ngày nay bởi chức năng của nó thích hợp với rất nhiều dự án trong sản xuất hay đời sống. Người ta dùng cảm biến nhiệt để đo nhiệt độ ở các môi trường khác nhau: không khí, nước,... Hiểu đơn giản đây là thiết bị dùng để đo sự biến đổi nhiệt độ của các vật chất. Khi nhiệt độ có sự thay đổi thì cảm biến sẽ đưa tín hiệu về cho bộ đọc và quy ra thành một con số cụ thể có thể sử dụng trong mã lập trình hay hiển thị.
Nguyên lý hoạt động: khi có sự thay đổi nhiệt độ của môi trường tác động đến nhiệt ở đầu nóng và đầu lạnh. Đầu nóng xuất hiện hiệu điện thế. Khi hiệu điện thế giữa hai đầu chênh lệch, tín hiệu sẽ được đưa về bộ đọc nối với dây đầu lạnh. Sau đấy, bộ điều khiển sẽ tiến hành phân tích và đưa ra chế độ làm việc phù hợp cho máy móc, thiết bị.
Cảm biến áp suất là thiết bị để đo áp suất trong các bình hơi, khí nén,...trong công nghiệp. Nó có vai trò chuyển áp suất thành tín hiệu điện và truyền về bộ điều khiển lập trình để điều khiển động cơ hoạt động. Hiểu nôm na như tủ lạnh nhà bạn, lúc nào cũng hoạt động nhưng cảm biến sẽ giúp cho tủ lạnh biết nó nên hoạt động với công suất bao nhiêu.
Cảm biến áp suất được sử dụng phổ biến trong các dự án, máy móc có cơ cấu khí nén. Đặc biệt trong ngành công nghiệp ô tô thì cảm biến áp suất lốp xe cũng đóng vai trò rất lớn. Ngoài ra, nó còn được sử dụng để đo áp suất nước, áp suất khí.
Đầu dò khói hay còn gọi là đầu báo khói. Đây là một loại cảm biến có nhiệm vụ phát hiện sớm các vụ cháy nổ bằng cách nhận biết khói. Hiện nay các nhà sản xuất thường đặt các cảm biến trong một bộ khung nhựa tròn và có thể báo cho các trung tâm chữa cháy.
Hiện nay thì có 2 loại đầu báo khói trên thị trường là đầu báo khói ion hóa và đầu báo khói quang điện. Cả 2 đều có tính hiệu quả cao nhưng đầu báo khỏi ion hóa sẽ có phần nhanh hơn trong việc phát hiện các đám cháy nhỏ, trong khi đó loại quang điện lại hiệu quả hơn trong các đám cháy âm ỉ.
Cảm biến vật cản hồng ngoại
Nguồn: Instructables
Cảm biến hồng ngoại (IR sensor) là thiết bị điện tử hoạt động để đo và phát hiện các bức xạ hồng ngoại. Bức xạ hồng ngoại là những bức xạ điện từ có bước sóng dài hơn ánh sáng mà mắt thường có thể nhìn thấy.
Tất cả mọi vật có nhiệt độ lớn hơn 0 độ K đều có thể phát ra tia hồng ngoại, chẳng hạn như đèn LED, remote tivi, màn hình máy tính,... Các nhà khoa học đã chỉ ra rằng tia hồng ngoại xa có bước sóng từ 760nm - 1mm rất quan trọng đối với sự sống, sinh trưởng và phát triển của sinh vật trên Trái Đất.
Cảm biến hồng ngoại thì sẽ được chia làm 2 loại:
Chủ động (AIR): Có cấu tạo gồm IR Transmitter và IR Receiver. Khi một vật thể đến gần cảm biến, tia hồng ngoại phát ra từ IR Transmitter sẽ phản xạ vào vật thể trở lại và IR Receiver sẽ tiếp nhận. Ứng dụng này thường được sử dụng trong các hệ thống phát hiện chướng ngại vật (như trong robot), dò line của robot tìm đường.
Thụ động (PIR): Thiết bị không thể phát ra bức xạ hồng ngoại mà chỉ có thể phát hiện được bức xạ phát ra từ các vật thể khác như người, động vật hoặc nguồn nhiệt. Cảm biến hồng ngoại thụ động sẽ phát hiện vật thể phát bức xạ hồng ngoại và chuyển tín hiệu thành báo động. Vì vậy người ta gọi đó là thụ động, chỉ phát hiện chứ không phải là nguồn phát ra tia hồng ngoại.
Cảm biến hồng ngoại chủ động
Cảm biến hồng ngoại thụ động
Rồi như vậy hôm nay ta sẽ tìm hiểu làm sao để sử dụng cảm biến hồng ngoại chủ động nha hay còn gọi là Active Infrared Sensor. Sau đây là một vài thứ bạn phải chuẩn bị:
1 board Arduino UNO R3.
1 dây cáp USB để kết nối board với máy tính
1 Máy tính/Laptop để viết code.
Cảm biến vật cản hồng ngoại (tham khảo).
1 breadboard.
Dây breadboard.
Phần mềm lập trình Arduino - Arduino IDE.
Trước hết các bạn hãy lắp mạch theo sơ đồ như trên. Các bạn có thể dùng breadboard hoặc nối thẳng trực tiếp từ Arduino qua cảm biến. Để giải thích thêm thì VCC và GND sẽ là 2 chân cấp nguồn cho cảm biến hoạt động. Chân OUT sẽ trả tín hiệu Digital hay Analog về cho Arduino. Ở đây chúng ta sẽ lấy tín hiệu digital nên cảm biến sẽ trả về 0 hoặc 1. Sau khi lắp xong mạch thì chúng ta bước qua phần code.
int Sensor = 7;
int Value;
void setup() {
Serial.begin(9600);
pinMode(Sensor, INPUT);
}
void loop() {
Value = digitalRead(Sensor);
Serial.print("Giá trị cảm biến là: ");
Serial.println(Value);
delay(1000);
}
Như đã nói ở bài trước, nếu muốn dùng một chân nào đó để điều khiển hay nhận tín hiệu vào thì trước tiên ta phải cấu hình chân đó:
pinMode(pin, MODE);
Trong trường hợp này, ta dùng một cảm biến để phát hiện vật cản. Như vật thông tin đang quan tâm tới là thông tin đầu vào - INPUT. Chân tín hiệu OUT đang được nối vào chân digital số 7 và gán vào biến Sensor nên ta sẽ có dòng lệnh như sau:
pinMode(Sensor, INPUT);
Một lưu ý nhỏ ở đây, vị trí của dòng lệnh này là ở đâu bạn nhớ không? Chính xác! Dòng lệnh này sẽ nằm trong void setup() .
Tiếp theo là một cú pháp mới:
Serial.begin(9600);
Rồi mình sẽ nói nhanh qua về cú pháp này luôn. Serial.begin() dùng để thiếp lập giao tiếp nối tiếp giữa bo mạch Arudino với một thiết bị khác. Phổ biến nhất chính là giao tiếp nối tiếp giữa máy tính của bạn với bo mạch thông qua cáp USB (Universal Serial Bus).
Con số 9600 là gì? Để giao tiếp với máy tính, bạn phải dùng một trong các mức baudrate sau: 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, hoặc 115200. Con số đó được gọi là tốc độ truyền. Điều quan trọng nhất mà bạn phải lưu ý, đó là để giao tiếp nối tiếp hoạt động, tốc độ truyền trong Serial.begin() và tốc độ truyền được đặt trên thiết bị nhận cần phải khớp với nhau.
Về vị trí thì Serial.begin() sẽ nằm trong hàm void setup() nhé.
Hàm được sử dụng để hiển thị văn bản trên màn hình máy tính từ bo Arduino là hàm Serial.print() hoặc Serial.println().
Văn bản được in ra sẽ hiển thị trên cửa sổ Serial Monitor. Cửa sổ này được mở từ thanh menu trong Tools> Serial Monitor. Hoặc bằng tổ hợp phím tắt CTRL + SHIFT + M (trên PC) hoặc Command + Shift + M (MacOs) hoặc từ biểu tượng:
Sau khi đã hoàn thành bước trên thì ta sẽ tiến hành đọc giá trị của cảm biến. Để làm được việc đó thì các bạn cần dùng đến lệnh:
digitalRead(pin);
Đây là câu lệnh để đọc giá trị từ một chân digital, giá trị trả về là HIGH hoặc LOW. Sau khi đã đọc được giá trị của cảm biến trả về thì ta sẽ in ra màn hình máy tính. Như đã nói ở trên thì ta sẽ dùng đến 2 dòng lệnh để in ra màn hình
Serial.print("Giá trị cảm biến là: ");
Serial.println(Value);
Kết quả khi Upload và chạy thử thì sẽ như này:
Cảm biến siêu âm HC-SR04 (khoảng cách) là gì? Đây là một thiết bị dùng sóng siêu âm (Sonar) có sóng cao tầng mà con người không thể nghe thấy được để xác định khoảng cách từ cảm biến đến vật thể. Các bạn có thể đã nghe qua sóng siêu âm rồi vì ở ngoài tự nhiên thì có loại dơi, cá heo,... dùng nó để giao tiếp, săn mồi, xác định vị trí trong không gian.
Cảm biến siêu âm thường được ứng dụng để đo khoảng cách vì giá thành của nó khá rẻ và độ chính xác cũng tương đối. Giới hạn đo của cảm biến siêu âm HC-SR04 sẽ rơi vào khoảng 2-300cm.
Cảm biến HC-SR04 sẽ có 4 chân: VCC, GND, Trig, Echo.
Để đo khoảng cách, ta sẽ phát 1 xung rất ngắn (5 microSeconds) từ chân Trig. Ngay sau khi xung được phát ra thì chân Echo sẽ được đưa về mức HIGH. Và khi sóng phản xạ quay về và chân Echo nhận được, lúc nào nó sẽ trở lại mức LOW. Như vậy, để đo khoảng cách thì ta sẽ lấy thời gian mà chân Echo ở trạng thái HIGH, tức là thời gian mà sóng phát ra từ cảm biến và quay lại.
Tốc độ của âm thanh trong không khí là 340 m/s (hằng số vật lý), tương đương với 0,034 cm/microSeconds hay 29,412 microSeconds/cm (10^6 / (340*100)). Khi đã tính được thời gian, ta sẽ chia cho 29,412 để nhận được khoảng cách.
Nguồn: How To Mechatronics
1 board Arduino UNO R3.
1 dây cáp USB để kết nối board với máy tính
1 Máy tính/Laptop để viết code.
Cảm biến siêu âm HC-SR04 (tham khảo).
1 breadboard.
Dây breadboard.
Phần mềm lập trình Arduino - Arduino IDE.
const int TRIG = 8;
const int ECHO = 7;
void setup()
{
Serial.begin(9600);
pinMode(TRIG,OUTPUT);
pinMode(ECHO,INPUT);
}
void loop()
{
unsigned long duration;
int distance;
digitalWrite(trig,0);
delayMicroseconds(2);
digitalWrite(trig,1);
delayMicroseconds(5);
digitalWrite(trig,0);
duration = pulseIn(echo,HIGH); //đo khoảng thời gian sóng phát ra và quay lại
distance = int(duration/2/29.412);
Serial.print("Khoảng cách: ");
Serial.print(distance);
Serial.println("cm");
delay(200);
}
duration = pulseIn(echo,HIGH);
Hàm pulseIn() được dùng để đo độ rộng của xung, các bạn có thể xem thêm tại đây
Duration sẽ bằng độ dài mà chân Echo nhận được xung HIGH và sẽ được tính theo micro giây.
distance = int(duration/2/29.412);
Bởi vì thời gian mà sóng truyền từ cảm biến đến vật và ngược lại là như nhau, nên ta chỉ lấy một chiều. Vì vậy ta phải lấy biến duration chia 2. Sau đó thì chia tiếp cho 29,412 để ra được khoảng cách theo cm.