Contrôleur automatique ventilateur de pc

Bonjour tout le monde et merci d’avance de votre aide.

Le système a très bien fonctionné sur Arduino Uno jusqu’à ce que j’ai tout démonté et remonté sur le Uno pour essayer sur un Arduino Nano qui n’a pas fonctionné.

J’utilise des TIP120 et de simple filtre dc bien ventilé qui me donne un voltage de environ 10.4V max. Une température pour l’eau et l’autre de l’air ambiant pour le meilleur delta possible! :slight_smile: :slight_smile:

#include <LiquidCrystal.h>
#include <math.h>

#define PINOTERMISTOR A2
#define pINOTERMISTOR A3
#define TERMISTORNOMINAL 10000
#define TEMPERATURENOMINAL 25
#define NUMAMOSTRAS 5
#define BCOEFFICIENT 3950
#define SERIESRESISTOR 10000


LiquidCrystal lcd(6,5,4,2,1,0);
int fan = 3;
int Fan = 9;
int fanSpeed;
int FanSpeed;
int amostra[NUMAMOSTRAS];
int i;
int Amostra[NUMAMOSTRAS];


void setup() {
 lcd.begin(16,2); 
 analogReference(EXTERNAL);
} 

void loop() { 
 float Media;
 float media;

for (i=0; i< NUMAMOSTRAS; i++) {
amostra[i] = analogRead(PINOTERMISTOR);}

for (i=0; i< NUMAMOSTRAS; i++) {
Amostra[i] = analogRead(pINOTERMISTOR);}

media = 0;
for (i=0; i< NUMAMOSTRAS; i++) {
media += amostra[i];}
media /= NUMAMOSTRAS;
media = 1023 / media - 1;
media = SERIESRESISTOR / media;

Media = 0;
for (i=0; i< NUMAMOSTRAS; i++) {
Media += Amostra[i];}
Media /= NUMAMOSTRAS;
Media = 1023 / Media - 1;
Media = SERIESRESISTOR / Media;

float temperatura;
temperatura = media / TERMISTORNOMINAL;
temperatura = log(temperatura);
temperatura /= BCOEFFICIENT;
temperatura += 1.0 / (TEMPERATURENOMINAL + 273.15);
temperatura = 1.0 / temperatura;
temperatura -= 273.15;

float Temperatura;
Temperatura = Media / TERMISTORNOMINAL;
Temperatura = log(Temperatura);
Temperatura /= BCOEFFICIENT;
Temperatura += 1.0 / (TEMPERATURENOMINAL + 273.15);
Temperatura = 1.0 / Temperatura;
Temperatura -= 273.15;

uint8_t fanSpeed;
 if(temperatura  < (Temperatura +3))fanSpeed = 0;analogWrite(fan,0);
 if((temperatura >= (Temperatura +3)) && (temperatura <= (Temperatura +8))){  
    fanSpeed = map(temperatura, (Temperatura +3), (Temperatura +8), 25, 255);
    analogWrite(fan, fanSpeed);}
   
uint8_t FanSpeed;
 if(temperatura < (Temperatura +4))FanSpeed = 0;analogWrite(Fan,25);
 if((temperatura >= (Temperatura +4)) && (temperatura <= (Temperatura +7))){  
    FanSpeed = map(temperatura, (Temperatura +4), (Temperatura +7), 25, 255);
    analogWrite(Fan, FanSpeed);}
  
    
    
  lcd.print("Ambient Air ");
  lcd.print(Temperatura);
  lcd.setCursor(0,1);
  lcd.print("Water Loop  ");
  lcd.print(temperatura);
  delay(30000);
  lcd.clear();}

C'est bon, il fonctionne de nouveau... enfin j'ai changer le Arduino avec un qui a déjà moins souffert.

Si vous avez des idées ou des remarques sur le sketch, n'hésitez pas! :slight_smile: