كود البحث

كود أردوينو لوحدة مرحلات 4 إلى 16 قناة بجهد 5V

كود أردوينو لوحدة مرحلات 4 إلى 16 قناة بجهد 5V

في هذا الدرس سنتعلم كيفية التحكم في وحدة مرحل ذات 4 قنوات باستخدام أردوينو. سيمكنك ذلك من إدارة أحمال التيار المتردد مثل المصابيح أو المراوح أو السخانات بأمان وفعالية. يمكن تكييف الكود المقدم للوحدات ذات عدد قنوات أكبر، مما يجعله متعدد الاستخدامات لمختلف التطبيقات.

قبل أن نغوص في التفاصيل، من الضروري فهم المكونات المشاركة في هذا المشروع. تعمل وحدة المرحل كمفتاح يمكنه التحكم في الأجهزة ذات الجهد العالي بينما يتم التحكم بها بواسطة إشارات جهد منخفض من الأردوينو. يمكن أن يكون كل مرحل إما مفتوحًا عادةً أو مغلقًا عادةً، مما يتيح مرونة في كيفية عمل الأجهزة المتصلة. يرجى الرجوع إلى الفيديو للحصول على إرشادات مرئية (في الفيديو عند 02:15).

شرح الأجهزة

المكونات الرئيسية لهذا المشروع تشمل لوحة أردوينو ووحدة المرحلات. يعمل الأردوينو كجهاز تحكم، يرسل إشارات إلى وحدة المرحلات بناءً على الكود الذي نكتبه. تحتوي وحدة المرحلات على عدة مرحلات يمكنها تشغيل وإيقاف الأحمال ذات التيار المتردد (AC). لكل مرحل ثلاثة أطراف: عادة مغلقة (NC)، عادة مفتوحة (NO)، وطرف مشترك (COM).

عند تنشيط المرحّل، يتصل الطرف المشترك بالطرف المفتوح عادةً، مما يسمح بتدفق التيار عبر الحمل. هذا مرحّل ذو تفعيل منخفض، يعني أنه يتفعّل عندما يستقبل إشارة جهد منخفضة (0 فولت) ويتعطّل بإشارة جهد عالية (5 فولت). فهم هذه الآلية أمر حاسم للتحكم الآمن في الأجهزة التي تعمل بالتيار المتردد.

تفاصيل ورقة البيانات

المصنّععام
رقم القطعةوحدة مرحل 4 قنوات
جهد المنطق/الإدخال والإخراج5 فولت
جهد التغذية5 فولت
تيار الخرج (لكل قناة)10 A كحد أقصى
التيار الأقصى (لكل قناة)15 أمبير
إرشادات تردد تعديل عرض النبضةغير متوفر
عتبات منطق الإدخالمنخفض: 0 فولت؛ مرتفع: 5 فولت
هبوط الجهد / Rالمصب-المصدر (في حالة التوصيل)/ التشبعغير متوفر
الحدود الحرارية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

لبدء توصيل وحدة الريليه بالأردوينو، ابدأ بتوصيل دبوس الأرضي (GND) في وحدة الريليه بدبوس GND على الأردوينو. بعد ذلك، وصل دبوس VCC في وحدة الريليه بدبوس 5V على الأردوينو. بالنسبة لأطراف التحكم، وصل IN1 وIN2 وIN3 وIN4 في وحدة الريليه بالدبابيس الرقمية 2 و3 و4 و5 على الأردوينو على التوالي. تتيح هذه التوصيلة للأردوينو التحكم في حالة كل ريليه.

تأكد من وضع وحدة الترحيل على سطح معزول، لأنها تتعامل مع أحمال التيار المتردد. إذا كنت تستخدم مصدر طاقة خارجي للريليه، فقم بتوصيل أرضيته بأرضي الأردوينو لضمان مرجع مشترك. هذا أمر بالغ الأهمية لعمل سليم والسلامة.

أمثلة على الكود وشرح خطوة بخطوة

يقوم مقطع الشيفرة التالي بتهيئة عدد المرحلات وتعيين دبابيس التحكم:

int ch = 4; // number of relays you have
int relay[]={2,3,4,5}; // Arduino pin numbers for relays

يحدد هذا عدد المرحلات واتصالات دبابيس الأردوينو المقابلة لها. المصفوفةrelayيحتوي على أرقام الدبابيس المستخدمة للتحكم بكل مرحّل.

Wirig relay module to AC load

بعد ذلك، نقوم بإعداد الدبابيس في الـsetup()دالة:

void setup() {
    Serial.begin(9600); // prepare Serial monitor
    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(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);  
    }
    Serial.println("====== loop done ==");
}

تقوم هذه الحلقة أولاً بتشغيل كل مرحل واحدًا تلو الآخر، وتنتظر لمدة محددة، ثم تطفئها بنفس الترتيب. يساعد الإخراج التسلسلي على مراقبة حالة المرحلات في الوقت الحقيقي.

عرض توضيحي / ما الذي تتوقعه

عند تشغيل البرنامج، يجب أن ترى المرحلات تعمل بالتتابع، حيث تُشغّل وتُطفأ كل ثانيتين. إذا كان كل شيء موصولًا بشكل صحيح، فإن الأحمال المتصلة بالمرحلات بتيار متناوب (AC) ستستجيب وفقًا لذلك. كن حذرًا من سحب التيار من لوحة الأردوينو؛ إذا تم تشغيل عدد كبير من المرحلات في وقت واحد، فقد يتجاوز ذلك قدرة اللوحة (في الفيديو عند 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 File