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 😉

Aquila Reloaded – Chapitre 7 : Surveillance de la température

Hello, Dans les 5 chapitres précédents, nous avons réussi à reproduire toutes les fonctions de l’Aquila, à savoir : Gestion de la lampe Gestion des moteurs Pas à Pas Gestion du capteur de basses Gestion des DIP Switchs Gestion du signal DMX « Ah bah c’est bon t’as fini alors ! » Heu… Non 🙂 Car je […]

Aquila Reloaded – Chapitre 6 : Capteur ambiant de basses

Bonjour à tous, Je continue le développement de ma carte Aquila Reloaded. On va voir maintenant comment faire pour capter des basses avec le micro intégré. AOP : Amplificateur opérationnel Comme je l’ai dit dans le premier chapitre, l’objectif du projet est aussi de réutiliser un maximum de composants déjà présents sur le circuit original. […]

Aquila Reloaded – Chapitre 5 : Utilisation d’une LED de puissance de 100W

Bonjour à tous ! (oh mon Dieu il n’a pas dit « hello world » ^^), Je continue mon projet « Aquila Reloaded », et on va passer à d’autres tests unitaires, à savoir le pilotage de notre LED de puissance. Nous allons au cours de ce chapitre voir comment allumer et éteindre une LED de puissance à l’aide […]

Aquila Reloaded – Chapitre 4 : Lire les valeurs des DIP Switchs avec un Arduino

Hello world ! Après la lecture et l’écriture de valeurs sur le bus DMX, on va passer à un chapitre qui parait très banal mais qui pourtant a toute son importance ! En effet, on va voir comment adresser et configurer notre équipement DMX512 à partir de DIP Switchs. Utilisation des « boutons » : pas si […]

Aquila Reloaded – Chapitre 3 : Recevoir (et envoyer) des commandes DMX512 avec un Arduino

Hello world ! On continue sur nos tests unitaires sur notre Aquila Reloaded. On va voir comment lire des valeurs en DMX512. Le DMX512, kézako ? Le DMX512 est un protocole basé sur la norme de transmission RS485. Il s’agit d’une liaison série cadencée à 250k bauds sur laquelle sont transférées de façon cyclique un […]

Aquila Reloaded – Chapitre 2 : piloter des moteurs pas à pas avec un Arduino

Hello world, Maintenant que j’ai acheté et démonté un de mes 2 scans, il est temps de passer à la suite, à savoir piloter mes moteurs. Pour réaliser ces tests, j’ai choisi d’utiliser l’Arduino Nano v3. Il est déprécié chez Arduino, mais qu’à cela ne tienne, on peut toujours compiler des programmes dessus et il […]

Aquila Reloaded – Chapitre 1 : Et si on modifiait un Scan DMX ?

Hello world, Je n’ai pas assez de projets électroniques en ce moment… (ahah !), donc je me lance dans un nouveau projet… Pimp my scan J’ai acquis sur le marché de l’occasion deux projecteurs scan pour sonos. Il s’agit de scans DMX du constructeur Starway, de modèle « Aquila« pouvant fonctionner en mode autonome ou en mode […]

Script de déploiement par GPO de TightVNC Server

Bonjour à tous, Voici un script que j’avais créé quand j’étais apprenti en 2010. Il permet de déployer TightVNC Server sur des postes de travail. Le voici tel quel : @echo off REM Script déploiement VNC REM Cree le 03/12/2010 REM Jerome MICHAUX set installpath=\\srv-data\tools$\tightvnc if %processor_architecture%==x86 goto x86 if %processor_architecture%==AMD64 goto AMD64 echo Processeur […]