Search Code

Dùng nút nhấn Arduino để chuyển relay và bóng đèn AC

Dùng nút nhấn Arduino để chuyển relay và bóng đèn AC

Trong hướng dẫn này, chúng ta sẽ học cách điều khiển bóng đèn AC hoặc đèn LED bằng nút nhấn và rơ le. Nút nhấn sẽ bật/tắt đèn, giữ nguyên trạng thái ngay cả khi nhả nút. Thiết lập này không chỉ thực tế mà còn là cách tuyệt vời để làm quen với rơ le và tải AC.

5V LOW-LEVEL trigger relay

Khi tiếp tục, chúng ta sẽ đề cập đến các linh kiện cần thiết, hướng dẫn đấu dây và mã Arduino giúp dự án này khả thi. Hãy xem video liên quan để có hướng dẫn trực quan và giải thích chi tiết (trong video tại 00:00).

5V LOW-Level triggered Relay module

Giải thích phần cứng

Đối với dự án này, chúng ta sẽ sử dụng mô-đun rơ le, bo mạch Arduino và nút nhấn. Mô-đun rơ le hoạt động như một công tắc có thể điều khiển tải AC điện áp cao, chẳng hạn như bóng đèn, trong khi được điều khiển bởi tín hiệu điện áp thấp từ Arduino. Mô-đun rơ le có ba đầu nối chính để kết nối tải: Common (COM), Normally Open (NO) và Normally Closed (NC).

Nút nhấn đóng vai trò là giao diện người dùng để chuyển đổi trạng thái của rơ le. Nó được kết nối với một trong các chân kỹ thuật số trên Arduino. Khi nhấn nút, nó gửi tín hiệu đến Arduino, sau đó kích hoạt hoặc hủy kích hoạt rơ le tương ứng. Tương tác đơn giản này cho phép chúng ta điều khiển đèn một cách dễ dàng.

Chi tiết thông số kỹ thuật của rơ le

Nhà sản xuấtSongle
Số hiệu linh kiệnSRD-05VDC-SL-C
Điện áp cuộn dây5 VDC
Điện áp chuyển mạchAC 250 V / DC 30 V
Dòng điện chuyển mạchTối đa 10 A
Điện trở tiếp xúc≤ 100 mΩ
Điện trở cách điện≥ 1000 MΩ
Nhiệt độ hoạt động-40 đến +70 °C
Bao bìMô-đun rơ le tiêu chuẩn

  • Đảm bảo rơ le có định mức phù hợp với tải bạn đang chuyển mạch.
  • Giữ mô-đun rơ le được cấp nguồn 5 VDC.
  • Sử dụng lớp cách điện phù hợp cho các kết nối AC.
  • Thận trọng khi làm việc với nguồn AC; đảm bảo ngắt mạch trước khi thay đổi.
  • Kết nối nút nhấn với chân đầu vào được chỉ định trên Arduino.
  • Sử dụng chế độ INPUT_PULLUP cho chân nút nhấn để tránh cần điện trở ngoài.
  • Kiểm tra hoạt động của rơ le với điện áp thấp hơn trước khi kết nối tải AC.
  • Kiểm tra các kết nối để tránh đoản mạch.

Hướng dẫn đấu dây

Arduino wiring for AC bulb, LED and push button
Arduino wiring for AC bulb, LED and push button

Để đấu dây mô-đun rơ le, bắt đầu bằng cách kết nối chân VCC của rơ le với chân 5V trên Arduino và chân GND của rơ le với chân GND trên Arduino. Chân IN trên rơ le nên được kết nối với chân kỹ thuật số 10 trên Arduino. Chân này sẽ gửi tín hiệu để kích hoạt rơ le.

Đối với nút nhấn, kết nối một đầu với chân kỹ thuật số 2 trên Arduino. Đầu còn lại nên được kết nối với GND. Thiết lập này sử dụng điện trở kéo lên nội bộ của Arduino, vì vậy hãy đảm bảo chân được đặt ở chế độ INPUT_PULLUP trong mã. Khi nhấn nút, nó sẽ đưa chân xuống mức LOW, gửi tín hiệu đến Arduino.

Đối với tải AC, kết nối một dây với đầu COM trên rơ le và dây còn lại với đầu NO. Cấu hình này sẽ cho phép tải AC bật khi rơ le được kích hoạt. Luôn đảm bảo các kết nối AC được chắc chắn và cách điện.

Ví dụ mã và hướng dẫn chi tiết

Mã sau đây khởi tạo các chân cần thiết và đặt rơ le ở trạng thái tắt ban đầu. Nhấn nút sẽ chuyển đổi trạng thái của rơ le và cập nhật trạng thái đèn tương ứng.

int pbuttonPin = 2; // kết nối đầu ra với nút nhấn
int relayPin = 10; // Kết nối với rơ le (LED)

void setup() {
  Serial.begin(9600);
  pinMode(pbuttonPin, INPUT_PULLUP); 
  pinMode(relayPin, OUTPUT);
  digitalWrite(relayPin, HIGH); // giữ tải TẮT lúc ban đầu
}

