Bài 7/31-2 : phát hiện từ trường bằng công tắc sậy | Bộ SunFounder
Phát hiện từ trường là một trong những cách đơn giản và thú vị nhất để bắt đầu với đầu vào kỹ thuật số trên Arduino. Trong dự án này, bạn sẽ chế tạo một máy dò từ trường bằng công tắc lưỡi gà — một công tắc nhỏ được bọc trong thủy tinh, đóng các tiếp điểm mỗi khi có nam châm đến gần. Vì công tắc lưỡi gà hoạt động hoàn toàn giống như một nút nhấn (nó hoặc mở hoặc đóng), đây là một cách giới thiệu hoàn hảo về hàm digitalRead(), đồng thời cũng dạy cho bạn lý do tại sao điện trở kéo xuống lại quan trọng và cách điện trở kéo lên đầu vào tích hợp sẵn của Arduino có thể thay thế hoàn toàn nó.
Khi bạn đã làm cho mạch này hoạt động, cùng mạch đó sẽ trở thành trái tim của nhiều dự án thực tế. Dưới đây là một vài ý tưởng thực tiễn bạn có thể thử:
- Báo động cửa ra vào và cửa sổ — gắn công tắc lưỡi gà lên khung và một nam châm nhỏ lên cửa; Arduino sẽ báo "mở" ngay khi nam châm di chuyển ra xa.
- Máy đo tốc độ không tiếp xúc — dán một nam châm lên bánh xe đang quay và đếm xung để đo RPM.
- Đọc đồng hồ nước hoặc khí — nhiều đồng hồ tiện ích có đầu ra xung từ tính mà công tắc lưỡi gà có thể thu nhận và ghi lại.
- Cảm biến nắp laptop / vỏ máy — phát hiện khi nắp đóng để kích hoạt chế độ ngủ hoặc đèn LED trạng thái.
- Đồng hồ tốc độ xe đạp — một nam châm trên nan hoa và một công tắc lưỡi gà trên phuộc xe sẽ cho bạn một xung mỗi vòng quay bánh xe.
- Phát hiện xâm nhập — giấu một cặp nam châm và công tắc lưỡi gà bên trong vỏ máy để bạn biết liệu nó đã bị mở hay chưa.
Công tắc lưỡi gà hoạt động như thế nào
Công tắc lưỡi gà là một viên nang thủy tinh nhỏ chứa hai lá sắt từ mỏng (trong video ở phút 12:38). Khi có từ trường, các lá này bị hút vào nhau và chạm nhau, đóng mạch. Khi loại bỏ nam châm, các lá bật ra xa nhau, mở mạch trở lại. Đó là toàn bộ nguyên lý — đây là một công tắc không có nút bấm chuyển động, không bị mài mòn do ngón tay nhấn, và không cần tiếp xúc vật lý với vật thể bạn đang cảm biến.
Bạn có thể kiểm chứng hành vi này bằng đồng hồ vạn năng ở chế độ thông mạch (trong video ở phút 13:59): khi không có nam châm ở gần, đồng hồ hiển thị mạch hở, và ngay khi nam châm đến gần, tiếng bíp vang lên và đồng hồ đọc mạch kín. Vì công tắc này tương đương về mặt điện với một nút nhấn, mã Arduino và cách đấu dây cũng giống như bất kỳ đầu vào kỹ thuật số nào khác.
Giải thích về đầu vào kỹ thuật số và điện trở kéo
Arduino đọc một chân kỹ thuật số là HIGH hoặc LOW. Trên bo mạch 5 V, bất kỳ mức nào trên khoảng 2,2 V được coi là HIGH và bất kỳ mức nào dưới khoảng 1,5 V là LOW (trong video ở phút 01:49). Vấn đề là một công tắc được nối trực tiếp giữa một chân và 5 V sẽ để chân đó trôi nổi khi công tắc mở — nó không được nối với gì cả, nên nó thu nhiễu và báo các giá trị ngẫu nhiên.
Đó là lý do tại sao cần dùng điện trở. Hai cách bố trí đều hoạt động tốt như nhau:
- Kéo xuống: một điện trở 10 kΩ từ chân xuống mass. Chân đọc mức THẤP khi công tắc mở và mức CAO khi công tắc nối chân với 5 V.
- Kéo lên: một điện trở 10 kΩ từ chân lên 5 V. Chân đọc mức CAO khi công tắc mở và mức THẤP khi công tắc nối chân xuống mass.
Arduino cũng có một điện trở kéo lên nội bộ có thể được bật trong phần mềm bằng INPUT_PULLUP (trong video tại 19:52). Điều này loại bỏ hoàn toàn nhu cầu về điện trở bên ngoài — chân ở trạng thái CAO khi rảnh, và đóng công tắc xuống mass sẽ kéo nó xuống THẤP. Đánh đổi là logic bị đảo ngược: nhấn (hoặc có nam châm) giờ đọc là 0 thay vì 1.
Phần cứng và linh kiện
- Arduino Uno (hoặc bất kỳ bo mạch tương thích nào)
- Mô-đun công tắc sậy hoặc công tắc sậy trần
- Điện trở 10 kΩ (chỉ cần cho phiên bản kéo xuống)
- Breadboard và dây nối
- Một nam châm nhỏ để thử nghiệm
- Cáp USB để lập trình và cấp nguồn
Hướng dẫn đấu dây
Công tắc sậy được đấu dây giống hệt như một nút nhấn. Một chân của công tắc sậy nối với 5 V, chân còn lại nối với chân 2 của Arduino và với một đầu của điện trở 10 kΩ. Đầu còn lại của điện trở nối với mass (trong video tại 14:40). Đây là cấu hình kéo xuống, vì vậy chân đọc mức THẤP khi không có nam châm và mức CAO khi nam châm đóng công tắc.
Trên breadboard, đặt công tắc sậy sao cho hai chân của nó nằm ở các hàng khác nhau, nối điện trở từ cùng hàng với một chân xuống thanh mass, chạy dây đỏ từ chân còn lại đến thanh 5 V, và dây xanh từ điểm nối của công tắc sậy và điện trở đến chân 2 (trong video tại 15:53). Đen nối mass, đỏ nối 5 V, xanh nối chân 2 — cùng quy ước màu được sử dụng xuyên suốt bộ kit SunFounder.
Nếu bạn muốn bỏ qua điện trở, hãy nối một chân của công tắc sậy với chân 2 và chân còn lại trực tiếp với mass, sau đó bật INPUT_PULLUP trong mã như mô tả bên dưới.
Giải thích mã
Sketch được cố ý làm rất nhỏ. Mọi thứ bạn muốn thay đổi đều nằm ở hai chỗ ở đầu tệp.
int reedPin = 2;//the pin reed switch is connected to
void setup() {
Serial.begin(9600);
pinMode(reedPin, INPUT);
}
reedPin — thay đổi số này nếu bạn đấu công tắc sậy với một chân kỹ thuật số khác. Bất kỳ chân kỹ thuật số nào trên Uno đều hoạt động; chân 2 được dùng ở đây đơn giản vì nó thuận tiện trên breadboard.
Serial.begin(9600) — đặt tốc độ cổng nối tiếp. Nếu bạn thay đổi giá trị này, bạn cũng phải thay đổi menu thả xuống tốc độ baud trong cửa sổ Serial Monitor, nếu không bạn sẽ thấy các ký tự rác (trong video tại 11:25).
pinMode(reedPin, INPUT) — cấu hình chân là đầu vào trở kháng cao để nó có thể cảm nhận điện áp do công tắc sậy và điện trở đặt ra. Nếu bạn dùng điện trở kéo lên nội bộ thay vào đó, hãy đổi dòng này thành pinMode(reedPin, INPUT_PULLUP); và nhớ rằng các giá trị đọc sẽ bị đảo ngược.
Vòng lặp chỉ đơn giản đọc chân và in kết quả:
void loop() {
Serial.println(digitalRead(reedPin));
delay(10);
}
digitalRead(reedPin) trả về 1 khi chân ở mức CAO và 0 khi ở mức THẤP. Vì giá trị được truyền thẳng vào Serial.println(), không cần biến trung gian — giá trị đọc được in trực tiếp. Với cách đấu dây kéo xuống, 0 nghĩa là "không có từ trường" và 1 nghĩa là "phát hiện nam châm" (trong video tại 18:31).
delay(10) kiểm soát tần suất in một giá trị đọc. Mười mili giây đủ nhanh để bạn thấy giá trị thay đổi ngay khi nam châm đến gần. Nếu bạn muốn màn hình hiển thị chậm rãi hơn, bạn có thể tăng lên 200 ms, nhưng lưu ý rằng điều này cũng làm chậm việc phát hiện (trong video tại 12:01).
Trình diễn dự án trực tiếp
Sau khi tải sketch lên, mở Serial Monitor và đặt tốc độ baud thành 9600. Khi không có nam châm ở gần, cửa sổ đầy số không. Đưa một nam châm nhỏ lại gần vỏ thủy tinh và đầu ra ngay lập tức chuyển thành số một; kéo nam châm ra xa và nó trở về không (trong video tại 17:04). Phản hồi tức thì và hoạt động ngay cả khi nam châm được giữ cách công tắc một hoặc hai centimet.
Nếu bạn đã làm phiên bản kéo lên thay vào đó, logic bị đảo ngược: màn hình hiển thị 1 khi nghỉ và 0 khi có nam châm (trong video tại 22:13). Dù theo cách nào, bạn giờ đã có một máy dò từ trường không tiếp xúc đáng tin cậy, gần như không tốn kém và có thể được đưa vào bất kỳ ý tưởng dự án nào được liệt kê ở đầu bài viết này.
Phiên bản nút nhấn của bài học đọc kỹ thuật số tương tự này được đề cập riêng trong Bài 7/31: Đọc kỹ thuật số nút nhấn, phát hiện từ trường SunFounder Kit | Robojax.
Các dự án liên quan từ video này
Các chương
- [00:00] Giới thiệu: hai ví dụ đọc kỹ thuật số
- [01:33] Đọc kỹ thuật số và HIGH/LOW nghĩa là gì
- [02:46] Công tắc nút nhấn hoạt động như thế nào
- [03:25] Lý thuyết điện trở kéo lên và kéo xuống
- [05:18] Đấu dây nút nhấn trên breadboard
- [08:21] Mở và giải thích sketch nút nhấn
- [10:55] Tải lên và kiểm tra ví dụ nút nhấn
- [12:38] Giới thiệu công tắc sậy và kiểm tra bằng đồng hồ vạn năng
- [14:40] Đấu dây công tắc sậy vào chân 2
- [16:46] Kiểm tra công tắc sậy bằng nam châm
- [17:19] Giải thích sketch công tắc sậy
- [19:45] Sử dụng INPUT_PULLUP không cần điện trở ngoài
Hình ảnh
/*
* Lesson 7/31-2: Digital read, working with reed switch
Download and resource page https://robojax.com/RJT590
watch video tutorial https://www.youtube.com/watch?v=yyJrqFKn-X4
* written/updated by Ahmad Shamshiri www.Robojax.com
* Dec 12, 2022
*
*/
int reedPin = 2;//the pin reed switch is connected to
void setup() {
Serial.begin(9600);
pinMode(reedPin, INPUT);
}
void loop() {
Serial.println(digitalRead(reedPin));
delay(10);
}
Common Course Links
Common Course Files
Nghĩ bạn có thể cần
-
AmazonBuy reed switch from Amazonamzn.to
-
Amazon
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
-
eBayBuy reed switch from eBayebay.us
-
AliExpressBuy reed switch from AliExpresss.click.aliexpress.com
Tài nguyên & tài liệu tham khảo
-
Tài liệuDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
Bên ngoàiPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Tập tin📁
Thư viện Arduino (tệp nén)
-
Mã nguồn bộ kit học xe thông minh 3-trong-1 của SunFounder
3in1-kit-main-v2.zip12.80 MB
Hướng dẫn Sử dụng
-
Hướng dẫn lắp ráp xe thông minh SunFounder 3-in-1 ArduinoTài liệu này hướng dẫn từng bước lắp ráp xe thông minh SunFounder 3-in-1 Arduino
SunFounder_car_assembly_manual.pdf1.20 MB