Bonjour, mon projet a pour but de faire varier la vitesse d'un moteur en fonction de la température.
en m'inspirant de ce programme : https://www.instructables.com/id/Using-a-temperature-sensor-to-control-the-speed-of/
j'ai réaliser ce programme :
float temp;
int tempPin = A0;
int tempMin = 25;
int tempMax = 35;
int GateSpeed = 0;
#define Gate 10
void setup () {
pinMode(Gate, OUTPUT);
digitalWrite(Gate, LOW);
pinMode(tempPin, INPUT);
Serial.begin(9600);
}
void loop() {
temp = analogRead(tempPin);
temp = (temp *5.0*100.0)/1024.0;
Serial.println(temp);
delay(1000);
if(temp < tempMin) {
GateSpeed = 0;
digitalWrite(Gate, LOW);
}
if(temp > tempMin) {
GateSpeed = 100;
digitalWrite(Gate, HIGH);
}
if(tempMax > tempMin) {
GateSpeed = 255;
digitalWrite(Gate, HIGH);
}
}
Je fais varier la vitesse de mon moteur à l'aide d'un Mosfet (nommé Gate sur le programme)
Le programme fonctionne mais j'aimerai rajouter une sorte de température moyenne, c'est-à-dire quelque chose qui ressemble à ''tempMoy'' qui serai de 30°C alors je pourrais définir la tempMin =25°C et la tempMax=35°C
D'alleurs je n'ai pas très bien compris le mode de vitesse. Je sais qu'il y a HIGH et LOW et quelque chose compris entre 32 et 255 pour le moteur, c'est pourquoi je ne sais pas comment définir la vitesse de mon tempMoy si je devrais la créer. Dommage qu'il n'existe pas de vitesse '' Medium''
C'est aussi cette parti que je comprends pas très bien le sens :
if((temp >= tempMin) && (temp <= tempMax)) //if temperature is higher than the minimmum range
{
fanSpeed = map(temp, tempMin, tempMax, 32, 255); // the actual speed of fan
analogWrite(fan, fanSpeed); // spin the fan at the fanSpeed speed
}
}
Je ne comprend pas trop comment définir mon GateSpeed. J'en déduis son utilité afin de pouvoir utiliser plus d'option que HIGH et LOW pour faire varier la vitesse. Mais comment je la déclare?
donc pour résumer, j'aimerai créer :
if tempMin > temp (vitesse peu vite)
if tempMax >tempMin (vitesse max)