Trong mã, biến pbuttonPin được đặt ở chân 2, dùng cho nút nhấn. relayPin được đặt ở chân 10, điều khiển rơ le. Hàm digitalWrite được sử dụng để đảm bảo rơ le bắt đầu ở trạng thái TẮT.

void loop() {
  val = digitalRead(pbuttonPin); // đọc giá trị nút nhấn
  if(val == HIGH && lightON == LOW) {
    pushed = 1 - pushed; // chuyển đổi trạng thái nhấn
    delay(100);
  }
  if(pushed == HIGH) {
    digitalWrite(relayPin, LOW); // bật rơ le
  } else {
    digitalWrite(relayPin, HIGH); // tắt rơ le
  }
}

Phần mã này liên tục kiểm tra trạng thái của nút nhấn. Khi nút được nhấn, nó chuyển đổi biến pushed. Tùy thuộc vào giá trị của pushed, rơ le được bật hoặc tắt, từ đó điều khiển đèn hiệu quả. Vòng lặp này chạy liên tục, đảm bảo trạng thái đèn được cập nhật theo thời gian thực.

Để biết chi tiết mã đầy đủ, vui lòng tham khảo mã được tải bên dưới bài viết.

Trình diễn / Điều mong đợi

Khi bạn nhấn nút nhấn, rơ le sẽ kích hoạt, bật bóng đèn AC được kết nối. Nhấn nút lần nữa sẽ tắt bóng đèn. Màn hình nối tiếp sẽ hiển thị các thông báo trạng thái, cho biết đèn đang BẬT hay TẮT. Nếu gặp sự cố, hãy đảm bảo đấu dây đúng và kiểm tra các đầu vào trôi nổi có thể gây ra hành vi bất thường (trong video tại 10:00).

Mốc thời gian video

  • 00:00 - Giới thiệu
  • 01:30 - Tổng quan phần cứng
  • 03:15 - Hướng dẫn đấu dây
  • 05:45 - Hướng dẫn mã
  • 08:00 - Trình diễn

Hình ảnh

5V LOW-Level triggered Relay module
5V LOW-Level triggered Relay module
5V LOW-LEVEL trigger relay
5V LOW-LEVEL trigger relay
Arduino wiring for AC bulb, LED and push button
Arduino wiring for AC bulb, LED and push button
5V LOW-LEVEL trigger relay
5V LOW-LEVEL trigger relay
34-Using an Arduino push button to push-on and push-off a relay and AC bulb (toggle)
Ngôn ngữ: C++
/*
 * This is the Arduino code for a push button to turn ON and OFF a relay and AC bulb.
It toggles the bulb ON and OFF.
 * The output pin 10 is connected to the relay.
 * Watch video instructions on YouTube: https://youtu.be/7CCSRs5bvH0
 * Be careful working with AC; it is dangerous. Disconnect from AC power when working and wear protective gloves when touching AC components.
 
 * Full explanation of this code and wiring diagram is available in
 * my Arduino Course at Udemy.com here: http://robojax.com/L/?id=62

 * Written by Ahmad Shamshiri on December 14, 2017 in Ajax, Ontario, Canada
 * in Ajax, Ontario, Canada. www.robojax.com
 * 

 * Get this code and other Arduino codes from Robojax.com.
Learn Arduino step by step in a structured course with all materials, wiring diagrams, and libraries
all in one place. Purchase my course on Udemy.com: http://robojax.com/L/?id=62

If you found this tutorial helpful, please support me so I can continue creating 
content like this. You can support me on Patreon: http://robojax.com/L/?id=63

or make a donation using PayPal: http://robojax.com/L/?id=64

 *  * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.* 
 * This code has been downloaded from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.


*/


int pbuttonPin = 2;// connect output to push button
int relayPin = 10;// Connected to relay (LED)

int val = 0; // push value from pin 2
int lightON = 0;//light status
int pushed = 0;//push status


void setup() {
	// Robojax.com code and video tutorial for push button ON and OFF
  Serial.begin(9600);
  pinMode(pbuttonPin, INPUT_PULLUP); 
  pinMode(relayPin, OUTPUT);
 digitalWrite(relayPin, HIGH);// keep the load OFF at the begining. If you wanted to be ON, change the HIGH to LOW
}

void loop() {
// Robojax.com code and video tutorial for push button ON and OFF
  val = digitalRead(pbuttonPin);// read the push button value

  if(val == HIGH && lightON == LOW){

    pushed = 1-pushed;
    delay(100);
  }    

  lightON = val;

      if(pushed == HIGH){
        Serial.println("Light ON");
        digitalWrite(relayPin, LOW); 
       
      }else{
        Serial.println("Light OFF");
        digitalWrite(relayPin, HIGH);
   
      }     

// Robojax.com code and video tutorial for push button ON and OFF

  delay(100);
}

Tài nguyên & tài liệu tham khảo

Tập tin📁

Không có tệp nào khả dụng.