Dans cette exploration, nous allons examiner un programme Arduino conçu pour contrôler la vitesse d'un moteur brushless à l'aide d'un contrôleur BLD-300B. Les moteurs brushless sont fréquemment utilisés dans la robotique, notamment pour les robots volants tels que les drones, en raison de leur rapport poids/puissance élevé et de leur capacité à atteindre des vitesses de rotation importantes.

Le Contrôleur BLD-300B

Le BLD-300B est un contrôleur de moteur brushless qui permet une régulation précise de la vitesse et du couple du moteur. Pour commander ces contrôleurs, il est nécessaire d'utiliser des signaux conformes à ceux qu'ils recevraient d'un récepteur de télécommande. Ces signaux doivent respecter les caractéristiques suivantes :

  • Tension du signal de type « logique ».
  • Signal périodique avec une période de 20 millisecondes.
  • Au début de chaque période, la tension est mise à l’état haut.
  • La durée de l'état haut varie d'environ 1 milliseconde pour l'arrêt du moteur à environ 2 millisecondes pour une vitesse maximale.

La génération d’un tel signal peut être faite par des dispositifs astables et monostables réalisés à l’aide de portes logiques de type inverseur, nand ou nor travaillant sous une tension de 5 volts, ou avec l’universel NE555. La génération du signal de commande qui va être présentée ici fait appel aux microcontrôleurs parce qu’ils sont facilement accessibles actuellement, plus stables et précis dans la génération du signal.

Utilisation d'Arduino pour le Contrôle PWM

