ESP32 - Gleichstrommotor - Endschalter

In diesem ESP32-Tutorial lernen wir, wie man den ESP32 verwendet, um einen Gleichstrommotor über Grenzschalter und den L298N-Treiber zu steuern. Im Detail werden wir lernen:

In diesem Tutorial zum ESP32 werden wir den Prozess untersuchen, wie der ESP32 verwendet wird, um einen Gleichstrommotor mithilfe eines Endschalters und eines L298N-Treibers zu steuern. Genauer gesagt behandeln wir die folgenden Aspekte:

Erforderliche Hardware

1×ESP32 ESP-WROOM-32 Entwicklungsmodul
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×Endschalter (KW12-3)
1×Endschalter (V-153-1C25)
1×Endschalter (V-155-1C25)
1×Endschalter (V-156-1C25)
1×5V DC-Motor
1×5V Netzteil für 5V DC-Motor
1×DC-Stromanschluss
1×L298N Motortreiber-Modul
1×Verbindungskabel
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP32
1×(Empfohlen) Breakout Expansion Board for ESP32
1×(Empfohlen) Stromverteiler für ESP32

Oder Sie können die folgenden Kits kaufen:

1×DIYables ESP32 Starter-Kit (ESP32 enthalten)
1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über Gleichstrommotor und Endschalter

Wenn Sie nichts über DC-Motoren und Grenzschalter wissen (Pinbelegung, Funktionsweise, wie man sie programmiert ...), erfahren Sie in den folgenden Tutorials mehr darüber:

Verdrahtungsdiagramm

Dieses Tutorial enthält die ESP32-Codes für zwei Fälle: Einen Gleichstrommotor + einen Endschalter, einen Gleichstrommotor + zwei Endschalter.

  • Verdrahtungsdiagramm zwischen dem DC-Motor und einem Endschalter
Schaltplan für die Verdrahtung eines ESP32-Gleichstrommotors und eines Endschalters

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Wenn Sie nicht wissen, wie Sie ESP32 und andere Komponenten mit Strom versorgen, finden Sie Anleitungen im folgenden Tutorial: Wie man ESP32 mit Strom versorgt.

  • Schaltplan zwischen dem Gleichstrommotor und zwei Endschaltern
Schaltplan für ESP32-Gleichstrommotor und zwei Endschalter

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

ESP32-Code - DC-Motor durch einen Endschalter stoppen

Der untenstehende Code lässt einen Gleichstrommotor endlos drehen und stoppt ihn sofort, wenn ein Grenzschalter berührt wird.

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp32/esp32-dc-motor-limit-switch */ #include <ezButton.h> #define ENA_PIN 19 // ESP32 pin GPIO19 connected to the IN1 pin L298N #define IN1_PIN 18 // ESP32 pin GPIO18 connected to the IN2 pin L298N #define IN2_PIN 17 // ESP32 pin GPIO17 connected to the EN1 pin L298N ezButton limitSwitch(25); // create ezButton object that attach to pin GPIO25 void setup() { Serial.begin(9600); limitSwitch.setDebounceTime(50); // set debounce time to 50 milliseconds // initialize digital pins as outputs. pinMode(ENA_PIN, OUTPUT); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); digitalWrite(ENA_PIN, HIGH); // max speed digitalWrite(IN1_PIN, HIGH); // control motor A spins clockwise digitalWrite(IN2_PIN, LOW); // control motor A spins clockwise } void loop() { limitSwitch.loop(); // MUST call the loop() function first if (limitSwitch.isPressed()) { Serial.println(F("The limit switch: TOUCHED")); digitalWrite(IN1_PIN, LOW); // stop motor digitalWrite(IN2_PIN, LOW); // stop motor } }

Schnelle Schritte

  • Wenn Sie ESP32 zum ersten Mal verwenden, lesen Sie wie man die ESP32-Umgebung in der Arduino IDE einrichtet.
  • Verdrahten Sie es gemäß dem obigen Bild.
  • Verbinden Sie das ESP32-Board über ein Micro-USB-Kabel mit Ihrem PC.
  • Öffnen Sie die Arduino IDE auf Ihrem PC.
  • Wählen Sie das richtige ESP32-Board (z. B. ESP32 Dev Module) und den COM-Port aus.
  • Verbinden Sie den ESP32 über ein USB-Kabel mit dem PC.
  • Öffnen Sie die Arduino IDE, wählen Sie das richtige Board und den Port aus.
  • Klicken Sie auf das Bibliotheken-Symbol in der linken Leiste der Arduino IDE.
  • Suchen Sie „ezButton“, und finden Sie dann die Button-Bibliothek von ArduinoGetStarted.com.
  • Klicken Sie auf den Installieren-Button, um die ezButton-Bibliothek zu installieren.
