Bonjour,
Je suis entrain de faire un ventilateur qui puisse réguler automatiquement sa vitesse en fonction de la température du milieu. Pour cela, une thermistance CTN détermine la température qui correspond à une certaine valeur de résistance. Les températures extrêmes que je me suis fixées sont 15 et 35 °C. Pour cette plage de température j'ai en entrée de la arduino sur une broche analogique une tension Ue qui varie entre entre 1.52 et 4.7 V . Plus la température sera elevée, plus la tension Ue sera grande donc plus le ventilateur tournera vite normalement . J'ai essayé de faire un programme qui traite l'acceleration du moteur en fonction de la temperature. J'aimerais savoir ce que vous en pensez ? Si je suis sur la bonne piste ou pas.
Voici 2 programmes ( ils ne sont pas long, c'est toujours les memes instructions)
Premier programme sans acceleration du moteur entre deux intervalles de temperatures
// ventilo
int x;
int motorPin=10;
int resistance=0;
void setup()
{
pinMode (resistance,INPUT);
pinMode (motorPin,OUTPUT);
}
void loop()
{
x=analogRead(resistance); Mesure de la tension a l 'entree qui varie en fonction de la temperature. x prend les valeur 0 à 1023
//Température moins de 15 degrees
if(x<311 && x>0) // x=311 correspond a T=15°C
{
analogWrite(motorPin,0);
}
//Température entre 15 et 20 degrees
if(x>=312 && x<368 )
{
analogWrite(motorPin,78);
}
//Température entre 20 et 25 degrees
if(x>369 && x<450 )
{
analogWrite(motorPin,92);
}
//Température entre 25 et 30 degrees
if(x>451 && x<579 )
{
analogWrite(motorPin,112);
}
//Température entre 30 et 37 degrees
if(x>580 && x<970 )
{
analogWrite(motorPin,144);
}
//Température plus de 37 degrees
if(x>971 )
{
analogWrite(motorPin,242);
}
}
Deuxieme programme avec acceleration du moteur entre deux intervalles de temperatures
// ventilo
int x;
int motorPin=10;
int resistance=0;
void setup()
{
pinMode (resistance,INPUT);
pinMode (motorPin,OUTPUT);
}
void loop()
{
x=analogRead(resistance); // Mesure de la tension a l 'entree qui varie en fonction de la temperature. x prend les valeur 0 à 1023
//Température moins de 15 degrees
if(x<311 && x>0)
{
analogWrite(motorPin,0);
}
// acceleration quand température est de 15 degrees
if(x>300 && x<320) //x=311 correspond a une temperature de 15°C. J'ai pris un intervalle de valeurs qui englobe 311.
{
for (int i=0;i<=78;i++)
{
analogWrite(motorPin,i);
delay(10);
}
}
//Température entre 15 et 20 degrees
if(x>=320 && x<368 ) // x=368 correspond à 20°C
{
analogWrite(motorPin,78); // 78 est la valeur correspondand a x=368. Vitesse constante ici.
}
if(x>368 && x<375 )
{
for (int i=78;i<=92;i++)
{
analogWrite(motorPin,i);
delay(10);
}
}
//Température entre 20 et 25 degrees
if(x>375 && x<450 )
{
analogWrite(motorPin,92);
}
if(x>450 && x<480 )
{
for (int i=92;i<=112;i++)
{
analogWrite(motorPin,i);
delay(10);
}
}
//Température entre 25 et 30 degrees
if(x>480 && x<579 )
{
analogWrite(motorPin,112);
}
if(x>579 && x<590 )
{
for (int i=112.53;i<=145;i++)
{
analogWrite(motorPin,i);
delay(10);
}
}
//Température entre 30 et 37 degrees
if(x>590 && x<970 )
{
analogWrite(motorPin,144);
}
if(x>970 && x<990)
{
for (int i=144;i<=242;i++)
{
analogWrite(motorPin,i);
delay(10);
}
}
//Température plus de 37 degrees
if(x>990 )
{
analogWrite(motorPin,242);
}
}
Merci d'avance,
-----