Étape 3: Écrire le Code
Nous voulons établir une série de signaux appropriés pour piloter le moteur brushless.Cette BLDC a 36 étapes à chaque tour complet. Cela signifie que nous devons nous préparer 36 États de signal pour faire pivoter l’axe un tour complet. Ces 36 étapes sont divisées en 6 parties d’une séquence unique. Nous avons donc 6 différents signaux qui doivent être répétées 6 fois dans une boucle.
En supposant que les 3 fils a, B et C (ordonnées), nous avons besoin d’une valeur de 3 bits à utiliser. Nous avons assumé le 0 comme négatif et 1 sous tension positive.
Les 6 étapes magiques se présentent comme suit :
110, 100, 101, 001, 011, 010
Nous allons les utiliser dans une boucle.
Autre chose importante à mentionner est l’attente ou le délai entre chaque étape. En modifiant le temps de retard vous pouvez changer la vitesse du moteur. Si vous choisissez un délai élevé (Ex : 15 à 20 millisecondes) le moteur peut juste secouer ou effectuer un déplacement une coupure. Si vous utilisez un faible retard (Ex: 0 à 5 millisecondes) vous entendrez juste un buzz et aucun mouvement.
Si je veux utiliser une variable delay et le changement, elle lève la fenêtre Moniteur serial Arduino.
Le code est comme suit :
/*
BLDC PILOTE ***
*/
int wait = 10 ;
int p1 = 2 ;
int p2 = 3 ;
int p3 = 4 ;
char inChar ;
void setup() {}
pinMode (p1, sortie) ;
pinMode (p2, sortie) ;
pinMode (p3, sortie) ;
Serial.Begin(9600) ;
}
la routine de la boucle s’exécute maintes et maintes fois pour toujours :
void loop() {}
Si (Serial.available()) {}
inChar = (char)Serial.read() ;
Si (inChar == '-') {}
attendre-=1 ;
}
else {}
attendre += 1 ;
}
Serial.println(Wait) ;
}
digitalWrite (1 m env, 1) ;
digitalWrite (p2, 1) ;
digitalWrite (p3, 0) ;
Delay(Wait) ;
digitalWrite (1 m env, 1) ;
digitalWrite (p2, 0) ;
digitalWrite (p3, 0) ;
Delay(Wait) ;
digitalWrite (1 m env, 1) ;
digitalWrite (p2, 0) ;
digitalWrite (p3, 1) ;
Delay(Wait) ;
digitalWrite (1 m env, 0) ;
digitalWrite (p2, 0) ;
digitalWrite (p3, 1) ;
Delay(Wait) ;
digitalWrite (1 m env, 0) ;
digitalWrite (p2, 1) ;
digitalWrite (p3, 1) ;
Delay(Wait) ;
digitalWrite (1 m env, 0) ;
digitalWrite (p2, 1) ;
digitalWrite (p3, 0) ;
Delay(Wait) ;
}
Quelques conseils :
-Ne pas utiliser la puissance externe plus de 12v.
-Pour les petits moteurs BLDC, vous pouvez utiliser Arduino 5 + comme Vs et pas besoin d’alimentation externe, mais vous ne pouvez pas atteindre la vitesse du moteur.
-Commencez par valeur d’attente de 10 puis ouvrez le moniteur série et entrez la touche moins pour diminuer la valeur. Valeur inférieure de l’attente, une vitesse plus rapide.