Drehzahlregelung für bürstenlose Motoren mit einem ESP8266
Erfahren Sie, wie die bürstenlosen Motoren funktionieren und wie Sie sie mit PWM mithilfe eines Geschwindigkeitsreglers, eines ESP8266 und Ubidots steuern.
Was sind bürstenlose Motoren?
Sie werden auch als synchrone Gleichstrommotoren bezeichnet und sind ein spezieller Motortyp, der wie die meisten anderen Motoren auf einem Stator und einem Rotor besteht. Mit dem Unterschied haben „bürstenlose Motoren“, wie der Name schon sagt, keine Bürsten elektrisch zwischen Stator und Rotor verbunden, um Reibung, Vibrationen und Ineffizienz zu reduzieren.
Wie funktionieren sie?
Diese Motoren sind mit einem Wechselrichter verbunden. Der Wechselrichter versorgt die Spulen sequentiell mit Spannung, sodass sich die Pole des Rotors entsprechend dem von den Spulen erzeugten Magnetfeld sequentiell bewegen. Die Geschwindigkeit des Rotors und seiner Achse hängt von der Geschwindigkeit des Variators ab.
Wir finden sie normalerweise in RC-Flugzeugen oder -Autos, aber auch in Drohnen.
Im folgenden Tutorial erfahren wir etwas über bürstenlose Motoren und wie man sie mit einem ESP8266 (NodeMCU) und Ubidots steuert.
Bewerbungsvoraussetzungen:
- NodeMCU ESP8266
- Geschwindigkeitsregler
- Bürstenloser Motor
- Steckbrett
- Verdrahtungskabel
- Ubidots Konto
- 12-V-Batterie oder Netzteil
Verbinden Sie dann Gnd und Signal über 2 Drähte mit dem jeweiligen Eingang des Reglers.
ESC | NodeMCU |
---|---|
Hinterer Draht | GND – Schwarzer Draht |
Weißer Draht | D5 – Gelbes Kabel |
In diesem Fall verwenden wir nicht das rote Kabel des Reglers, da es 5 V liefert und unser NodeMCU mit 3,3 V arbeitet, sodass wir es beschädigen können.
2. Ubidots -Geräte- und Variablenerstellung.
Gehen Sie zum Abschnitt „Geräte“ Ihres Ubidots -Kontos und erstellen Sie Ihr Gerät mit dem Namen „ Motor “.
in Ihrem „ Motor “-Gerät eine Variable namens „ Geschwindigkeit “.
3. Ubidots Dashboard und Widget-Erstellung.
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 dashboard zu steuern.
Erstellen Sie nun ein Steuerungs-Widget, um die Geschwindigkeit des Motors festzulegen, der der Variablen „ Geschwindigkeit “ zugeordnet ist.
Anschließend können Sie Ihr Projekt programmieren und testen.
4. Programmieren mit der Arduino IDE.
1. Falls noch nicht geschehen, laden Sie die Arduino IDE herunter.
1a. Öffnen Sie die IDE und wählen Sie Dateien -> Einstellungen
1b. die URL unten in das „Zusätzliche Board-Manager-URLs“ ein . Sie können mehrere URLs hinzufügen, indem Sie sie durch Kommas trennen.
http: //arduino.esp8266.com/stable/package_esp8266com_index.json
2. Öffnen und installieren Sie das ESP8266-Board im Boards Manager: Extras -> Board -> Boards Manager
2a. Sie können das Board ganz einfach finden, indem Sie „ESP8266“ in die Suchleiste eingeben.
3. Wählen Sie nun das NodeMCU 1.0-Board aus Extras -> Board aus
4. Definieren oder überprüfen Sie den Port Ihres PCs, mit dem das Gerät kommuniziert. Gehen Sie zu Extras -> Port : -> Wählen Sie den Port aus
4b. Stellen Sie sicher, dass Ihre IDE-Upload-Geschwindigkeit 115200 beträgt, indem Sie zu Extras -> Upload-Geschwindigkeit -> 115200
5. Laden Sie die Ubidots ESPMQTT-Bibliothek , falls Sie dies noch nicht getan haben. Klicken Sie nun auf Sketch –> Include Library –> Add .ZIP Library und wählen Sie die Ubidots ESP8266 MQTT-Bibliothek
Bei ordnungsgemäßem Hochladen erhalten Sie die Antwort: „Bibliothek zu Ihren Bibliotheken hinzugefügt.“
8. Schließen Sie die Arduino IDE und öffnen Sie sie erneut.
Programmierung des NodeMCU ESP8266:
Sobald Ihr ESP8266 eingerichtet ist, können wir Daten von Ubidots veröffentlichen und abrufen, 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 und das Passwort sowie Ihr Ubidots Token anzupassen.
/**************************************** Bibliotheken einschließen ******* *********************************/ #include " Ubidots ESPMQTT.h" #include<Servo.h> /**************************************** Konstanten definieren ******* *******************************/ #define TOKEN "............ " // Ihr Ubidots TOKEN #define WIFINAME "............" //Ihre SSID #define WIFIPASS "............" // Ihr WLAN-Pass # define DEVICE_LABEL „motor“ // Geben Sie hier Ihre Ubidots -Gerätebezeichnung ein. #define VARIABLE „speed“ // Geben Sie hier Ihre Ubidots Variablenbezeichnung ein. #define MotorPin D5 //NodeMCU-Pin, an dem das Signal für den Regler ausgegeben wird. Servo ESC; //Servovariable float value=0; // Um den eingehenden Wert zu speichern. float MotorSpeed=0; Ubidots -Client (TOKEN); /**************************************** Hilfsfunktionen ******* *********************************/ // Umwandlung aus einem Array von Zeichen 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); kostenlos (Demo); Rückgabewert; } // Rückruf zur Bearbeitung des Abonnements void callback(char* topic, byte* payload, unsigned int length) { value = btof(payload, length); value = map(value, 0, 100, 0, 180); // Ordnen Sie die 0-100-Werte vom Schieberegler den 0-180-Werten zu, um die Servobibliothek zu verwenden. ESC.write(value); //Sende den Wert (PWM) an den ESC } /**************************************** *** Hauptfunktionen ****************************************/ void setup() { // Geben Sie Ihren Setup-Code hier ein, um ihn einmal auszuführen: client. ubidots SetBroker("industrial.api. ubidots .com"); // Setzt den Broker richtig für das Geschäftskonto client.setDebug(true); // Übergeben Sie einen boolschen Wert „true“ oder „false“, um Debug-Meldungen zu aktivieren. Serial.begin(115200); client.wifiConnection(WIFINAME, WIFIPASS); client.begin(callback); Kunde. ubidots Subscribe(DEVICE_LABEL, VARIABLE); //Datenquelle und Variablenbeschriftungen einfügen ESC.attach(MotorPin,1000,2000); } void loop() { // Geben Sie Ihren Hauptcode hier ein, um ihn wiederholt auszuführen: if (!client.connected()) { client.reconnect(); Kunde. ubidots Subscribe(DEVICE_LABEL, VARIABLE); //Datenquelle und Variablenbeschriftungen einfügen } client.loop(); }
Überprüfen Sie nun, ob Ihr Code korrekt ist, indem Sie in der Arduino IDE über dem Editor auf die Schaltfläche „Häkchen“ klicken.
Sobald der Code überprüft wurde, erhalten Sie eine Antwort ähnlich der folgenden, die anzeigt, dass er ordnungsgemäß eingerichtet ist.
Als nächstes müssen Sie den Code in Ihre NodeMCU hochladen. Wählen Sie dazu das Symbol mit dem Pfeil nach rechts neben dem Häkchensymbol.
Sobald der Code hochgeladen ist, erhalten Sie in der Arduino IDE die folgende Meldung:
Testsitzung:
Schließen Sie den Akku oder das Netzteil an den Regler an.
Dann ist alles bereit. Wischen Sie einfach über den Schieberegler auf Ihrem Web- oder Mobil dashboard .
Zusammenfassung:
In diesem Leitfaden haben wir gerade erfahren, wie bürstenlose Motoren funktionieren und wie man sie mit dem ESP8266 NodeMCU und Ubidots steuert. Dieses Projekt könnte uns dabei helfen, elektronische Steuerungssysteme für mechanische Geräte zu entwerfen. Zum Beispiel: automatische Vorhänge, ein thermogesteuerter Ventilator für den Sommer und alles, womit Sie Ihrer Fantasie freien Lauf lassen können, wenn es um Motoren geht.