کوڈ تلاش کریں

16 چینل ریلے ماجیول 5V ریلے وولٹیج فکسڈ

16 چینل ریلے ماجیول 5V ریلے وولٹیج فکسڈ

تعارف

یہ پروجیکٹ ایک اہم ڈیزائن کی خامی کو حل کرتا ہے جو بہت سے 16-چینل 5V ریلے ماڈیولز میں پائی جاتی ہے۔ اگرچہ یہ ماڈیولز 5V آلات کے طور پر فروخت ہوتے ہیں، لیکن بورڈ پر موجود وولٹیج ریگولیٹر اکثر صرف آپٹو کپلر سرکٹری کو ریگولیٹڈ 5V فراہم کرتا ہے، جبکہ اصل ریلے کوائلز کو مکمل، غیر ریگولیٹڈ ان پٹ وولٹیج ملتی ہے۔ اگر آپ ماجیول کو 5V سے زیادہ کسی بھی وولٹیج سے چلاتے ہیں—جیسے 9V یا 12V سپلائی—تو آپ ریلے اور منسلک آلات کو نقصان پہنچانے کا خطرہ مول لیتے ہیں۔

16 Channel Relay module
16 Channel Relay Module -2

یہ گائیڈ ایک سادہ اور مؤثر ہارڈویئر فکس کا مظاہرہ کرتی ہے تاکہ یہ یقینی بنایا جا سکے کہ ریلے کوائلز کو ہمیشہ درست 5V ملے، چاہے ان پٹ وولٹیج کچھ بھی ہو۔ یہ کسی بھی پروجیکٹ کے لیے ایک اہم تبدیلی ہے جہاں قابل اعتمادی کلیدی حیثیت رکھتی ہے۔ یہاں کچھ عملی ایپلیکیشنز ہیں جہاں یہ فکس ضروری ہے:

  • ایک ہوم آٹومیشن ہب بنانا جو ایک ہی، زیادہ وولٹیج والی پاور سپلائی سے 16 مختلف آلات (لائٹس، پنکھے، ہیٹر) کو کنٹرول کرتا ہے۔
  • ایک صنعتی کنٹرول پینل بنانا جہاں 24V صنعتی سپلائی استعمال ہوتی ہے، لیکن لاجک اور ریلے کو مستحکم 5V کی ضرورت ہوتی ہے۔
  • موجودہ 16-چینل ریلے بورڈ کو اپ گریڈ کرنا تاکہ وہ بغیر کسی جزو کے ناکام ہونے کے خطرے کے وسیع رینج کے ان پٹ وولٹیجز کو سنبھال سکے۔

ہارڈویئر کا جائزہ

مسئلے کی جڑ ماجیول کی پاور تقسیم میں ہے۔ ان پٹ وولٹیج (مثلاً 12V) کو ایک وولٹیج ریگولیٹر (اکثر LM2596) میں ڈالا جاتا ہے جو اسے صاف 5V میں تبدیل کرتا ہے۔ تاہم، یہ ریگولیٹڈ 5V صرف آپٹو کپلرز کو پاور دینے کے لیے بھیجا جاتا ہے، جو کنٹرول سگنلز کو الگ کرتے ہیں۔ ریلے کوائلز اور ULN2003 ڈرائیور چپس غلطی سے براہ راست خام ان پٹ وولٹیج لائن سے منسلک ہوتی ہیں۔ اس کا مطلب ہے کہ 12V ان پٹ 5V ریلے کوائلز کو 12V فراہم کرے گا، جس سے وہ زیادہ گرم ہو کر بالآخر ناکام ہو جائیں گی۔

ویڈیو اس مسئلے کو واضح طور پر دکھاتی ہے۔ 8.72V کے ان پٹ کے ساتھ، ریلے کوائل کو 7.75V ملتا ہوا ناپا جاتا ہے، جو 5V ریٹیڈ جزو کے لیے خطرناک حد تک زیادہ ہے (ویڈیو میں 03:17 پر)۔

ہارڈویئر/اجزاء

  • 16-چینل 5V ریلے ماجیول
  • سولڈرنگ آئرن اور سولڈر
  • تار کٹر/اسٹرپر
  • ایک تیز چاقو یا کاٹنے کا آلہ
  • ہک-اپ تار کا ایک ٹکڑا
  • ٹیسٹنگ کے لیے ملٹی میٹر
  • ٹیسٹنگ کے لیے پاور سپلائی (مثلاً 9V یا 12V)

وائرنگ گائیڈ

فکس میں ایک سادہ ریوائرنگ کا طریقہ کار شامل ہے۔ مقصد یہ ہے کہ ULN2003 چپس اور ریلے کوائلز کو خام ان پٹ سے پاور دینے والے ٹریس کو منقطع کیا جائے اور اس کے بجائے انہیں ریگولیٹڈ 5V آؤٹ پٹ سے جوڑا جائے۔ ویڈیو درست شدہ سرکٹ کا تفصیلی خاکہ فراہم کرتی ہے (ویڈیو میں 03:45 پر)۔

