Maîtriser le Contrôle Moteur Brushless avec Arduino, ESC et BLDC : Tutoriel Pas à Pas
Dans ce tutoriel, nous allons apprendre à contrôler un moteur brushless (sans balais) avec Arduino et ESC (Contrôleur de Vitesse Électronique). Pour plus de détails sur le fonctionnement des moteurs BLDC, consultez l'autre article ou regardez la vidéo qui explique le principe de fonctionnement et le contrôle avec Arduino et ESC. Pour cet exemple, j'ai un moteur BLDC de type "outrunner" avec ces spécifications : indice KV de 1000, alimentation 2S, 3S ou 4S LiPo, nécessite un ESC 30A. Le KV d'un moteur brushless définit les RPM par volt sans charge. Ici, 1000KV signifie que avec une batterie 2S LiPo (7,4V), le moteur peut atteindre 7,4 × 1000 = 7400 RPM max. Les moteurs brushless sont énergivores, l'alimentation la plus courante est les batteries LiPo. Le nombre "S" d'une LiPo indique le nombre de cellules, chaque cellule = 3,7V. Pour cet exemple, j'utilise une 3S LiPo (3 cellules = 11,1V). RPM max attendu : 11 100. Voici l'ESC 30A utilisé, compatible avec le moteur. D'un côté, 3 fils pour les 3 phases du moteur. De l'autre, 2 fils VCC et GND pour l'alimentation. Il y a aussi un autre jeu de 3 fils : signal, +5V et GND. C'est le BEC (Battery Eliminator Circuit) : l'ESC fournit du 5V régulé pour alimenter l'Arduino, éliminant le besoin d'une batterie séparée pour le microcontrôleur. Cette connexion est identique à celle des servomoteurs. Contrôler un moteur brushless avec ESC et Arduino est donc aussi simple que contrôler un servo. Les ESC utilisent le même signal de contrôle : PWM standard 50 Hz. C'est très pratique : pour un avion RC, on a servos et moteur brushless, et on les contrôle facilement avec le même type de contrôleur. Avec Arduino, il suffit de générer le signal PWM 50 Hz. Selon la largeur d'impulsion (durée état HAUT) variant de 1 ms à 2 ms, l'ESC fera tourner le moteur du minimum au maximum RPM. Voici le schéma pour cet exemple. En plus de l'ESC, on utilise un simple potentiomètre pour contrôler la vitesse. Le code est très simple, quelques lignes seulement. On utilise la bibliothèque Dans Si on téléverse ce code, alimente tout avec la batterie, on contrôle la vitesse du moteur de 0 à max avec le potentiomètre. Cependant, quelques points importants : Armement de l'ESC (Arming) : À la mise sous tension initiale, la valeur du signal doit être ≤ au minimum (1 ms). C'est l'armement de l'ESC ; le moteur émet des bips de confirmation. Si la valeur est plus haute (gaz ouvert), l'ESC ne démarrera pas le moteur tant qu'on n'aura pas baissé au minimum. C'est une sécurité : le moteur ne démarre pas si on a les gaz ouverts à la mise sous tension. Chaque ESC a ses propres points haut et bas, qui peuvent varier légèrement. Exemple : point bas 1,2 ms, point haut 1,9 ms. Dans ce cas, les 20% premiers de la course du gaz ne font rien jusqu'à 1,2 ms. Pour calibrer : avant d'alimenter l'ESC, mettez le potentiomètre au maximum (ou valeur > point milieu). Puis alimentez l'ESC : vous entendrez quelques bips du moteur confirmant le nouveau point haut. Après 2 secondes, mettez le potentiomètre à la position voulue pour le nouveau point bas. Nouveaux bips de confirmation. La calibration est finie. Maintenant les gaz répondent immédiatement et on contrôle le moteur entre ces deux nouveaux points. C'est tout pour ce tutoriel. Pour apprendre à faire ce contrôle sans fil, consultez ma vidéo précédente où je construis un émetteur RC Arduino et explique le contrôle BLDC sans fil. J'espère que ce tutoriel vous a plu. Posez vos questions dans les commentaires et consultez ma collection de projets Arduino.Introduction
Vue d'Ensemble






Schéma de Câblage : Contrôle Moteur Brushless Arduino

Composants Nécessaires
Code Arduino pour Contrôle Moteur BLDC
/* Arduino Contrôle Moteur Brushless par Dejan, https://howtomechatronics.com */
#include <Servo.h>
Servo ESC; // Objet servo pour contrôler l'ESC
int potValue; // Valeur broche analogique
void setup() {
// Attache ESC sur broche 9
ESC.attach(9, 1000, 2000); // (broche, largeur impulsion min, max en microsecondes)
}
void loop() {
potValue = analogRead(A0); // Lit potentiomètre (0-1023)
potValue = map(potValue, 0, 1023, 0, 180); // Convertit pour bibliothèque Servo (0-180)
ESC.write(potValue); // Envoie signal à l'ESC
}Description
Servo.h car elle génère facilement le signal PWM 50 Hz (sinon le PWM Arduino est à d'autres fréquences). On crée un objet servo pour l'ESC et une variable pour l'entrée analogique du potentiomètre. Dans setup(), avec attach(), on définit la broche du signal ESC et les largeurs d'impulsion min/max en microsecondes.loop(), on lit le potentiomètre, on mappe sa valeur 0-1023 vers 0-180, puis avec write() on envoie le signal à l'ESC (génère le PWM 50 Hz). Les valeurs 0-180 correspondent aux 1000-2000 µs définis dans setup().
Calibration de l'ESC



Processus de fabrication
- Créer un verrou RFID sécurisé avec Arduino – Guide étape par étape
- Construire une Tirelire Intelligente : Contrôler un Accepteur de Pièces avec Arduino Nano
- Centre de contrôle d'alimentation Arduino : N-FET, P-FET, Relais et RTC
- Contrôler une LED par Bluetooth avec Arduino et MIT App Inventor
- Créez un robot suiveur de ligne autonome avec Arduino UNO
- Contrôleur d'humidificateur DIY avec Arduino et relais – Installation haute tension sécurisée
- Tutoriel Arduino Débutant 01 : Démarrez votre Premier Projet
- Moteurs BLDC Avancés et Solutions d'Automatisation
- Comprendre les moteurs BLDC : guide professionnel