ESP32-Tastenbibliothek
  • Kopieren Sie den obigen Code und öffnen Sie ihn mit der Arduino-IDE.
  • Klicken Sie auf die Schaltfläche Hochladen in der Arduino-IDE, um den Code auf den ESP32 hochzuladen.
  • Wenn die Verkabelung korrekt ist, sehen Sie, dass sich der Motor im Uhrzeigersinn dreht.
  • Berühren Sie den Endschalter.
  • Sie sehen, dass der Motor sofort stoppt.
  • Das Ergebnis im Serial Monitor sieht wie folgt aus.
COM6
Send
The limit switch: TOUCHED The DC motor is STOPPED The DC motor is STOPPED The DC motor is STOPPED The DC motor is STOPPED
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Code-Erklärung

Die Erklärung finden Sie in den Kommentaren des obigen Arduino-Codes.

ESP32-Code - Richtungswechsel des Gleichstrommotors durch einen Endschalter

Der folgende Code lässt einen Gleichstrommotor endlos drehen und seine Richtung ändern, wenn ein Endschalter berührt wird.

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp32/esp32-dc-motor-limit-switch */ #include <ezButton.h> #define DIRECTION_CCW -1 #define DIRECTION_CW 1 #define ENA_PIN 19 // ESP32 pin GPIO19 connected to the IN1 pin L298N #define IN1_PIN 18 // ESP32 pin GPIO18 connected to the IN2 pin L298N #define IN2_PIN 17 // ESP32 pin GPIO17 connected to the EN1 pin L298N ezButton limitSwitch(25); // create ezButton object that attach to pin GPIO25 int direction = DIRECTION_CW; void setup() { Serial.begin(9600); limitSwitch.setDebounceTime(50); // set debounce time to 50 milliseconds // initialize digital pins as outputs. pinMode(ENA_PIN, OUTPUT); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); digitalWrite(ENA_PIN, HIGH); // max speed digitalWrite(IN1_PIN, HIGH); // control motor A spins clockwise digitalWrite(IN2_PIN, LOW); // control motor A spins clockwise } void loop() { limitSwitch.loop(); // MUST call the loop() function first if (limitSwitch.isPressed()) { Serial.println(F("The limit switch: TOUCHED")); direction *= -1; // change direction Serial.print(F("The direction -> ")); if (direction == DIRECTION_CW) { Serial.println(F("CLOCKWISE")); digitalWrite(IN1_PIN, HIGH); // control motor A spins clockwise digitalWrite(IN2_PIN, LOW); // control motor A spins clockwise } else { Serial.println(F("ANTI-CLOCKWISE")); digitalWrite(IN1_PIN, LOW); // control motor A spins anti-clockwise digitalWrite(IN2_PIN, HIGH); // control motor A spins anti-clockwise } } }

Schnelle Schritte

  • Wenn dies das erste Mal ist, dass Sie ESP32 verwenden, sehen Sie wie man die Umgebung für ESP32 in der Arduino IDE einrichtet.
  • Schließen Sie die Verkabelung wie im obigen Bild an.
  • Schließen Sie das ESP32-Board über ein Micro-USB-Kabel an Ihren PC an.
  • Öffnen Sie die Arduino IDE auf Ihrem PC.
  • Wählen Sie das richtige ESP32-Board aus (z. B. ESP32 Dev Module) und den COM-Port.
  • Kopieren Sie den obigen Code und öffnen Sie ihn in der Arduino IDE.
  • Klicken Sie auf die Schaltfläche Upload in der Arduino IDE, um den Code auf den ESP32 hochzuladen.
  • Wenn die Verkabelung korrekt ist, sehen Sie, dass sich der Motor im Uhrzeigersinn dreht.
  • Berühren Sie den Grenzschalter.
  • Sie werden sehen, dass sich die Richtung des Gleichstrommotors gegen den Uhrzeigersinn ändert.
  • Berühren Sie den Grenzschalter erneut.
  • Sie werden sehen, dass sich die Richtung des Gleichstrommotors wieder zum Uhrzeigersinn ändert.
  • Das Ergebnis im Serial Monitor sieht wie unten dargestellt aus.
