Suchcode

Lektion 52-1: Basiscode: Steuern eines Gleichstrommotors mit einem Relais unter Verwendung von Arduino

Lektion 52-1: Basiscode: Steuern eines Gleichstrommotors mit einem Relais unter Verwendung von Arduino

In dieser Lektion lernen wir, wie man die Richtung eines Gleichstrommotors mit zwei Relais und einem Arduino steuert. Indem wir die Polarität der an den Motor gelieferten Spannung ändern, können wir seine Richtung umkehren. Dieses Projekt ist unkompliziert und ideal für Anfänger, die das Relaissteuerung mit Arduino verstehen möchten. Achten Sie darauf, das Video anzusehen, um zusätzliche Einblicke und Demonstrationen zu erhalten (im Video bei 00:00).

In diesem Tutorial verwenden wir zwei Relais, um die Polarität der Stromversorgung für den Motor umzuschalten. Wenn ein Relais aktiviert wird, lässt es den Strom in eine Richtung fließen, sodass der Motor in eine Richtung dreht. Wenn das andere Relais aktiviert wird, kehrt es den Stromfluss um, wodurch der Motor in die entgegengesetzte Richtung dreht. Die Relais fungieren als Schalter, die vom Arduino gesteuert werden.

2-Kanal-Relaismodul
2-Kanal-Relaismodul
5V-Hochpegel-Trigger-Relaismodul
5V HIGH-Level-Trigger-Relaismodul

Hardware erklärt

Die Hauptkomponenten für dieses Projekt sind ein Arduino-Board, zwei Relais, ein Gleichstrommotor und eine Stromversorgung. Das Arduino-Board ist das Gehirn des Betriebs und sendet Signale an die Relais, um die Richtung des Motors zu steuern. Jedes Relais hat drei Anschlüsse: common (COM), normally closed (NC) und normally open (NO). Wenn es aktiviert wird, verbindet das Relais den COM-Anschluss entweder mit dem NC- oder dem NO-Anschluss und schaltet damit den Stromkreis.

motor-batteriekabel-CCW

Das obige Bild zeigt, wie man die Motorleitungen mit einer Batterie verbindet, der Motor dreht sich beispielsweise gegen den Uhrzeigersinn (CCW).

motor-batteriekabel-CW

Das obige Bild zeigt, dass der Motor, wenn Sie die + und - Drähte an verschiedene Anschlüsse anschließen, beispielsweise im Uhrzeigersinn (CW) rotieren kann.

motor-batteriekabel-2

Wir können ein Relais nicht direkt an Arduino-, ESP32- oder Raspberry-Pi-Boards anschließen, da der Motor sehr hohe Ströme benötigt, um zu funktionieren.

motor-batterie-verdrahtung-3

Wir benötigen einen Motortreiber, der zwischen dem Arduino und dem Motor ist.

Relais sind wichtig, da sie es dem Arduino ermöglichen, leistungsstarke Geräte wie Motoren zu steuern, ohne direkt mit ihnen verbunden zu sein. Dies ist entscheidend, da die Ausgangspins des Arduinos nur einen begrenzten Strom verarbeiten können. Durch die Verwendung von Relais können wir den Betrieb des Motors sicher vom Arduino aus steuern.

motor-batteriekabelbaum-5

Wir können zwei Relais wie oben gezeigt anschließen, um die Drehrichtung des Motors zu steuern. Relais-1 ist AN und Relais-2 ist AUS. Jetzt dreht der Motor im Uhrzeigersinn.

motor-batteriekabel-6

Das Bild oben zeigt den Verlauf des Stroms.

motor-batteriekabel-7

Wir können zwei Relais anschließen, wie oben gezeigt, um die Drehrichtung des Motors zu steuern. Relais-1 ist AUS und Relais-2 ist EIN. Jetzt dreht sich der Motor gegen den Uhrzeigersinn. Schau dir den Pfeil über dem Motor an.

motor-batteriekabel-8

Das Bild oben zeigt den Verlauf des Stroms.

Technische Datenblätter

Hersteller Songle
Teilenummer SRD-05VDC-SL-C
Spannung der Spule 5 V (DC)
Kontaktbewertung 10 A / 250 VAC
Wechselstrom 15 A max
Schaltspannung 30 V DC / 250 V AC
Kontaktwiderstand ≤ 100 mΩ
Isolationswiderstand ≥ 1000 MΩ
Betriebstemperatur -40 bis +70 °C
Paket Relaismodul mit 2 Relais

  • Stellen Sie sicher, dass die Relais für die Spannung und den Strom des Motors ausgelegt sind.
  • Verwenden Sie einen gemeinsamen Bezug zwischen dem Arduino und dem Relaismodul.
  • Verwenden Sie geeignete Freilaufdioden, falls erforderlich, um den Arduino vor Rück-EMK zu schützen.
  • Halten Sie die Kabelwege kurz, um Widerstand und Interferenzen zu minimieren.
  • Überprüfen Sie die Relaisverbindungen erneut, bevor Sie das System einschalten.
  • Testen Sie den Stromkreis mit niedrigeren Spannungen, bevor Sie die volle Leistung auf den Motor anwenden.
  • Beschriften Sie die Drähte zur einfachen Identifizierung während der Fehlersuche.

Verdrahtungsanweisungen

dual_relay_motor_wrring_bb
single_relay_motor_wrring_bb

Code-Beispiele & Anleitung

Im Code definieren wir zwei Pins für die Relais mithilfe vonint relay1 = 2;undint relay2 = 3;. Diese Pins steuern den Betrieb der Relais. Diesetup()Die Funktion initialisiert diese Pins als Ausgänge und hält den Motor aus, indem sie beide Relais auf hoch setzt.

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); 
}

In derloop()Funktion steuern wir die Richtung des Motors. Um den Motor gegen den Uhrzeigersinn (CCW) zu drehen, setzen wirrelay1zu niedrig undrelay2zu hoch. Dies ermöglicht, dass der Strom in eine Richtung fließt.

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

Um den Motor zu stoppen, schalten wir beide Relais aus, indem wir sie wieder hochsetzen. Dann ändern wir die Richtung, indem wir die Zustände der Relais umschalten, was es dem Motor ermöglicht, im Uhrzeigersinn (CW) zu rotieren.

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

Der vollständige Code für dieses Projekt ist unter dem Artikel geladen. Stellen Sie sicher, dass Sie das Video für eine detaillierte Erklärung des Codes (im Video bei :00) ansehen.

Demonstration / Was zu erwarten ist

Wenn die Einrichtung abgeschlossen ist und der Code hochgeladen wurde, wird der Motor zunächst drei Sekunden lang gegen den Uhrzeigersinn drehen, dann zwei Sekunden lang anhalten, gefolgt von einer Drehung im Uhrzeigersinn für weitere drei Sekunden, und schließlich erneut anhalten. Dieser Zyklus wird kontinuierlich wiederholt. Häufige Fehlerquellen sind falsches Verkabeln der Relais oder das direkte Anschließen des Motors an das Arduino, was die Platine beschädigen kann. Siehe das Video zur visuellen Bestätigung des erwarteten Verhaltens (im Video bei :00).

Video-Zeiten

  • 00:00 Einführung
  • 04:27 Wie funktioniert es
  • 08:05 Verdrahtung Erklärt
  • 11:45 Grundlegender Code erklärt
  • 15:25 Fortgeschrittener Code erklärt
  • 18:40 Demonstration mit zwei einzelnen Relais
  • 19:43 Demonstration mit einem Dual-Relaismodul

Bilder

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

Dinge, die Sie vielleicht brauchen

Dateien📁

Keine Dateien verfügbar.