Cerca codice

Lezione 52-1: Codice di base: Controllare un motore CC con un relè utilizzando Arduino

Lezione 52-1: Codice di base: Controllare un motore CC con un relè utilizzando Arduino

In questa lezione, impareremo come controllare la direzione di un motore DC utilizzando due relè e un Arduino. Cambiando la polarità della tensione fornita al motore, possiamo invertire la sua direzione. Questo progetto è semplice e ideale per i principianti che desiderano comprendere il controllo dei relè con Arduino. Assicurati di guardare il video per ulteriori approfondimenti e dimostrazioni (nel video a 00:00).

In questo tutorial, useremo due relè per cambiare la polarità dell'alimentazione al motore. Quando un relè è attivato, consente al corrente di fluire in una direzione, facendo ruotare il motore in un senso. Quando l'altro relè è attivato, inverte il flusso di corrente, causando la rotazione del motore nella direzione opposta. I relè agiscono come interruttori controllati dall'Arduino.

Modulo relè a 2 canali
Modulo relè a 2 canali
Modulo relè a trigger di livello alto 5V
Modulo relè a trigger di livello alto 5V

Hardware Spiegato

I componenti principali di questo progetto includono una scheda Arduino, due relè, un motore a corrente continua e un'alimentazione. La scheda Arduino è il cervello dell'operazione, inviando segnali ai relè per controllare la direzione del motore. Ogni relè ha tre terminali: comune (COM), normalmente chiuso (NC) e normalmente aperto (NO). Quando attivato, il relè collega il terminale COM al terminale NC o NO, commutando efficacemente il circuito.

cablaggio-batteria-motore-inverso

L'immagine sopra mostra di collegare i fili di un motore a una batteria, il motore ruota ad esempio in senso antiorario (CCW).

motor-batteria-cablaggio-CW

L'immagine sopra mostra che se colleghi i fili + e - a terminali diversi del motore, esso ruota, per esempio, in direzione oraria (CW).

cablaggio-batteria-motore-2

Non possiamo collegare un relè direttamente alle schede Arduino, ESP32 o Raspberry Pi poiché il motore necessita di una corrente molto elevata per funzionare.

batteria-motore-cablaggio-3

Dobbiamo mettere il driver del motore tra Arduino e il motore.

I relè sono importanti perché permettono all'Arduino di controllare dispositivi ad alta potenza come i motori senza essere direttamente collegati a essi. Questo è cruciale poiché i pin di uscita dell'Arduino possono gestire solo una corrente limitata. Utilizzando i relè, possiamo controllare in modo sicuro il funzionamento del motore dall'Arduino.

batteria-motore-cablaggio-5

possiamo collegare due relè come mostrato sopra per controllare la direzione di rotazione del motore. Relè-1 se ATTIVO e Relè-2 se SPENTO. ora il motore ruota in direzione oraria

batteria-motore-cablaggio-6

L'immagine sopra mostra il percorso della corrente.

batteria-motore-cablaggio-7

possiamo collegare due relè come mostrato sopra per controllare la direzione di rotazione del motore. Relè-1 se OFF e Relè-2 se ON. ora il motore ruota in direzione CCW. Guarda la freccia sopra il motore.

batteria-motore-cablaggio-8

L'immagine sopra mostra il percorso della corrente.

Dettagli del datasheet

Produttore Songle
Numero di parte SRD-05VDC-SL-C
Tensione della bobina 5 V (CC)
Valutazione di contatto 10 A / 250 VAC
Corrente alternata 15 A max
Tensione di commutazione 30 V DC / 250 V AC
Resistenza di contatto ≤ 100 mΩ
Resistenza di isolamento ≥ 1000 MΩ
Temperatura di esercizio -40 a +70 °C
Pacchetto Modulo Relè con 2 Relè

  • Assicurati che i relè siano valutati per la tensione e la corrente del motore.
  • Utilizzare un comune tra l'Arduino e il modulo relè.
  • Utilizzare diodi flyback appropriati, se necessario, per proteggere l'Arduino dalle contro-EMF.
  • Mantieni le lunghezze dei cavi corte per ridurre al minimo la resistenza e le interferenze.
  • Controlla nuovamente le connessioni del relè prima di accendere il sistema.
  • Testa il circuito con tensioni più basse prima di applicare la potenza totale al motore.
  • Etichetta i fili per una facile identificazione durante la risoluzione dei problemi.

Istruzioni di cablaggio

dual_relay_motor_wrring_bb
single_relay_motor_wrring_bb

Esempi di codice e guida passo-passo

Nel codice, definiamo due pin per i relè utilizzandoint relay1 = 2;eint relay2 = 3;Questi pin controlleranno il funzionamento dei relè. Ilsetup()la funzione inizializza questi pin come uscite e mantiene il motore spento impostando entrambi i relè su alto.

void setup() {
    pinMode(relay1, OUTPUT); // set pin as output for relay 1
    pinMode(relay2, OUTPUT); // set pin as output for relay 2
    digitalWrite(relay1, HIGH); 
    digitalWrite(relay2, HIGH); 
}

Nellaloop()funzione, controlliamo la direzione del motore. Per ruotare il motore in senso antiorario (CCW), impostiamorelay1basso erelay2troppo alta. Questo permette alla corrente di fluire in una direzione.