COM6
Send
The limit switch: TOUCHED The direction -> ANTI-CLOCKWISE The limit switch: TOUCHED The direction -> CLOCKWISE
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

ESP32-Code - Richtungswechsel eines Gleichstrommotors durch zwei Endschalter

Der unten stehende Code lässt einen Gleichstrommotor endlos drehen und die Richtung ändern, wenn einer von zwei Endschaltern berührt wird.

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp32/esp32-dc-motor-limit-switch */ #include <ezButton.h> #define DIRECTION_CCW -1 #define DIRECTION_CW 1 #define ENA_PIN 19 // ESP32 pin GPIO19 connected to the IN1 pin L298N #define IN1_PIN 18 // ESP32 pin GPIO18 connected to the IN2 pin L298N #define IN2_PIN 17 // ESP32 pin GPIO17 connected to the EN1 pin L298N ezButton limitSwitch_1(25); // create ezButton object that attach to pin GPIO25 ezButton limitSwitch_2(26); // create ezButton object that attach to pin GPIO26 int direction = DIRECTION_CW; int prev_direction = DIRECTION_CW; void setup() { Serial.begin(9600); limitSwitch_1.setDebounceTime(50); // set debounce time to 50 milliseconds limitSwitch_2.setDebounceTime(50); // set debounce time to 50 milliseconds // initialize digital pins as outputs. pinMode(ENA_PIN, OUTPUT); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); digitalWrite(ENA_PIN, HIGH); // max speed digitalWrite(IN1_PIN, HIGH); // control motor A spins clockwise digitalWrite(IN2_PIN, LOW); // control motor A spins clockwise } void loop() { limitSwitch_1.loop(); // MUST call the loop() function first limitSwitch_2.loop(); // MUST call the loop() function first if (limitSwitch_1.isPressed()) { direction *= -1; // change direction Serial.println(F("The limit switch 1: TOUCHED")); } if (limitSwitch_2.isPressed()) { direction *= -1; // change direction Serial.println(F("The limit switch 2: TOUCHED")); } if (prev_direction != direction) { Serial.print(F("The direction -> ")); if (direction == DIRECTION_CW) { Serial.println(F("CLOCKWISE")); digitalWrite(IN1_PIN, HIGH); // control motor A spins clockwise digitalWrite(IN2_PIN, LOW); // control motor A spins clockwise } else { Serial.println(F("ANTI-CLOCKWISE")); digitalWrite(IN1_PIN, LOW); // control motor A spins anti-clockwise digitalWrite(IN2_PIN, HIGH); // control motor A spins anti-clockwise } prev_direction = direction; } }

Schnelle Schritte

  • Wenn Sie ESP32 zum ersten Mal verwenden, sehen Sie sich wie man die ESP32-Umgebung in der Arduino-IDE einrichtet an.
  • Verbinden Sie die Verkabelung gemäß dem obigen Bild.
  • Schließen Sie das ESP32-Board über ein Micro-USB-Kabel an Ihren PC an.
  • Öffnen Sie die Arduino-IDE auf Ihrem PC.
  • Wählen Sie das richtige ESP32-Board (z. B. ESP32 Dev Module) und den COM-Port aus.
  • Kopieren Sie den obigen Code und öffnen Sie ihn in der Arduino-IDE.
  • Klicken Sie in der Arduino-IDE auf die Schaltfläche Hochladen, um den Code auf den ESP32 hochzuladen.
  • Wenn die Verkabelung korrekt ist, sehen Sie, dass sich der Motor im Uhrzeigersinn dreht.
  • Berühren Sie den Endschalter 1.
  • Sie sehen, dass sich die Drehrichtung des Gleichstrommotors gegen den Uhrzeigersinn ändert.
  • Berühren Sie den Endschalter 2.
  • Sie sehen, dass sich die Drehrichtung des Gleichstrommotors wieder auf den Uhrzeigersinn ändert.
  • Das Ergebnis im Serial Monitor sieht wie folgt aus.
COM6
Send
The limit switch 1: TOUCHED The direction -> ANTI-CLOCKWISE The limit switch 2: TOUCHED The direction -> CLOCKWISE
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!