ویڈیو میں دکھایا گیا مرحلہ وار عمل یہ ہے:

  1. پاور ٹریس کی شناخت کریں: سب سے پہلے، PCB ٹریکس کا سراغ لگائیں تاکہ معلوم ہو سکے کہ خام ان پٹ وولٹیج ULN2003 ڈرائیور چپس تک کہاں پہنچتی ہے۔ ویڈیو میں، یہ ایک ٹریس ہے جو ایک کپیسیٹر کے نیچے سے ڈرائیور چپس کے پن 1 تک جاتی ہے (ویڈیو میں 05:15 پر)۔
  2. ٹریس کاٹیں: تیز چاقو کا استعمال کرتے ہوئے، اس پاور ٹریس کو احتیاط سے کاٹ دیں۔ اس سے ڈرائیور چپس اور ریلے کوائلز خام ان پٹ وولٹیج سے منقطع ہو جاتی ہیں۔ ویڈیو 05:56 پر یہ کٹ بناتے ہوئے دکھاتی ہے۔
  3. منقطع ہونے کی تصدیق کریں: کنٹینیوٹی موڈ میں ملٹی میٹر استعمال کریں تاکہ تصدیق ہو سکے کہ ان پٹ وولٹیج اب ڈرائیور چپس تک نہیں پہنچ رہی (ویڈیو میں 06:11 پر)۔
  4. نئی تار سولڈر کریں: ریگولیٹڈ 5V آؤٹ پٹ پوائنٹ (جو پہلے صرف آپٹو کپلرز کو فیڈ کر رہا تھا) سے اب منقطع شدہ پاور پوائنٹ تک ایک نئی تار سولڈر کریں جو ڈرائیور چپس اور ریلے کو فیڈ کرتی ہے۔ ویڈیو ریلے کے مشترکہ پن تک پہنچنے کے لیے بورڈ کے موجودہ سوراخ سے تار گزرتے ہوئے دکھاتی ہے (ویڈیو میں 07:06 پر)۔
  5. فکس کی جانچ کریں: ماجیول کو 5V سے زیادہ وولٹیج (مثلاً 15V) سے چلائیں اور ملٹی میٹر سے تصدیق کریں کہ ریلے کوائلز کو اب بالکل 5V مل رہی ہے (ویڈیو میں 07:37 پر)۔

کوڈ کی وضاحت

فراہم کردہ Arduino کوڈ ایک سادہ ٹیسٹ پروگرام ہے جو تمام 16 ریلے چینلز کو سائیکل کرتا ہے۔ آپ اسے اپنے ہارڈویئر فکس کی تصدیق کے لیے استعمال کر سکتے ہیں۔

آپ کے لیے ترتیب دینے کا سب سے اہم حصہ controlPin اری ہے۔ یہ وضاحت کرتا ہے کہ Arduino کے کون سے پن ریلے ماجیول کے ان پٹ پنوں سے منسلک ہیں۔

const int controlPin[16] = {2,3,4,5,6,7,8,9,10,11,12,A0,A1,A2,A3,A4}; // پنوں کی وضاحت کریں

اس فہرست کو اپنی اصل وائرنگ کے مطابق تبدیل کریں۔ کوڈ ڈیجیٹل پن 2-12 اور اینالاگ پن A0-A4 استعمال کرتا ہے، لیکن آپ انہیں اپنے بورڈ کے کسی بھی دستیاب ڈیجیٹل I/O پن میں تبدیل کر سکتے ہیں۔

ایک اور اہم متغیر triggerType ہے۔ یہ ڈیفالٹ طور پر LOW پر سیٹ ہے، جو بہت سے ریلے ماڈیولز کے لیے عام ہے۔

const int triggerType = LOW;// آپ کی ریلے کی قسم

اگر آپ کا ریلے ماجیول "ایکٹو HIGH" ہے (مطلب آپ اسے آن کرنے کے لیے HIGH سگنل بھیجتے ہیں)، تو آپ اسے HIGH میں تبدیل کر سکتے ہیں۔ channelControl() فنکشن دونوں اقسام کے لیے لاجک سنبھالتا ہے، لہذا آپ کو صرف اس ایک متغیر کو ایڈجسٹ کرنے کی ضرورت ہے۔

آخر میں، loopDelay متغیر ٹیسٹ سائیکل میں ہر چینل کے درمیان وقفے کو کنٹرول کرتا ہے۔

int loopDelay = 1000;// لوپ میں تاخیر

آپ اسے ٹیسٹ کو تیز یا سست بنانے کے لیے ایڈجسٹ کر سکتے ہیں۔

لائیو پروجیکٹ/مظاہرہ

