Sarrafa tsarin relay channel 16 ta amfani da Arduino
```htmlSarrafa 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.

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
```
/*
* 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);
}
}
/*
* 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
}
Abin da zaka iya bukata
-
eBay
-
eBay
-
AliExpressPurchase 16 Channel 5V, 12V or 24V relay module from AliExpresss.click.aliexpress.com
-
BanggoodPurchase 16 Channel relay module from Banggoodbanggood.com
Albarkatun da kuma shafukan da za a duba
-
WajeDIP 4-pin photocouplerwebpagefx.com
-
Waje
-
WajePurchase 16 Channel 5V, 12V or 24V relay module from AliExpresss.click.aliexpress.com
-
WajePurchase 16 Channel relay module from Banggoodbanggood.com
-
Waje
-
Waje
-
Waje
Fayiloli📁
Tsarin zane
-
robojax_16ch_relay module schematic
robojax_16ch_relay_schematic.pdf0.37 MB