digitalWrite(relay1, LOW); // turn relay 1 ON
digitalWrite(relay2, HIGH); // turn relay 2 OFF  
Serial.println("Rotating in CCW");  
delay(3000); // wait for 3 seconds

Per fermare il motore, spegniamo entrambi i relè impostandoli di nuovo in alto. Poi invertiamo la direzione cambiando gli stati dei relè, permettendo al motore di ruotare in senso orario (CW).

digitalWrite(relay1, HIGH); // turn relay 1 OFF
digitalWrite(relay2, LOW); // turn relay 2 ON 
Serial.println("Rotating in CW");  
delay(3000); // wait for 3 seconds

Il codice completo per questo progetto è caricato sotto l'articolo. Assicurati di guardare il video per una spiegazione dettagliata del codice (nel video a :00).

Dimostrazione / Cosa Aspettarsi

Quando l'installazione è completata e il codice è caricato, il motore ruoterà innanzitutto in senso antiorario per tre secondi, poi si fermerà per due secondi, seguito da una rotazione in senso orario per altri tre secondi, e infine si fermerà di nuovo. Questo ciclo si ripeterà continuamente. Gli errori comuni includono un cablaggio errato dei relè o il collegamento diretto del motore all'Arduino, che può danneggiare la scheda. Fare riferimento al video per una conferma visiva del comportamento previsto (nel video a 00:00).

Timestamp video

  • 00:00 Introduzione
  • 04:27 Come funziona
  • 08:05 Spiegazione del cablaggio
  • 11:45 Codice di base spiegato
  • 15:25 Codice avanzato spiegato
  • 18:40 Dimostrazione con due relè singoli
  • 19:43 Dimostrazione con un modulo relè duale

Immagini

5V HIGH-level trigger relay module
5V HIGH-level trigger relay module
2 chanel relay module
2 chanel relay module
dual_relay_motor_wrring_bb
dual_relay_motor_wrring_bb
motor-battery-wiring-8
motor-battery-wiring-8
motor-battery-wiring-7
motor-battery-wiring-7
motor-battery-wiring-6
motor-battery-wiring-6
motor-battery-wiring-5
motor-battery-wiring-5
motor-battery-wiring-4
motor-battery-wiring-4
motor-battery-wiring-3
motor-battery-wiring-3
motor-battery-wiring-2
motor-battery-wiring-2
motor-battery-wiring-CW
motor-battery-wiring-CW
motor-battery-wiring-CCW
motor-battery-wiring-CCW
single_relay_motor_wrring_bb
single_relay_motor_wrring_bb
492-Lesson 52: Control a DC motor with a relay using Arduino (two projects)
Lingua: C++
++
/*
* Lesson 52: Control a DC motor with Relay using Arduino | Arduino Step By Step Course
Basic code
 * Arduino code to change the direction of rotation 
 * of a DC motor with 2 relays.
 
 * 
 * This is basic code. I have advanced code which can be used in both 
 * for Low-level trigger and High-level trigger relay with clean code.
Please watch video explaining this code: https://youtu.be/2n0vUa0cZOI

 * 
 * Written by Ahmad Shamshiri for Robojax.com on 
 * Sunday, August 18, 2019 
 * at 20:22 in Ajax, Ontario, Canada
 * 

This code is available at http://robojax.com/course1/?vid=lecture52
 
with over 100 lectures free on YouTube. Watch it here: http://robojax.com/L/?id=338
Get the code for the course: http://robojax.com/L/?id=339  


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 relay1 = 2;
int relay2 = 3;


void setup() {

    pinMode(relay1, OUTPUT);// set pin as output for relay 1
    pinMode(relay2, OUTPUT);// set pin as output for relay 2


    // keep the motor off by keeping both HIGH
    digitalWrite(relay1, HIGH); 
    digitalWrite(relay2, HIGH); 

 
  
  Serial.begin(9600);// initialize serial monitor with 9600 baud
  Serial.println("Robojax Motor Direction of Rotation");
  Serial.println("Using 2 Relays");  
  delay(2000);
}

void loop() {

 // Rotate in CCW direction
  digitalWrite(relay1, LOW);// turn relay 1 ON
  digitalWrite(relay2, HIGH);// turn relay 2 OFF  
  Serial.println("Rotating in CCW");  
  delay(3000);// wait for 3 seconds

 // stop the motor
  digitalWrite(relay1, HIGH);// turn relay 1 OFF
  digitalWrite(relay2, HIGH);// turn relay 2 OFF
  Serial.println("Stopped");  
  delay(2000);// stop for 2 seconds
  
 // Rotate in CW direction
  digitalWrite(relay1, HIGH);// turn relay 1 OFF
  digitalWrite(relay2, LOW);// turn relay 2 ON 
  Serial.println("Rotating in CW");  
  delay(3000);// wait for 3 seconds

 // stop the motor
  digitalWrite(relay1, HIGH);// turn relay 1 OFF
  digitalWrite(relay2, HIGH);// turn relay 2 OFF
  Serial.println("Stopped");  
  delay(2000);// stop for 2 seconds 
  
 Serial.println("===============");

          
}// loop end

Cose di cui potresti avere bisogno

File📁

Nessun file disponibile.