/* Programme permettant la régulation de niveaueau à 2 seuils en utilisant le capteur de pression MPX5010DP étalonné */ // Définition des constantes const int EntreeNiveau = A1; // broche A1 servira à lire le niveau d'eau du détecteur de niveau const int Attente = 1000 ; // temps d'attente entre deux boucles en ms const int SortieRelais = 8; // le relais sera commandé par la broche 8 const int SeuilHaut = 45; // fixe la valeur du niveau d'eau désiré dans le chateau d'eau en cm const int SeuilBas = 40; // coefficients de la droite d'étalonnage H = a*N + b const float a = 0.11; const float b = -5.514; int NiveauLu ; float NiveauMesure ; boolean OnRemplit = LOW; // par défaut on ne remplit pas le chateau d'eau int Commande ; // la commande varie entre 0 et 100% void setup() { /* Initialise le port série */ Serial.begin(115200); pinMode(SortieRelais,OUTPUT); // définit la broche 8 en sortie } void loop() { NiveauLu =analogRead(EntreeNiveau); // Conversion du nombre en hauteur d'eau à l'aide de la droite d'étalonnage NiveauMesure = a * NiveauLu + b; // Si on mesure un niveau inférieur au seuil bas, on remplit if (NiveauMesure < SeuilBas) { OnRemplit = HIGH; } // Si on mesure un niveau supérieur au seuil haut, on ne remplit pas if (NiveauMesure > SeuilHaut) { OnRemplit = LOW; } digitalWrite(SortieRelais,OnRemplit); // écriture sur le port de sortie pour commander le relais Commande = OnRemplit *100; // élaboration du signal de commande /* Les valeurs de la commande et de la mesure sont transmises sur le port série */ Serial.print(Commande); Serial.print(" , "); Serial.println(NiveauMesure); //Attente avant nouvelle mesure delay(Attente); }