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 amateurs d'impression 3D, j'ai fait quelques templates qui permettent d'imprimer divers boitiers pouvant accueillir les divers composants utilisés dans mes tutoriels.
- Pour un composant PIR, vous trouverez le boitier à imprimer ici.

    Il faut compter environ 4h pour imprimer les composants de ce boitier.


- Pour un relais, vous trouverez le boitier à imprimer ici.
    Il faut compter environ 2h pour imprimer les composants de ce boitier.




L'ensemble des impressions 3D a été réalisé sur une imprimante Creality3D Ender-3 pro avec les réglages standards suivants:

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): 322

Forum


Vos avis/remarques...


Veuillez vous connecter pour laisser vos commentaires...