Hướng dẫn sử dụng cảm biến từ trường (Reed Switch) với Arduino
Reed switch là một loại cảm biến từ trường được sử dụng rộng rãi trong các ứng dụng điện tử và điện từ. Được phát minh vào những năm 1930, bởi Walter B. Ellwood và nó đã trở thành một cảm biến quan trọng trong việc chuyển đổi tín hiệu từ trường thành tín hiệu điện.
Tổng quan về cảm biến từ trường Reed Switch
Cảm biến từ trường Reed Switch được làm từ một cặp kim loại sắt từ. Tại các điểm tiếp xúc của cảm biến được mạ bằng các kim loại cứng như rhodium, ruthenium, palladium hoặc iridium để giúp chúng có tuổi thọ cao hơn khi bật/tắt hàng triệu lần.
Cặp kim loại được đặt bên trong một ống thủy tinh để giữ cho chúng không bị bụi bẩn. Việc bịt kín làm cho chúng phù hợp để sử dụng trong các môi trường dễ cháy nổ. Ống thủy tinh chứa đầy khí trơ, thường là nitơ hoặc chân không để tránh quá trình oxy hóa các điểm tiếp xúc.
Thông thường, các tiếp điểm được làm bằng hợp kim Sắt Niken có độ từ tính cao. Thời gian để cảm biến phản ứng với những thay đổi của từ trường là khá thấp (0,6ms là thời gian bật, 0,2ms thời gian tắt) so với các công tắc điện tử trên thị trường.
Khi có từ trường, cả hai tiếp điểm đều chuyển động (thay vì chỉ một) và chúng tạo thành một vùng tiếp xúc phẳng, song song với nhau. Điều này giúp tăng tuổi thọ của cảm biến Reed Switch.
Cảm biến từ trường Reed Switch hoạt động như thế nào?
Khi bạn đưa một nam châm lại gần cảm biến từ trường Reed Switch, toàn bộ cảm biến sẽ trở thành một phần của “mạch từ tính” bao gồm cả nam châm.
Hai tiếp điểm của cảm biến trở thành các cực từ và chúng hút vào nhau. Việc các bạn đưa đầu nam châm nào lại gần hơn không quan trọng, các tiếp điểm vẫn phân cực ngược chiều và hút nhau.
Khi bạn lấy nam châm ra xa, các tiếp điểm sẽ tách ra và trở lại vị trí ban đầu.
Reed Switch bình thường sẽ ở trạng thái thường hở, nghĩa là khi cảm biến không bị ảnh hưởng bởi từ trường, công tắc mở và không dẫn điện. Khi một nam châm đến đủ gần sẽ kích hoạt cảm biến, các tiếp điểm sẽ đóng lại và dòng điện chạy qua.
Các linh kiện cần thiết cho dự án
TÊN LINH KIỆN | SỐ LƯỢNG | NƠI BÁN |
Arduino Uno R3 | 1 | Shopee | Cytron |
Cảm biến từ trường Reed Switch | 1 | Shopee | Cytron |
Dây cắm | 1 | Shopee | Cytron |
Breadboard | 1 | Shopee | Cytron |
Sơ đồ đấu nối Cảm biến từ trường Reed Switch với Arduino Uno
Dưới đây là một một sơ đồ đấu nối cho dự án và chúng khá đơn giản. Đầu tiên các bạn uốn cong cả hai chân của cảm biến từ trường sao cho vuông góc sao cho chúng tạo thành hình chữ “U”. Lưu ý, trong quá trình uốn chân cẩn thận tránh làm vỡ ống của cảm biến.
Cắm cảm biến vào breadboard. Tiến hành đấu nối dây theo sơ đồ bên dưới, một chân nối vào GND và chân còn lại nối vào chân số 2 của Arduino.
Code Cảm biến Reed Switch
Đây là một dự án cơ bản, mình sẽ bật đèn LED được tích hợp sẵn trên board (chân 13) khi đưa nam châm lại gần cảm biến và tắt khi di chuyển nó ra xa.
const int REED_PIN = 2; // Pin connected to reed switch const int LED_PIN = 13; // LED pin void setup() { Serial.begin(9600); pinMode(REED_PIN, INPUT_PULLUP); // Enable internal pull-up for the reed switch pinMode(LED_PIN, OUTPUT); } void loop() { int proximity = digitalRead(REED_PIN); // Read the state of the switch // If the pin reads low, the switch is closed. if (proximity == LOW) { Serial.println("Switch closed"); digitalWrite(LED_PIN, HIGH); // Turn the LED on } else { Serial.println("Switch opened"); digitalWrite(LED_PIN, LOW); // Turn the LED off } }
Dưới đây là kết quả, khi đưa nam châm lại gần cảm biến Reed Switch sẽ đóng lại và in ra chữ “Switch closed” và ngược lại khi không có từ trường sẽ in ra chữ “Switch opened”.
Giải thích Code
const int REED_PIN = 2; // Pin connected to reed switch const int LED_PIN = 13; // LED pin
Đoạn code trên có chức năng đọc trạng thái của cảm biến từ trường Reed Switch thông qua chân số 2 (REED_PIN) và điều khiển đèn LED thông qua chân số 13 (LED_PIN).
void setup() { Serial.begin(9600); pinMode(REED_PIN, INPUT_PULLUP); // Enable internal pull-up for the reed switch pinMode(LED_PIN, OUTPUT); }
Trong hàm setup(), đầu tiên khởi tạo tốc độ truyền dữ liệu Serial với baudrate là 9600. Tiếp theo, cấu hình chân số 2 là chân INPUT_PULLUP để kích hoạt điện trở kéo lên trong mạch, cho cảm biến Reed Switch. Sau đó, cấu hình chân số 13 là chân OUTPUT để điều khiển đèn LED.
void loop() { int proximity = digitalRead(REED_PIN); // Read the state of the switch // If the pin reads low, the switch is closed. if (proximity == LOW) { Serial.println("Switch closed"); digitalWrite(LED_PIN, HIGH); // Turn the LED on } else { Serial.println("Switch opened"); digitalWrite(LED_PIN, LOW); // Turn the LED off } }
Trong hàm loop(), đầu tiên đọc trạng thái của chân số 2 và gán giá trị đó vào biến proximity. Nếu giá trị của proximity là LOW, có nghĩa là switch đã đóng (Reed Switch tiếp xúc với từ trường), đoạn code sẽ in ra dòng chữ “Switch closed” trên Serial monitor và đèn LED sẽ được bật. Nếu giá trị của proximity là HIGH, có nghĩa là switch đã mở (Reed Switch không tiếp xúc với từ trường), đoạn code sẽ in ra dòng chữ “Switch opened” trên Serial monitor và đèn LED sẽ tắt đi. Các hoạt động này được lặp lại liên tục bởi vòng lặp loop().