Contrôle de vitesse pour moteurs brushless avec un ESP8266

Découvrez le fonctionnement des moteurs sans balais, comment les contrôler avec PWM à l'aide d'un contrôleur de vitesse, d'un ESP8266 et Ubidots.

Que sont les moteurs sans balais ?

Également connus sous le nom de moteurs CC synchrones, ils constituent un type particulier de moteur composé d'un stator et d'un rotor, comme la plupart des moteurs existants, mais avec une différence : les « moteurs sans balais », comme leur nom l'indique, ne possèdent pas de balais connectés électriquement entre le stator et le rotor afin de réduire la friction, les vibrations et les pertes d'efficacité.

Comment fonctionnent-ils ?

Ces moteurs sont associés à un variateur de fréquence. Ce dernier alimente les bobines de manière séquentielle, ce qui entraîne le déplacement des pôles du rotor en fonction du champ magnétique généré par ces bobines. La vitesse du rotor et de son axe dépend de la vitesse de commutation du variateur.

On les trouve généralement sur les avions ou les voitures radiocommandées, ainsi que sur les drones.

Dans le tutoriel suivant, nous allons apprendre les moteurs sans balais, comment les contrôler avec un ESP8266 (NodeMCU) et Ubidots.

Exigences relatives à l'application :

Ensuite, utilisez 2 fils pour connecter la masse (GND) et le signal à l'entrée respective du contrôleur de vitesse électronique (ESC).

ÉCHAP NodeMCU
Fil arrière GND - Fil noir
Fil blanc D5 - Fil jaune

Dans ce cas, nous n'utilisons pas le fil rouge du contrôleur de vitesse électronique (ESC) car il fournit 5 V et notre NodeMCU fonctionne à 3,3 V, nous risquons donc de l'endommager.

2. Création d'un périphérique et d'une variable Ubidots .

Rendez-vous dans la section Appareil de votre Ubidots et créez un appareil appelé « moteur ».

Dans votre dispositif « moteur », créez une variable appelée « vitesse ».

3. Création Dashboard et des widgets Ubidots .

Une fois notre appareil et notre variable créés, nous pouvons créer un dashboard et un widget pour contrôler le moteur à partir d'un dashboardweb ou mobile.

Créez maintenant un widget de contrôle pour définir la vitesse du moteur associée à la variable « vitesse ».

Vous êtes alors prêt à programmer et à tester votre projet.

4. Programmation avec l'IDE Arduino.

1. Si ce n'est pas déjà fait, téléchargez l' IDE Arduino.

1a. Ouvrez l'IDE et sélectionnez Fichiers -> Préférences

1b. Ajoutez l'URL ci-dessous dans le « URL supplémentaires du gestionnaire de tableaux » . Vous pouvez ajouter plusieurs URL en les séparant par des virgules.

http://arduino.esp8266.com/stable/package_esp8266com_index.json

2. Ouvrez et installez la carte ESP8266 dans le Gestionnaire de cartes : Outils -> Carte -> Gestionnaire de cartes
2a. Vous pouvez facilement trouver la carte en tapant « ESP8266 » dans la barre de recherche.

3. Sélectionnez maintenant la carte NodeMCU 1.0 dans Outils -> Carte.

4. Définissez ou vérifiez le port de votre PC avec lequel le périphérique communique. Allez dans Outils -> Port : -> Sélectionnez le port

4b. Assurez-vous que la vitesse de chargement de votre IDE est de 115 200 en allant dans Outils -> Vitesse de chargement -> 115 200.

5. Téléchargez la bibliothèque Ubidots si ce n'est pas déjà fait. Cliquez ensuite sur Croquis → Inclure une bibliothèque → Ajouter une bibliothèque .ZIP et sélectionnez la bibliothèque Ubidots

Si le téléchargement est réussi, vous recevrez la réponse suivante : « Bibliothèque ajoutée à vos bibliothèques. »

8. Fermez puis rouvrez l'IDE Arduino.

Programmation du NodeMCU ESP8266 :

Une fois votre ESP8266 configuré, nous pourrons envoyer et recevoir des données d' Ubidots afin de contrôler votre moteur sans balais.

1. Copiez et collez le code suivant dans l'IDE Arduino. N'oubliez pas de personnaliser le SSID et le mot de passe du réseau Wi-Fi ainsi que votre Ubidots .

/**************************************** Inclure les bibliothèques ****************************************/ #include "UbidotsESPMQTT.h" #include<Servo.h> /**************************************** Définition des constantes ****************************************/ #define TOKEN "................ // Votre jeton Ubidots #define WIFINAME "................ // Votre SSID #define WIFIPASS "....................... // Votre mot de passe Wi-Fi #define DEVICE_LABEL "motor" // Indiquez ici le nom de votre périphérique Ubidots #define VARIABLE "speed" // Indiquez ici le nom de votre variable Ubidots #define MotorPin D5 // Broche NodeMCU d'où sort le signal du contrôleur de vitesse électronique (ESC) Servo ESC; // Variable servo float value=0; // Pour stocker la valeur entrante. float MotorSpeed=0; Ubidots client(TOKEN); /**************************************** Fonctions auxiliaires ****************************************/ // Conversion d'un tableau de caractères en valeur flottante. 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; } // Fonction de rappel pour gérer l'abonnement void callback(char* topic, byte* payload, unsigned int length) { value = btof(payload, length); value = map(value, 0, 100, 0, 180); // Convertit les valeurs 0-100 du curseur en valeurs 0-180 pour utiliser la bibliothèque servo. ESC.write(value); //Envoyer la valeur (PWM) à l'ESC } /**************************************** Fonctions principales ****************************************/ void setup() { // Placez votre code de configuration ici, à exécuter une seule fois :ubidotsSetBroker("ubidots"); // Configure correctement le broker pour le compte professionnel client.setDebug(true); // Passer une valeur booléenne (vrai ou faux) pour activer les messages de débogage Serial.begin(115200); client.wifiConnection(WIFINAME, WIFIPASS); client.begin(callback);ubidotsSubscribe(DEVICE_LABEL, VARIABLE); //Insérer les étiquettes de la source de données et de la variable ESC.attach(MotorPin,1000,2000); } void loop() { // Placez votre code principal ici, à exécuter de manière répétée : if (!client.connected()) { client.reconnect(); client.ubidotsSubscribe(DEVICE_LABEL, VARIABLE); //Insérer la source de données et les étiquettes de la variable } client.loop(); }


Vérifiez maintenant que votre code est correct en cliquant sur le bouton de vérification dans l'IDE Arduino, au-dessus de l'éditeur.

Une fois le code vérifié, vous recevrez une réponse similaire à celle ci-dessous, indiquant qu'il est correctement configuré.

Ensuite, vous devez téléverser le code dans votre NodeMCU. Pour ce faire, cliquez sur l'icône de flèche vers la droite située à côté de l'icône de validation.

Une fois le code téléchargé, vous recevrez le message ci-dessous dans l'IDE Arduino :

Séance de test :

Connectez la batterie ou l'alimentation au contrôleur de vitesse électronique (ESC).

Ensuite, tout est prêt, il vous suffit de faire glisser le curseur sur votre dashboardweb ou mobile.

Résumé:

Dans ce guide, nous avons appris le fonctionnement des moteurs sans balais et comment les contrôler avec le NodeMCU ESP8266 et Ubidots. Ce projet peut nous aider à concevoir des systèmes de commande électroniques pour des dispositifs mécaniques, comme des rideaux automatiques, un ventilateur à température contrôlée pour l'été, et bien d'autres applications que votre imagination peut concevoir avec des moteurs.