Code de recherche

Leçon 52-1 : Code de base : Contrôler un moteur CC avec un relais en utilisant Arduino

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.

module relais à 2 canaux
module relais à 2 canaux
Module de relais à niveau haut de 5V
Module de relais à déclenchement de niveau haut 5V

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.

câblage de batterie moteur CCW

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).

câblage-batterie-moteur-CW

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).

câblage-batterie-moteur-2

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.

câblage-de-batterie-moteur-3

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.

câblage-de-batterie-de-moteur-5

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

câblage de batterie moteur 6

L'image ci-dessus montre le chemin du courant.

batterie-moteur-câblage-7

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.

câblage de batterie de moteur 8

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

dual_relay_motor_wrring_bb
single_relay_motor_wrring_bb

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 seconds

Pour 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 seconds

Le 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

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)
Langue: 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

Ce dont vous pourriez avoir besoin

Fichiers📁

Aucun fichier disponible.