ค้นหาโค้ด

โค้ด Arduino สำหรับโมดูลรีเลย์ 5V 4 ถึง 16 ช่อง

โค้ด Arduino สำหรับโมดูลรีเลย์ 5V 4 ถึง 16 ช่อง

ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีควบคุมโมดูลรีเลย์ 4 ช่องโดยใช้อาร์ดูอิโน ซึ่งจะช่วยให้คุณจัดการโหลดไฟฟ้ากระแสสลับ เช่น หลอดไฟ พัดลม หรือเครื่องทำความร้อนได้อย่างปลอดภัยและมีประสิทธิภาพ โค้ดที่ให้ไว้นี้สามารถปรับใช้กับโมดูลที่มีช่องมากขึ้นได้ ทำให้มีความยืดหยุ่นสำหรับการใช้งานต่างๆ

ก่อนที่เราจะลงรายละเอียด จำเป็นต้องเข้าใจส่วนประกอบที่เกี่ยวข้องในโปรเจกต์นี้ โมดูลรีเลย์ทำหน้าที่เป็นสวิตช์ที่สามารถควบคุมอุปกรณ์ไฟฟ้าแรงสูงได้ในขณะที่ถูกควบคุมด้วยสัญญาณแรงดันต่ำจากอาร์ดูอิโน รีเลย์แต่ละตัวสามารถเป็นแบบปกติเปิดหรือปกติปิดได้ ทำให้มีความยืดหยุ่นในการทำงานของอุปกรณ์ที่เชื่อมต่อ โปรดดูวิดีโอเพื่อเป็นแนวทางในการมองเห็น (ในวิดีโอที่ 02:15)

อธิบายฮาร์ดแวร์

ส่วนประกอบหลักของโปรเจกต์นี้ประกอบด้วยบอร์ดอาร์ดูอิโนและโมดูลรีเลย์ อาร์ดูอิโนทำหน้าที่เป็นตัวควบคุม ส่งสัญญาณไปยังโมดูลรีเลย์ตามโค้ดที่เราเขียน โมดูลรีเลย์ประกอบด้วยรีเลย์หลายตัวที่สามารถสลับโหลดไฟฟ้ากระแสสลับเปิดและปิดได้ รีเลย์แต่ละตัวมีขั้วต่อสามขั้ว: ปกติปิด (NC), ปกติเปิด (NO) และขั้วร่วม (COM)

เมื่อรีเลย์ถูกกระตุ้น ขั้วร่วมจะเชื่อมต่อกับขั้วปกติเปิด ทำให้กระแสไหลผ่านโหลดได้ นี่คือรีเลย์แบบทริกเกอร์ต่ำ หมายความว่ามันจะทำงานเมื่อได้รับสัญญาณแรงดันต่ำ (0V) และหยุดทำงานเมื่อได้รับสัญญาณแรงดันสูง (5V) การเข้าใจกลไกนี้มีความสำคัญอย่างยิ่งต่อการควบคุมอุปกรณ์ไฟฟ้ากระแสสลับอย่างปลอดภัย

รายละเอียดจากดาต้าชีต

ผู้ผลิตทั่วไป
หมายเลขชิ้นส่วนโมดูลรีเลย์ 4 ช่อง
แรงดันลอจิก/IO5 โวลต์
แรงดันไฟฟ้าที่จ่าย5 โวลต์
กระแสเอาต์พุต (ต่อช่อง)สูงสุด 10 แอมป์
กระแสสูงสุดชั่วขณะ (ต่อช่อง)15 แอมป์
คำแนะนำความถี่ PWMไม่มี
เกณฑ์แรงดันลอจิกอินพุตต่ำ: 0 โวลต์; สูง: 5 โวลต์
แรงดันตก / RDS(on) / ความอิ่มตัวไม่มี
ขีดจำกัดความร้อน85 องศาเซลเซียส
แพ็คเกจโมดูลรีเลย์มาตรฐาน
หมายเหตุ / รุ่นต่างๆมีให้เลือก 2, 4, 8 และ 16 ช่อง

  • ตรวจสอบให้แน่ใจว่าไม่เกินพิกัดกระแสของรีเลย์เพื่อป้องกันความเสียหาย
  • ใช้แหล่งจ่ายไฟแยกต่างหากสำหรับการใช้งานกระแสสูงเพื่อแยกอาร์ดูอิโน
  • รักษาการระบายความร้อนที่เหมาะสมสำหรับรีเลย์ระหว่างการทำงาน
  • ตรวจสอบการเดินสายไฟอย่างระมัดระวังเพื่อหลีกเลี่ยงการลัดวงจร
  • ใช้ออปโตไอโซเลเตอร์หากจำเป็นเพื่อเพิ่มการป้องกัน

