Aquila Reloaded – Chapitre 8 : Pilotage de ventilateurs PWM et monitoring vitesse

Bonjour tout le monde !

Je continue encore et toujours mon projet « Aquila Reloaded ».

Dans notre montage, la LED de puissance nécessite beaucoup plus d’attention car elle est très sensible aux hautes températures. De surcroit, contrairement à notre lampe halogène ELC 250W, il est très compliqué de la remplacer.

Afin d’éviter de griller notre LED, nous allons la refroidir. Le constructeur de l’Aquila a déjà prévu un ventilateur dans le compartiment d’éclairage, mais ce dernier fonctionne en « mode bourrin », sans régulation. Je vais donc procéder à son remplacement par un modèle de type PC. Je prévois également un second ventilateur directement monté sur le radiateur.

Connectique des ventilateurs de PC

Il existe deux types de connexion pour les ventilateurs de PC : des connecteurs à 3 broches et des connecteurs à 4 broches.

Ventilateurs à 3 broches

Lorsque les connectiques se sont standardisées sur les cartes mères, les connecteurs de ventilateurs de PC disposaient de 3 broches « Molex type KK », avec un détrompeur. Deux broches fournissent une alimentation en 12V, et une troisième broche permet d’avoir le retour tachymétrique. Le capteur utilisé est de type « hall effect » et envoie des impulsions à chaque tour du rotor du moteur.

Voici les fonctions de chaque broche :

Ventilateurs à 4 broches

Lors de la sortie des Pentium IV, un nouveau connecteur est apparu, et dispose de 4 broches. Les trois premières broches sont identiques, la quatrième broche apporte la régulation électronique de la vitesse du ventilateur grâce à un signal PWM. Le signal PWM généré est normalisé à 25khz avec un léger seul de tolérance.

Voici les fonctions de chaque broche :

Compatibilité ascendante et descendante

Les connecteurs 3 et 4 broches sont compatibles entre eux : le détrompeur du connecteur 4 broches est dimensionné comme un connecteur 3 broches.

De ce fait, il est possible de brancher un ventilateur non-PWM (3 broches) sur un connecteur 4 broches.

Tout comme il est possible de brancher un ventilateur PWM (4 broches) sur un connecteur 3 broches. Dans ce cas, le ventilateur tournera à sa vitesse maximale.

Piloter un ventilateur de PC avec un Arduino

Partie hardware

Voici un schéma :

On commence par le PWM : vous l’aurez deviné si vous avez lu les chapitres précédents, il va falloir utiliser une broche compatible PWM (jusque là, c’est logique ^^). Selon la dernière norme, le signal PWM délivré au ventilateur est normalisé à 3,3V. On va ajouter une résistance R1 de 2,2kΩ ainsi qu’une diode zener D1 pour stabiliser la tension autour de 3,3V.

Pour le capteur de vitesse, il est nécessaire de capter chaque impulsion pour avoir un comptage précis. Nous allons utiliser une entrée de type « interrupt() ». On place également une résistance R2 de type « PULL UP » pour générer un signal compatible CMOS.

Partie logicielle

Comme vous l’avez compris, je n’aime pas réinventer la roue. Donc j’ai cherché une librairie toute faite, et j’en ai trouvée une : FanController. Vous pouvez l’installer directement depuis les menus de l’IDE Arduino.

Cette librairie prend en charge les ventilateurs à 3 broches (retour de vitesse uniquement) ainsi que les ventilateurs à 4 broches (retour de vitesse + régulation PWM).

Pour l’utiliser, vous pouvez consulter les 2 exemples « Monitor » et « MonitorAndControl », ils sont bien expliqués. Sinon, voici comment faire :

Tout d’abord il faut initialiser un objet, dans notre cas « fan ». Pour un ventilateur à 3 broches (sans PWM) :

FanController fan(SENSOR_PIN, SENSOR_THRESHOLD, PWM_PIN);

Pour un ventilateur à 4 broches (avec PWM) :

FanController fan(SENSOR_PIN, SENSOR_THRESHOLD);

Le paramètre SENSOR_THRESHOLD permet de personnaliser le temps (en ms) entre 2 lectures. Plus la valeur est élevée, plus la mesure sera précise.

Ensuite, il faut initialiser le contrôle

void setup(void) {
  fan.begin();
}

Pour récupérer le nombre de tours / minute (dans la variable rpms) :

unsigned int rpms = fan.getSpeed();

Pour configurer le rapport cyclique, entre 0 et 100% :

fan.setDutyCycle(rapport);

Et pour récupérer le rapport appliqué :

byte rapport = fan.setDutyCycle();

Et voila, vous savez comment faire pour piloter un ventilateur de PC avec un Arduino, on va ainsi pouvoir réguler le refroidissement de l’Aquila.

La suite au prochain épisode 😉

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *