Régulation ventilateurs PC

Bonjour,

Je suis en train de monter un NAS DIY.
J'ai pour ce projet acheté un boitier rackable que je vais installer dans la baie informatique qui est dans le sous sol de ma maison.
Ce boitier est équipé des 4 ventilateurs qui aspirent l'air frais par l'avant et de 2 autres ventilateurs qui refoulent l'air chaud a l'arrière.

j'aimerais réguler la vitesse des ces 6 ventilateurs en fonction de la charge du NAS, donc de sa température.

Je ne m'y connait pas assez pour déployer un programme seul.

Merci d'avance à celles et ceux qui pourrons m'aider.

FL

Les informations fournies sont insuffisantes :

  • type de ventilateur (nombre de fils)
  • type de carte mère + processeur
  • OS utilisé (Linux, Windows ?)

Typiquement l'information de température du processeur est fournie par le processeur lui-même, et l'OS a la possibilité de lire cette information, et des logiciels de régulation existent. Cela me semble donc difficile de réaliser cette régulation à l'aide d'un ARDUINO.

Pour ce qui est de la température ambiante à l'intérieur du boîtier la carte mère embarque également un capteur (généralement I2C).

A tout hasard jci je donne des infos à propos du pilotage de ventilateurs :
https://riton-duino.blogspot.com/2019/10/arduino-pilotage-de-ventilateurs.html

Bonjour,
Effectivement j'aurai dû être plus précis.

Les 6 ventilateurs du boitiers (ceux que je souhaite réguler) sont des ARCTIC F8 80mm (connecteurs 3 broches, 12 Volts).

La carte mère n'et pas de dernière génération, c'est une ASUS P7P55D-E.
Le processeur un vieux i7
L'OS est TrueNas.

Dans mon idée, je ne souhaite pas que les ventilateurs soient contrôlés pas la carte mère (qui ne dispose pas d'un nombre assez important de connecteurs), mais pense plutôt à une gestion autonome par l'arduino sur lesquel serait connecté une (des) sonde(s) de température.

Dans l'idée, les ventilateurs tourneraient au ralenti et accélèreraient avec l'augmentation de chaleur.

FL

Il faudra ajouter un peu d'électronique (voir mon article) car ces ventilateurs 3 broches ne peuvent être commandés directement par une sortie ARDUINO.
Il reste à choisir une sonde de température. Un petit DS18B20 pourrait faire l'affaire.
Et alimenter le tout en 12V.
Je déconseillerais les cartes UNO sur lesquelles il faut raccorder les entrées / sorties par des fils DUPONT. Choisir plutôt une carte NANO et regrouper tous ce petit monde sur une plaquette à pastilles :

  • ARDUINO NANO
  • 6 transistors avec leur résistance (*)
  • connecteur d'alimentation
  • connecteurs 3 broches mâles

(*) Il y a certainement moyen de piloter plusieurs ventilateurs par transistor (à voir en fonction de la puissance des ventilos), et choisir les transistors en conséquence

Avantage de la plaquette à pastilles : elle pourra être fixée au fond du boîtier.

Mesure de la température, librairie à utiliser : https://github.com/matmunk/DS18B20. Installable depuis l'IDE. Voir gestionnaire de bibliothèques.
Contrôle de vitesse des ventilos : voir mon article.

Bonjour,

J'ai quelque peux avancer sur mon projet.
Je vais avoir 4 sondes DS18B20 dans les nas:

  • HDD
  • CASE
  • CPU
  • ALIM

Je ne vais réguler que les 4 ventilateurs aspirant l'air frais à l'avance en fonction de la sonde HDD, les deux ventilateurs à l'arrière en extraction en fonction de la sonde CASE.

J'ai bricoler le code et j'ai pour le moment les 4 températures qui s'affichent sur un LCD 4x20 caractères.

J'ai maintenant un souci avec l'affichage de température que le n'arrive pas à placer ou je le souhaite sur mon afficheur.

Merci de votre aide,
sketch_may31a.ino (1.7 KB)

A mon avis c'est une erreur :

if (Fract < 10)
{
  lcd.print("0");
}
lcd.print(Fract);

exemple : 25.9°
Si la partie décimale est < 10, par exemple 9, 25.09 sera affiché.
Par contre ce raisonnement s'applique à la partie entière. Cela ne risque par d'arriver je suppose.
Pourquoi afficher des centièmes de degrés ? le DS18B20 est précis à +/- 0.5°C.

Utiliser la librairie conseillée plus haut aurait été plus simple :
https://github.com/matmunk/DS18B20/blob/master/src/DS18B20.cpp

Ben a vrai dire, j'ai récuperer plusieurs bout de codes pour en arriver là.
Effectivement ,je n'ai pas besoins de deux chiffres après la virgule.
Mais je ne sais pas comment modifier mon code

Diviser par dix la décimale ?
Ou travailler seulement avec la partie entière ?

Une sonde DS18B20 n'est pas faite pour mesurer une température par contact.
Sincèrement 1 seule sonde serait suffisante.
Les températures HDD, CPU et ALIM seront forcément fausses, puisque tu ne pourras pas glisser la sonde sous le ventirad, ou dans le HDD ou l'ALIM.

Admettons que je n'utilise qu'une sonde...