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.
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).
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.
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.
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 bipolaire NPN
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.
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.
Contrôle par transistor MOSFET
Un transistor MOSFET permet de faire passer plus de courant, il est recommandé d’utiliser ce type de transistor pour contrôler un équipement qui nécessite un courant de plus de 500mA.
Un transistor MOSFET se pilote en tension et non en courant, il ne faut donc pas mettre de résistance entre la sortie de l’Arduino et la grille du transistor.
Voici un exemple de schéma utilisant le transistor MOSFET à canal N IRF830.
Si vous utilisez un microcontrôleur alimenté à 3.3V, la tension de sortie des broches pourrait ne pas être suffisante pour faire basculer le transistor MOSFET. Dans ce cas, vous pouvez utiliser deux transistors comme sur le schéma ci-dessous. Notez que le ventilateur fonctionnera lorsque la sortie numérique de l’Arduino sera à l’état BAS (sortie à 0V).
Bonjour, cela fonctionne-t-il avec un ventilateur de chambre ou dans un ventilateur qui affiche un message ou pas ?
Merci de votre compréhension
Le principe reste le même, il faut juste vérifier les tensions et intensités maximum du relai.
Bonsoir,
Je ne comprends pas comment arrêter le ventilateur? Même en positionnant ma sortie à LOW mon ventilateur tourne toujours.. aidez moi svp
Bonjour,
Il me faudrait plus de détails pour pouvoir vous aider…
en réalisant le même montage que vous avec le transistor NPN et en copiant aussi le même code que vous, le ventilateur tourne en permanence et en changeant avec
void setup() {
pinMode(2,OUTPUT);
}
void loop() {
digitalWrite(2, LOW);
delay(2000);
}
Le ventilateur tourne toujours sans cesse.. je ne vois pas trop le problème.. la seule différence est le transistor qui est un transistor 2219A.
Vous avez bien réalisé le premier montage (transistor NPN) ? Quel Arduino utilisez vous ?
Bonjour, qu’elle branchement doit être effectuer pour palier au problème d’un trop faible courant par rapport à la demande dans le cas où notre relai statique a 4 entrée (un + et un – pour arduino et deux autre pour la phase).
Merci d’avance pour votre réponse.
Bonjour
Oui vois pouvez jeter un œil sur cette page sur la partie schéma de principe du module relais justement.
Le plus simple est d’acheter ce type de module je pense.
https://tutoduino.fr/debuter/controler-un-relai/
Alors moi ce que je ne comprends pas c’est que vous avez dit k le ventilateur ne peut pas être directement alimenté par l’arduino car il a un faible courant par rapport à la demande
Mais dans le schéma, on voit bien qu’il n’y a pas une autre source et qu’elle est bien alimenté par l’arduino
Une clarification est nécessaire en effet.
J’indique “Il n’est donc pas possible de l’alimenter directement en le reliant à une sortie de l’Arduino.”. Je parle bien d’une sortie de l’Arduino (comme par exemple la broche 12 sur le premier schéma) sur laquelle le courant de sortie est limité.
Par contre sur le dernier schéma le ventilateur est relié à la broche 5V de l’Arduino, qui n’est pas une sortie mais bien une broche d’alimentation.
Ah d’accord
Merci pour l’éclaircissement