ESP8266 - Gleichstrommotor-Endschalter

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

Erforderliche Hardware

1×ESP8266 NodeMCU
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 ESP8266
1×(Empfohlen) Stromverteiler für ESP8266 Typ-C

Oder Sie können die folgenden Kits kaufen:

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 Gleichstrommotoren und Endschalter (Pinbelegung, wie sie funktionieren, wie man sie programmiert ...) wissen, lernen Sie mehr darüber in den folgenden Tutorials:

Verdrahtungsdiagramm

Dieses Tutorial bietet die ESP8266-Codes für zwei Fälle: Einen Gleichstrommotor + einen Endschalter und einen Gleichstrommotor + zwei Endschalter.

  • Verdrahtungsdiagramm zwischen dem Gleichstrommotor und einem Endschalter
ESP8266 NodeMCU Gleichstrommotor- und Endschalter-Verdrahtungsdiagramm

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

Weitere Informationen finden Sie unter ESP8266-Pinbelegung und wie man ESP8266 und andere Komponenten mit Strom versorgt.

  • Verdrahtungsdiagramm zwischen dem Gleichstrommotor und zwei Endschaltern
Schaltplan für die Verdrahtung eines ESP8266 NodeMCU-DC-Motors und zweier Endschalter

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

ESP8266-Code – DC-Motor durch einen Grenzschalter stoppen

Der unten stehende Code lässt einen DC-Motor unbegrenzt drehen und sofort anhalten, wenn ein Grenzschalter betätigt wird.

/* * Dieser ESP8266 NodeMCU Code wurde von newbiely.de entwickelt * Dieser ESP8266 NodeMCU 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/esp8266/esp8266-dc-motor-limit-switch */ #include <ezButton.h> #define PIN_ENA D5 // The ESP8266 pin connected to the EN1 pin L298N #define PIN_IN1 D6 // The ESP8266 pin connected to the IN1 pin L298N #define PIN_IN2 D7 // The ESP8266 pin connected to the IN2 pin L298N ezButton limitSwitch(D1); // create ezButton object for pin ESP8266 pin D1 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

Um mit dem ESP8266 in der Arduino-IDE zu beginnen, befolgen Sie diese Schritte:

  • Schauen Sie sich das Tutorial zur Einrichtung der ESP8266-Umgebung in der Arduino IDE an, falls Sie ESP8266 zum ersten Mal verwenden.
  • Verdrahten Sie die Bauteile gemäß dem Diagramm.
  • Schließen Sie das ESP8266-Board mit einem USB-Kabel an Ihren Computer an.
  • Öffnen Sie die Arduino-IDE auf Ihrem Computer.
  • Wählen Sie das richtige ESP8266-Board, z. B. NodeMCU 1.0 (ESP-12E Modul), und den jeweiligen COM-Port.
  • Verbinden Sie den ESP8266 über ein USB-Kabel mit dem PC.
  • Öffnen Sie die Arduino-IDE, wählen Sie das richtige Board und den richtigen Port aus.
  • Klicken Sie auf das Bibliotheken-Symbol in der linken Leiste der Arduino-IDE.
  • Suchen Sie „ezButton“, und finden Sie anschließend die Schaltflächen-Bibliothek von ESP8266GetStarted.com.
  • Klicken Sie auf die Installieren-Schaltfläche, um die ezButton-Bibliothek zu installieren.
ESP8266 NodeMCU-Tasterbibliothek
  • 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 ESP8266 hochzuladen.
  • Wenn die Verkabelung korrekt ist, sehen Sie, wie sich der Motor im Uhrzeigersinn dreht.
  • Berühren Sie den Grenzschalter.
  • Sie werden sehen, dass der Motor sofort stoppt.
  • Das Ergebnis im Serial Monitor sieht unten 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

Sie finden die Erklärung in der Kommentarzeile des obigen Arduino-Codes.

ESP8266-Code - Richtung des Gleichstrommotors durch einen Endschalter ändern

Der unten stehende Code sorgt dafür, dass ein Gleichstrommotor endlos dreht und seine Richtung ändert, wenn ein Endschalter berührt wird.

/* * Dieser ESP8266 NodeMCU Code wurde von newbiely.de entwickelt * Dieser ESP8266 NodeMCU 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/esp8266/esp8266-dc-motor-limit-switch */ #include <ezButton.h> #define DIRECTION_CCW -1 #define DIRECTION_CW 1 #define PIN_ENA D5 // The ESP8266 pin connected to the EN1 pin L298N #define PIN_IN1 D6 // The ESP8266 pin connected to the IN1 pin L298N #define PIN_IN2 D7 // The ESP8266 pin connected to the IN2 pin L298N ezButton limitSwitch(D1); // create ezButton object for pin ESP8266 pin D1 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

  • Kopieren Sie den obigen Code und öffnen Sie ihn in der Arduino IDE.
  • Klicken Sie in der Arduino-IDE auf die Hochladen-Schaltfläche, um den Code auf den ESP8266 hochzuladen.
  • Wenn die Verdrahtung korrekt ist, sehen Sie, wie sich der Motor im Uhrzeigersinn dreht.
  • Berühren Sie den Endschalter.
  • Sie werden sehen, dass sich die Richtung des Gleichstrommotors gegen den Uhrzeigersinn ändert.
  • Berühren Sie den Endschalter erneut.
  • Sie werden sehen, dass sich die Richtung des DC-Motors wieder zum Uhrzeigersinn ändert.
  • Das Ergebnis im Serial Monitor sieht unten so 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  

ESP8266-Code – Richtungswechsel eines Gleichstrommotors durch zwei Grenzschalter

Der untenstehende Code lässt einen Gleichstrommotor unendlich drehen und seine Richtung ändern, wenn einer der beiden Endschalter betätigt wird.

/* * Dieser ESP8266 NodeMCU Code wurde von newbiely.de entwickelt * Dieser ESP8266 NodeMCU 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/esp8266/esp8266-dc-motor-limit-switch */ #include <ezButton.h> #define DIRECTION_CCW -1 #define DIRECTION_CW 1 #define PIN_ENA D5 // The ESP8266 pin connected to the EN1 pin L298N #define PIN_IN1 D6 // The ESP8266 pin connected to the IN1 pin L298N #define PIN_IN2 D7 // The ESP8266 pin connected to the IN2 pin L298N ezButton limitSwitch_1(D1); // create ezButton object for pin ESP8266 pin D1 ezButton limitSwitch_2(D2); // create ezButton object for pin ESP8266 pin D2 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

  • Klicken Sie auf die Upload-Schaltfläche in der Arduino IDE, um Code auf den ESP8266 hochzuladen.
  • Wenn die Verdrahtung korrekt ist, sehen Sie, dass sich der Motor im Uhrzeigersinn dreht.
  • Berühren Sie den Grenzschalter 1.
  • Sie werden sehen, dass sich die Drehrichtung des Gleichstrommotors gegen den Uhrzeigersinn ändert.
  • Berühren Sie den Grenzschalter 2.
  • Sie werden sehen, dass sich die Drehrichtung des Gleichstrommotors auf den Uhrzeigersinn ändert.
  • Das Ergebnis im Serial Monitor sieht unten 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!