Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Tutoriel de contrôle de moteur sans balais Arduino | ESC | BLDC

Dans ce tutoriel, nous allons apprendre à contrôler un moteur brushless en utilisant Arduino et ESC. Si vous souhaitez plus de détails sur le fonctionnement des moteurs BLDC, vous pouvez consulter l'autre article ou regarder la vidéo suivante qui contient une explication du principe de fonctionnement d'un moteur sans balais et comment en contrôler un à l'aide d'Arduino et de l'ESC.

Aperçu

Pour cet exemple, j'ai un moteur BLDC outrunner avec les spécifications suivantes :il a une cote KV de 1000, il peut être alimenté avec une batterie LiPo 2S, 3S ou 4S et il nécessite 30A ESC. La cote KV sur un moteur sans balais définit le régime du moteur par volt sans charge.

Dans ce cas, le 1000KV signifie que, par exemple, si nous alimentons le moteur avec une batterie LiPo 2S qui a une tension de 7,4 volts, le moteur peut atteindre un RPM maximum de 7,4 fois 1000, soit 7400 RPM.

Les moteurs sans balais sont gourmands en énergie et la méthode la plus courante pour les alimenter consiste à utiliser des batteries LiPo. Le nombre "S" d'une batterie LiPo indique le nombre de cellules de la batterie, et chaque cellule a une tension de 3,7 V.

Pour cet exemple, j'utiliserai une batterie LiPo 3S qui a 3 cellules et c'est 11.1V. Donc, je peux m'attendre à ce que mon moteur atteigne le régime maximal de 11100.

Enfin, voici un ESC 30A que je vais utiliser pour cet exemple et correspondre aux exigences du moteur. D'un côté, l'ESC a trois fils qui contrôlent les trois phases du moteur et de l'autre, il a deux fils, VCC et GND, pour l'alimentation.

Il y a aussi un autre ensemble de trois fils sortant de l'ESC et c'est la ligne de signal, + 5V et la masse. Cette fonctionnalité de l'ESC s'appelle Battery Eliminator Circuit et, comme son nom l'indique, elle élimine le besoin d'une batterie séparée pour un microcontrôleur. Avec cela, l'ESC fournit 5V régulé qui peut être utilisé pour alimenter notre Arduino.

On peut remarquer ici que cette connexion est en fait la même que celle que l'on voit sur les servomoteurs.

Ainsi, contrôler un moteur sans balais à l'aide d'ESC et d'Arduino est aussi simple que de contrôler un servo à l'aide d'Arduino. Les ESC utilisent le même type de signal de commande que le servo et c'est le signal PWM standard de 50 Hz.

C'est très pratique, car par exemple, lors de la construction d'un avion RC, nous avons généralement besoin à la fois de servos et de moteurs sans balais et, de cette façon, nous pouvons les contrôler facilement avec le même type de contrôleur.

Ainsi, en utilisant l'Arduino, nous n'avons qu'à générer le signal PWM 50Hz et en fonction de la largeur des impulsions ou de la durée de l'état haut qui devrait varier de 1 milliseconde à 2 millisecondes, l'ESC entraînera le moteur du minimum au maximum RPM.

Contrôle du moteur sans balais Arduino – Schéma de circuit

Voici le schéma de circuit pour cet exemple. En plus de l'ESC, nous n'utiliserons qu'un simple potentiomètre pour contrôler la vitesse du moteur.

Vous pouvez obtenir les composants nécessaires pour ce didacticiel Arduino à partir des liens ci-dessous :

  • Moteur sans balai ………………………
  • ESC 30A …………………………………….
  • Batterie Li-Po ……………….…..……
  • Carte Arduino …………………………
  • Potentiomètre ………………………….
  • Breadboard et Jump Wires…

Code Arduino pour le contrôle moteur BLDC

Le code Arduino est vraiment simple avec seulement quelques lignes de code.

/*
        Arduino Brushless Motor Control
     by Dejan, https://howtomechatronics.com
*/

#include <Servo.h>

Servo ESC;     // create servo object to control the ESC

int potValue;  // value from the analog pin

void setup() {
  // Attach the ESC on pin 9
  ESC.attach(9,1000,2000); // (pin, min pulse width, max pulse width in microseconds) 
}

