Contrôler un petit ventilateur Brushless DC (BLDC) avec un Arduino

Dans ce tuto nous allons contrôler un petit ventilateur à moteur sans balais (brushless). C’est le type de ventilateur qui est souvent utilisé pour le refroidissement des ordinateurs. Ce type de ventilateur est alimenté en courant continu, mais il incorpore un petit système électronique qui assure la commutation du courant dans les enroulements du stator du moteur (un moteur brushless est un moteur synchrone à courant alternatif).

Que peut-on alimenter par une sortie d’un Arduino ?

Il faut tout d’abord comprendre qu’une sortie numérique d’un Arduino est une sortie binaire « tout ou rien ». Elle peut avoir deux états : 0 ou 1 (ou encore vrai / faux, allumé / éteint, haut / bas) . La tension correspondant à un état 0 est de 0 V. La tension correspondant à un état 1 est de 5 V (ou 3.3 V en fonction de l’Arduino utilisé).

Il parait donc parfait de contrôler la mise en marche et l’arrêt du ventilateur en l’alimentant directement par une sortie numérique de l’Arduino !

Mais peut-on relier le ventilateur directement sur une sortie numérique ? La réponse est simple : NON. Il faut en effet savoir que le courant que peut délivrer une sortie est limité. Les sorties sont en effet destinées à contrôler mais pas à alimenter des périphériques.

Exemple de courant maximal généré par une sortie de l’ATmega328P

On voit dans l’extrait de la documentation technique de l’ATmega328P ci-dessus que le courant maximal délivré par une sortie est de 40 mA. Je vous conseille cet excellent article qui entre plus en profondeur dans ce sujet.

Donc si il est donc possible d’alimenter une LED qui consomme 10 mA avec une sortie d’un Arduino Uno, il n’est pas possible d’alimenter des équipements qui consomment plus de 40 mA.

Le ventilateur ci-dessous nécessite un courant d’environ 80 mA (P = U x I -> I = P / U = 0.38 / 5 = 76 mA).

ventilateur DC brushless

Il n’est donc pas possible de l’alimenter directement en le reliant à une sortie de l’Arduino.

Mais comment faire alors pour contrôler notre ventilateur ? La réponse est simple, il va falloir utiliser un système qui puisse à la fois délivrer suffisamment de courant et être contrôlé par une sortie de l’Arduino. Il existe plusieurs solutions à ce problème. Je vais en détailler 2 qui sont souvent utilisées, le relais et le transistor.

Contrôle par relais

Un relais électromécanique permet l’ouverture ou la fermeture d’un circuit électrique de puissance à partir d’un ordre émis par une partie commande. Les 2 circuits, puissance et information, sont complètement isolés et peuvent avoir des caractéristiques d’alimentation électrique différentes (par exemple ouverture ou fermeture d’un circuit alimenté en 220 V par une commande en 5 V de l’Arduino).

Il est souvent utilisé sous forme de module, qui permet la commutation d’un relais à partir d’une sortie digitale de Arduino. Il est utilisé pour la commande par l’Arduino d’appareils nécessitant une puissance importante.

Module relais 5V couramment utilisé avec des Arduino

Description des broches du module :

CMD = Signal de commande (relié à une sortie numérique de l’Arduino)
+ = +5 V
– = GND
NO = Normalement Ouvert (contact avec la broche COM lorsque le signal de commande est à HIGH)
NC = Normalement Fermé (contact avec la broche COM lorsque le signal de commande est à LOW)

Dans notre cas, le module relais est uniquement utilisé pour ouvrir ou fermer l’alimentation 5 V du ventilateur. La commande du module relais est faite par la sortie numérique 2 de l’Arduino.

schéma du contrôle d'un ventilateur par un arduino utilisant un relais

Voici une petite vidéo du montage en utilisant le module relais 5 V :

Le code Arduino correspondant :

// Test relais
// https://tutoduino.fr/
// Copyleft 2020

void setup() {
  pinMode(2,OUTPUT);
  
}

void loop() {
  digitalWrite(2, HIGH);  
  delay(2000);
  digitalWrite(2, LOW);  
  delay(3000);                     
}

Contrôle par transistor

Un transistor bipolaire NPN se comporte comme un interrupteur dans son régime de saturation. Dans ce régime, le transistor est en effet soit dans son état bloqué (le courant ne circule pas entre son collecteur et son émetteur) soit dans son état passant (le courant circule entre son collecteur et son émetteur). Voir les bases de l’électronique.

La base du transistor bipolaire NPN (un BD139 ici) est reliée à la sortie D2 de l’Arduino au travers d’une résistance. Il faut en effet commander ce type de transistor en appliquant un courant sur sa base. Le courant doit être assez important pour le faire entrer dans son régime de saturation. Une résistance de de 1 kΩ convient parfaitement à l’Arduino Uno dont les sorties fournissent une tension de 5 V.

L’avantage par rapport au relais : pas de « clic » lors du basculement et pas d’usure mécanique dans la durée. Le fait que le transistor soit plus rapide à commuter n’est pas important ici.

Contrôle d'un ventilateur par un Arduino en utilisant un transistor

Le programme reste le même que pour le contrôle avec un relais, il suffit de positionner la sortie 2 à HIGH pour que le ventilateur tourne.

L’utilisation d’un transistor MOSFET est très similaire. Sauf qu’il ne faut pas mettre de résistance entre la sortie de l’Arduino et la grille du transistor. En effet ce type de transistor se commande en appliquant une tension sur sa grille.

ventilateur contrôler par un Arduino Uno via un transistor MOSFET