Sur une carte Arduino, le signal PWM (Pulse Width Modulation, ou Modulation de Largeur d'Impulsion en français) est généralement utilisé pour simuler un signal analogique à l'aide d'une sortie numérique. La fonction analogWrite() est utilisée pour envoyer un signal PWM à une broche spécifique. Cette fonction prend deux arguments : le numéro de la broche et la valeur du rapport cyclique, qui est généralement un nombre entre 0 et 255. Le microcontrôleur sur la carte Arduino génère le signal PWM en alternant rapidement la broche entre les états haut et bas, en modifiant la durée pendant laquelle la broche reste à chaque état selon la valeur du rapport cyclique spécifié. Le signal PWM sur Arduino est souvent utilisé pour contrôler la vitesse des moteurs, régler la luminosité des LEDs, ou même générer des sons simples.

Broches de sortie PWM (output pins Arduino)

Il est essentiel de savoir quelles broches d'un Arduino peuvent générer un signal PWM. En effet, toutes les broches ne le permettent pas nativement.

Lire aussi: Code défaut 02071 : Guide de dépannage Audi

Sur certaines cartes Arduino, le symbole « ~ » présent devant certains numéros de broche indique quelles sorties peuvent générer des signaux PWM. Par exemple, « ~3 » ou « ~5 » indiquent que les sorties 3 et 5 peuvent générer des signaux PWM.

Sorties PWM sur Arduino Uno, Nano, et Pro Mini (microcontrôleur ATmega328P)

Si vous travaillez avec un Arduino Uno, Nano, ou Pro Mini, c’est-à-dire un modèle équipé d’un microcontrôleur ATmega328P, voici les broches qui permettent d’émettre un signal PWM :

  • La pin D3
  • La pin D5
  • La pin D6
  • La pin D9
  • La pin D10
  • La pin D11

Sorties PWM de l’Arduino Mega (microcontrôleur ATmega2560)

Si vous avez besoin de beaucoup de sorties PWM, l’Arduino Mega fera très certainement votre bonheur, car il est bien « fourni » de ce côté là ! En effet, l’Arduino Mega dispose de 15 sorties PWM, pouvant être utilisées pour générer des signaux modulés en largeur d’impulsion. Ces sorties sont, plus précisément :

  • Les sorties digitales 2 à 13
  • Et les sorties digitales 44, 45, et 46

Sorties PWM de l’Arduino Leonardo et Micro (microcontrôleur ATmega32U4)

Enfin, histoire de prendre un dernier exemple, montrant que les sorties PWM ne sont pas forcément les mêmes d’un arduino à l’autre, voici l’Arduino Micro et l’Arduino Leonardo ! Ici, vous disposez de 7 sorties PWM, soit 1 de plus que les classiques Arduino Uno, Nano, ou Pro Mini. En effet, la sortie D13 permet ici l’émission de signaux PWM, contrairement à ces derniers.

Générer un signal PWM avec Arduino

Pour générer un signal PWM avec un Arduino, il suffit de :

Lire aussi: Autoradio Renault Mégane

  • Déclarer « en sortie » une des broches pouvant émettre un signal PWM, avec pinMode(numero_de_la_broche_souhaitée, OUTPUT);
  • Envoyer la valeur de rapport cyclique souhaité, avec la commande analogWrite(numero_de_la_broche_souhaitée, valeur_de_rapport_cyclique_souhaité);

Notez que le rapport cyclique est exprimé au travers d’un nombre compris entre 0 et 255.

Fréquences par défaut des signaux PWM Arduino (Uno, Nano, Mega)

Il est important de connaître les fréquences par défaut des signaux PWM générés par l'Arduino. Ces fréquences peuvent varier d'une broche à l'autre et dépendent des registres du microcontrôleur.

Par défaut, pour un Arduino Uno / Nano / Pro Mini :

  • Un signal PWM de 976,56 Hz est généré sur les broches D5 et D6.
  • Un signal PWM de 490,20 Hz est généré sur les broches D3, D9, D10 et D11.

Et pour un Arduino Mega :

  • Un signal PWM de 976,56 Hz sur les broches de sortie D4 ou D13
  • Un signal PWM de 490,20 Hz sur les broches de sortie D2, D3, D5, D6, D7, D8, D9, D10, D11, ou D12
  • Un signal PWM de 490,20 Hz sur les broches de sortie D44, D45, ou D46

Et pour les Arduino Leonardo et Micro :

Lire aussi: Tout savoir sur la carte grise

  • Un signal PWM de 976,56 Hz sur les broches de sortie D3 ou D11
  • Un signal PWM de 490,20 Hz sur les broches de sortie D5, D6, D9, D10, ou D13

Ces fréquences PWM proviennent de la fréquence d'horloge du microcontrôleur (16 MHz, pour les Arduino cités ci-dessus), sur laquelle on applique une division particulière, en fonction de certains modes et valeur de registre.

Tableau des fréquences PWM possibles avec ATmega328P

Voici un tableau récapitulatif des fréquences PWM possibles avec un ATmega328P, selon les prédiviseurs de fréquence et le mode de génération PWM.

Prédiviseur Mode Fast PWM Mode Phase Correct PWM
1 62500 Hz 31372 Hz
8 7812.5 Hz 3921 Hz
64 976.56 Hz 490 Hz
256 244.14 Hz 122.55 Hz
1024 61.04 Hz 30.64 Hz

Utilisation d'un ESC (Electronic Speed Controller)

Un ESC (Electronic Speed Controller) est un variateur de vitesse électronique utilisé pour contrôler les moteurs brushless. Il permet de piloter ces moteurs à partir d'une source de courant continu (batterie LiPo, par exemple). Les ESC sont largement utilisés en modélisme et peuvent être commandés par des récepteurs radio ou par d'autres dispositifs à bas courant, tels qu'un Arduino Nano.

Caractéristiques principales des ESC

  • Courant maximum supportable : Indique le courant maximal que l'ESC peut supporter en continu.
  • BEC (Battery Eliminator Circuit) : Fournit du courant à la partie commande (ex: récepteur radio, arduino) depuis l'ESC, sans nécessiter une connexion directe à la batterie.
  • Tension ou type de batterie acceptée : Indique la plage de tension et le type de batterie compatibles avec l'ESC.
  • Connecteurs : Les ESC disposent de connecteurs pour l'alimentation, la sortie vers le moteur et le pilotage.

Polarité des fils d'un ESC

Il est crucial de respecter la polarité des fils d'entrée d'un ESC (alimentation côté accu) pour éviter d'endommager le dispositif. Le fil rouge correspond à l'alimentation positive (+), et le fil noir à la masse (-).

Pour inverser le sens de rotation d'un moteur, il suffit de permuter 2 des 3 fils de sortie de l'ESC.

Programme Arduino pour le contrôle d'un moteur brushless

Les réalisations présentées utilisent le module « Arduino Nano ». Son encombrement est assez réduit pour que les études soient facilement faites sur une platine d’essai sans soudure. Le programme de chaque réalisation est donné sous forme d’un texte.

  • D’abord, ouvrir le fichier texte avec un logiciel, par exemple avec « Bloc notes » de Windows.
  • Ensuite, on peut faire un « clic » sur la première icone à gauche pour vérifier que la compilation du texte du programme se passe bien.
  • Et pour terminer, il reste à faire le clic sur la seconde icone à gauche pour « verser » le programme dans la mémoire du microcontrôleur.

Quand c’est terminé, le module Arduino est opérationnel. Les circuits et les programmes présentés ont été testés.

Pour ce premier montage sur la platine d’essai qui porte le module Arduino, c’est le potentiomètre de 10 kilo ohms qui joue le rôle d’accélérateur du moteur. On y voit en plus , d’une part, les liaisons du potentiomètre vers 0V et 5V, sa broche médiane qui est reliée par l’intermédiaire de la résistance de 1 kilo ohm et du fil jaune à l’entrée analogique A0 de l’Arduino, et d’autre part la sortie D9 reliée par le fil vert et la résistance de 1 kilo ohm à la broche de commande où vient se brancher le connecteur « 3 fils » du contrôleur. Les résistances de 1 kilo ohm ne sont pas nécessaires mais peuvent protéger les circuits contre des erreurs de branchements.

Une fonction appelée mesures() se charge de mesurer la tension sur la prise médiane du potentiomètre. La valeur donnée par le convertisseur numérique analogique est stockée dans la variable appelée distance. Cette variable est transmise à la fonction faire_pulse(), qui se charge de mettre à l’état haut la broche D9 pour une durée égale à (990 + distance) microsecondes.

Si vous voulez tester ce programme, copiez dans la fenêtre d’Arduino le texte du fichier CommandeN°0.txt ou de CommandeN°0_bref.txt, (ils donnent le même résultat : le premier a beaucoup de commentaires qui peuvent compléter les explications qui précèdent, le second n’en a presque pas). Prendre soin de débrancher le câble USB de la programmation avant de connecter une alimentation.

Les contrôleurs destinés aux modèles réduits ont pour la plupart une sécurité. Au branchement de l’alimentation, avant qu’on ne puisse faire tourner le moteur, il faut que le contrôleur reçoive pendant plusieurs secondes les impulsions de largeur minimale qui correspondent à la commande « moteur arrêté ». Au bout de ces quelques secondes, l’initialisation du contrôleur est faite et la commande acceptée. En général le contrôleur émet alors un signal sonore pour avertir qu’il est disponible pour un fonctionnement normal. C’est à partir de ce moment qu’on peut lancer la rotation du moteur.

Si tout a fonctionné, c’est une confirmation de la bonne configuration de l’ensemble matériel et logiciel, et que vous avez appris à l’utiliser si vous ne le saviez pas encore. La réalisation suivante propose de remplacer simplement le potentiomètre par un capteur de distance optique. Il produit une tension qui augmente quand la distance le l’obstacle en vue se rapproche.

tags: #code #arduino #moteur #brushless #exemple

Articles populaires: