Caută cod

Folosirea unui buton de tip push de la Arduino pentru a comuta un releu și un bec de curent alternativ

Folosirea unui buton de tip push de la Arduino pentru a comuta un releu și un bec de curent alternativ

În acest tutorial, vom învăța cum să controlăm un bec de curent alternativ sau o lumină LED folosind un buton și un releu. Butonul va comuta lumina pornit/oprit, menținându-și starea chiar și atunci când butonul este eliberat. Această configurație nu este doar practică, ci și o introducere excelentă în lucrul cu relee și sarcini de curent alternativ.

5V LOW-LEVEL trigger relay

Pe măsură ce progresăm, vom acoperi componentele necesare, instrucțiunile de cablare și codul Arduino care face posibil acest proiect. Asigurați-vă că urmăriți videoclipul asociat pentru un ghid vizual și explicații detaliate (în videoclip la 00:00).

5V LOW-Level triggered Relay module

Hardware Explicat

Pentru acest proiect, vom folosi un modul de releu, o placă Arduino și un buton. Modulul de releu acționează ca un comutator care poate controla sarcini de curent alternativ de înaltă tensiune, cum ar fi un bec, fiind controlat de semnalele de joasă tensiune ale Arduino. Modulul de releu are trei terminale principale pentru conectarea sarcinii: Comun (COM), Normal Deschis (NO) și Normal Închis (NC).

Butonul servește ca interfață de utilizator pentru a comuta starea releului. Este conectat la unul dintre pinii digitali de pe Arduino. Când butonul este apăsat, trimite un semnal către Arduino, care apoi activează sau dezactivează releul în consecință. Această interacțiune simplă ne permite să controlăm lumina cu ușurință.

Detalii din Fișa Tehnică pentru Releu

ProducătorSongle
Număr de piesăSRD-05VDC-SL-C
Tensiunea bobinei5 VDC
Tensiunea de comutareAC 250 V / DC 30 V
Curentul de comutare10 A max.
Rezistența de contact≤ 100 mΩ
Rezistența de izolație≥ 1000 MΩ
Temperatura de operare-40 până la +70 °C
PachetModul de releu standard

  • Asigurați-vă că releul este evaluat pentru sarcina pe care o comutați.
  • Mențineți modulul de releu alimentat cu 5 VDC.
  • Folosiți izolație adecvată pentru conexiunile de curent alternativ.
  • Fiți precauți când lucrați cu curent alternativ; asigurați-vă că circuitul este deconectat înainte de a face modificări.
  • Conectați butonul la pinul de intrare desemnat de pe Arduino.
  • Utilizați modul INPUT_PULLUP pentru pinul butonului pentru a evita necesitatea rezistențelor externe.
  • Testați funcționarea releului cu o tensiune mai mică înainte de a conecta sarcini de curent alternativ.
  • Verificați conexiunile pentru a evita scurtcircuitele.

Instrucțiuni de Cablare

Arduino wiring for AC bulb, LED and push button
Arduino wiring for AC bulb, LED and push button

Pentru a cabla modulul de releu, începeți prin conectarea pinului VCC al releului la pinul de 5V de pe Arduino, iar pinul GND al releului la pinul GND de pe Arduino. Pinul IN de pe releu ar trebui conectat la pinul digital 10 de pe Arduino. Acest pin va trimite semnalul pentru a activa releul.

Pentru buton, conectați un terminal la pinul digital 2 de pe Arduino. Celălalt terminal ar trebui conectat la GND. Această configurare folosește rezistența internă de pull-up a Arduino, deci asigurați-vă că pinul este setat la INPUT_PULLUP în cod. Când butonul este apăsat, va aduce pinul la LOW, trimițând un semnal către Arduino.

Pentru sarcina de curent alternativ, conectați un fir la terminalul COM de pe releu și celălalt fir la terminalul NO. Această configurație va permite sarcinii de curent alternativ să se pornească atunci când releul este activat. Asigurați-vă întotdeauna că conexiunile de curent alternativ sunt sigure și izolate.

Exemple de Cod și Explicații

Următorul cod inițializează pinii necesari și setează releul să rămână oprit inițial. Apăsarea butonului comută starea releului și actualizează starea luminii în consecință.

int pbuttonPin = 2; // conectează ieșirea la buton
int relayPin = 10; // Conectat la releu (LED)

void setup() {
  Serial.begin(9600);
  pinMode(pbuttonPin, INPUT_PULLUP); 
  pinMode(relayPin, OUTPUT);
  digitalWrite(relayPin, HIGH); // menține sarcina OPRITĂ la început
}

În cod, variabila pbuttonPin este setată la pinul 2, care este folosit pentru buton. relayPin este setat la pinul 10, controlând releul. Funcția digitalWrite este folosită pentru a asigura că releul pornește în starea OPRIT.

void loop() {
  val = digitalRead(pbuttonPin); // citește valoarea butonului
  if(val == HIGH && lightON == LOW) {
    pushed = 1 - pushed; // comută starea apăsat
    delay(100);
  }
  if(pushed == HIGH) {
    digitalWrite(relayPin, LOW); // pornește releul
  } else {
    digitalWrite(relayPin, HIGH); // oprește releul
  }
}

Această secțiune de cod verifică continuu starea butonului. Când butonul este apăsat, comută variabila pushed. În funcție de valoarea lui pushed, releul este pornit sau oprit, controlând efectiv lumina. Această buclă rulează continuu, asigurând că starea luminii este actualizată în timp real.

Pentru detalii complete despre cod, vă rugăm să consultați codul încărcat mai jos în articol.

Demonstrație / Ce să Vă Așteptați

Când apăsați butonul, releul se va activa, pornind becul de curent alternativ conectat. Apăsarea butonului din nou va opri becul. Monitorul serial va afișa mesajele de stare, indicând dacă lumina este PORNITĂ sau OPRITĂ. Dacă întâmpinați probleme, asigurați-vă că cablarea este corectă și verificați eventualele intrări flotante care ar putea cauza comportament neașteptat (în videoclip la 10:00).

Marcaje Temporale din Videoclip

  • 00:00 - Introducere
  • 01:30 - Prezentare Generală a Hardware-ului
  • 03:15 - Instrucțiuni de Cablare
  • 05:45 - Explicația Codului
  • 08:00 - Demonstrație

Imagini

5V LOW-Level triggered Relay module
5V LOW-Level triggered Relay module
5V LOW-LEVEL trigger relay
5V LOW-LEVEL trigger relay
Arduino wiring for AC bulb, LED and push button
Arduino wiring for AC bulb, LED and push button
5V LOW-LEVEL trigger relay
5V LOW-LEVEL trigger relay
34-Using an Arduino push button to push-on and push-off a relay and AC bulb (toggle)
Limba: C++
/*
 * This is the Arduino code for a push button to turn ON and OFF a relay and AC bulb.
It toggles the bulb ON and OFF.
 * The output pin 10 is connected to the relay.
 * Watch video instructions on YouTube: https://youtu.be/7CCSRs5bvH0
 * Be careful working with AC; it is dangerous. Disconnect from AC power when working and wear protective gloves when touching AC components.
 
 * Full explanation of this code and wiring diagram is available in
 * my Arduino Course at Udemy.com here: http://robojax.com/L/?id=62

 * Written by Ahmad Shamshiri on December 14, 2017 in Ajax, Ontario, Canada
 * in Ajax, Ontario, Canada. www.robojax.com
 * 

 * Get this code and other Arduino codes from Robojax.com.
Learn Arduino step by step in a structured course with all materials, wiring diagrams, and libraries
all in one place. Purchase my course on Udemy.com: http://robojax.com/L/?id=62

If you found this tutorial helpful, please support me so I can continue creating 
content like this. You can support me on Patreon: http://robojax.com/L/?id=63

or make a donation using PayPal: http://robojax.com/L/?id=64

 *  * 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/>.


*/


int pbuttonPin = 2;// connect output to push button
int relayPin = 10;// Connected to relay (LED)

int val = 0; // push value from pin 2
int lightON = 0;//light status
int pushed = 0;//push status


void setup() {
	// Robojax.com code and video tutorial for push button ON and OFF
  Serial.begin(9600);
  pinMode(pbuttonPin, INPUT_PULLUP); 
  pinMode(relayPin, OUTPUT);
 digitalWrite(relayPin, HIGH);// keep the load OFF at the begining. If you wanted to be ON, change the HIGH to LOW
}

void loop() {
// Robojax.com code and video tutorial for push button ON and OFF
  val = digitalRead(pbuttonPin);// read the push button value

  if(val == HIGH && lightON == LOW){

    pushed = 1-pushed;
    delay(100);
  }    

  lightON = val;

      if(pushed == HIGH){
        Serial.println("Light ON");
        digitalWrite(relayPin, LOW); 
       
      }else{
        Serial.println("Light OFF");
        digitalWrite(relayPin, HIGH);
   
      }     

// Robojax.com code and video tutorial for push button ON and OFF

  delay(100);
}

Resurse și referințe

Fișiere📁

Nu sunt disponibile fișiere.