فکس کے بعد، ویڈیو ماجیول کو 15V ان پٹ کے ساتھ بالکل صحیح طریقے سے کام کرتے ہوئے دکھاتی ہے۔ ملٹی میٹر ان پٹ وولٹیج کو 15V دکھاتا ہے، جبکہ ریلے کوائل پر ریگولیٹڈ وولٹیج ایک مستحکم اور محفوظ 5V ہے (ویڈیو میں 08:10 پر)۔ ریلے توقع کے مطابق آن اور آف ہوتے ہیں، جس سے تصدیق ہوتی ہے کہ فکس کامیاب ہے اور ماجیول اب بغیر کسی نقصان کے زیادہ ان پٹ وولٹیجز کو سنبھال سکتا ہے۔

ابواب

  • [00:00] سولہ چینل ریلے وولٹیج مسئلے کا تعارف
  • [00:34] ڈیزائن کی خامی کی نشاندہی
  • [01:56] وولٹیج کے مسئلے کا مظاہرہ
  • [03:45] درست شدہ سرکٹ کا اسکیمیٹک
  • [05:07] غلط پاور ٹریس کو کاٹنا
  • [06:34] نئے 5V کنکشن کو سولڈر کرنا
  • [07:37] 15V ان پٹ کے ساتھ اصلاح کی جانچ
  • [08:24] نتیجہ اور حتمی خیالات

تصاویر

16 Channel Relay module
16 Channel Relay module
16 Channel Relay Module -3
16 Channel Relay Module -3
16 Channel Relay Module -2
16 Channel Relay Module -2
16 Channel Relay Module size
16 Channel Relay Module size
16 Channel Relay Module IC and Optocouplers
16 Channel Relay Module IC and Optocouplers
16 Channel Relay Module
16 Channel Relay Module
16 Channel Relay module 12V vs 5V difference
16 Channel Relay module 12V vs 5V difference
160-Code to control a 16-channel relay module using Arduino
زبان: C++
/*
 * Arduino code to control 16 channel relay with Arduino UNO
 * 
 * Written by Ahmad Shamshiri for Robojax.com on Sunday, October 8, 2018 
 * at 10:35 in Ajax, Ontario, Canada
 * Watch video instructions for this code: https://youtu.be/Q9aBI4ELKC4
 * 
 * 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/>.
 */


const int controlPin[16] = {2,3,4,5,6,7,8,9,10,11,12,A0,A1,A2,A3,A4}; // define pins

const int triggerType = LOW;// your relay type
int loopDelay = 1000;// delay in loop
int tmpStat =1;


void setup() {
  for(int i=0; i<16; i++)
  {
    pinMode(controlPin[i], OUTPUT);// set pin as output
    if(triggerType ==LOW){
      digitalWrite(controlPin[i], HIGH); // set initial state OFF for low trigger relay
    }else{
       digitalWrite(controlPin[i], LOW); // set initial state OFF for high trigger relay     
    }
  }
  
  Serial.begin(9600);// initialize serial monitor with 9600 baud
}

void loop() {

  for(int i=0; i<16; i++)
  {

   channelControl(i,tmpStat,200);// turn each relay ON for 200ms

    
  }
  if(tmpStat)
  {
    tmpStat=0;
  }else{
    tmpStat=1;
  }
 Serial.println("===============");
 //channelControl(6,1, 2000); // turn relay 7 ON for 2 seconds
 //channelControl(6,0, 5000); // turn relay 7 OFF for 5 seconds
 //channelControl(9,1, 3000); // turn relay 10 OFF for ever

 delay(loopDelay);// wait for loopDelay ms
          
}

/*
 * funciton: channelControl
 * turns ON or OFF specific relay channel
 * @param relayChannel is integer value channel from 0 to 15
 * @param action is 1 for ON or 0 for OFF
 * @param t is time in milliseconds
 */
void channelControl(int relayChannel, int action, int t)
{
  int state =LOW;
  String statTXT =" ON";
  if(triggerType == LOW)
  {    
    if (action ==0)// if OFF requested
    {
      state = HIGH;
      statTXT = " OFF";
    }
    digitalWrite(controlPin[relayChannel], state);
    if(t >0 )
    {
      delay(t);
    }
       Serial.print ("Channel: ");
       Serial.print(relayChannel); 
       Serial.print(statTXT);
       Serial.print(" - "); 
       Serial.println(t);        
  }else{
    if (action ==1)// if ON requested
    {
      state = HIGH;     
    }else{
      statTXT = " OFF";    
    }
    digitalWrite(controlPin[relayChannel], state);
    if(t >0 )
    {
      delay(t);
    }
       Serial.print ("Channel: ");
       Serial.print(relayChannel); 
       Serial.print(statTXT);
       Serial.print(" - "); 
       Serial.println(t);    
  }

}

آپ کو جن چیزوں کی ضرورت ہو سکتی ہے

فائلیں📁

نقشہ