Arduino Công tắc giới hạn

Công tắc giới hạn đã được sử dụng trong nhiều ứng dụng như điều khiển động cơ, tự động hóa. Trong hướng dẫn này, chúng ta sẽ học cách sử dụng công tắc giới hạn với Arduino.

Arduino với công tắc hành trình

Xin đừng nhầm lẫn với những điều sau đây:

Phần cứng cần chuẩn bị

1×Arduino Uno R3
1×USB 2.0 cable type A/B (for USB-A PC)
1×USB 2.0 cable type C/B (for USB-C PC)
1×Limit Switch (KW12-3)
1×Limit Switch (V-153-1C25)
1×Limit Switch (V-155-1C25)
1×Limit Switch (V-156-1C25)
1×Wires
1×(Tùy chọn) Heat Shrink Tubing
1×(Tùy chọn) Soldering Iron
1×(Khuyến nghị) Screw Terminal Block Shield for Arduino Uno
1×(Khuyến nghị) Breadboard Shield for Arduino Uno
1×(Khuyến nghị) Enclosure for Arduino Uno
1×(Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO

Or you can buy the following kits:

1×DIYables STEM V3 Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về công tắc giới hạn

Nó được gọi là Công tắc giới hạn vì chức năng chính của nó được dùng để phát hiện khi vật thể đang di chuyển đạt đến giới hạn.

Bố trí chân

Có nhiều loại công tắc giới hạn khác nhau có sẵn, nhưng trong số các loại được sử dụng phổ biến nhất là KW12-3V-156-1C25. Cả hai loại này đều có 3 chân:

  • Chân C: là chân chung. Nó được sử dụng ở cả hai chế độ mở thông thường và đóng thông thường.
  • Chân NO: là chân mở thông thường. Nó được sử dụng ở chế độ mở thông thường.
  • Chân NC: là chân đóng thông thường. Nó được sử dụng ở chế độ đóng thông thường.
sơ đồ chân của công tắc giới hạn
image source: diyables.io

Cách hoạt động

Mặc dù công tắc giới hạn có 3 chân, ứng dụng thông thường thường chỉ sử dụng hai chân: chân C và một trong hai chân còn lại. Do đó, có bốn cách để sử dụng công tắc giới hạn. Dưới đây là bảng nối mạch cho công tắc giới hạn và trạng thái đọc được trên Arduino ở cả bốn cách:

C pin NO pin NC pin Arduino Input Pin's State
1 GND Arduino Input Pin (with pull-up) not connected HIGH when untouched, LOW when touched
2 GND not connected Arduino Input Pin (with pull-up) LOW when untouched, HIGH when touched
3 VCC Arduino Input Pin (with pull-down) not connected LOW when untouched, HIGH when touched
4 VCC not connected Arduino Input Pin (with pull-down) HIGH when untouched, LOW when touched

Ở mỗi cách kết nối, chúng ta có thể tráo đổi giữa chân GND và chân đầu vào của Arduino. Do đó, ta có tám cách để kết nối Arduino với một công tắc giới hạn.

Chúng ta chỉ cần chọn một trong bốn cách ở trên. Phần còn lại của bài hướng dẫn sẽ sử dụng cách đầu tiên.

Sơ đồ đấu dây

sơ đồ nối dây công tắc giới hạn Arduino

This image is created using Fritzing. Click to enlarge image

Để kết nối dây điện được ổn định và chắc chắn, chúng tôi khuyến nghị sử dụng Soldering Iron để hàn các dây và chân của công tắc giới hạn với nhau, và sau đó sử dụng Heat Shrink Tube để làm cho nó an toàn.

Mã Arduino - Công tắc giới hạn

Cũng giống như một nút nhấn, một công tắc giới hạn cũng cần được lọc nhiễu (Xem thêm tại Tại sao cần debounce cho nút và công tắc giới hạn?). Debounce khiến mã nguồn trở nên phức tạp. May mắn thay, thư viện ezButton hỗ trợ chức năng debounce, thư viện cũng sử dụng điện trở kéo lên nội bộ. Điều này làm cho việc lập trình dễ dàng hơn.

※ Lưu ý:

Có hai trường hợp sử dụng phổ biến:

  • Thứ nhất: Nếu trạng thái của công tắc là đã chạm, hãy làm một việc. Nếu trạng thái đầu vào là chưa chạm, hãy làm một việc khác theo hướng ngược lại.
  • Thứ hai: Nếu trạng thái của công tắc được thay đổi từ chưa chạm sang đã chạm (hoặc từ đã chạm sang chưa chạm), hãy làm một việc.
/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-limit-switch */ #include <ezButton.h> ezButton limitSwitch(7); // create ezButton object that attach to pin 7; void setup() { Serial.begin(9600); limitSwitch.setDebounceTime(50); // set debounce time to 50 milliseconds } void loop() { limitSwitch.loop(); // MUST call the loop() function first if(limitSwitch.isPressed()) Serial.println("The limit switch: UNTOUCHED -> TOUCHED"); if(limitSwitch.isReleased()) Serial.println("The limit switch: TOUCHED -> UNTOUCHED"); int state = limitSwitch.getState(); if(state == HIGH) Serial.println("The limit switch: UNTOUCHED"); else Serial.println("The limit switch: TOUCHED"); }

Hướng dẫn từng bước

  • Lắp đặt dây theo sơ đồ nối ở trên.
  • Kết nối Arduino với máy tính bằng cáp USB.
  • Mở Arduino IDE.
  • Cài đặt thư viện ezButton. Xem Cách làm
  • Chọn bo mạch và cổng đúng.
  • Nhấn nút Tải lên trên Arduino IDE để nạp mã lên Arduino.
  • Chạm vào công tắc giới hạn và thả ra.
  • Xem kết quả trên Serial Monitor.
COM6
Send
The limit switch: UNTOUCHED The limit switch: UNTOUCHED The limit switch: UNTOUCHED The limit switch: UNTOUCHED -> TOUCHED The limit switch: TOUCHED The limit switch: TOUCHED The limit switch: TOUCHED The limit switch: TOUCHED The limit switch: TOUCHED The limit switch: TOUCHED The limit switch: TOUCHED The limit switch: TOUCHED The limit switch: TOUCHED The limit switch: TOUCHED The limit switch: TOUCHED -> UNTOUCHED The limit switch: UNTOUCHED The limit switch: UNTOUCHED The limit switch: UNTOUCHED The limit switch: UNTOUCHED
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.