Leçon 52-1 : Code de base : Contrôler un moteur CC avec un relais en utilisant Arduino
Dans cette leçon, nous allons apprendre à contrôler la direction d'un moteur à courant continu en utilisant deux relais et un Arduino. En changeant la polarité de la tension fournie au moteur, nous pouvons inverser sa direction. Ce projet est simple et idéal pour les débutants souhaitant comprendre le contrôle des relais avec Arduino. Assurez-vous de regarder la vidéo pour des informations et des démonstrations supplémentaires (dans la vidéo à 00:00).
Dans ce tutoriel, nous allons utiliser deux relais pour inverser la polarité de l'alimentation électrique du moteur. Lorsque l'un des relais est activé, il permet au courant de circuler dans un sens, faisant tourner le moteur dans une direction. Lorsque l'autre relais est activé, il inverse le sens du courant, faisant tourner le moteur dans la direction opposée. Les relais agissent comme des interrupteurs contrôlés par l'Arduino.
Matériel expliqué
Les principaux composants de ce projet comprennent une carte Arduino, deux relais, un moteur à courant continu et une alimentation. La carte Arduino est le cerveau de l'opération, envoyant des signaux aux relais pour contrôler la direction du moteur. Chaque relais a trois bornes : commune (COM), normalement fermée (NC) et normalement ouverte (NO). Lorsqu'il est activé, le relais connecte la borne COM soit à la borne NC, soit à la borne NO, ce qui permet de commuter le circuit.
L'image ci-dessus montre comment connecter les fils d'un moteur à une batterie, le moteur tourne par exemple dans le sens inverse des aiguilles d'une montre (CCW).
L'image ci-dessus montre que si vous connectez les fils + et - à des bornes différentes du moteur, il tourne par exemple dans le sens horaire (CW).
Nous ne pouvons pas connecter un relais directement aux cartes Arduino, ESP32 ou Raspberry Pi, car le moteur nécessite un courant très élevé pour fonctionner.
Nous avons besoin d'un driver de moteur entre l'Arduino et le moteur.
Les relais sont importants car ils permettent à l'Arduino de contrôler des dispositifs à haute puissance comme les moteurs sans être directement connectés à eux. C'est crucial puisque les broches de sortie de l'Arduino ne peuvent gérer qu'un courant limité. En utilisant des relais, nous pouvons contrôler en toute sécurité le fonctionnement du moteur depuis l'Arduino.
nous pouvons connecter deux relais comme montré ci-dessus pour contrôler la direction de rotation du moteur. Relais-1 si ON et Relais-2 si OFF. maintenant le moteur tourne dans le sens des aiguilles d'une montre
L'image ci-dessus montre le chemin du courant.
Nous pouvons connecter deux relais comme montré ci-dessus pour contrôler la direction de rotation du moteur. Relais-1 est OFF et Relais-2 est ON. Maintenant, le moteur tourne dans le sens antihoraire. Regardez la flèche au-dessus du moteur.
L'image ci-dessus montre le chemin du courant.
Détails de la fiche technique
| Fabricant | Songle |
|---|---|
| Numéro de pièce | SRD-05VDC-SL-C |
| Tension de bobine | 5 V (CC) |
| Indice de contact | 10 A / 250 VAC |
| Courant alternatif | 15 A max |
| Tension de commutation | 30 V CC / 250 V CA |
| Résistance de contact | ≤ 100 mΩ |
| Résistance d'isolation | ≥ 1000 MΩ |
| Température de fonctionnement | -40 à +70 °C |
| Colis | Module de relais avec 2 relais |
- Assurez-vous que les relais sont classés pour la tension et le courant du moteur.
- Utilisez une masse commune entre l'Arduino et le module relais.
- Utilisez des diodes de récupération appropriées si nécessaire pour protéger l'Arduino des contre-EMF.
- Gardez les longueurs de fil courtes pour minimiser la résistance et les interférences.
- Vérifiez les connexions des relais avant de mettre sous tension le système.
- Testez le circuit avec des tensions plus faibles avant d'appliquer la pleine puissance au moteur.
- Étiquetez les fils pour une identification facile lors du dépannage.
Instructions de câblage


Exemples de code et guide étape par étape
Dans le code, nous définissons deux broches pour les relais en utilisantint relay1 = 2;etint relay2 = 3;. Ces broches contrôleront le fonctionnement des relais. Lesetup()la fonction initialise ces broches comme sorties et maintient le moteur éteint en réglant les deux relais sur haut.
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);
}Dans leloop()fonction, nous contrôlons la direction du moteur. Pour faire tourner le moteur dans le sens antihoraire (CCW), nous réglonsrelay1à bas etrelay2trop élevé. Cela permet au courant de circuler dans une seule 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 secondsPour arrêter le moteur, nous éteignons les deux relais en les remettant à l'état haut. Nous inverserons ensuite la direction en changeant les états des relais, permettant au moteur de tourner dans le sens des aiguilles d'une montre (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 secondsLe code complet de ce projet est chargé en dessous de l'article. Assurez-vous de regarder la vidéo pour une explication détaillée du code (dans la vidéo à 00:00).
Démonstration / À quoi s'attendre
Lorsque la configuration est terminée et que le code est chargé, le moteur tournera d'abord dans le sens inverse des aiguilles d'une montre pendant trois secondes, puis s'arrêtera pendant deux secondes, suivi d'une rotation dans le sens des aiguilles d'une montre pendant encore trois secondes, et enfin s'arrêtera à nouveau. Ce cycle se répétera en continu. Les erreurs courantes incluent un câblage incorrect des relais ou le branchement direct du moteur à l'Arduino, ce qui peut endommager la carte. Référez-vous à la vidéo pour une confirmation visuelle du comportement attendu (dans la vidéo à 00:00).
Horodatages vidéo
- 00:00 Introduction
- 04:27 Comment ça fonctionne
- 08:05 Explication du câblage
- 11:45 Explication du code de base
- 15:25 Code avancé expliqué
- 18:40 Démonstration avec deux relais simples
- 19:43 Démonstration avec un module de relais double
Images
++
/*
* 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
Ce dont vous pourriez avoir besoin
-
eBay
Ressources et références
-
Externe
-
Externe
-
Externe
-
Externe
Fichiers📁
Aucun fichier disponible.