Cod Arduino pentru un modul de releu cu 4 până la 16 canale, 5V
În acest tutorial, vom învăța cum să controlăm un modul de releu cu 4 canale folosind un Arduino. Acest lucru vă va permite să gestionați sarcini de curent alternativ, cum ar fi lumini, ventilatoare sau încălzitoare, în siguranță și eficient. Codul furnizat poate fi adaptat pentru module cu mai multe canale, fiind versatil pentru diverse aplicații.
Înainte de a intra în detalii, este esențial să înțelegem componentele implicate în acest proiect. Modulul de releu funcționează ca un comutator care poate controla dispozitive de înaltă tensiune, fiind controlat de semnale de joasă tensiune de la Arduino. Fiecare releu poate fi normal deschis sau normal închis, permițând flexibilitate în modul de funcționare al dispozitivelor conectate. Vă rugăm să consultați videoclipul pentru îndrumare vizuală (în videoclip la 02:15).
Hardware Explicat
Componentele principale ale acestui proiect includ placa Arduino și modulul de releu. Arduino acționează ca controler, trimițând semnale către modulul de releu pe baza codului pe care îl scriem. Modulul de releu conține mai multe relee care pot comuta sarcini de curent alternativ pornit/oprit. Fiecare releu are trei terminale: normal închis (NC), normal deschis (NO) și un terminal comun (COM).
Când releul este activat, terminalul comun se conectează la terminalul normal deschis, permițând curentului să circule prin sarcină. Acesta este un releu cu declanșare pe nivel logic scăzut, ceea ce înseamnă că se activează când primește un semnal de joasă tensiune (0V) și se dezactivează cu un semnal de înaltă tensiune (5V). Înțelegerea acestui mecanism este crucială pentru controlul sigur al dispozitivelor de curent alternativ.
Detalii din Fișa Tehnică
| Producător | Generic |
|---|---|
| Număr de piesă | Modul de releu cu 4 canale |
| Tensiune logică/IO | 5 V |
| Tensiune de alimentare | 5 V |
| Curent de ieșire (pe canal) | 10 A max |
| Curent de vârf (pe canal) | 15 A |
| Ghid frecvență PWM | N/A |
| Praguri logice de intrare | Scăzut: 0 V; Ridicat: 5 V |
| Cădere de tensiune / RDS(on) / saturație | N/A |
| Limite termice | 85 °C |
| Pachet | Modul de releu standard |
| Note / variante | Disponibil în variante cu 2, 4, 8 și 16 canale |
- Asigurați-vă că ratingul de curent al releului nu este depășit pentru a preveni deteriorarea.
- Utilizați surse de alimentare separate pentru aplicații cu curent ridicat pentru a izola Arduino.
- Mențineți o disipare adecvată a căldurii pentru relee în timpul funcționării.
- Verificați cu atenție cablajul pentru a evita scurtcircuitele.
- Utilizați opto-izoalatoare dacă este necesar pentru protecție suplimentară.
Instrucțiuni de Cablare

Pentru a conecta modulul de releu la Arduino, începeți prin conectarea pinului de împământare al modulului de releu la pinul de împământare de pe Arduino. Apoi, conectați pinul VCC al modulului de releu la pinul de 5V de pe Arduino. Pentru pinii de control, conectați pinii IN1, IN2, IN3 și IN4 ai modulului de releu la pinii digitali 2, 3, 4 și 5 de pe Arduino, respectiv. Această configurare permite Arduino să controleze starea fiecărui releu.
Asigurați-vă că poziționați modulul de releu pe o suprafață izolată, deoarece acesta gestionează sarcini de curent alternativ. Dacă utilizați o sursă de alimentare externă pentru relee, conectați împământarea acesteia la împământarea Arduino pentru a asigura o referință comună. Acest lucru este crucial pentru funcționarea corectă și siguranță.
Exemple de Cod și Explicații
Fragmentul de cod următor inițializează numărul de relee și setează pinii de control:
int ch = 4; // numărul de relee pe care le aveți
int relay[]={2,3,4,5}; // numerele pinilor Arduino pentru relee
Acest lucru definește numărul de relee și conexiunile lor corespunzătoare la pinii Arduino. Matricea relay conține numerele pinilor folosiți pentru a controla fiecare releu.

În continuare, configurăm pinii în funcția setup():
void setup() {
Serial.begin(9600); // pregătește monitorul serial
for(i=0; i < ch; i++) {
pinMode(relay[i], OUTPUT); // setează pinul i ca ieșire
digitalWrite(relay[i], HIGH); // Oprește releul
}
Serial.println("Robojax 4 Test Releu");
}
Acest cod inițializează monitorul serial și setează fiecare pin de releu ca ieșire, oprindu-le implicit. Declarația serială confirmă că configurarea este completă.
Bucla principală a programului controlează releele:
void loop() {
for(int i=0; i < ch; i++) {
Serial.print("Releu "); Serial.print(i+1); Serial.println(" PORNIT");
digitalWrite(relay[i], LOW); // Pornește releul
delay(wait);
}
for(int i=0; i < ch; i++) {
Serial.print("Releu "); Serial.print(i+1); Serial.println(" OPRIT");
digitalWrite(relay[i], HIGH); // Oprește releul
delay(wait);
}
Serial.println("====== buclă terminată ==");
}
Această buclă pornește mai întâi fiecare releu unul câte unul, așteaptă un timp specificat, apoi le oprește în aceeași secvență. Ieșirea serială ajută la monitorizarea stării releelor în timp real.
Demonstrație / Ce să te aștepți
Când rulezi programul, ar trebui să vezi releele activându-se în secvență, pornind și oprindu-se la fiecare două secunde. Dacă totul este conectat corect, sarcinile de curent alternativ conectate la relee vor răspunde corespunzător. Fii atent la consumul de curent al Arduino; dacă prea multe relee sunt activate simultan, poate depăși capacitatea plăcii (în video la 13:45).
Marcaje Video
- 00:00 Introducere
- 02:15 Explicația Hardware
- 05:30 Instrucțiuni de Cablare
- 08:45 Parcurgerea Codului
- 13:45 Demonstrație
++
/*
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
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
Lucruri de care ai putea avea nevoie
-
Amazon
-
AliExpressBuy 5V/12V 1, 2, 4, 6, or 8-channel relay modules.click.aliexpress.com
Resurse și referințe
Încă nu sunt resurse.
Fișiere📁
Fișier Fritzing
-
omron silid state relay SSR module 4 channel
omron-relay-module-4way-1.fzpz0.02 MB -
4-Channel 5v Relay module
4-Channel 5v Relay Shield.fzpz0.02 MB -
omron solid state relay SSR module- 8 channel
omron-relay-module-8way-1.fzpz0.02 MB -
AC Plug Fritzing Part (Robojax.com)
ACPlug_Robojax.com.fzpz