Bonjour tout le monde, j'essaie de réaliser un système de ventilation additionnel pour mon ordinateur portable. Pour cela j'utilise une arduino UNO, un capteur de température LM35, un mofset IRF520N pour piloter un petit ventilateur (2 fils pour l'instant).
J'essaie d'utiliser la fonction PWM, mais le ventilateur est loin de tourner à fond quand je le bloque à 255. J'ai vu qu'il pourrait s'agir de la fréquence utilisé par la carte ?
Voici le code que j'ai fait :
#include <LiquidCrystal.h>
LiquidCrystal lcd(7,6,5,4,3,2);
int tempPin = A0; // LM35
int fan = 11; // ventilateur
int led = 8; // led
int temp;
int tempMin = 25; // the temperature to start the fan
int tempMax = 60; // the maximum temperature when fan is at 100%
int fanSpeed;
int fanLCD;
void setup() {
pinMode(fan, OUTPUT);
pinMode(led, OUTPUT);
pinMode(tempPin, INPUT);
lcd.begin(16,2);
}
void loop() {
temp = readTemp(); // acquisition température
if(temp < tempMin) { // si temp est plus petite que la temp mini
fanSpeed = 0; // ventil arret
digitalWrite(fan, LOW);
}
if((temp >= tempMin) && (temp <= tempMax)) { // si la température est plus haute que tempMin
fanSpeed = map(temp, tempMin, tempMax, 70, 255); // vitesse du ventil
fanLCD = map(temp, tempMin, tempMax, 0, 100); // vitesse de la ventil sur le lcd
analogWrite(fan, fanSpeed); // fait tourner la ventil à la vitesse fanSpeed
}
if(temp > tempMax) { // si la temperature est supérieur à la tempMax
digitalWrite(led, HIGH); // allumé la led
} else { //sinon éteindre led
digitalWrite(led, LOW);
}
lcd.print("TEMP: ");
lcd.print(temp); // affiche la temperature
lcd.print("C ");
lcd.setCursor(0,1); // ligne suivante de l'affichage
lcd.print("FANS: ");
lcd.print(fanLCD); // affiche la vitesse de la ventil
lcd.print("%");
delay(200);
lcd.clear();
}
int readTemp() { // acquisition et convertion de la temperature en celsuis
temp = analogRead(tempPin);
return temp * 0.48828125;
}
Le IRF520 est limite pour être piloté par une sortie CMOS. Peut être que laa tension de gate n'est pas suffisante pour l'intensité demandée.
Il aurait mieux valu utiliser un IRL250.
Merci pour vos infos très utiles si je comprends bien il faut que j'insère c'est deux lignes de codes
TCCR2B &= B11111000;
TCCR2B |= (0 << CS22) | (0 << CS21) | (1 << CS20);
Alors oui il fait du bruit, de plus c'est un arctic F8 avec trois fils (deux pour l'alim et un pour le retour de vitesse du ventil) et voici les spécifications DC12V 0.11A
Tout dépend du câblage : breadboard, fils DUPONT, breadboard, etc. peuvent entraîner des résistances série importantes.
Mais par rapport aux 120Ω du ventilateur, il faudrait vraiment de très mauvais contacts, ou des fils très fins.
Essaie de câbler propre avec du fil de 0.5mm2 minimum.
Sinon, essaie de mesurer la tension entre drain et source, moteur à fond. Elle doit être la plus faible possible.