Search Code

Sarrafa tsarin relay channel 16 ta amfani da Arduino

Sarrafa tsarin relay channel 16 ta amfani da Arduino

```html

Sarrafa Tsarin Relay Channel 16 da Arduino

Wannan aikin yana nuna yadda ake sarrafa kowane relay a tsarin relay channel 16 da Arduino Uno. Wannan saitin yana ba ka damar sarrafa nau'ikan AC ko DC, wanda ya dace da aikace-aikace kamar sarrafa fitilu, fanka, dumama, ko wasu kayan lantarki. Wannan jagorar tana ba da cikakken bayani kan kayan aiki, haɗin waya, da lambar da ake buƙata don fara aikin ka.

16 Channel Relay module

Kayan Aiki/Abubuwan Haɗi

  • Arduino Uno (Mega ma ya dace, Nano da Mini ba a ba da shawarar ba saboda ƙarancin pins sai dai idan an yi amfani da hanyar da aka gyara kamar yadda aka nuna a wani bidiyo daban.) (a bidiyo a 08:53)
  • Tsarin Relay Channel 16 (a bidiyo a 00:04)
  • Wutar Waje (wanda zai iya ɗaukar akalla 1.5A) (a bidiyo a 02:12)
  • Wayoyin Haɗi
  • Kayan Aiki (misali, fitilu, fanka, da sauransu)

Jagorar Haɗin Waya

Tsarin relay channel 16 yana buƙatar wutar waje don kunna relays. Haɗa positive da ground na wutar waje zuwa VCC da GND pins na tsarin relay, bi da bi (a bidiyo a 12:55). Dole ne a haɗa pin na ground na tsarin zuwa GND na Arduino. Kowane tashar relay a tsarin yana dacewa da pin, mai lamba 1 zuwa 16. Waɗannan pins ya kamata a haɗa su zuwa digital pins na Arduino kamar yadda aka ayyana a cikin lambar (pins 2 zuwa 12 da A0 zuwa A4). (a bidiyo a 09:03) Idan kana so ka kunna Arduino daga wutar waje guda ɗaya, haɗa positive terminal zuwa VIN pin na Arduino. (a bidiyo a 13:24)

Bayanin Lambar

Lambar Arduino da aka bayar tana sarrafa tsarin relay channel 16. Tana ayyana pins da aka haɗa zuwa tashoshin relay, nau'in trigger na relay (LOW a wannan yanayin), da jinkirin zagayawa. Babban aikin yana cikin aikin channelControl(), wanda ke ba ka damar kunna ko kashe wani relay na musamman na wani ɗan lokaci.


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

const int triggerType = LOW;// nau'in relay ka

Canza triggerType zuwa HIGH idan relay ɗinka yana da high-trigger. (a bidiyo a 09:48)


void channelControl(int relayChannel, int action, int t)
{
  // ... (an cire lambar don taƙaita)
  digitalWrite(controlPin[relayChannel], state);
  // ...
}

Don sarrafa wani relay na musamman, kira aikin channelControl() tare da tashar relay (0-15), aikin da ake so (1 don KUNNA, 0 don KASHE), da tsawon lokaci a milliseconds. Misali, don kunna relay 6 na daƙiƙa 2 (a bidiyo a 11:53):


channelControl(6, 1, 2000); // kunna relay 7 na daƙiƙa 2

Don sarrafa relays da yawa a lokaci ɗaya, yi amfani da umarnin `digitalWrite` guda ɗaya a cikin aikin loop() kamar yadda aka nuna a ƙasa (a bidiyo a 09:03):


digitalWrite(controlPin[5], LOW); // relay 6 KUNNA
digitalWrite(controlPin[2], LOW); // relay 3 KUNNA 
digitalWrite(controlPin[12], LOW); // relay 13 KUNNA 

Aikin Nuna Aiki

Nunin (a bidiyo a 14:17) yana nuna kowane relay yana kunna a jere. Nunin serial yana nuna matsayi da lokacin kunna kowane relay. Kana iya canza lambar don sarrafa relays na musamman bisa buƙatun aikin ka, kamar kunna dumama idan zafin ya wuce wani matsayi (a bidiyo a 16:24).

Babban Bidiyo

  • Gabatarwa: 00:00
  • Bayanin Kayan Aiki: 01:20
  • Nawa Load za a Haɗa?: 05:37
  • Bayanin Wutar Relay: 06:46
  • Bayanin Lambar: 08:45
  • Bayanin Haɗin Waya: 12:53
  • Nunin Aiki: 14:17

```

Hotuna

16 Channel Relay module
16 Channel Relay module
160-Code to control a 16-channel relay module using Arduino
Harshe: 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);    
  }

}
161-Control more than one relay at a time in the 16-channel relay module
Harshe: C++
/*
 * Arduino code to control 16 channel relay with Arduino UNO
 * Control more than 1 relay
 * 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() {

 digitalWrite(controlPin[5], LOW); // relay 6 ON
 digitalWrite(controlPin[2], LOW); // relay 3 ON 
 digitalWrite(controlPin[12], LOW); // relay 13 ON 
 
  digitalWrite(controlPin[5], HIGH); // relay 6 OFF
          
}

Fayiloli📁

Tsarin zane