Bài 13: Điều khiển động cơ quạt bằng nút nhấn sử dụng Arduino

Bài 13: Điều khiển động cơ quạt bằng nút nhấn sử dụng Arduino

Trong nội dung bài viết hôm nay mình sẽ hướng dẫn các bạn cách dùng nút nhấn và rơ le (Relay) để đóng cắt động cơ.

Qua bài viết các bạn có thể hiểu thêm về cấu tạo và nguyên lý hoạt động của nút nhấn và Rơ le.

Chúng ta đi ngay vào bài viết nhé.

Cấu tạo và nguyên lý hoạt động của Button

Nút nhấn là một thiết bị đơn giản được sử dụng để tạo ra tín hiệu điện khi được nhấn. Nguyên lý hoạt động của nó dựa trên sự tiếp xúc giữa hai mảnh kim loại bên trong thiết bị. Khi nút không được nhấn, hai mảnh kim loại không tiếp xúc và không có tín hiệu điện được tạo ra. Khi nút được nhấn, hai mảnh kim loại tiếp xúc và tạo ra một mạch điện đóng, kết nối hai chân của nút. Khi đó, tín hiệu điện được tạo ra và được gửi đến vi điều khiển hoặc các thiết bị điện tử khác để xử lý.

Cấu tạo của nút nhấn

Ứng dụng của nút nhấn trong lập trình Arduino

Nút nhấn là một linh kiện rất quan trọng trong lập trình Arduino. Dưới đây là một số ứng dụng phổ biến trong lập trình Arduino bao gồm:

  • Điều khiển thiết bị: Nút nhấn có thể được sử dụng để điều khiển các thiết bị như đèn LED, servo motor, motor DC, …
  • Nhập dữ liệu: Nút nhấn có thể được sử dụng để cung cấp đầu vào từ người dùng cho chương trình Arduino, ví dụ như chọn một chế độ hoạt động hoặc nhập giá trị cho một biến.
  • Xử lý sự kiện: Nút nhấn có thể được sử dụng để kích hoạt một chức năng nào đó khi được nhấn. Ví dụ: khi người dùng nhấn nút, chương trình Arduino sẽ thực hiện một hành động nhất định.
  • Bảo mật: Nút nhấn có thể được sử dụng để xác nhận quyền truy cập vào các chức năng quan trọng của chương trình.
  • Tương tác với ngữ cảnh: Nút nhấn có thể được sử dụng để tương tác với ngữ cảnh trong nhà, ví dụ như điều khiển đóng/mở cửa.

Cấu tạo Rơ le (Relay)

Để có thể nắm được cấu tạo và hoạt động của rơ le các bạn đọc bài viết bên dưới nhé.

cau tao ro le

Xem thêm: Điều khiển Đèn 220V bằng Realy sử dụng Arduino

Sơ đồ nguyên lý

nguyen ly dieu khien dong co quat bang nut nhan su dung arduino

Các linh kiện cần thiết cho dự án

Tên linh kiện Số lượng
Arduino Uno R3 1
Dây cắm 9
Breadboard 1
Button 1
LED 5mm 1
Trở 220R 2
Relay 1
Motor 1
Fan 1

Code

int buttonPin = 2;
int relayPin = 3;
int relayState = HIGH;                      
int buttonState;                            
int lastButtonState = LOW;                 
long lastDebounceTime = 0;                  
long debounceDelay = 50;                    

void setup() {
  pinMode(buttonPin, INPUT);
  pinMode(relayPin, OUTPUT);

  digitalWrite(relayPin, relayState);       
}
void loop() {
  
  int reading = digitalRead(buttonPin);  

  if (reading != lastButtonState) {   
    lastDebounceTime = millis();
  } 
  
  if ((millis() - lastDebounceTime) > debounceDelay) {
   
    if (reading != buttonState) {
      buttonState = reading;
      
      if (buttonState == HIGH) {
        relayState = !relayState;
      }
    }
  }

   // set the relay: 
  digitalWrite(relayPin, relayState);

  lastButtonState = reading;
}

Giải thích code

if (reading != lastButtonState) {   
    lastDebounceTime = millis();
  }   
if ((millis() - lastDebounceTime) > debounceDelay) {
    
    if (reading != buttonState) {
      .....
    }
}

Khi tín hiệu được trả về, chương trình sẽ không thực thi ngay lập tức mà sẽ kiểm tra tín hiệu của nút nhấn đã đúng chưa trong trường hợp đã nhấn sẽ cho chương trình hoạt động.

Lý do sao lại có đoạn kiểm tra này. Vì độ nảy của nút nhấn sẽ gây ra tín hiệu không chính xác trong quá trình hoạt động, vậy để khắc phục điều này thay cho phần cứng nên cần có một đoạn chương trình kiểm tra trong một khoảng thời gian để đảm bảo tín hiệu là đúng.

Lời kết

Tham gia cộng đồng Arduino KIT Để nhận được nhiều kiến thức bổ ích, các bạn Đăng ký để nhận thông báo khi có bài viết mới nhé. Tham gia Cộng đồng Arduino KIT để cùng nhau thảo luận và chia sẽ kiến thức về lập trình Arduino. Nếu các bạn thấy bài viết bổ ích nhớ LikeShare cho mọi người cùng học nhé.

Chúc các bạn thành công.

Trân trọng.

Bài viết liên quan

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments