A présent que j’ai mon Arduino nano qui fonctionne avec le Bluetooth, passons à la seconde partie :
Faire fonctionner un moteur brushless avec son ESC ( Electronic Speed Control) grâce au nano.
La logique de travail :
[une batterie]
|
+=> [elle alimente l'ESC] =======> [ qui pilote le moteur (puissance/vitesse) ]
^
|
v
[ le nano pilote l'ESC, et est aussi alimenté par celui-ci ]
Pour que le nano soit alimenté par l’ESC, il faut que celui-ci soit de type BEC
Le pilotage de l’ESC sera fait par la broche pwd n° 3 pour les tests (on se réservera la broche 5 pour le prochain test)
Premiers tests
J’ai une batterie pour avion qui me reste, je vais l’utiliser. Le connecteur n’est pas le même que celui de l’ESC, il va falloir bricoler un peu, mais pour tester, cela devrait aller.
Branchements réalisés : la sortie de l’ESC est connectée au nano (GND, 5V et D3 ) et le moteur en sortie : le fil jaune sur la sortie B, le câble noir sur la sortie C, et pour finir, le câble rouge sur la sortie A.
Branchement de l’accu : l’Arduino s’allume (youpi), et l’ESC bip, mais le moteur ne tourne pas.
C’est relativement normal. Il faut initialiser de l’ESC avant utilisation (procédure Arduino "initialisation()" )
Après pas mal de recherches et de tests, vu que je ne disposais pas de la doc de mon ESC, j’ai réussi à faire un programme qui permet l’initialisation de l’ESC, et de faire varier la vitesse du moteur.
Je vous donne le code ici :
#include <Servo.h> // bibliothèque de gestion des servo commandes
Servo ESC; // Création de l'objet permettant le contrôle de l'ESC
char data; // données sur la console de l’Arduino pour test
void setup() {
delay(500);
Serial.begin(115200);
// Partie initialisation de l'ESC
ESC.attach(3, 1000, 2000); // On attache l'ESC au port numérique 9 (port PWM obligatoire)
delay(1000);
ESC.write(180);
delay(1000);
ESC.write(0);
delay(1000);
// Fin d'initialisation
Instructions();
Serial.println("Attendez la fin de l'initialisation de l'ESC pour vos commandes (deux bips de l'ESC)");
}
void loop() {
if (Serial.available() > 0) {
data = Serial.read();
switch (data) {
// 0
case 48 : Serial.println("Envoi de la valeur 0 ");
ESC.write(0);
break;
// 1
case 49 : Serial.print("Phase de test dans 1 seconde ...");
delay(1000);
test();
break;
// 2
case 50 : Serial.println("Envoi de la valeur 50 ");
ESC.write(50);
break;
// 3
case 51 : Serial.println("Envoi de la valeur 100 ");
ESC.write(100);
break;
// 4
case 52 : Serial.println("Envoi de la valeur 180 ");
ESC.write(180);
break;
}
}
}
void test()
{
for (int i=0; i<=180; i++) {
Serial.print("Vitesse = ");
Serial.println(i);
ESC.write(i);
delay(200);
}
Serial.println("Fin -> arret");
ESC.write(0);
}
void Instructions()
{
Serial.println("Instructions :");
Serial.println("\t0 : Valeur 0 pour le moteur (arret)");
Serial.println("\t1 : execution d'un test de toutes les valeurs\n");
Serial.println("\t2 : moteur à 50");
Serial.println("\t3 : moteur à 100");
Serial.println("\t4 : moteur à 180 (valeur max)");
}
Pour tester :
Brancher le moteur à l’ESC, la masse et le fil blanc du BEC, mais pas le rouge (pas d’alimentation de l’Arduino), à GND et la broche 3 du nano.
Quand tout est près, brancher la batterie, puis tout de suite le nano ;
Ouvrir le moniteur (Shift-Ctrl-M) sur Arduino attendre la fin de l’initialisation,
taper ’1’ et la touche ’enter’, le test devrait se lancer avec le moteur qui se lance petit à petit.
Cool !
Reste à associer le HC05 et l’ESC.
Ce sera un prochain article.