Drehzahlregelung für bürstenlose Motoren mit einem ESP8266
Lerne, wie bürstenlose Motoren funktionieren, wie man sie mit PWM über einen Drehzahlregler, einen ESP8266 und Ubidotssteuert.
Was sind bürstenlose Motoren?
Diese auch als Synchron-Gleichstrommotoren bekannten Motoren sind eine spezielle Art von Motor, der wie die meisten anderen Motoren aus einem Stator und einem Rotor besteht, jedoch mit einem Unterschied: Bürstenlose Motoren haben, wie der Name schon sagt, keine Bürsten, die elektrisch zwischen Stator und Rotor angeschlossen sind, um Reibung, Vibrationen und Ineffizienz zu reduzieren.
Wie funktionieren sie?
Diese Motoren sind mit einem Wechselrichter verbunden. Der Wechselrichter steuert die Spulen nacheinander mit der Versorgungsspannung, wodurch sich die Rotorpole entsprechend dem von den Spulen erzeugten Magnetfeld bewegen. Die Drehzahl des Rotors und seiner Achse hängt von der Schaltgeschwindigkeit des Wechselrichters ab.
Man findet sie normalerweise auf ferngesteuerten Flugzeugen oder Autos, aber auch auf Drohnen.
Im folgenden Tutorial lernen wir bürstenlose Motoren kennen und erfahren, wie man sie mit einem ESP8266 (NodeMCU) und Ubidotssteuert.
Bewerbungsvoraussetzungen:
- NodeMCU ESP8266
- Drehzahlregler
- Bürstenloser Motor
- Steckbrett
- Verdrahtungskabel
- Ubidots -Konto
- 12-V-Batterie oder Netzteil
Verbinden Sie anschließend Gnd und das Signal mit den jeweiligen Eingängen des ESC mithilfe von 2 Drähten.
| ESC | NodeMCU |
|---|---|
| Rückverdrahtung | GND – Schwarzes Kabel |
| Weißer Draht | D5 – Gelbes Kabel |
In diesem Fall verwenden wir nicht das rote Kabel des ESC, da es 5 V liefert und unser NodeMCU mit 3,3 V arbeitet, sodass wir es beschädigen könnten.
2. Ubidots -Geräte- und Variablenerstellung.
Ubidots zum Gerätebereich und erstellen Sie dort Ihr Gerät mit der Bezeichnung „ Motor “.
innerhalb Ihres " Motors "-Geräts eine Variable namens " Geschwindigkeit ".
3. Erstellung Ubidots Dashboard und von Widgets.
Sobald unser Gerät und unsere Variable erstellt sind, können wir ein dashboard und ein Widget erstellen, um den Motor über ein Web- oder mobiles dashboardzu steuern.
Erstellen Sie nun ein Steuerelement, um die Drehzahl des Motors anhand der Variablen " Geschwindigkeit " einzustellen.
Dann können Sie Ihr Projekt programmieren und testen.
4. Programmierung mit der Arduino IDE.
1. Falls noch nicht geschehen, laden Sie die Arduino IDE herunter.
1a. Öffnen Sie die IDE und wählen Sie Datei -> Einstellungen.
1b. Fügen Sie die unten stehende URL in das „Zusätzliche Board-Manager-URLs“ . Sie können mehrere URLs hinzufügen, indem Sie diese durch Kommas trennen.
http://arduino.esp8266.com/stable/package_esp8266com_index.json
2. Öffnen und installieren Sie das ESP8266-Board im Boardverwalter: Werkzeuge -> Board -> Boardverwalter
2a. Sie finden das Board ganz einfach, indem Sie „ESP8266“ in die Suchleiste eingeben.
3. Wählen Sie nun das NodeMCU 1.0-Board im Menü Werkzeuge “ →
4. Ermitteln oder überprüfen Sie den Port Ihres PCs, mit dem das Gerät kommuniziert. Gehen Sie zu „Tools “ → Port “ → und wählen Sie den Port aus.
4b. Stellen Sie sicher, dass Ihre IDE-Upload-Geschwindigkeit 115200 beträgt, indem Sie zu Tools -> Upload-Geschwindigkeit -> 115200
5. Laden Sie die Ubidots ESPMQTT-Bibliothek , falls Sie dies noch nicht getan haben. Klicken Sie nun auf Sketch → Bibliothek einbinden → .ZIP-Bibliothek hinzufügen und wählen Sie die Ubidots ESP8266 MQTT-Bibliothek
Bei erfolgreichem Upload erhalten Sie die Antwort: „Bibliothek zu Ihren Bibliotheken hinzugefügt.“
8. Schließen Sie die Arduino IDE und öffnen Sie sie anschließend wieder.
Programmierung des NodeMCU ESP8266:
Sobald Ihr ESP8266 eingerichtet ist, können wir Daten an Ubidots senden und von dort empfangen, um Ihren bürstenlosen Motor zu steuern.
1. Kopieren Sie den folgenden Code und fügen Sie ihn in die Arduino IDE ein. Vergessen Sie nicht, die WLAN-SSID, das Passwort und Ihren Ubidots Token anzupassen.
/**************************************** Eingebundene Bibliotheken ****************************************/ #include "UbidotsESPMQTT.h" #include<Servo.h> /**************************************** Konstanten definieren ****************************************/ #define TOKEN "............" // Ihr Ubidots -Token #define WIFINAME "............" // Ihre SSID #define WIFIPASS "............" // Ihr WLAN-Passwort #define DEVICE_LABEL "motor" // Hier die Bezeichnung Ihres Ubidots -Geräts einfügen #define VARIABLE "speed" // Hier die Bezeichnung Ihrer Ubidots Variable einfügen #define MotorPin D5 // NodeMCU-Pin, an dem das Signal für den ESC ausgegeben wird Servo ESC; // Servo-Variable float value=0; // Zum Speichern des eingehenden Werts. float MotorSpeed=0; Ubidots client(TOKEN); /**************************************** Hilfsfunktionen ****************************************/ // Umwandlung eines Zeichenarrays in einen Gleitkommawert. float btof(byte * payload, unsigned int length) { char * demo = (char *) malloc(sizeof(char) * 10); for (int i = 0; i < length; i++) { demo[i] = payload[i]; } float value = atof(demo); free(demo); return value; } // Callback zur Behandlung des Abonnements void callback(char* topic, byte* payload, unsigned int length) { value = btof(payload, length); value = map(value, 0, 100, 0, 180); // Mappe die Werte 0-100 vom Schieberegler auf 0-180, um die Servo-Bibliothek zu verwenden. ESC.write(value); // Sende den Wert (PWM) an den ESC } /**************************************** Hauptfunktionen ****************************************/ void setup() { // Hier Ihren Setup-Code einfügen, der einmalig ausgeführt wird: client.ubidotsSetBroker("ubidots"); // Setzt den Broker für das Geschäftskonto korrekt ein. client.setDebug(true); // Übergibt einen booleschen Wert (true oder false), um Debug-Meldungen zu aktivieren. Serial.begin(115200); client.wifiConnection(WIFINAME, WIFIPASS); client.begin(callback);ubidotsSubscribe(DEVICE_LABEL, VARIABLE); // Fügt die Datenquelle und die Variablenbezeichnungen ein. ESC.attach(MotorPin,1000,2000); } void loop() { // Hier kommt Ihr Hauptcode hin, der wiederholt ausgeführt wird: if (!client.connected()) { client.reconnect();ubidotsSubscribe(DEVICE_LABEL, VARIABLE); // Fügt die Datenquelle und die Variablenbezeichnungen ein. } client.loop(); }
Überprüfen Sie nun, ob Ihr Code korrekt ist, indem Sie in der Arduino IDE oberhalb des Editors auf die Schaltfläche „Prüfen“ klicken.
Sobald der Code verifiziert wurde, erhalten Sie eine Antwort ähnlich der unten stehenden, die anzeigt, dass er ordnungsgemäß eingerichtet ist.
Als Nächstes müssen Sie den Code auf Ihren NodeMCU hochladen. Wählen Sie dazu das Pfeilsymbol nach rechts neben dem Häkchensymbol aus.
Sobald der Code hochgeladen ist, erhalten Sie die folgende Meldung in der Arduino IDE:
Testsitzung:
Schließen Sie die Batterie oder das Netzteil an den Regler an.
Dann ist alles bereit, wischen Sie einfach den Schieberegler auf Ihrem Web- oder mobilen dashboard.
Zusammenfassung:
In dieser Anleitung haben wir gelernt, wie bürstenlose Motoren funktionieren und wie man sie mit dem ESP8266 NodeMCU und Ubidotssteuert. Dieses Projekt kann uns helfen, elektronische Steuerungssysteme für mechanische Geräte zu entwickeln. Beispiele hierfür sind automatische Vorhänge, ein temperaturgesteuerter Ventilator für den Sommer und alles, was man sich mit Motoren vorstellen kann.