void loop() {
  potValue = analogRead(A0);   // reads the value of the potentiometer (value between 0 and 1023)
  potValue = map(potValue, 0, 1023, 0, 180);   // scale it to use it with the servo library (value between 0 and 180)
  ESC.write(potValue);    // Send the signal to the ESC
}Code language: Arduino (arduino)

Description : Nous devons donc définir la bibliothèque Servo, car avec la bibliothèque Servo, nous pouvons facilement générer le signal PWM 50 Hz, sinon les signaux PWM générés par l'Arduino sont à des fréquences différentes. Ensuite, nous devons créer un objet servo pour la commande ESC et définir une variable pour stocker l'entrée analogique du potentiomètre. Dans la section de configuration, en utilisant la fonction attach (), nous définissons à quelle broche Arduino est le signal de contrôle de l'ESC connecté et définissons également la largeur d'impulsions minimale et maximale du signal PWM en microsecondes.

Dans la section boucle, nous lisons d'abord le potentiomètre, mappons sa valeur de 0 à 1023 en valeur de 0 à 180. Ensuite, en utilisant la fonction write(), nous envoyons le signal à l'ESC, ou générons le signal PWM 50Hz. Les valeurs de 0 à 180 correspondent aux valeurs de 1000 à 2000 microsecondes définies dans la section setup.

Donc, si nous téléchargeons ce code sur notre Arduino, puis alimentons tout en utilisant la batterie, nous pouvons contrôler la vitesse du moteur sans balais de zéro au maximum à l'aide du potentiomètre.

Cependant, il y a peu de choses que nous devrions noter ici. Lors de la mise sous tension initiale du moteur, la valeur du signal doit être égale ou inférieure à la valeur minimale de 1 milliseconde. C'est ce qu'on appelle l'armement de l'ESC, et le moteur émet un bip de confirmation pour que nous sachions qu'il est correctement armé. Dans le cas où nous avons une valeur plus élevée lors de la mise sous tension, ce qui signifie que nous avons un accélérateur, l'ESC ne démarrera pas le moteur tant que nous n'aurons pas atteint la valeur minimale correcte. C'est très pratique en termes de sécurité, car le moteur ne démarre pas si nous avons un accélérateur lors de la mise sous tension.

Étalonnage ESC

Enfin, expliquons comment fonctionne le calibrage ESC. Chaque ESC a ses propres points hauts et bas, et ils peuvent légèrement varier. Par exemple, le point bas peut être de 1,2 millisecondes et le point haut peut être de 1,9 millisecondes. Dans un tel cas, notre manette des gaz ne fera rien dans les premiers 20 % jusqu'à ce qu'elle atteigne cette valeur minimale de 1,2 ms.

Pour résoudre ce problème, nous pouvons calibrer l'ESC ou définir les points haut et bas comme nous le souhaitons. Pour cela, avant d'alimenter l'ESC, nous devons d'abord accélérer notre potentiomètre au maximum ou à une valeur au moins supérieure au point médian actuel. Ensuite, nous pouvons allumer l'ESC et nous entendrons quelques bips du moteur, ce qui confirme en fait que nous avons défini le nouveau point haut.

Ensuite, après 2 secondes, nous devrions déplacer notre potentiomètre à la position où nous avons défini le nouveau point bas. Nous entendrons à nouveau les bips de confirmation et avec cela nous en aurons terminé avec l'étalonnage de l'ESC. Maintenant, notre manette des gaz répondra immédiatement et nous pourrons contrôler le moteur dans ces deux nouveaux points.

C'est à peu près tout pour ce tutoriel. Si vous souhaitez apprendre à créer sans fil ce contrôle de moteur sans balais Arduino, vous pouvez consulter ma vidéo précédente où je construis un émetteur RC basé sur Arduino et expliqué comment contrôler les moteurs BLDC en l'utilisant.

J'espère que vous avez apprécié ce tutoriel et appris quelque chose de nouveau. N'hésitez pas à poser des questions dans la section des commentaires ci-dessous et n'oubliez pas de consulter ma collection de projets Arduino.


Processus de fabrication

  1. Tutoriel sur le verrouillage RFID Arduino
  2. Contrôler l'accepteur de pièces avec Arduino
  3. Centre de contrôle Arduino
  4. Arduino avec Bluetooth pour contrôler une LED !
  5. Robot suiveur de ligne
  6. Contrôle de l'humidificateur Arduino
  7. Tutoriel Arduino 01 :Prise en main
  8. Moteurs BLDC et automatisation
  9. Une introduction au moteur BLDC