Bonjour Fahim,
Finalement j'ai tenté le coup.
Mon circulateur est un Grunfos UPS 15-60 à 3 vitesses. Il ressemble beaucoup à celui décrit dans la fiche de Gregory92. Si c'est ça qui t'arrête je peux te filer le schéma de cablage.
Côté Arduino J'ai 4 relais (alimentation circulateur, vitesse 1, vitesse2, et vitesse 3. Pour éviter que deux vitesses soient alimentées en même temps, j'ai mis un "delay" en plus pour que le relais ait le temps de basculer.
Pour l'instant ça marche ... Actuellement je teste les valeurs des vitesses de déclenchement. D'ailleurs si quelqu'un à un avis là dessus je suis intéressé.
Le bout de code qui fait varier le circulateur:
Code : Tout sélectionner
//régulation de la circulation primaire (si Inter priorité sur cuve)
void regulC1(){
int temp1 = sensors.getTempC(Probe01); //lecture temperature capteurs
int temp2 = sensors.getTempC(Probe02); //lecture temperature haut cuve
int diffpancuv = (temp1- temp2); //calcul difference en degre
delay(2000);
digitalWrite(alarms, LOW);
if(temp1 < 4) {
digitalWrite(relcircul1, LOW); //circulateur primaire tourne: sécurité antigel car je tourne à l'eau pas d'antigel
// delay(200);
digitalWrite(relcircul1v1, LOW); // commande relais circulateur primaire V1 enclenché
Serial.print("C1gel");
Serial.print('/');
}
else {
if(diffpancuv > 2 && diffpancuv < 6) { //si la difference est > 2° et inférieure à 6° :
digitalWrite(relcircul1v2, HIGH); // commande relais circulateur primaire V2 coupé
delay(500);
digitalWrite(relcircul1v3, HIGH); // commande relais circulateur primaire V3 coupé
delay(500);
digitalWrite(relcircul1, LOW); // commande relais circulateur primaire C1 enclenché
delay(200);
digitalWrite(relcircul1v1, LOW); // commande relais circulateur primaire V1 enclenché
Serial.print("C1v1");
}
if(diffpancuv >=6 && diffpancuv < 9) { //si la difference est >= 6° et inférieure à 9° :
digitalWrite(relcircul1v1, HIGH); // commande relais circulateur primaire V1 coupé
delay(500);
digitalWrite(relcircul1v3, HIGH); // commande relais circulateur primaire V3 coupé
delay(500);
digitalWrite(relcircul1, LOW); //relais circulateur primaire C1 enclenché
delay(200);
digitalWrite(relcircul1v2, LOW); // relais circulateur primaire sur V2 enclenché
Serial.print("C1v2");
}
if(diffpancuv >=9) { //si la difference est >= 9° :
digitalWrite(relcircul1v1, HIGH); //commande relais circulateur primaire V1 coupé
delay(500);
digitalWrite(relcircul1v2, HIGH); // commande relais circulateur primaire V2 coupé
delay(500);
digitalWrite(relcircul1, LOW); //relais circulateur primaire C1 enclenché
delay(200);
digitalWrite(relcircul1v3, LOW); // relais circulateur primaire sur V3 enclenché
Serial.print("C1v3");
}
if(diffpancuv < 2) { //si la difference est < 2 deg :
digitalWrite(relcircul1, HIGH); //arret circulateur primaire C1
delay(200);
digitalWrite(relcircul1v1, HIGH); //arret circulateur primaire V1
digitalWrite(relcircul1v2, HIGH); //arret circulateur primaire V2
digitalWrite(relcircul1v3, HIGH); //arret circulateur primaire V3
Serial.print("C1off");
}
Serial.print('/');
}
}
Voilà, si tu veux plus de renseignements n'hésite pas à demander.