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.
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.
L'immagine sopra mostra di collegare i fili di un motore a una batteria, il motore ruota ad esempio in senso antiorario (CCW).
L'immagine sopra mostra che se colleghi i fili + e - a terminali diversi del motore, esso ruota, per esempio, in direzione oraria (CW).
Non possiamo collegare un relè direttamente alle schede Arduino, ESP32 o Raspberry Pi poiché il motore necessita di una corrente molto elevata per funzionare.
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.
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
L'immagine sopra mostra il percorso della corrente.
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.
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


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 secondsPer 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 secondsIl 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
++
/*
* 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
-
eBay
Risorse e riferimenti
-
Esterno
-
Esterno
-
Esterno
-
Esterno
File📁
Nessun file disponibile.