Contrôler un moteur Brushless
Les moteurs Brushless sont de plus en plus fréquemment utilisés en raison de leurs performances nettement supérieures à celles des moteurs à courant continu « classiques ».
Mais contrairement à ces derniers, leur commande est plus complexe, étant donné qu’il s’agit de moteurs synchrones : il faut générer 3 signaux de fréquence multiple de la fréquence de rotation, et déphasés de 120° :
Voir/Télécharger l’application sur Geogebra
Il est possible de les contrôler à l’aide d’un Arduino de manière plus où moins complexe …
Utilisation d’un ESC
C’est la méthode la plus simple, car un ESC (Electronic Speed Control) est un circuit électronique dédié au contrôle de moteurs électriques.
Ils possèdent un microcontrôleur (parfois paramétrable), un circuit de puissance (régulation, pont en H, …) et dans le cas des moteurs brushless, un dispositif d’acquisition. Ils permettent de gérer :
- la vitesse angulaire
- la direction
- le freinage
Ils sont couramment utilisés dans les systèmes radio-commandés et par conséquent possèdent une interface de commande de type servomoteur.
Câblage
Les ESC possèdent une interface de commande de type servomoteur à 3 fils (voir contrôle d’un servomoteur). Les deux fils d’alimentation (noir/marron et rouge) sont sensés être utiliser pour alimenter les autres composant reliés au même système, généralement reliés au même récepteur d’une radiocommande.
Le connecteur rouge de l’ESC ne doit être connecté au 5V de l’Arduino que si la tension fournie par l’ESC est compatible avec ce dernier ! (souvent, les ESC fournissent 3.3V seulement : un Arduino UNO devra par conséquent posséder sa propre source d’énergie).
sources : http://robotic-controls.com/learn/projects/dji-esc-and-brushless-motor
Programmation
#include <Servo.h> Servo esc; // Création de l'objet permettant le contrôle de l'ESC int val = 0; // void setup() { esc.attach(9); // On attache l'ESC au port numérique 9 (port PWM obligatoire) delay(15); Serial.begin(9600); // Initialisation de l'ESC // (certains ESC ont besoin d'une "procédure d'initialisation" // pour devenir opérationnels - voir notice) esc.write(0); delay(1000); esc.write(180); delay(1000); esc.write(0); // Quelques informations pour l'utilisateur Serial.println("Saisir un nombre entre 0 et 179"); Serial.println("(0 = arret - 179 = vitesse maxi"); Serial.println(" demarrage a partir de 20)"); } void loop() { if (Serial.available() > 0) { val = Serial.parseInt(); // lecture de la valeur passée par le port série Serial.println(val); esc.write(val); // delay(15); } }
ATTENTION : certains ESC ne sont opérationnels qu’après une procédure d’initialisation … bien lire leur mode d’emploi !
Contrôle par pont en H
Contrôle en vitesse
Contrôle en position
Dans leur très grande majorité, les ESC sont prévus pour une obtenir une rotation continue. Mais pour certaines applications on peut avoir besoin de réaliser un asservissement en position.
La solution suivante permet de réaliser le contrôle d’un moteur brushless comparable à celui d’un moteur pas à pas.
sources : http://www.instructables.com/id/DIY-Brushless-Gimbal-with-Arduino/?ALLSTEPS
http://www.instructables.com/id/Brushless-Gimbal-with-Arduino/?ALLSTEPS
Votre site est tres interressant je voudrais connaitre comment controler un brushless pour gerer la position et la vitesse avec arduino et pont en h
Bonjour
Les solutions pour faire un contrôle de bas niveau sur un moteur Brushless sont décrites dans les liens en bas de l’article.
Quand j’aurai un peu de temps, je ferai un résumé et une adaptation particulière …
BONJOUR , j’ai utilisé Moteur brushless avec ESC et carte Arduino UNO ET à la fin le moteur ça marche pas pourquoi ???
Bonjour
Certains ESC ne sont opérationnels qu’après une procédure d’initialisation. Il faut lire la notice d’utilisation.
CF
Super, un article très intéressant !
Si le contrôle d’un moteur brushless est assimilable au contrôle d’un servomoteur, comment faire reculer le moteur ?
Merci
Bonjour
La commande est similaire à celle d’un servomoteur de modélisme puisqu’on peut utiliser la bibliothèque
Servo.h
… mais le fonctionnement dans les deux sens n’est possible que si l’ESC le prévoit. Je n’en ai pas testé…Je me suis renseigné sur internet, et du coup ça dépend de l’ESC.
Pour faire simple, c’est lors de l’initialisation que cela se paramètre.
J’invite ceux qui veulent plus de détails à consulter les pages renseignées en bas de l’article et les liens vers les forums ci-dessous (en anglais uniquement) :
https://www.rcgroups.com/forums/showthread.php?1642468-Issues-with-ESC-Control
https://electronics.stackexchange.com/questions/24826/activating-electronic-speed-control-with-arduino
bonjour
je veux savoir est ce que obligatoire d’alimenter le ESC par une batterie LiPo
merci
Bonjour
Absolument pas. On peut utiliser n’importe quelle alimentation, pourvu de respecter les tensions admissibles par l’ESC.
Bonjour
J’ai récupéré des moteurs de drone parrot 2.0.
Il y a 5 entrées sur le contrôleur puis 3 fils qui entrent dans le moteur.
connaissez vous les branchements et tension sur ce moteur ?
merci
Bonjour
Non, sans une photo du matériel, je ne peux rien affirmer …