Contrôle de vitesse pour moteurs brushless avec un ESP8266
Découvrez comment fonctionnent les 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 brushless ?
Également connus sous le nom de moteurs à courant continu synchrones, il s'agit d'un type spécial de moteur composé d'un stator et d'un rotor comme la plupart des moteurs, mais avec une différence, les "moteurs sans balais", comme leur nom nous l'indique, n'ont pas de balais. connecté électriquement entre le stator et le rotor pour réduire les frottements, les vibrations et l'inefficacité.
Comment fonctionnent-ils ?
Ces moteurs sont associés à un inverseur. L'onduleur fournit la tension d'alimentation aux bobines de manière séquentielle, ainsi les pôles du rotor se déplacent séquentiellement en fonction du champ magnétique généré par les bobines. La vitesse du rotor et de son axe, dépendra de la vitesse de séquencement du variateur.
On peut les trouver normalement sur des avions ou des voitures RC, ainsi que des drones.
Dans le didacticiel suivant, nous allons découvrir les moteurs sans balais, comment les contrôler avec un ESP8266 (NodeMCU) et Ubidots .
Exigences de candidature :
- NoeudMCU ESP8266
- Contrôleur de vitesse
- Moteur sans balais
- Planche à pain
- Câbles de câblage
- Compte Ubidots
- Batterie 12 V ou alimentation
Ensuite, utilisez 2 fils pour connecter Gnd et le signal à l'entrée respective de l'ESC.
ÉCHAP | NoeudMCU |
---|---|
Fil arrière | GND - Fil noir |
Fil blanc | D5 - Fil jaune |
Dans ce cas nous n'utilisons pas le fil rouge de l'ESC car il fournit du 5v et notre NodeMCU fonctionne à 3,3v, nous pouvons donc l'endommager.
2. Création de périphériques et de variables Ubidots .
Allez dans la section Appareil de votre Ubidots créez votre appareil appelé « moteur ».
A l'intérieur de votre appareil « moteur », créez une variable appelée « vitesse ».
3. Création Dashboard et du widget 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 dashboard Web ou mobile.
Maintenant, créez un widget de contrôle pour définir la vitesse du moteur associé à la variable « speed ».
Vous êtes alors prêt à programmer et tester votre projet.
4. Programmation avec l'IDE Arduino.
1. Si ce n'est pas encore fait, téléchargez l' IDE Arduino.
1a. Ouvrez l'EDI et sélectionnez Fichiers -> Préférences
1b. Ajoutez l'URL ci-dessous dans le URL supplémentaires du gestionnaire de cartes . 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 -> Boards Manager
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 l'appareil communique. Allez dans Outils -> Port : -> Sélectionnez le port
4b. Assurez-vous que votre vitesse de téléchargement IDE est de 115200 en allant dans Outils -> Vitesse de téléchargement -> 115200.
5. Téléchargez la Ubidots ESPMQTT si vous ne l'avez pas déjà fait. Maintenant, cliquez sur Sketch -> Include Library -> Add .ZIP Library et choisissez la Ubidots ESP8266 MQTT
Si le téléchargement est correct, vous obtenez la réponse : « Bibliothèque ajoutée à vos bibliothèques. »
8. Fermez et rouvrez l'IDE Arduino.
Programmation du NodeMCU ESP8266 :
Une fois votre ESP8266 configuré, nous pouvons publier et obtenir 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 Wi-Fi ainsi que votre Ubidots .
/****************************************** Inclure les bibliothèques ******* *********************************/ #include " Ubidots ESPMQTT.h" #include<Servo.h> /****************************************** Définir les constantes ******* *********************************/ #define JETON "............ " // Votre TOKEN Ubidots #define WIFINAME "............" //Votre SSID #define WIFIPASS "............" // Votre Wifi Pass # définir DEVICE_LABEL "moteur" // Mettez ici l'étiquette de votre appareil Ubidots #define VARIABLE "speed" // Mettez ici l'étiquette de votre variable Ubidots #define MotorPin D5 // Broche NodeMCU où le signal pour l'ESC sort Servo ESC ; //Valeur flottante de la variable servo=0 ; // Pour stocker la valeur entrante. flotteur Vitesse Moteur=0 ; Client Ubidots (JETON); /****************************************** Fonctions auxiliaires ******* *********************************/ // converti 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]; } valeur flottante = atof(démo); gratuit (démo); valeur de retour ; } // Rappel pour gérer le rappel d'annulation d'abonnement (char* topic, byte* payload, unsigned int length) { value = btof(payload, length); valeur = carte (valeur, 0, 100, 0, 180); // Mappez les valeurs 0-100 du curseur vers 0-180 pour utiliser la servo lib. ESC.write(valeur); //Envoyer la valeur (PWM) à l'ESC } /************************************* *** Fonctions principales ****************************************/ void setup() { // mettez votre code de configuration ici, à exécuter une fois : client. ubidots SetBroker(" ubidots .com"); // Définit correctement le courtier pour le compte professionnel client.setDebug(true); // Passe une valeur booléenne true ou false pour activer les messages de débogage Serial.begin(115200); client.wifiConnection(WIFINAME, WIFIPASS); client.begin(rappel); client. ubidots Abonnez-vous (DEVICE_LABEL, VARIABLE); //Insérez la source de données et les étiquettes de variable ESC.attach(MotorPin,1000,2000); } void loop() { // placez votre code principal ici, pour l'exécuter à plusieurs reprises : if (!client.connected()) { client.reconnect(); client. ubidots Abonnez-vous (DEVICE_LABEL, VARIABLE); //Insérer la source de données et les étiquettes de variable } client.loop(); }
Maintenant, vérifiez 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écharger le code dans votre NodeMCU. Pour ce faire, choisissez l'icône de flèche droite à côté de l'icône de vérification.
Une fois le code téléchargé, vous recevrez le message ci-dessous dans l'IDE Arduino :
Séance de tests :
Connectez la batterie ou l'alimentation à l'ESC.
Ensuite, tout est prêt, faites simplement glisser le curseur sur votre dashboard Web ou mobile.
Résumé:
Dans ce guide, nous venons d'apprendre comment fonctionnent les moteurs brushless et comment les contrôler avec l'ESP8266 NodeMCU et Ubidots . Ce projet pourrait nous aider à concevoir des systèmes de contrôle électronique pour les appareils mécaniques. Ex : Des rideaux automatiques, un ventilateur thermo-régulé pour l'été, et tout ce que votre imagination peut réaliser avec des moteurs.