คำแนะนำการเดินสายไฟ

Arduino wirign for 4 channel relay to control 4 AC load
Arduino wirign for 4 channel relay to control 4 AC load

ในการเดินสายไฟโมดูลรีเลย์เข้ากับอาร์ดูอิโน ให้เริ่มต้นโดยเชื่อมต่อพินกราวด์ของโมดูลรีเลย์เข้ากับพินกราวด์บนอาร์ดูอิโน จากนั้นเชื่อมต่อพิน VCC บนโมดูลรีเลย์เข้ากับพิน 5V บนอาร์ดูอิโน สำหรับพินควบคุม ให้เชื่อมต่อพิน IN1, IN2, IN3 และ IN4 ของโมดูลรีเลย์เข้ากับพินดิจิทัล 2, 3, 4 และ 5 บนอาร์ดูอิโนตามลำดับ การตั้งค่านี้ช่วยให้อาร์ดูอิโนสามารถควบคุมสถานะของรีเลย์แต่ละตัวได้

ตรวจสอบให้แน่ใจว่าวางโมดูลรีเลย์บนพื้นผิวที่ฉนวน เนื่องจากเกี่ยวข้องกับโหลดไฟฟ้ากระแสสลับ หากคุณใช้แหล่งจ่ายไฟภายนอกสำหรับรีเลย์ ให้เชื่อมต่อกราวด์ของมันเข้ากับกราวด์ของอาร์ดูอิโนเพื่อให้แน่ใจว่ามีจุดอ้างอิงร่วมกัน ซึ่งมีความสำคัญต่อการทำงานที่ถูกต้องและความปลอดภัย

ตัวอย่างโค้ดและคำอธิบาย

ตัวอย่างโค้ดต่อไปนี้เริ่มต้นจำนวนรีเลย์และตั้งค่าพินควบคุม:

int ch = 4; // จำนวนรีเลย์ที่คุณมี
int relay[]={2,3,4,5}; // หมายเลขพินอาร์ดูอิโนสำหรับรีเลย์

สิ่งนี้กำหนดจำนวนรีเลย์และการเชื่อมต่อพินอาร์ดูอิโนที่เกี่ยวข้อง อาร์เรย์ relay เก็บหมายเลขพินที่ใช้ควบคุมรีเลย์แต่ละตัว

Wirig relay module to AC load

จากนั้น เราตั้งค่าพินในฟังก์ชัน setup():

void setup() {
    Serial.begin(9600); // เตรียม Serial monitor
    for(i=0; i < ch; i++) {
        pinMode(relay[i], OUTPUT); // ตั้งค่าพินที่ i(th) เป็นเอาต์พุต
        digitalWrite(relay[i], HIGH); // ปิดรีเลย์
    }
    Serial.println("Robojax 4 Relay Test");
}

โค้ดนี้เริ่มต้น Serial monitor และตั้งค่าพินรีเลย์แต่ละตัวเป็นเอาต์พุต โดยปิดไว้เป็นค่าเริ่มต้น คำสั่งพิมพ์ผ่าน Serial ยืนยันว่าการตั้งค่าเสร็จสมบูรณ์

ลูปหลักของโปรแกรมควบคุมรีเลย์:

void loop() {
    for(int i=0; i < ch; i++) {
        Serial.print("Relay "); Serial.print(i+1); Serial.println(" ON");
        digitalWrite(relay[i], LOW); // เปิดรีเลย์
        delay(wait);  
    }
    for(int i=0; i < ch; i++) {
        Serial.print("Relay "); Serial.print(i+1); Serial.println(" OFF");
        digitalWrite(relay[i], HIGH); // ปิดรีเลย์
        delay(wait);  
    }
    Serial.println("====== loop done ==");
}

