️ Comment Fabriquer et Contrôler un Moteur Brushless pour Drone/Avion RC avec Arduino et ESC (Guide Complet 2026)
Découvrez comment construire, câbler et contrôler un moteur brushless pour drone ou avion RC en utilisant un Arduino et un ESC (Electronic Speed Controller). Guide pratique avec schémas de câblage, code Arduino PWM et tests de performance.
Introduction : Pourquoi Utiliser un Moteur Brushless pour Vos Projets DIY ?
Les moteurs brushless (sans balais) sont devenus la norme pour les drones, avions RC et projets de robotique avancés. Contrairement aux moteurs à balais, ils offrent :
- Une efficacité supérieure (85-90% contre 75-80%)
- Une durée de vie prolongée (pas de balais à remplacer)
- Un rapport puissance/poids excellent
- Un contrôle précis via PWM avec Arduino ou ESC
Ce guide vous apprendra à choisir, câbler et contrôler un moteur brushless pour vos projets électronique DIY.
Matériel Nécessaire (BOM)
Composants Principaux :
- Moteur Brushless : Type A2212 1000KV (pour drone) ou A4120 800KV (pour avion RC)
- ESC (Electronic Speed Controller) : 30A-40A avec BEC intégré (ex: SimonK ou BLHeli)
- Arduino : Arduino Uno, Nano ou ESP32 pour le contrôle PWM
- Batterie LiPo : 3S 11.1V 2200mAh (pour tests)
- Contrôleur PWM : Potentiomètre 10kΩ ou joystick
- Multimètres : 2 multimètres (volts et ampères)
- Fils : Fils silicone 12-14 AWG pour puissance, 22 AWG pour signaux
- Connecteurs : Connecteurs XT60 pour batterie, connecteurs à sertir
- Sécurité : Fusible 30A, lunettes de protection
🔧 Étape 1 : Comprendre le Fonctionnement d'un Moteur Brushless
Un moteur brushless fonctionne grâce à :
- Stator : Les bobines de cuivre fixes (généralement 9 ou 12 enroulements)
- Rotor : Les aimants permanents qui tournent
- ESC : Contrôle la séquence d'alimentation des bobines pour créer un champ magnétique rotatif
🔌 Étape 2 : Câblage du Système (Arduino + ESC + Moteur)
Schéma de Connexion :
Batterie LiPo (3S 11.1V)
│
├──→ ESC (Power Input)
│ │
│ ├──→ Moteur Brushless (3 fils)
│ │
│ └──→ BEC (5V) → Arduino (VIN)
│
└──→ (Optionnel) Multimètre (Volts)
Arduino Pin 9 (PWM) → Signal ESC (fil blanc/jaune)
Arduino GND → ESC GND (fil noir/marron)
Potentiomètre :
- VCC → Arduino 5V
- GND → Arduino GND
- Signal → Arduino A0
Connexions Détaillées :
- ESC vers Moteur : Connectez les 3 fils du moteur aux 3 fils de l'ESC (l'ordre détermine le sens de rotation)
- ESC vers Arduino : Le fil de signal (généralement blanc ou jaune) va sur la pin PWM (D9 ou D10)
- Alimentation Arduino : Utilisez le BEC de l'ESC (5V) pour alimenter l'Arduino via VIN
- Masse commune : Reliez toutes les masses (GND) ensemble
💻 Étape 3 : Code Arduino pour Contrôle PWM du Moteur
/*
* Contrôle d'un Moteur Brushless avec Arduino et ESC
* Projet TechFix Hub - Drone/Avion RC DIY
*
* ESC standard utilise un signal PWM de 1-2ms à 50Hz
* 1ms = arrêt, 1.5ms = demi-puissance, 2ms = pleine puissance
*/
const int escPin = 9; // Pin PWM connectée à l'ESC
const int potPin = A0; // Potentiomètre pour contrôle vitesse
int throttleValue = 0; // Valeur de gaz (0-180)
unsigned long lastArming = 0;
void setup() {
pinMode(escPin, OUTPUT);
Serial.begin(9600);
// Initialisation ESC : envoyer signal minimum pendant 3 secondes
Serial.println("Initialisation ESC - Ne pas toucher au potentiomètre...");
for(int i = 0; i < 30; i++) {
writeESC(0); // Signal minimum (moteur arrêté)
delay(100);
}
// Bip de confirmation (si ESC le supporte)
Serial.println("ESC prêt ! Tournez lentement le potentiomètre.");
delay(1000);
}
void loop() {
// Lecture du potentiomètre (0-1023)
int potValue = analogRead(potPin);
// Conversion en valeur de gaz (0-180 pour servo library)
throttleValue = map(potValue, 0, 1023, 0, 180);
// Sécurité : démarrage progressif
if(throttleValue > 0 && lastArming == 0) {
lastArming = millis();
}
// Armement après 2 secondes de gaz à zéro
if(millis() - lastArming > 2000 || throttleValue == 0) {
writeESC(throttleValue);
// Affichage série pour débogage
Serial.print("Gaz: ");
Serial.print(throttleValue);
Serial.print(" | PWM: ");
Serial.println(map(throttleValue, 0, 180, 1000, 2000));
} else {
writeESC(0); // Maintien à zéro pendant armement
Serial.println("Armement en cours... Maintenez le gaz à zéro");
}
delay(20); // Fréquence de mise à jour 50Hz
}
// Fonction d'écriture vers ESC (utilise Servo library)
void writeESC(int angle) {
// Pour utiliser Servo library, décommentez:
// escServo.write(angle);
// Ou contrôle PWM manuel:
int pulseWidth = map(angle, 0, 180, 1000, 2000); // 1-2ms
digitalWrite(escPin, HIGH);
delayMicroseconds(pulseWidth);
digitalWrite(escPin, LOW);
delay(20000 - pulseWidth); // 50Hz = 20ms période
}
Servo.h d'Arduino qui gère automatiquement le timing PWM pour les ESC.
🔬 Étape 4 : Tests et Mesures de Performance
Procédure de Test Sécurisée :
- Vérification initiale : Assurez-vous que l'hélice n'est PAS installée lors des premiers tests
- Test de rotation : Augmentez lentement les gaz et vérifiez le sens de rotation
- Inversion si nécessaire : Pour inverser le sens, échangez 2 des 3 fils entre l'ESC et le moteur
- Mesures électriques :
- Voltage batterie (multimètre en parallèle)
- Courant consommé (multimètre en série sur le fil positif)
- Température du moteur (après 30s de fonctionnement)
- Mesure de poussée : Utilisez une balance numérique pour mesurer la poussée en grammes
Tableau de Référence (Moteur A2212 1000KV avec hélice 10x4.5) :
| Gaz (%) | Courant (A) | Poussée (g) | RPM approx. |
|---|---|---|---|
| 25% | 2-3A | 150-200g | 4000-5000 |
| 50% | 5-7A | 400-500g | 7000-8000 |
| 75% | 10-12A | 700-850g | 9500-10500 |
| 100% | 15-18A | 1000-1100g | 11000-12000 |
Étape 5 : Intégration dans un Projet Drone/Avion
Pour intégrer ce moteur dans un projet complet :
- Drone Quadricoptère : Utilisez 4 moteurs + 4 ESC + contrôleur de vol (ex: KK2.1 ou MultiWii)
- Avion RC : 1 moteur + 1 ESC + récepteur radio 2.4GHz
- Robot terrestre : 2 moteurs + 2 ESC + Arduino pour contrôle différentiel
⚠️ Dépannage et Problèmes Courants
Problèmes Fréquents :
- Moteur ne démarre pas : Vérifiez l'armement de l'ESC (gaz à zéro pendant 3-5s au démarrage)
- Moteur tourne par à-coups : Problème de calibration ESC ou fils mal connectés
- ESC chauffe trop : Courant trop élevé ou BEC surchargé
- Bruit anormal : Hélice déséquilibrée ou roulements usés
- Perte de puissance : Batterie LiPo déchargée (vérifiez >11V pour 3S)
💡 Projets Avancés avec ESP32
Pour aller plus loin, utilisez un ESP32 pour :
- Contrôle WiFi/Bluetooth : Contrôlez le moteur depuis votre smartphone
- Télémétrie : Envoyez les données (RPM, courant, température) en temps réel
- Contrôle PID : Implémentez un régulateur PID pour maintenir un RPM constant
Conclusion
Maîtriser le contrôle d'un moteur brushless avec Arduino est une compétence essentielle pour tout maker intéressé par les drones, avions RC ou la robotique. Ce projet vous ouvre les portes de projets plus complexes comme les drones autonomes ou les systèmes de propulsion électriques.
Ressources recommandées :
- Documentation ESC BLHeli/SimonK
- Calculateur de propulsion eCalc.ch
- Communautés RC Groups et DIY Drones