Arduino


Le but est de détecter le niveau d'eau de ma piscine, ou de toute cuve, réserve d'eau.

Publié le 08/12/2018



Suite à des problèmes de fuite, à plusieurs reprises (et toujours quand je n'étais pas là), la pompe de filtration de ma piscine s'est retrouvée à tourner à "vide" (heureusement sans conséquence) pendant de longue période.

L'idée est donc de contrôler le niveau de l'eau de façon périodique, et dès que le niveau d'eau devient critique, stopper la pompe de filtration pour éviter de l'endommager.

Plus l'on souhaite avoir un niveau élevé de précision, plus l'on devra ajouter de résistance. (et peut être changer la valeur de celle-ci)

Pour moi la précision n'était pas le plus important.
Je me suis donc limité à 7 échelons.
Chaque échelon correspondant à 2 cm d'eau.

Voici la sonde faite "maison" :

Liste des composants nécessaires pour la réalisation du circuit :

  • Arduino UNO1
  • Résistance 10 Kohms10
  • Relais1
  • Plaque de prototypage1


Schéma du montage électronique :


Pour les personnes possédant Fritzing, voici le schéma électronique.


Voici le code à télécharger dans votre Arduino:

// ##################################
// Broches utilisées par les capteurs
// ##################################
const byte DETECTEUR_EAU_PIN = 0; // Broche "DATA" du détecteur niveau eau

/****************************************************************/
/*                             INIT                             */
/****************************************************************/
void setup()
{
  Serial.begin(9600);
  delay(10);
  Serial.println();
  Serial.println();
  Serial.println(F("Detection niveau eau"));
  Serial.println();
  
  pinMode(DETECTEUR_EAU_PIN, INPUT);
}

/****************************************************************/
/*                        BOUCLE INFINIE                        */
/****************************************************************/
void loop()
{
  RecupereDonnees();  
  
  delay(1000);   
}

/****************************************************************/
/*                     TRAITEMENT DES DONNEES                   */
/****************************************************************/
void RecupereDonnees()
{
  int li_TensionNiveauEauInput = (analogRead(DETECTEUR_EAU_PIN));

  Serial.print(F("Tension = "));
  Serial.print(li_TensionNiveauEauInput);
  Serial.print(F(" ### Hauteur= "));
  
  if (li_TensionNiveauEauInput<=60)
  {
      Serial.print(F("Plus d'eau !!!"));
  }  
  else
  if (li_TensionNiveauEauInput>60 && li_TensionNiveauEauInput<=100)
  {
      Serial.print(F("0 - 1 cm"));
  }  
  else
  if (li_TensionNiveauEauInput>100 && li_TensionNiveauEauInput<=116)
  {
      Serial.print(F("1 - 2 cm"));
  }  
  else
  if (li_TensionNiveauEauInput>116 && li_TensionNiveauEauInput<=140)
  {
      Serial.print(F("2 - 4 cm"));
  }  
  else
  if (li_TensionNiveauEauInput>140 && li_TensionNiveauEauInput<=177)
  {
      Serial.print(F("4 - 6 cm"));
  }  
  else
  if (li_TensionNiveauEauInput>177 && li_TensionNiveauEauInput<=217)
  {
      Serial.print(F("6 - 8 cm"));
  }  
  else
  if (li_TensionNiveauEauInput>217 && li_TensionNiveauEauInput<=300)
  {
      Serial.print(F("8 - 10 cm"));
  }  
  else
  if (li_TensionNiveauEauInput>300 && li_TensionNiveauEauInput<=500)
  {
      Serial.print(F("10 - 12 cm"));
  }  
  else
  if (li_TensionNiveauEauInput>500 && li_TensionNiveauEauInput<=650)
  {
      Serial.print(F("12 - 13 cm"));
  }  
  else
  {
      Serial.print(F("> 13 cm"));
  } 
  Serial.println();
}
Nombre de vue(s): 257

Forum


Vos avis/remarques...


Veuillez vous connecter pour laisser vos commentaires...