ลูปนี้จะเปิดรีเลย์แต่ละตัวทีละตัว รอตามเวลาที่กำหนด จากนั้นปิดในลำดับเดียวกัน เอาต์พุตผ่าน Serial ช่วยตรวจสอบสถานะรีเลย์แบบเรียลไทม์

การสาธิต / สิ่งที่คาดหวัง

เมื่อรันโปรแกรม คุณจะเห็นรีเลย์ทำงานตามลำดับ เปิดและปิดทุกสองวินาที หากการเดินสายถูกต้อง โหลดไฟฟ้ากระแสสลับที่เชื่อมต่อกับรีเลย์จะตอบสนองตามนั้น ควรระวังกระแสไฟฟ้าที่ดึงจาก Arduino หากเปิดรีเลย์หลายตัวพร้อมกัน อาจเกินความสามารถของบอร์ด (ในวิดีโอที่ 13:45)

ไทม์สแตมป์ของวิดีโอ

  • 00:00 บทนำ
  • 02:15 คำอธิบายฮาร์ดแวร์
  • 05:30 คำแนะนำการเดินสาย
  • 08:45 อธิบายโค้ด
  • 13:45 การสาธิต

ภาพ

Wirig relay module to AC load
Wirig relay module to AC load
Arduino wirign for 4 channel relay to control 4 AC load
Arduino wirign for 4 channel relay to control 4 AC load
88-This is code for a 4- to 16-channel 5V relay module for Arduino.
ภาษา: C++
++
/*
This is code to control 4 to 16 channel 5V relay modules using Arduino.
 * Watch the video on how to use 4 to unlimited relay channels: https://youtu.be/Wbm3MCMgM_s
 
 */
/*
 *  This code was written by Ahmad Shamshiri for Robojax.com.
// Written March 26, 2018, at 12:14 in Ajax, Ontario, Canada.

 *  
 */

int ch = 4;// number of relays you have
int relay[]={2,3,4,5}; // Arduino pin numbers. The same number of relays should be defined here as input pins


int wait = 2000;// delay time
int i=0;

void setup() {
    Serial.begin(9600);// prepare Serial monitor
    // set pins as output
 for(i=0; i < ch; i++)
 {    
    pinMode(relay[i], OUTPUT);// set i(th) pin as output
   digitalWrite(relay[i], HIGH); // Turn the relay OFF  
 }
               
    Serial.println("Robojax 4 Relay Test");
}

void loop() {
    
     
 for(int i=0; i < ch; i++)
 {
      Serial.print("Relay "); Serial.print(i+1);Serial.println(" ON");
      digitalWrite(relay[i], LOW); // Turn the relay ON    
      delay(wait);  
 }// for loop


 for(int i=0; i < ch; i++)
 {
      Serial.print("Relay "); Serial.print(i+1);Serial.println(" OFF");
      digitalWrite(relay[i], HIGH); // Turn the relay OFF    
      delay(wait);  
 }// for loop

    Serial.println("====== loop done ==");

}// loop
89-If you want to replace the loop inside setup(), then use this as shown in the video.
ภาษา: C++
pinMode(relay[0], OUTPUT);// connected to relay 1
    digitalWrite(relay[0], HIGH); // Turn the relay OFF  


    pinMode(relay[1], OUTPUT);// connected to relay 2
    digitalWrite(relay[1], HIGH); // Turn the relay OFF  

    pinMode(relay[2], OUTPUT);// connected to relay 3
    digitalWrite(relay[2], HIGH); // Turn the relay OFF  

    pinMode(relay[3], OUTPUT);// connected to relay 4
    digitalWrite(relay[3], HIGH); // Turn the relay OFF

สิ่งที่คุณอาจต้องการ

แหล่งข้อมูลและเอกสารอ้างอิง

ยังไม่มีทรัพยากรเลย

ไฟล์📁

ไฟล์ Fritzing