J'ai récupéré un serveur Dell et je veux utiliser son rack de 6 ventilateurs pour ma baie sono et j'ai besoin de votre aide pour faire la gestion avec un ESP32 et je ne sais pas comment faire pour décrypter la doc.
Dans ce paragraphe tu trouveras le schéma de branchement. Pour ton ventilateur 1.5A un 2N2222 (800mA maxi) ne suffira pas.
Comme dit dans l'article :
La sortie du tachymètre d'un ventilateur 3 broches n'est pas exploitable car elle serait hachée par le signal PWM.
Si tu te contentes d'un pilotage en tout ou rien, un simple transistor suffit. Un darlington TIP120 peut faire l'affaire, ou mieux un N MOSFET.
Si tu veux vraiment exploiter le signal du tachymètre, il faut fabriquer une tension continue, et c'est une autre affaire.
Je suppose que tu veux piloter les ventilateurs en fonction de la température ?
Complète ta demande.
Au cas où cela t'intéresserait, j'ai fabriqué une alimentation variable 3.7V :
Comme tu peux le remarquer sur le schéma, un ARDUINO pilote un DAC MCP4725, qui pilote un régulateur LM317.
Un ESP32 (sauf S2) possède un DAC, donc le MCP4725 est inutile.
Un LM317 fournit jusqu'à 1.5A, un LD1085 (3A) sera probablement préférable.
Un dissipateur est obligatoire, car le régulateur devra dissiper quelques watts à vitesse minimale.
Et bien non surtout pas.
Il faut connecter FG à une entrée de l'Arduino et placer une résistance entre +5V et FG.
La valeur de la résistance telle que Ic soit inférieur à 5mA donc comme on tire à 5V une résistance supérieure à 1kΩ.
Et il n'est dit nulle part que l'on peut hacher la tension pour réguler la vitesse du ventilateur. Comme on le voit sur la page de la doc il y a un circuit qui pilote le moteur donc il n'est pas certain qu'il accepte d'être alimenté par une tension discontinue. C'est un rack serveur, dans les serveurs ils se moquent pas mal que ça fasse du bruit et il n'est pas surprenant que les ventilateurs fonctionnent en tout ou rien.
Bonjour à tous...
En effet je veux piloter les ventilateurs en fonction de la vitesse. Je sais que je vais devoir passer par des transistors car ils vont tirer jusqu'à 9A.
La lecture de la vitesse en soit n'est pas indispensable.
Du coup c'est un pilotage en PWM? Ça me parrait bizarre car il y aurait une entrée spécifique, non?
J'ai fait tourner le serveur quelques jours et je confirme qu'il y a un vrai gestion en fonction de la temperature et oui au démarrage les six tournent à fond pendant quelques secondes et ça fait du bruit.
C'est surement une tension variable mais il me vient une idée: retirer un ventilateur, mettre en route le serveur et mesurer Vcc pour voir.
Sur un ventilateur 4 fils, oui.
Une ventilateur 2 ou 3 fils peut être alimenté à l'aide d'une tension 12V hachée, mais ce n'est pas toujours possible :
Le signal de vitesse du ventilateur n'est pas un signal PWM, c'est un signal à 4 tops/tours, il faut donc compter les tops, et mesurer le temps pour définir la vitesse, comme pour un compteur de débit d'eau.
Mais cela n'a aucun intérêt pour faire de la ventilation dans le but de refroidir (déplzcer de l'air), une commande de vitesse en boucle ouverte (sans retour tachymétrique) est suffisante je pense.
Ce commentaire n'est plus valable pour un ventilo 4 fils, qui se pilote par une broche de commande en PWM (normalement à 500Hz ça fonctionne). Le signal tachymètre reste exploitable, mais il me semble inutile, sauf si l'on veut afficher la vitesse, comme sur un PC.
Comme mimikrakra parle d'ESP32, il pourrait afficher la vitesse et la température sur une page WEB, mais c'est vraiment du cosmétique.
Je me suis inspiré de certains codes ici. Ces codes ont l'air de bien tourner donc il ne devrait pas y avoir de problème mais je ne comprends pas encore la gestion de la fréquence.
Dans le Loop j'utilise ma fonction CalculeVitesse(); dans le but de l'importer dans dans l'ESP32 qui gère mais baie sono.
#include "DHT.h"
#include <Wire.h>
// Définition PIN capteur / Type de capteur
#define DHTPIN A0
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Déclaration des PIN
const uint8_t Ventilateur=2;
const uint8_t CapteurTemp=3;
int Vitesse=0; // Initialisation de la vitesse PWM (0-255)
float TempAmb=0; // Initialisation de la températeur dans la baie (capteur DHT22)
// Plage de variation de la vitesse des ventilateurs
const int TempMin=35;
const int TempMax=50;
int VitesseTemp=0;
// Delta température Min/Max
int TempDelta = TempMax-TempMin;
unsigned long TpsCalcVitesse; // Fréquence de raffraichissement
// Gestion de la vitesse des ventilateurs
void CalculeVitesse(){
if ((millis() - TpsCalcVitesse) >= 1000){ // Toutes les secondes
TempAmb = dht.readTemperature();
Vitesse = (TempAmb - TempMin) * (255 / TempDelta); // Calcule de la vitesse
// Définition de la vitesse minimale des ventilateurs
if (Vitesse<=20){
Vitesse=20;
}
// Définition de la vitesse maximale des ventilateurs
if (Vitesse>=255){
Vitesse=255;
}
analogWrite(Ventilateur, Vitesse); // on injecte un signal PWM proportionel a la vitesse calculer
TpsCalcVitesse=millis();
}
}
void setup() {
analogWrite(Ventilateur,0); // Met le ventilo a l'arret au demarrage
pinMode(Ventilateur, OUTPUT); // met la broche en sortie
pinMode(CapteurTemp, INPUT); // met la broche en entree
TpsCalcVitesse=millis();
}
void loop() {
CalculeVitesse();
}